diff --git a/Fltk/Callbacks.cpp b/Fltk/Callbacks.cpp index acc7a0d93b63986df2ca7c53c1a49b9c5e922a09..5dbc93fc0bcc3ff570f6fbd4d47545f587f4002f 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 a9a5352175e693af791f316e22963dd1e7199e20..535dc38251c16ae8f46a891cf64835a4223d0b8d 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 712f9aa9f382645a3ad540d401bbb2081e6bba06..4868d742717961560b5ab502286511752e6caf6f 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 2f6b52364c15aa83e9d60f1417979503c522ed07..842747dfea3ad37baa628dc8980878320af4dca5 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 1760ce8620c330559e924ca4e06fd3d64ba7022e..38fd00a25bd07f0dc6fedb4ea5d4db6aef748661 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: