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