From febe88a3f4b08475f65ec04edd483dcbb4a7ac71 Mon Sep 17 00:00:00 2001
From: Christophe Geuzaine <cgeuzaine@ulg.ac.be>
Date: Tue, 26 Jun 2001 16:47:23 +0000
Subject: [PATCH] Simplex boundary display

---
 Common/DefaultOptions.h  |  2 ++
 Common/Options.cpp       | 15 ++++++++++++++-
 Common/Options.h         |  4 +---
 Common/Views.cpp         |  3 ++-
 Common/Views.h           |  1 +
 Fltk/Callbacks.cpp       |  3 ++-
 Fltk/GUI.cpp             | 10 +++++++++-
 Graphics/PostSimplex.cpp | 24 +++++++++++++++++++++---
 8 files changed, 52 insertions(+), 10 deletions(-)

diff --git a/Common/DefaultOptions.h b/Common/DefaultOptions.h
index e80ee15a02..35af79ed25 100644
--- a/Common/DefaultOptions.h
+++ b/Common/DefaultOptions.h
@@ -449,6 +449,8 @@ StringXNumber ViewOptions_Number[] = {
     "Type of interval display (1=iso, 2=discrete, 3=continuous, 4=numeric)" },
   { F|O, "NbIso" , opt_view_nb_iso , 15. ,
     "Number of intervals" },
+  { F|O, "Boundary" , opt_view_boundary , 0 ,
+    "Draw the N-b dimensional boundary of the simplex (N=dimension, b=option value" },
   { F|O, "Light" , opt_view_light , 0. ,
     "Enable light sources?" },
   { F|O, "ShowElement" , opt_view_show_element , 0. ,
diff --git a/Common/Options.cpp b/Common/Options.cpp
index 15608fa177..4cb1619292 100644
--- a/Common/Options.cpp
+++ b/Common/Options.cpp
@@ -1,4 +1,4 @@
-// $Id: Options.cpp,v 1.28 2001-06-25 13:05:16 geuzaine Exp $
+// $Id: Options.cpp,v 1.29 2001-06-26 16:47:23 geuzaine Exp $
 
 #include "Gmsh.h"
 #include "GmshUI.h"
@@ -1735,6 +1735,19 @@ double opt_view_nb_iso(OPT_ARGS_NUM){
 #endif
   return v->NbIso;
 }
+double opt_view_boundary(OPT_ARGS_NUM){
+  GET_VIEW(0.) ;
+  if(action & GMSH_SET){
+    v->Boundary = (int)val;
+    v->Changed = 1;
+  }
+#ifdef _FLTK
+  if(WID && (action & GMSH_GUI) && (num == WID->view_number)){
+    WID->view_value[11]->value(v->Boundary);
+  }
+#endif
+  return v->Boundary;
+}
 double opt_view_light(OPT_ARGS_NUM){
   GET_VIEW(0.) ;
   if(action & GMSH_SET){
diff --git a/Common/Options.h b/Common/Options.h
index d9da66cfea..28bdb1a9e1 100644
--- a/Common/Options.h
+++ b/Common/Options.h
@@ -187,9 +187,6 @@ double opt_solver_getdp_mergeviews(OPT_ARGS_NUM);
 double opt_post_scales(OPT_ARGS_NUM);
 double opt_post_link(OPT_ARGS_NUM);
 double opt_post_smooth(OPT_ARGS_NUM);
-double opt_post_initial_visibility(OPT_ARGS_NUM);
-double opt_post_initial_intervals(OPT_ARGS_NUM);
-double opt_post_initial_nbiso(OPT_ARGS_NUM);
 double opt_post_anim_delay(OPT_ARGS_NUM);
 double opt_post_nb_views(OPT_ARGS_NUM);
 double opt_post_color_scheme(OPT_ARGS_NUM);
@@ -209,6 +206,7 @@ double opt_view_arrow_scale(OPT_ARGS_NUM);
 double opt_view_visible(OPT_ARGS_NUM);
 double opt_view_intervals_type(OPT_ARGS_NUM);
 double opt_view_nb_iso(OPT_ARGS_NUM);
+double opt_view_boundary(OPT_ARGS_NUM);
 double opt_view_light(OPT_ARGS_NUM);
 double opt_view_show_element(OPT_ARGS_NUM);
 double opt_view_show_time(OPT_ARGS_NUM);
diff --git a/Common/Views.cpp b/Common/Views.cpp
index d18989e8e9..efcfebc202 100644
--- a/Common/Views.cpp
+++ b/Common/Views.cpp
@@ -1,4 +1,4 @@
-// $Id: Views.cpp,v 1.38 2001-05-24 10:11:28 geuzaine Exp $
+// $Id: Views.cpp,v 1.39 2001-06-26 16:47:23 geuzaine Exp $
 
 #include <set>
 #include "Gmsh.h"
@@ -402,6 +402,7 @@ void CopyViewOptions(Post_View *src, Post_View *dest){
   dest->ArrowScale = src->ArrowScale;
   dest->Visible = src->Visible;
   dest->IntervalsType = src->IntervalsType;
+  dest->Boundary = src->Boundary ;
   dest->NbIso = src->NbIso;
   dest->Light = src->Light ;
   dest->ShowElement = src->ShowElement;
diff --git a/Common/Views.h b/Common/Views.h
index 00c1433e7f..290b4133fe 100644
--- a/Common/Views.h
+++ b/Common/Views.h
@@ -37,6 +37,7 @@ class Post_View{
   int TimeStep;
   int DrawPoints, DrawLines, DrawTriangles, DrawTetrahedra;
   int DrawScalars, DrawVectors, DrawTensors;
+  int Boundary;
   ColorTable CT;
 
   // dynamic
diff --git a/Fltk/Callbacks.cpp b/Fltk/Callbacks.cpp
index ddf2b119d6..bc006e3b18 100644
--- a/Fltk/Callbacks.cpp
+++ b/Fltk/Callbacks.cpp
@@ -1,4 +1,4 @@
-// $Id: Callbacks.cpp,v 1.62 2001-06-06 09:39:49 geuzaine Exp $
+// $Id: Callbacks.cpp,v 1.63 2001-06-26 16:47:23 geuzaine Exp $
 
 #include <sys/types.h>
 #include <signal.h>
@@ -1691,6 +1691,7 @@ void view_options_ok_cb(CALLBACK_ARGS){
       opt_view_raise2(i, GMSH_SET, WID->view_value[8]->value());
       opt_view_timestep(i, GMSH_SET, WID->view_value[9]->value());
       opt_view_arrow_scale(i, GMSH_SET, WID->view_value[10]->value());
+      opt_view_boundary(i, GMSH_SET, WID->view_value[11]->value());
       
       opt_view_name(i, GMSH_SET, (char*)WID->view_input[0]->value());
       opt_view_format(i, GMSH_SET, (char*)WID->view_input[1]->value());
diff --git a/Fltk/GUI.cpp b/Fltk/GUI.cpp
index 2ff5539566..3464dabf8e 100644
--- a/Fltk/GUI.cpp
+++ b/Fltk/GUI.cpp
@@ -1,4 +1,4 @@
-// $Id: GUI.cpp,v 1.84 2001-06-13 11:04:23 geuzaine Exp $
+// $Id: GUI.cpp,v 1.85 2001-06-26 16:47:23 geuzaine Exp $
 
 // To make the interface as visually consistent as possible, please:
 // - use the BH, BW, WB, IW values for button heights/widths, window borders, etc.
@@ -1969,6 +1969,13 @@ void GUI::create_view_options_window(int num){
 	  view_butt[i]->labelsize(CTX.fontsize);
 	  view_butt[i]->selection_color(FL_YELLOW);
 	}
+	view_value[11] = new Fl_Value_Input(2*WB, 2*WB+ 6*BH, IW, BH, "Boundary operator");
+	view_value[11]->labelsize(CTX.fontsize);
+	view_value[11]->textsize(CTX.fontsize);
+	view_value[11]->type(FL_HORIZONTAL);
+	view_value[11]->align(FL_ALIGN_RIGHT);
+	view_value[11]->minimum(0); 
+	view_value[11]->maximum(3); 
         o->end();
       }
       // Offset and Raise
@@ -2123,6 +2130,7 @@ void GUI::update_view_window(int num){
   // intervals
   opt_view_nb_iso(num, GMSH_GUI, 0);
   opt_view_intervals_type(num, GMSH_GUI, 0);
+  opt_view_boundary(num, GMSH_GUI, 0);
 
   // offset/raise
   opt_view_offset0(num, GMSH_GUI, 0);
diff --git a/Graphics/PostSimplex.cpp b/Graphics/PostSimplex.cpp
index fdb1c10947..7f4d514af5 100644
--- a/Graphics/PostSimplex.cpp
+++ b/Graphics/PostSimplex.cpp
@@ -1,4 +1,4 @@
-// $Id: PostSimplex.cpp,v 1.16 2001-04-22 18:13:02 geuzaine Exp $
+// $Id: PostSimplex.cpp,v 1.17 2001-06-26 16:47:23 geuzaine Exp $
 
 #include "Gmsh.h"
 #include "GmshUI.h"
@@ -257,9 +257,28 @@ void Draw_ScalarTetrahedron(Post_View *View,
 			    double *V){
 
   int     k;
-  double  d, xx[4], yy[4], zz[4];
+  double  d, xx[4], yy[4], zz[4], vv[4];
   char Num[100];
 
+  if(View->Boundary == 2){
+    // boundary == 0 should draw the tet
+    // boundary == 1 should draw the faces
+    // boundary == 2 should draw the edges
+    // boundary == 3 should draw the vertices
+    Draw_ScalarLine(View, ValMin, ValMax, Raise, &X[0], &Y[0], &Z[0], &V[0]);//01
+    Draw_ScalarLine(View, ValMin, ValMax, Raise, &X[1], &Y[1], &Z[1], &V[1]);//12
+    Draw_ScalarLine(View, ValMin, ValMax, Raise, &X[2], &Y[2], &Z[2], &V[2]);//23
+    // beeek...
+    xx[0] = X[0]; yy[0] = Y[0]; zz[0] = Z[0]; vv[0] = V[0];
+    xx[1] = X[2]; yy[1] = Y[2]; zz[1] = Z[2]; vv[1] = V[2];
+    Draw_ScalarLine(View, ValMin, ValMax, Raise, xx, yy, zz, vv);//02
+    xx[1] = X[3]; yy[1] = Y[3]; zz[1] = Z[3]; vv[1] = V[3];
+    Draw_ScalarLine(View, ValMin, ValMax, Raise, xx, yy, zz, vv);//03
+    xx[0] = X[1]; yy[0] = Y[1]; zz[0] = Z[1]; vv[0] = V[1];
+    Draw_ScalarLine(View, ValMin, ValMax, Raise, xx, yy, zz, vv);//13
+    return;
+  }
+
   for(k=0 ; k<4 ; k++)
     RaiseFill(k, V[4*View->TimeStep+k], ValMin, Raise);
 
@@ -298,7 +317,6 @@ void Draw_ScalarTetrahedron(Post_View *View,
 
   }
   else{
-
     for(k=0 ; k<View->NbIso ; k++){
       if(!preproNormals)Palette(View,View->NbIso,k);
       IsoSimplex(View,preproNormals,
-- 
GitLab