From f0d66fd91d58cc324ffa4ee7e4a42ba77b4ebc49 Mon Sep 17 00:00:00 2001
From: Christophe Geuzaine <cgeuzaine@ulg.ac.be>
Date: Sun, 18 Jul 2004 16:42:23 +0000
Subject: [PATCH] add "reset" button in clipping window

---
 Fltk/Callbacks.cpp | 13 ++++++++++++-
 Fltk/Callbacks.h   |  1 +
 Fltk/GUI.cpp       | 34 +++++++++++++++++++---------------
 Graphics/Mesh.cpp  | 23 ++++++++++-------------
 Graphics/Post.cpp  |  5 ++---
 5 files changed, 44 insertions(+), 32 deletions(-)

diff --git a/Fltk/Callbacks.cpp b/Fltk/Callbacks.cpp
index acc7a0d93b..5dbc93fc0b 100644
--- a/Fltk/Callbacks.cpp
+++ b/Fltk/Callbacks.cpp
@@ -1,4 +1,4 @@
-// $Id: Callbacks.cpp,v 1.255 2004-07-17 22:46:28 geuzaine Exp $
+// $Id: Callbacks.cpp,v 1.256 2004-07-18 16:42:22 geuzaine Exp $
 //
 // Copyright (C) 1997-2004 C. Geuzaine, J.-F. Remacle
 //
@@ -1333,6 +1333,17 @@ void clip_num_cb(CALLBACK_ARGS)
   WID->reset_clip_browser();
 }
 
+void clip_reset_cb(CALLBACK_ARGS)
+{
+  for(int i = 0; i < 6; i++){
+    CTX.clip[i] = 0;
+    for(int j = 0; j < 4; j++)
+      CTX.clip_plane[i][j] = 0.;
+  }
+  WID->reset_clip_browser();
+  Draw();
+}
+
 void clip_ok_cb(CALLBACK_ARGS)
 {
   int idx = WID->clip_choice->value();
diff --git a/Fltk/Callbacks.h b/Fltk/Callbacks.h
index a9a5352175..535dc38251 100644
--- a/Fltk/Callbacks.h
+++ b/Fltk/Callbacks.h
@@ -155,6 +155,7 @@ void visibility_ok_cb(CALLBACK_ARGS) ;
 
 void clip_cb(CALLBACK_ARGS) ;
 void clip_num_cb(CALLBACK_ARGS) ;
+void clip_reset_cb(CALLBACK_ARGS) ;
 void clip_ok_cb(CALLBACK_ARGS) ;
 
 // Help Menu
diff --git a/Fltk/GUI.cpp b/Fltk/GUI.cpp
index 712f9aa9f3..4868d74271 100644
--- a/Fltk/GUI.cpp
+++ b/Fltk/GUI.cpp
@@ -1,4 +1,4 @@
-// $Id: GUI.cpp,v 1.324 2004-07-17 22:46:29 geuzaine Exp $
+// $Id: GUI.cpp,v 1.325 2004-07-18 16:42:22 geuzaine Exp $
 //
 // Copyright (C) 1997-2004 C. Geuzaine, J.-F. Remacle
 //
@@ -2959,12 +2959,11 @@ void GUI::create_visibility_window()
 
 void GUI::reset_clip_browser()
 {
-  int i;
   char str[128];
   clip_browser->clear();
   clip_browser->add("Geometry");
   clip_browser->add("Mesh");
-  for(i = 0; i < List_Nbr(CTX.post.list); i++) {
+  for(int i = 0; i < List_Nbr(CTX.post.list); i++) {
     if(i == NB_BUTT_MAX)
       break;
     sprintf(str, "View [%d]", i);
@@ -2972,10 +2971,10 @@ void GUI::reset_clip_browser()
   }
   int idx = clip_choice->value();
   clip_browser->deselect();
-  for(i = 0; i < clip_browser->size(); i++)
+  for(int i = 0; i < clip_browser->size(); i++)
     if(CTX.clip[idx] & (1<<i))
       clip_browser->select(i+1);
-  for(i = 0; i < 4; i++)
+  for(int i = 0; i < 4; i++)
     clip_value[i]->value(CTX.clip_plane[idx][i]);
 }
 
@@ -2996,33 +2995,38 @@ void GUI::create_clip_window()
     {0}
   };
 
-  int BW = 105;
-  int width = 2 * BW + 3 * WB;
+  int width = 3 * BB + 4 * WB;
   int height = 6 * BH + 3 * WB;
+  int brw = 105;
+  int BW = width - brw - 3 * WB - 3 * fontsize / 2;
+
 
   clip_window = new Fl_Window(width, height, "Clipping Planes");
   clip_window->box(WINDOW_BOX);
 
-  clip_browser = new Fl_Multi_Browser(1 * WB, 1 * WB, BW, 5 * BH);
+  clip_browser = new Fl_Multi_Browser(1 * WB, 1 * WB, brw, 5 * BH);
 
-  clip_choice = new Fl_Choice(2 * WB + BW, 1 * WB + 0 * BH, BW, BH);
+  clip_choice = new Fl_Choice(2 * WB + brw, 1 * WB + 0 * BH, BW, BH);
   clip_choice->menu(plane_number);
   clip_choice->callback(clip_num_cb);
 
-  int BW2 = BW - 3 * fontsize / 2;
-  clip_value[0] = new Fl_Value_Input(2 * WB + BW, 1 * WB + 1 * BH, BW2, BH, "A");
-  clip_value[1] = new Fl_Value_Input(2 * WB + BW, 1 * WB + 2 * BH, BW2, BH, "B");
-  clip_value[2] = new Fl_Value_Input(2 * WB + BW, 1 * WB + 3 * BH, BW2, BH, "C");
-  clip_value[3] = new Fl_Value_Input(2 * WB + BW, 1 * WB + 4 * BH, BW2, BH, "D");
+  clip_value[0] = new Fl_Value_Input(2 * WB + brw, 1 * WB + 1 * BH, BW, BH, "A");
+  clip_value[1] = new Fl_Value_Input(2 * WB + brw, 1 * WB + 2 * BH, BW, BH, "B");
+  clip_value[2] = new Fl_Value_Input(2 * WB + brw, 1 * WB + 3 * BH, BW, BH, "C");
+  clip_value[3] = new Fl_Value_Input(2 * WB + brw, 1 * WB + 4 * BH, BW, BH, "D");
   for(int i = 0; i < 4; i++)
     clip_value[i]->align(FL_ALIGN_RIGHT);
 
   reset_clip_browser();
 
   {
-    Fl_Return_Button *o = new Fl_Return_Button(width - 2 * BB - 2 * WB, height - BH - WB, BB, BH, "Apply");
+    Fl_Return_Button *o = new Fl_Return_Button(width - 3 * BB - 3 * WB, height - BH - WB, BB, BH, "Apply");
     o->callback(clip_ok_cb);
   }
+  {
+    Fl_Button *o = new Fl_Button(width - 2 * BB - 2 * WB, height - BH - WB, BB, BH, "Reset");
+    o->callback(clip_reset_cb);
+  }
   {
     Fl_Button *o = new Fl_Button(width - BB - WB, height - BH - WB, BB, BH, "Cancel");
     o->callback(cancel_cb, (void *)clip_window);
diff --git a/Graphics/Mesh.cpp b/Graphics/Mesh.cpp
index 2f6b52364c..842747dfea 100644
--- a/Graphics/Mesh.cpp
+++ b/Graphics/Mesh.cpp
@@ -1,4 +1,4 @@
-// $Id: Mesh.cpp,v 1.102 2004-07-17 22:46:29 geuzaine Exp $
+// $Id: Mesh.cpp,v 1.103 2004-07-18 16:42:22 geuzaine Exp $
 //
 // Copyright (C) 1997-2004 C. Geuzaine, J.-F. Remacle
 //
@@ -107,25 +107,24 @@ void Draw_Mesh(Mesh * M)
 {
   InitPosition();
 
-  for(int i = 0; i < 6; i++){
+  for(int i = 0; i < 6; i++)
     glClipPlane((GLenum)(GL_CLIP_PLANE0 + i), CTX.clip_plane[i]);
-    glDisable((GLenum)(GL_CLIP_PLANE0 + i));
-  }
 
   // draw the geometry
 
   if(M->status >= 0){
     glLightModelf(GL_LIGHT_MODEL_TWO_SIDE, GL_TRUE);
-    for(int i = 0; i < 6; i++){
+
+    for(int i = 0; i < 6; i++)
       if(CTX.clip[i] & 1) 
 	glEnable((GLenum)(GL_CLIP_PLANE0 + i));
       else
 	glDisable((GLenum)(GL_CLIP_PLANE0 + i));
-    }
+
     Draw_Geom(M);
-    for(int i = 0; i < 6; i++){
+
+    for(int i = 0; i < 6; i++)
       glDisable((GLenum)(GL_CLIP_PLANE0 + i));
-    }
   }
 
   // if we're in selection mode, we're done
@@ -188,13 +187,12 @@ void Draw_Mesh(Mesh * M)
     else
       glLightModelf(GL_LIGHT_MODEL_TWO_SIDE, GL_FALSE);
 
-    for(int i = 0; i < 6; i++){
+    for(int i = 0; i < 6; i++)
       if(CTX.clip[i] & 2) 
 	glEnable((GLenum)(GL_CLIP_PLANE0 + i));
       else
 	glDisable((GLenum)(GL_CLIP_PLANE0 + i));
-    }
-   
+    
     if(M->status >= 3 && (CTX.mesh.volumes_faces || CTX.mesh.volumes_edges ||
 			  CTX.mesh.volumes_num || 
 			  (CTX.mesh.use_cut_plane && CTX.mesh.cut_plane_as_surface &&
@@ -219,9 +217,8 @@ void Draw_Mesh(Mesh * M)
     }
     CTX.mesh.changed = 0;
 
-    for(int i = 0; i < 6; i++){
+    for(int i = 0; i < 6; i++)
       glDisable((GLenum)(GL_CLIP_PLANE0 + i));
-    }
   }
 
   // draw the big moving axes
diff --git a/Graphics/Post.cpp b/Graphics/Post.cpp
index 1760ce8620..38fd00a25b 100644
--- a/Graphics/Post.cpp
+++ b/Graphics/Post.cpp
@@ -1,4 +1,4 @@
-// $Id: Post.cpp,v 1.72 2004-07-17 22:46:30 geuzaine Exp $
+// $Id: Post.cpp,v 1.73 2004-07-18 16:42:23 geuzaine Exp $
 //
 // Copyright (C) 1997-2004 C. Geuzaine, J.-F. Remacle
 //
@@ -377,12 +377,11 @@ void Draw_Post(void)
       else
 	glLightModelf(GL_LIGHT_MODEL_TWO_SIDE, GL_FALSE);
 
-      for(int i = 0; i < 6; i++){
+      for(int i = 0; i < 6; i++)
 	if(CTX.clip[i] & (1<<(2+iView))) 
 	  glEnable((GLenum)(GL_CLIP_PLANE0 + i));
 	else
 	  glDisable((GLenum)(GL_CLIP_PLANE0 + i));
-      }
       
       switch (v->RangeType) {
       case DRAW_POST_RANGE_DEFAULT:
-- 
GitLab