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