diff --git a/Fltk/Callbacks.cpp b/Fltk/Callbacks.cpp index e2145a86ebc1fe1686eab6bf6bbe0bade6e1fb88..af36f2fd17d6ba095eff1622465d2dd9e67a2b57 100644 --- a/Fltk/Callbacks.cpp +++ b/Fltk/Callbacks.cpp @@ -1,4 +1,4 @@ -// $Id: Callbacks.cpp,v 1.465 2006-11-01 22:19:26 geuzaine Exp $ +// $Id: Callbacks.cpp,v 1.466 2006-11-02 00:56:31 geuzaine Exp $ // // Copyright (C) 1997-2006 C. Geuzaine, J.-F. Remacle // @@ -2135,13 +2135,47 @@ void clip_num_cb(CALLBACK_ARGS) void clip_update_cb(CALLBACK_ARGS) { - int idx = WID->clip_choice->value(); - CTX.clip[idx] = 0; - for(int i = 0; i < WID->clip_browser->size(); i++) - if(WID->clip_browser->selected(i+1)) - CTX.clip[idx] += (1<<i); - for(int i = 0; i < 4; i++) - CTX.clip_plane[idx][i] = WID->clip_value[i]->value(); + if(WID->clip_group[0]->visible()){ // clipping planes + int idx = WID->clip_choice->value(); + CTX.clip[idx] = 0; + for(int i = 0; i < WID->clip_browser->size(); i++) + if(WID->clip_browser->selected(i+1)) + CTX.clip[idx] += (1<<i); + for(int i = 0; i < 4; i++) + CTX.clip_plane[idx][i] = WID->clip_value[i]->value(); + } + else{ // clipping box + for(int idx = 0; idx < 6; idx++){ + CTX.clip[idx] = 0; + for(int i = 0; i < WID->clip_browser->size(); i++) + if(WID->clip_browser->selected(i+1)) + CTX.clip[idx] += (1<<i); + } + double c[3] = {WID->clip_value[4]->value(), + WID->clip_value[5]->value(), + WID->clip_value[6]->value()}; + double d[3] = {WID->clip_value[7]->value(), + WID->clip_value[8]->value(), + WID->clip_value[9]->value()}; + // left + CTX.clip_plane[0][0] = 1.; CTX.clip_plane[0][1] = 0.; CTX.clip_plane[0][2] = 0.; + CTX.clip_plane[0][3] = -(c[0] - d[0] / 2.); + // right + CTX.clip_plane[1][0] = -1.; CTX.clip_plane[1][1] = 0.; CTX.clip_plane[1][2] = 0.; + CTX.clip_plane[1][3] = (c[0] + d[0] / 2.); + // top + CTX.clip_plane[2][0] = 0.; CTX.clip_plane[2][1] = 1.; CTX.clip_plane[2][2] = 0.; + CTX.clip_plane[2][3] = -(c[1] - d[1] / 2.); + // bottom + CTX.clip_plane[3][0] = 0.; CTX.clip_plane[3][1] = -1.; CTX.clip_plane[3][2] = 0.; + CTX.clip_plane[3][3] = (c[1] + d[1] / 2.); + // near + CTX.clip_plane[4][0] = 0.; CTX.clip_plane[4][1] = 0.; CTX.clip_plane[4][2] = 1.; + CTX.clip_plane[4][3] = -(c[2] - d[2] / 2.); + // far + CTX.clip_plane[5][0] = 0.; CTX.clip_plane[5][1] = 0.; CTX.clip_plane[5][2] = -1.; + CTX.clip_plane[5][3] = (c[2] + d[2] / 2.); + } int old = CTX.draw_bbox; CTX.draw_bbox = 1; @@ -2171,48 +2205,6 @@ void clip_reset_cb(CALLBACK_ARGS) Draw(); } -void clip_update_box_cb(CALLBACK_ARGS) -{ - for(int idx = 0; idx < 6; idx++){ - CTX.clip[idx] = 0; - for(int i = 0; i < WID->clip_browser->size(); i++) - if(WID->clip_browser->selected(i+1)) - CTX.clip[idx] += (1<<i); - } - double c[3] = {WID->clip_value[4]->value(), - WID->clip_value[5]->value(), - WID->clip_value[6]->value()}; - double d[3] = {WID->clip_value[7]->value(), - WID->clip_value[8]->value(), - WID->clip_value[9]->value()}; - // left - CTX.clip_plane[0][0] = 1.; CTX.clip_plane[0][1] = 0.; CTX.clip_plane[0][2] = 0.; - CTX.clip_plane[0][3] = -(c[0] - d[0] / 2.); - // right - CTX.clip_plane[1][0] = -1.; CTX.clip_plane[1][1] = 0.; CTX.clip_plane[1][2] = 0.; - CTX.clip_plane[1][3] = (c[0] + d[0] / 2.); - // top - CTX.clip_plane[2][0] = 0.; CTX.clip_plane[2][1] = 1.; CTX.clip_plane[2][2] = 0.; - CTX.clip_plane[2][3] = -(c[1] - d[1] / 2.); - // bottom - CTX.clip_plane[3][0] = 0.; CTX.clip_plane[3][1] = -1.; CTX.clip_plane[3][2] = 0.; - CTX.clip_plane[3][3] = (c[1] + d[1] / 2.); - // near - CTX.clip_plane[4][0] = 0.; CTX.clip_plane[4][1] = 0.; CTX.clip_plane[4][2] = 1.; - CTX.clip_plane[4][3] = -(c[2] - d[2] / 2.); - // far - CTX.clip_plane[5][0] = 0.; CTX.clip_plane[5][1] = 0.; CTX.clip_plane[5][2] = -1.; - CTX.clip_plane[5][3] = (c[2] + d[2] / 2.); - - int old = CTX.draw_bbox; - CTX.draw_bbox = 1; - if(CTX.fast_redraw) - CTX.post.draw = CTX.mesh.draw = 0; - Draw(); - CTX.draw_bbox = old; - CTX.post.draw = CTX.mesh.draw = 1; -} - // Manipulator menu void manip_cb(CALLBACK_ARGS) diff --git a/Fltk/Callbacks.h b/Fltk/Callbacks.h index 85921b125390e0cbc6a0207a4d9df2e40b997b23..ba2a26a9d0f880d6b0fe75785c58ec67879edf9a 100644 --- a/Fltk/Callbacks.h +++ b/Fltk/Callbacks.h @@ -161,7 +161,6 @@ void visibility_delete_cb(CALLBACK_ARGS); void clip_cb(CALLBACK_ARGS); void clip_update_cb(CALLBACK_ARGS); -void clip_update_box_cb(CALLBACK_ARGS); void clip_invert_cb(CALLBACK_ARGS); void clip_num_cb(CALLBACK_ARGS); void clip_reset_cb(CALLBACK_ARGS); diff --git a/Fltk/GUI.cpp b/Fltk/GUI.cpp index 573cb7b3c7fba53b5b9a9b94c24be5fa888fec75..bf0aefc05a85a7c65ef229e420b9c7d6b5ae654e 100644 --- a/Fltk/GUI.cpp +++ b/Fltk/GUI.cpp @@ -1,4 +1,4 @@ -// $Id: GUI.cpp,v 1.555 2006-10-31 20:20:21 geuzaine Exp $ +// $Id: GUI.cpp,v 1.556 2006-11-02 00:56:31 geuzaine Exp $ // // Copyright (C) 1997-2006 C. Geuzaine, J.-F. Remacle // @@ -4088,9 +4088,9 @@ void GUI::create_clip_window() }; int width = 3 * BB + 4 * WB; - int height = 7 * BH + 5 * WB; + int height = 8 * BH + 5 * WB; int brw = 105; - int BW = width - brw - 3 * WB - 2 * fontsize; + int BW = width - brw - 3 * WB - 3 * fontsize; clip_window = new Dialog_Window(width, height, "Clipping Planes"); clip_window->box(GMSH_WINDOW_BOX); @@ -4100,7 +4100,7 @@ void GUI::create_clip_window() Fl_Tabs *o = new Fl_Tabs(2 * WB + brw, WB, width - 3 * WB - brw, height - 3 * WB - BH); { - Fl_Group *o = new Fl_Group(2 * WB + brw, WB + BH, width - 3 * WB - brw, height - 3 * WB - 2 * BH, "Planes"); + clip_group[0] = new Fl_Group(2 * WB + brw, WB + BH, width - 3 * WB - brw, height - 3 * WB - 2 * BH, "Planes"); int ii = fontsize; Fl_Button *invert = new Fl_Button(3 * WB + brw, 2 * WB + 2 * BH, ii, 4*BH, "-"); @@ -4120,28 +4120,24 @@ void GUI::create_clip_window() clip_value[i]->callback(clip_update_cb); } - o->end(); + clip_group[0]->end(); } { - Fl_Group *o = new Fl_Group(2 * WB + brw, WB + BH, width - 3 * WB - brw, height - 3 * WB - 2 * BH, "Box"); - o->hide(); - - Fl_Box *b1 = new Fl_Box(FL_NO_BOX, 3 * WB + brw, 2 * WB + 1 * BH, BW, BH, "Center:"); - b1->align(FL_ALIGN_INSIDE|FL_ALIGN_LEFT); - Fl_Box *b2 = new Fl_Box(FL_NO_BOX, 3 * WB + brw, 2 * WB + 3 * BH, BW, BH, "Dimensions:"); - b2->align(FL_ALIGN_INSIDE|FL_ALIGN_LEFT); - - clip_value[4] = new Fl_Value_Input(3 * WB + brw, 2 * WB + 2 * BH, BW / 3, BH); - clip_value[5] = new Fl_Value_Input(3 * WB + brw + BW / 3, 2 * WB + 2 * BH, BW / 3, BH); - clip_value[6] = new Fl_Value_Input(3 * WB + brw + 2 * BW / 3, 2 * WB + 2 * BH, BW - 2 * BW / 3, BH); - clip_value[7] = new Fl_Value_Input(3 * WB + brw, 2 * WB + 4 * BH, BW / 3, BH); - clip_value[8] = new Fl_Value_Input(3 * WB + brw + BW / 3, 2 * WB + 4 * BH, BW / 3, BH); - clip_value[9] = new Fl_Value_Input(3 * WB + brw + 2 * BW / 3, 2 * WB + 4 * BH, BW - 2 * BW / 3, BH); + clip_group[1] = new Fl_Group(2 * WB + brw, WB + BH, width - 3 * WB - brw, height - 3 * WB - 2 * BH, "Box"); + clip_group[1]->hide(); + + clip_value[4] = new Fl_Value_Input(3 * WB + brw, 2 * WB + 1 * BH, BW, BH, "Cx"); + clip_value[5] = new Fl_Value_Input(3 * WB + brw, 2 * WB + 2 * BH, BW, BH, "Cy"); + clip_value[6] = new Fl_Value_Input(3 * WB + brw, 2 * WB + 3 * BH, BW, BH, "Cz"); + clip_value[7] = new Fl_Value_Input(3 * WB + brw, 2 * WB + 4 * BH, BW, BH, "Wx"); + clip_value[8] = new Fl_Value_Input(3 * WB + brw, 2 * WB + 5 * BH, BW, BH, "Wy"); + clip_value[9] = new Fl_Value_Input(3 * WB + brw, 2 * WB + 6 * BH, BW, BH, "Wz"); for(int i = 4; i < 10; i++){ - clip_value[i]->callback(clip_update_box_cb); + clip_value[i]->align(FL_ALIGN_RIGHT); + clip_value[i]->callback(clip_update_cb); } - o->end(); + clip_group[1]->end(); } o->callback(clip_reset_cb); o->end(); diff --git a/Fltk/GUI.h b/Fltk/GUI.h index 67b33d7871c0f3ef3acc0c09910adc7dafd0b238..92de01ce3162cd6f1e79d2dbaca273cfda41d2d6 100644 --- a/Fltk/GUI.h +++ b/Fltk/GUI.h @@ -243,6 +243,7 @@ public: Fl_Multi_Browser *clip_browser; Fl_Value_Input *clip_value[10]; Fl_Check_Button *clip_butt[2]; + Fl_Group *clip_group[2]; // manipulator window Fl_Window *manip_window;