From 74697c56cf57e67719b91cd7aef01c28891cd4d6 Mon Sep 17 00:00:00 2001
From: Christophe Geuzaine <cgeuzaine@ulg.ac.be>
Date: Sat, 21 May 2005 04:55:59 +0000
Subject: [PATCH] polih previous commit

---
 Box/Main.cpp                | 16 ++--------------
 Common/Options.cpp          |  3 ++-
 Common/VertexArray.cpp      |  6 +++---
 Fltk/Main.cpp               | 20 +++-----------------
 Graphics/Mesh.cpp           | 28 +++++++++++++++++++++++-----
 Mesh/Generator.cpp          | 29 ++++++++++++++++++++++++-----
 Mesh/Mesh.h                 |  1 +
 Plugin/StructuralSolver.cpp | 15 ++-------------
 8 files changed, 60 insertions(+), 58 deletions(-)

diff --git a/Box/Main.cpp b/Box/Main.cpp
index a2eea209d1..b149c4a071 100644
--- a/Box/Main.cpp
+++ b/Box/Main.cpp
@@ -1,4 +1,4 @@
-// $Id: Main.cpp,v 1.48 2005-04-04 18:19:49 geuzaine Exp $
+// $Id: Main.cpp,v 1.49 2005-05-21 04:55:59 geuzaine Exp $
 //
 // Copyright (C) 1997-2005 C. Geuzaine, J.-F. Remacle
 //
@@ -91,19 +91,7 @@ int main(int argc, char *argv[])
   if(argc < 2)
     Info(0, argv[0]);
 
-  M.Vertices = NULL;
-  M.Simplexes = NULL;
-  M.Points = NULL;
-  M.Curves = NULL;
-  M.SurfaceLoops = NULL;
-  M.EdgeLoops = NULL;
-  M.Surfaces = NULL;
-  M.Volumes = NULL;
-  M.PhysicalGroups = NULL;
-  M.Partitions = NULL;
-  M.Metric = NULL;
-  M.BGM.bgm = NULL;
-  M.Grid.init = 0;
+  Init_Mesh0(&M);
 
   signal(SIGINT, Signal);
   signal(SIGSEGV, Signal);
diff --git a/Common/Options.cpp b/Common/Options.cpp
index a1141ab700..6801433afe 100644
--- a/Common/Options.cpp
+++ b/Common/Options.cpp
@@ -1,4 +1,4 @@
-// $Id: Options.cpp,v 1.242 2005-04-28 14:53:12 geuzaine Exp $
+// $Id: Options.cpp,v 1.243 2005-05-21 04:55:59 geuzaine Exp $
 //
 // Copyright (C) 1997-2005 C. Geuzaine, J.-F. Remacle
 //
@@ -4095,6 +4095,7 @@ double opt_mesh_points(OPT_ARGS_NUM)
 double opt_mesh_lines(OPT_ARGS_NUM)
 {
   if(action & GMSH_SET) {
+    if(CTX.mesh.lines != val) CTX.mesh.changed = 1;
     CTX.mesh.lines = (int)val;
   }
 #if defined(HAVE_FLTK)
diff --git a/Common/VertexArray.cpp b/Common/VertexArray.cpp
index 3a42d4ab1a..bf906f66c3 100644
--- a/Common/VertexArray.cpp
+++ b/Common/VertexArray.cpp
@@ -1,4 +1,4 @@
-// $Id: VertexArray.cpp,v 1.5 2005-05-21 01:10:46 geuzaine Exp $
+// $Id: VertexArray.cpp,v 1.6 2005-05-21 04:55:59 geuzaine Exp $
 //
 // Copyright (C) 1997-2005 C. Geuzaine, J.-F. Remacle
 //
@@ -27,8 +27,8 @@
 VertexArray::VertexArray(int numNodesPerElement, int numElements) 
 {
   type = numNodesPerElement;
-  if(type != 2 && type != 3 && type != 4){
-    Msg(GERROR, "Vertex arrays should only contain lines, triangles or quadrangles");
+  if(type < 1 || type > 4){
+    Msg(GERROR, "Vertex arrays not done for %d-node element", type);
     type = 3;
   }
   num = fill = 0;
diff --git a/Fltk/Main.cpp b/Fltk/Main.cpp
index 0edb2d55d2..2998a7ffe9 100644
--- a/Fltk/Main.cpp
+++ b/Fltk/Main.cpp
@@ -1,4 +1,4 @@
-// $Id: Main.cpp,v 1.77 2005-04-19 16:03:10 remacle Exp $
+// $Id: Main.cpp,v 1.78 2005-05-21 04:55:59 geuzaine Exp $
 //
 // Copyright (C) 1997-2005 C. Geuzaine, J.-F. Remacle
 //
@@ -72,22 +72,8 @@ int main(int argc, char *argv[])
   Init_Options(0);
 
   // Initialize the static Mesh
-
-  M.bds = 0;
-  M.bds_mesh = 0;
-  M.Vertices = NULL;
-  M.Simplexes = NULL;
-  M.Points = NULL;
-  M.Curves = NULL;
-  M.SurfaceLoops = NULL;
-  M.EdgeLoops = NULL;
-  M.Surfaces = NULL;
-  M.Volumes = NULL;
-  M.PhysicalGroups = NULL;
-  M.Partitions = NULL;
-  M.Metric = NULL;
-  M.BGM.bgm = NULL;
-  M.Grid.init = 0;
+  
+  Init_Mesh0(&M);
 
   // Generate automatic documentation (before getting user-defined options)
   
diff --git a/Graphics/Mesh.cpp b/Graphics/Mesh.cpp
index abafe8d1c8..57680a211a 100644
--- a/Graphics/Mesh.cpp
+++ b/Graphics/Mesh.cpp
@@ -1,4 +1,4 @@
-// $Id: Mesh.cpp,v 1.126 2005-05-21 01:10:47 geuzaine Exp $
+// $Id: Mesh.cpp,v 1.127 2005-05-21 04:55:59 geuzaine Exp $
 //
 // Copyright (C) 1997-2005 C. Geuzaine, J.-F. Remacle
 //
@@ -239,13 +239,17 @@ void Draw_Mesh(Mesh * M)
 	glEnable((GLenum)(GL_CLIP_PLANE0 + i));
       else
 	glDisable((GLenum)(GL_CLIP_PLANE0 + i));
-    
+
+    // Dimension 3
+
     if(M->status >= 3 && (CTX.mesh.volumes_faces || CTX.mesh.volumes_edges ||
 			  CTX.mesh.volumes_num || CTX.mesh.points_per_element ||
 			  (CTX.mesh.use_cut_plane && CTX.mesh.cut_plane_as_surface &&
 			   (CTX.mesh.surfaces_edges || CTX.mesh.surfaces_faces)))) {
       Tree_Action(M->Volumes, Draw_Mesh_Volume);
     }
+
+    // Dimension 2
    
     if(M->status >= 2 && (CTX.mesh.surfaces_faces || CTX.mesh.surfaces_edges ||
 			  CTX.mesh.surfaces_num || CTX.mesh.points_per_element ||
@@ -255,15 +259,22 @@ void Draw_Mesh(Mesh * M)
 	Tree_Action(M->Volumes, Draw_Mesh_Extruded_Surfaces);
     }
     
+    // Dimension 1
+
     if(M->status >= 1 && (CTX.mesh.lines || CTX.mesh.lines_num || 
 			  CTX.mesh.points_per_element || CTX.mesh.tangents)) {
       Tree_Action(M->Curves, Draw_Mesh_Curve);
     }
+
+    // Dimension 0
     
     if(M->status >= 0 && !CTX.mesh.points_per_element &&
        (CTX.mesh.points || CTX.mesh.points_num)) {
       Tree_Action(M->Vertices, Draw_Mesh_Point);
     }
+
+    // Done!
+
     CTX.mesh.changed = 0;
 
     for(int i = 0; i < 6; i++)
@@ -466,10 +477,13 @@ void Draw_Mesh_Point(int num, double x, double y, double z, int degree, int visi
   if(!(visible & VIS_MESH))
     return;
 
+  unsigned int col;
   if(degree == 2)
-    glColor4ubv((GLubyte *) & CTX.color.mesh.vertex_deg2);
+    col = CTX.color.mesh.vertex_deg2;
   else
-    glColor4ubv((GLubyte *) & CTX.color.mesh.vertex);
+    col = CTX.color.mesh.vertex;
+
+  glColor4ubv((GLubyte *) & col);
 
   if(CTX.mesh.points) {
     if(CTX.mesh.point_type) {
@@ -745,7 +759,11 @@ void Draw_Mesh_Array(VertexArray *va, int faces, int edges)
   glEnableClientState(GL_COLOR_ARRAY);
   glEnableClientState(GL_NORMAL_ARRAY);
 
-  if(va->type == 2){
+  if(va->type == 1){
+    glDisableClientState(GL_NORMAL_ARRAY);
+    glDrawArrays(GL_POINTS, 0, va->type * va->num);
+  }
+  else if(va->type == 2){
     glDisableClientState(GL_NORMAL_ARRAY);
     glDrawArrays(GL_LINES, 0, va->type * va->num);
   }
diff --git a/Mesh/Generator.cpp b/Mesh/Generator.cpp
index b693c6bf9e..2c75047b20 100644
--- a/Mesh/Generator.cpp
+++ b/Mesh/Generator.cpp
@@ -1,4 +1,4 @@
-// $Id: Generator.cpp,v 1.64 2005-04-19 16:03:10 remacle Exp $
+// $Id: Generator.cpp,v 1.65 2005-05-21 04:55:59 geuzaine Exp $
 //
 // Copyright (C) 1997-2005 C. Geuzaine, J.-F. Remacle
 //
@@ -302,6 +302,24 @@ void Maillage_Dimension_3(Mesh * M)
   M->timing[2] = t2 - t1;
 }
 
+void Init_Mesh0(Mesh * M)
+{
+  M->bds = 0;
+  M->bds_mesh = 0;
+  M->Vertices = NULL;
+  M->Simplexes = NULL;
+  M->Points = NULL;
+  M->Curves = NULL;
+  M->SurfaceLoops = NULL;
+  M->EdgeLoops = NULL;
+  M->Surfaces = NULL;
+  M->Volumes = NULL;
+  M->PhysicalGroups = NULL;
+  M->Partitions = NULL;
+  M->Metric = NULL;
+  M->BGM.bgm = NULL;
+  M->Grid.init = 0;
+}
 
 void Init_Mesh(Mesh * M)
 {
@@ -314,13 +332,14 @@ void Init_Mesh(Mesh * M)
   M->MaxSurfaceLoopNum = 0;
   M->MaxVolumeNum = 0;
   M->MaxPhysicalNum = 0;
-  if (M->bds)delete M->bds;
-  M->bds = 0;
 
   Element::TotalNumber = 0;
 
   ExitExtrude();
 
+  if(M->bds) delete M->bds;
+  M->bds = 0;
+
   Tree_Action(M->Vertices, Free_Vertex);  
   Tree_Delete(M->Vertices);
 
@@ -335,10 +354,10 @@ void Init_Mesh(Mesh * M)
   Tree_Action(M->Curves, Free_Curve);
   Tree_Delete(M->Curves);
 
-  Tree_Action (M->SurfaceLoops, Free_SurfaceLoop);
+  Tree_Action(M->SurfaceLoops, Free_SurfaceLoop);
   Tree_Delete(M->SurfaceLoops);
 
-  Tree_Action (M->EdgeLoops, Free_EdgeLoop);
+  Tree_Action(M->EdgeLoops, Free_EdgeLoop);
   Tree_Delete(M->EdgeLoops);
 
   Tree_Action(M->Surfaces, Free_Surface);
diff --git a/Mesh/Mesh.h b/Mesh/Mesh.h
index 027816b18a..1b4ea14247 100644
--- a/Mesh/Mesh.h
+++ b/Mesh/Mesh.h
@@ -440,6 +440,7 @@ struct Map{
 
 void mai3d(Mesh *M, int Asked);
 
+void Init_Mesh0(Mesh *M);
 void Init_Mesh(Mesh *M);
 void Create_BgMesh(int i, double d, Mesh *m);
 void Print_Geo(Mesh *M, char *c, int discrete_curve=0, int discrete_surface=0);
diff --git a/Plugin/StructuralSolver.cpp b/Plugin/StructuralSolver.cpp
index 8d2fda795a..a6beb2f52a 100644
--- a/Plugin/StructuralSolver.cpp
+++ b/Plugin/StructuralSolver.cpp
@@ -31,19 +31,8 @@ Structural_BeamSection:: Structural_BeamSection( const char *direct, std::string
 : name (_name)
 {    
   Mesh *kk = THEM;
-  m.Vertices = NULL;
-  m.Simplexes = NULL;
-  m.Points = NULL;
-  m.Curves = NULL;
-  m.SurfaceLoops = NULL;
-  m.EdgeLoops = NULL;
-  m.Surfaces = NULL;
-  m.Volumes = NULL;
-  m.PhysicalGroups = NULL;
-  m.Partitions = NULL;
-  m.Metric = NULL;
-  m.BGM.bgm = NULL;
-  m.Grid.init = 0;
+
+  Init_Mesh0(&m);
   Init_Mesh(&m);
   //  THEM=&m;
 
-- 
GitLab