From c70375d1ce2bde7b2b4d204bb1aa7f9b83e0af7f Mon Sep 17 00:00:00 2001 From: Christophe Geuzaine <cgeuzaine@ulg.ac.be> Date: Thu, 17 Aug 2006 18:15:39 +0000 Subject: [PATCH] The reorganisation of the option panel and the new mesh I/O layer are done. Mesh I/Os currently available: - Gmsh MSH format: read and write - Gmsh POS format for mesh statistics: read and write - INRIA MESH format: read and write - STL: read (ascii and binary) and write - VRML: read (partial) and write - UNV: write Everything is significantly faster than before (e.g. readMSH() can be more than twice as fast when there are lots of physicals) --- Common/Options.cpp | 17 +++- Fltk/Callbacks.cpp | 127 ++++++++----------------- Fltk/GUI.cpp | 230 ++++++++++++++++++++++----------------------- Geo/GModelIO.cpp | 6 +- 4 files changed, 167 insertions(+), 213 deletions(-) diff --git a/Common/Options.cpp b/Common/Options.cpp index 762b6417d3..43ce921ff5 100644 --- a/Common/Options.cpp +++ b/Common/Options.cpp @@ -1,4 +1,4 @@ -// $Id: Options.cpp,v 1.296 2006-08-17 17:08:50 geuzaine Exp $ +// $Id: Options.cpp,v 1.297 2006-08-17 18:15:39 geuzaine Exp $ // // Copyright (C) 1997-2006 C. Geuzaine, J.-F. Remacle // @@ -5794,9 +5794,18 @@ double opt_view_type(OPT_ARGS_NUM) } #if defined(HAVE_FLTK) if(_gui_action_valid(action, num)) { - WID->view_butt[1]->value(v->Type == DRAW_POST_3D); - WID->view_butt[2]->value(v->Type == DRAW_POST_2D_SPACE); - WID->view_butt[3]->value(v->Type == DRAW_POST_2D_TIME); + switch (v->Type) { + case DRAW_POST_3D: + WID->view_choice[13]->value(0); + break; + case DRAW_POST_2D_SPACE: + WID->view_choice[13]->value(1); + break; + case DRAW_POST_2D_TIME: + default: + WID->view_choice[13]->value(2); + break; + } } #endif return v->Type; diff --git a/Fltk/Callbacks.cpp b/Fltk/Callbacks.cpp index 6bba4ba3b7..08fa3431bc 100644 --- a/Fltk/Callbacks.cpp +++ b/Fltk/Callbacks.cpp @@ -1,4 +1,4 @@ -// $Id: Callbacks.cpp,v 1.436 2006-08-17 17:08:50 geuzaine Exp $ +// $Id: Callbacks.cpp,v 1.437 2006-08-17 18:15:39 geuzaine Exp $ // // Copyright (C) 1997-2006 C. Geuzaine, J.-F. Remacle // @@ -3742,32 +3742,18 @@ void view_options_ok_cb(CALLBACK_ARGS) // view_choice switch (WID->view_choice[1]->value()) { - case 0: - val = DRAW_POST_LINEAR; - break; - case 1: - val = DRAW_POST_LOGARITHMIC; - break; - default: - val = DRAW_POST_DOUBLELOGARITHMIC; - break; + case 0: val = DRAW_POST_LINEAR; break; + case 1: val = DRAW_POST_LOGARITHMIC; break; + default: val = DRAW_POST_DOUBLELOGARITHMIC; break; // 2 } if(force || (val != scale_type)) opt_view_scale_type(i, GMSH_SET, val); switch (WID->view_choice[0]->value()) { - case 0: - val = DRAW_POST_ISO; - break; - case 1: - val = DRAW_POST_DISCRETE; - break; - case 2: - val = DRAW_POST_CONTINUOUS; - break; - default: - val = DRAW_POST_NUMERIC; - break; + case 0: val = DRAW_POST_ISO; break; + case 1: val = DRAW_POST_DISCRETE; break; + case 2: val = DRAW_POST_CONTINUOUS; break; + default: val = DRAW_POST_NUMERIC; break; // 3 } if(force || (val != intervals_type)) opt_view_intervals_type(i, GMSH_SET, val); @@ -3781,84 +3767,42 @@ void view_options_ok_cb(CALLBACK_ARGS) opt_view_line_type(i, GMSH_SET, val); switch (WID->view_choice[2]->value()) { - case 0: - val = DRAW_POST_SEGMENT; - break; - case 1: - val = DRAW_POST_ARROW; - break; - case 2: - val = DRAW_POST_PYRAMID; - break; - case 4: - val = DRAW_POST_DISPLACEMENT; - break; - default: // 3 - val = DRAW_POST_ARROW3D; - break; + case 0: val = DRAW_POST_SEGMENT; break; + case 1: val = DRAW_POST_ARROW; break; + case 2: val = DRAW_POST_PYRAMID; break; + case 4: val = DRAW_POST_DISPLACEMENT; break; + default: val = DRAW_POST_ARROW3D; break; // 3 } if(force || (val != vector_type)) opt_view_vector_type(i, GMSH_SET, val); switch (WID->view_choice[3]->value()) { - case 0: - val = DRAW_POST_LOCATE_COG; - break; - default: - val = DRAW_POST_LOCATE_VERTEX; - break; + case 0: val = DRAW_POST_LOCATE_COG; break; + default: val = DRAW_POST_LOCATE_VERTEX; break; } if(force || (val != glyph_location)) opt_view_glyph_location(i, GMSH_SET, val); switch (WID->view_choice[4]->value()) { - case 0: - val = DRAW_POST_VONMISES; - break; - case 2: - val = DRAW_POST_LMGC90_TYPE; - break; - case 3: - val = DRAW_POST_LMGC90_COORD; - break; - case 4: - val = DRAW_POST_LMGC90_PRES; - break; - case 5: - val = DRAW_POST_LMGC90_SN; - break; - case 6: - val = DRAW_POST_LMGC90_DEPX; - break; - case 7: - val = DRAW_POST_LMGC90_DEPY; - break; - case 8: - val = DRAW_POST_LMGC90_DEPZ; - break; - case 9: - val = DRAW_POST_LMGC90_DEPAV; - break; - case 10: - val = DRAW_POST_LMGC90_DEPNORM; - break; - default: //1 - val = DRAW_POST_LMGC90; - break; + case 0: val = DRAW_POST_VONMISES; break; + case 2: val = DRAW_POST_LMGC90_TYPE; break; + case 3: val = DRAW_POST_LMGC90_COORD; break; + case 4: val = DRAW_POST_LMGC90_PRES; break; + case 5: val = DRAW_POST_LMGC90_SN; break; + case 6: val = DRAW_POST_LMGC90_DEPX; break; + case 7: val = DRAW_POST_LMGC90_DEPY; break; + case 8: val = DRAW_POST_LMGC90_DEPZ; break; + case 9: val = DRAW_POST_LMGC90_DEPAV; break; + case 10: val = DRAW_POST_LMGC90_DEPNORM; break; + default: val = DRAW_POST_LMGC90; break; // 1 } if(force || (val != tensor_type)) opt_view_tensor_type(i, GMSH_SET, val); switch (WID->view_choice[7]->value()) { - case 0: - val = DRAW_POST_RANGE_DEFAULT; - break; - case 1: - val = DRAW_POST_RANGE_PER_STEP; - break; - default: - val = DRAW_POST_RANGE_CUSTOM; - break; + case 0: val = DRAW_POST_RANGE_DEFAULT; break; + case 1: val = DRAW_POST_RANGE_PER_STEP; break; + default: val = DRAW_POST_RANGE_CUSTOM; break; // 2 } if(force || (val != range_type)) opt_view_range_type(i, GMSH_SET, val); @@ -3882,6 +3826,14 @@ void view_options_ok_cb(CALLBACK_ARGS) val = WID->view_choice[12]->value(); if(force || (val != show_time)) opt_view_show_time(i, GMSH_SET, val); + + switch(WID->view_choice[13]->value()){ + case 0: val = DRAW_POST_3D; break; + case 1: val = DRAW_POST_2D_SPACE; break; + default: val = DRAW_POST_2D_TIME; break; // 2 + } + if(force || (val != type)) + opt_view_type(i, GMSH_SET, val); // view_butts @@ -3889,11 +3841,6 @@ void view_options_ok_cb(CALLBACK_ARGS) if(force || (val != arrow_size_proportional)) opt_view_arrow_size_proportional(i, GMSH_SET, val); - val = WID->view_butt[1]->value() ? DRAW_POST_3D : - WID->view_butt[2]->value() ? DRAW_POST_2D_SPACE : DRAW_POST_2D_TIME; - if(force || (val != type)) - opt_view_type(i, GMSH_SET, val); - val = WID->view_butt[38]->value(); if(force || (val != saturate_values)) opt_view_saturate_values(i, GMSH_SET, val); diff --git a/Fltk/GUI.cpp b/Fltk/GUI.cpp index 22014cd87e..b0b856d176 100644 --- a/Fltk/GUI.cpp +++ b/Fltk/GUI.cpp @@ -1,4 +1,4 @@ -// $Id: GUI.cpp,v 1.523 2006-08-17 17:08:51 geuzaine Exp $ +// $Id: GUI.cpp,v 1.524 2006-08-17 18:15:39 geuzaine Exp $ // // Copyright (C) 1997-2006 C. Geuzaine, J.-F. Remacle // @@ -2720,106 +2720,169 @@ void GUI::create_option_window() { Fl_Group *o = new Fl_Group(L + WB, WB + BH, width - 2 * WB, height - 2 * WB - BH, "General"); - view_butt[1] = new Fl_Check_Button(L + 2 * WB, 2 * WB + 1 * BH, BW / 2 - WB, BH, "3D plot"); - view_butt[1]->type(FL_RADIO_BUTTON); - view_butt[1]->down_box(GMSH_RADIO_BOX); - view_butt[1]->selection_color(GMSH_RADIO_COLOR); - - view_butt[2] = new Fl_Check_Button(L + 2 * WB, 2 * WB + 2 * BH, BW / 2 - WB, BH, "2D space plot"); - view_butt[2]->type(FL_RADIO_BUTTON); - view_butt[2]->down_box(GMSH_RADIO_BOX); - view_butt[2]->selection_color(GMSH_RADIO_COLOR); - - view_butt[3] = new Fl_Check_Button(L + 2 * WB, 2 * WB + 3 * BH, BW / 2 - WB, BH, "2D time plot"); - view_butt[3]->type(FL_RADIO_BUTTON); - view_butt[3]->down_box(GMSH_RADIO_BOX); - view_butt[3]->selection_color(GMSH_RADIO_COLOR); + static Fl_Menu_Item menu_plot_type[] = { + {"3D", 0, 0, 0}, + {"2D space", 0, 0, 0}, + {"2D time", 0, 0, 0}, + {0} + }; + view_choice[13] = new Fl_Choice(L + 2 * WB, 2 * WB + 1 * BH, IW, BH, "Plot type"); + view_choice[13]->menu(menu_plot_type); + view_choice[13]->align(FL_ALIGN_RIGHT); - view_input[0] = new Fl_Input(L + 2 * WB, 2 * WB + 4 * BH, IW, BH, "Name"); + view_input[0] = new Fl_Input(L + 2 * WB, 2 * WB + 2 * BH, IW, BH, "View name"); view_input[0]->align(FL_ALIGN_RIGHT); int sw = (int)(1.5 * fontsize); - view_butt_rep[0] = new Fl_Repeat_Button(L + 2 * WB, 2 * WB + 5 * BH, sw, BH, "-"); + view_butt_rep[0] = new Fl_Repeat_Button(L + 2 * WB, 2 * WB + 3 * BH, sw, BH, "-"); view_butt_rep[0]->callback(view_options_timestep_decr_cb); - view_butt_rep[1] = new Fl_Repeat_Button(L + 2 * WB + IW - sw, 2 * WB + 5 * BH, sw, BH, "+"); + view_butt_rep[1] = new Fl_Repeat_Button(L + 2 * WB + IW - sw, 2 * WB + 3 * BH, sw, BH, "+"); view_butt_rep[1]->callback(view_options_timestep_incr_cb); - view_value[50] = new Fl_Value_Input(L + 2 * WB + sw, 2 * WB + 5 * BH, IW - 2 * sw, BH); + view_value[50] = new Fl_Value_Input(L + 2 * WB + sw, 2 * WB + 3 * BH, IW - 2 * sw, BH); view_value[50]->callback(view_options_timestep_cb); view_value[50]->align(FL_ALIGN_RIGHT); view_value[50]->minimum(0); view_value[50]->maximum(0); view_value[50]->step(1); - Fl_Box *a = new Fl_Box(L + 2 * WB + IW, 2 * WB + 5 * BH, IW / 2, BH, "Step"); + Fl_Box *a = new Fl_Box(L + 2 * WB + IW, 2 * WB + 3 * BH, IW / 2, BH, "Time step"); a->box(FL_NO_BOX); a->align(FL_ALIGN_LEFT | FL_ALIGN_INSIDE); - view_choice[8] = new Fl_Choice(L + width / 2, 2 * WB + 1 * BH, IW, BH, "Axes"); + view_range = new Fl_Group(L + 2 * WB, 2 * WB + 4 * BH, width - 4 * WB, 8 * BH); + + view_value[30] = new Fl_Value_Input(L + 2 * WB, 2 * WB + 4 * BH, IW, BH, "Number of intervals"); + view_value[30]->align(FL_ALIGN_RIGHT); + view_value[30]->minimum(1); + view_value[30]->maximum(256); + view_value[30]->step(1); + + static Fl_Menu_Item menu_iso[] = { + {"Iso-values", 0, 0, 0}, + {"Filled iso-values", 0, 0, 0}, + {"Continuous map", 0, 0, 0}, + {"Numeric values", 0, 0, 0}, + {0} + }; + view_choice[0] = new Fl_Choice(L + 2 * WB, 2 * WB + 5 * BH, IW, BH, "Intervals type"); + view_choice[0]->menu(menu_iso); + view_choice[0]->align(FL_ALIGN_RIGHT); + view_choice[0]->tooltip("(Alt+t)"); + + static Fl_Menu_Item menu_range[] = { + {"Default", 0, 0, 0}, + {"Per time step", 0, 0, 0}, + {"Custom", 0, 0, 0}, + {0} + }; + view_choice[7] = new Fl_Choice(L + 2 * WB, 2 * WB + 6 * BH, IW, BH, "Range mode"); + view_choice[7]->menu(menu_range); + view_choice[7]->align(FL_ALIGN_RIGHT); + view_choice[7]->callback(activate_cb, (void*)"custom_range"); + + int sw2 = (int)(2.5 * fontsize); + view_push_butt[1] = new Fl_Button(L + 2 * WB, 2 * WB + 7 * BH, sw2, BH, "Min"); + view_push_butt[1]->callback(view_options_custom_set_cb, (void*)"Min"); + view_value[31] = new Fl_Value_Input(L + 2 * WB + sw2, 2 * WB + 7 * BH, IW - sw2, BH, "Custom minimum"); + view_value[31]->align(FL_ALIGN_RIGHT); + + view_push_butt[2] = new Fl_Button(L + 2 * WB, 2 * WB + 8 * BH, sw2, BH, "Max"); + view_push_butt[2]->callback(view_options_custom_set_cb, (void*)"Max"); + view_value[32] = new Fl_Value_Input(L + 2 * WB + sw2, 2 * WB + 8 * BH, IW - sw2, BH, "Custom maximum"); + view_value[32]->align(FL_ALIGN_RIGHT); + + view_butt[38] = new Fl_Check_Button(L + 2 * WB, 2 * WB + 9 * BH, BW, BH, "Saturate out-of-range values"); + view_butt[38]->type(FL_TOGGLE_BUTTON); + view_butt[38]->down_box(GMSH_TOGGLE_BOX); + view_butt[38]->selection_color(GMSH_TOGGLE_COLOR); + + static Fl_Menu_Item menu_scale[] = { + {"Linear", 0, 0, 0}, + {"Logarithmic", 0, 0, 0}, + {"Double logarithmic", 0, 0, 0}, + {0} + }; + view_choice[1] = new Fl_Choice(L + 2 * WB, 2 * WB + 10 * BH, IW, BH, "Value scale mode"); + view_choice[1]->menu(menu_scale); + view_choice[1]->align(FL_ALIGN_RIGHT); + + view_input[1] = new Fl_Input(L + 2 * WB, 2 * WB + 11 * BH, IW, BH, "Number display format"); + view_input[1]->align(FL_ALIGN_RIGHT); + + view_range->end(); + + o->end(); + } + { + Fl_Group *o = new Fl_Group(L + WB, WB + BH, width - 2 * WB, height - 2 * WB - BH, "Axes"); + o->hide(); + + view_choice[8] = new Fl_Choice(L + 2 * WB, 2 * WB + 1 * BH, IW, BH, "Axes mode"); view_choice[8]->menu(menu_axes_mode); view_choice[8]->align(FL_ALIGN_RIGHT); view_choice[8]->callback(activate_cb, (void*)"view_axes"); view_choice[8]->tooltip("(Alt+g)"); - view_value[3] = new Fl_Value_Input(L + width / 2, 2 * WB + 2 * BH, IW/3, BH); + view_value[3] = new Fl_Value_Input(L + 2 * WB, 2 * WB + 2 * BH, IW/3, BH); view_value[3]->minimum(0.); view_value[3]->step(1); view_value[3]->maximum(100); - view_value[4] = new Fl_Value_Input(L + width / 2 + 1*IW/3, 2 * WB + 2 * BH, IW/3, BH); + view_value[4] = new Fl_Value_Input(L + 2 * WB + 1*IW/3, 2 * WB + 2 * BH, IW/3, BH); view_value[4]->minimum(0.); view_value[4]->step(1); view_value[4]->maximum(100); - view_value[5] = new Fl_Value_Input(L + width / 2 + 2*IW/3, 2 * WB + 2 * BH, IW/3, BH, "Tics"); + view_value[5] = new Fl_Value_Input(L + 2 * WB + 2*IW/3, 2 * WB + 2 * BH, IW/3, BH, "Axes tics"); view_value[5]->minimum(0.); view_value[5]->step(1); view_value[5]->maximum(100); view_value[5]->align(FL_ALIGN_RIGHT); - view_input[7] = new Fl_Input(L + width / 2, 2 * WB + 3 * BH, IW/3, BH); - view_input[8] = new Fl_Input(L + width / 2 + 1*IW/3, 2 * WB + 3 * BH, IW/3, BH); - view_input[9] = new Fl_Input(L + width / 2 + 2*IW/3, 2 * WB + 3 * BH, IW/3, BH, "Format"); + view_input[7] = new Fl_Input(L + 2 * WB, 2 * WB + 3 * BH, IW/3, BH); + view_input[8] = new Fl_Input(L + 2 * WB + 1*IW/3, 2 * WB + 3 * BH, IW/3, BH); + view_input[9] = new Fl_Input(L + 2 * WB + 2*IW/3, 2 * WB + 3 * BH, IW/3, BH, "Axes format"); view_input[9]->align(FL_ALIGN_RIGHT); - view_input[10] = new Fl_Input(L + width / 2, 2 * WB + 4 * BH, IW/3, BH); - view_input[11] = new Fl_Input(L + width / 2 + 1*IW/3, 2 * WB + 4 * BH, IW/3, BH); - view_input[12] = new Fl_Input(L + width / 2 + 2*IW/3, 2 * WB + 4 * BH, IW/3, BH, "Labels"); + view_input[10] = new Fl_Input(L + 2 * WB, 2 * WB + 4 * BH, IW/3, BH); + view_input[11] = new Fl_Input(L + 2 * WB + 1*IW/3, 2 * WB + 4 * BH, IW/3, BH); + view_input[12] = new Fl_Input(L + 2 * WB + 2*IW/3, 2 * WB + 4 * BH, IW/3, BH, "Axes labels"); view_input[12]->align(FL_ALIGN_RIGHT); - view_butt[25] = new Fl_Check_Button(L + width / 2, 2 * WB + 5 * BH, BW / 2 - WB, BH, "Automatic 3D positioning"); + view_butt[25] = new Fl_Check_Button(L + 2 * WB, 2 * WB + 5 * BH, BW / 2 - WB, BH, "Set position and size of 3D axes automatically"); view_butt[25]->type(FL_TOGGLE_BUTTON); view_butt[25]->down_box(GMSH_TOGGLE_BOX); view_butt[25]->selection_color(GMSH_TOGGLE_COLOR); view_butt[25]->callback(activate_cb, (void*)"view_axes_auto_3d"); - view_value[13] = new Fl_Value_Input(L + width / 2, 2 * WB + 6 * BH, IW / 3, BH); - view_value[14] = new Fl_Value_Input(L + width / 2 + IW / 3, 2 * WB + 6 * BH, IW / 3, BH); - view_value[15] = new Fl_Value_Input(L + width / 2 + 2 * IW / 3, 2 * WB + 6 * BH, IW / 3, BH, "Minimum"); + view_value[13] = new Fl_Value_Input(L + 2 * WB, 2 * WB + 6 * BH, IW / 3, BH); + view_value[14] = new Fl_Value_Input(L + 2 * WB + IW / 3, 2 * WB + 6 * BH, IW / 3, BH); + view_value[15] = new Fl_Value_Input(L + 2 * WB + 2 * IW / 3, 2 * WB + 6 * BH, IW / 3, BH, "3D Axes minimum"); view_value[15]->align(FL_ALIGN_RIGHT); - view_value[16] = new Fl_Value_Input(L + width / 2, 2 * WB + 7 * BH, IW / 3, BH); - view_value[17] = new Fl_Value_Input(L + width / 2 + IW / 3, 2 * WB + 7 * BH, IW / 3, BH); - view_value[18] = new Fl_Value_Input(L + width / 2 + 2 * IW / 3, 2 * WB + 7 * BH, IW / 3, BH, "Maximum"); + view_value[16] = new Fl_Value_Input(L + 2 * WB, 2 * WB + 7 * BH, IW / 3, BH); + view_value[17] = new Fl_Value_Input(L + 2 * WB + IW / 3, 2 * WB + 7 * BH, IW / 3, BH); + view_value[18] = new Fl_Value_Input(L + 2 * WB + 2 * IW / 3, 2 * WB + 7 * BH, IW / 3, BH, "3D Axes maximum"); view_value[18]->align(FL_ALIGN_RIGHT); - view_butt[7] = new Fl_Check_Button(L + width / 2, 2 * WB + 8 * BH, BW / 2 - WB, BH, "Automatic 2D positioning"); + view_butt[7] = new Fl_Check_Button(L + 2 * WB, 2 * WB + 8 * BH, BW / 2 - WB, BH, "Set position and size of 2D axes automatically"); view_butt[7]->type(FL_TOGGLE_BUTTON); view_butt[7]->down_box(GMSH_TOGGLE_BOX); view_butt[7]->selection_color(GMSH_TOGGLE_COLOR); view_butt[7]->callback(activate_cb, (void*)"view_axes_auto_2d"); - view_value[20] = new Fl_Value_Input(L + width / 2, 2 * WB + 9 * BH, IW / 2, BH); + view_value[20] = new Fl_Value_Input(L + 2 * WB, 2 * WB + 9 * BH, IW / 2, BH); view_value[20]->minimum(-1024); view_value[20]->maximum(1024); view_value[20]->step(1); - view_value[21] = new Fl_Value_Input(L + width / 2 + IW / 2, 2 * WB + 9 * BH, IW / 2, BH, "Position"); + view_value[21] = new Fl_Value_Input(L + 2 * WB + IW / 2, 2 * WB + 9 * BH, IW / 2, BH, "2D axes position"); view_value[21]->align(FL_ALIGN_RIGHT); view_value[21]->minimum(-1024); view_value[21]->maximum(1024); view_value[21]->step(1); - view_value[22] = new Fl_Value_Input(L + width / 2, 2 * WB + 10 * BH, IW / 2, BH); + view_value[22] = new Fl_Value_Input(L + 2 * WB, 2 * WB + 10 * BH, IW / 2, BH); view_value[22]->minimum(0); view_value[22]->maximum(1024); view_value[22]->step(1); - view_value[23] = new Fl_Value_Input(L + width / 2 + IW / 2, 2 * WB + 10 * BH, IW / 2, BH, "Size"); + view_value[23] = new Fl_Value_Input(L + 2 * WB + IW / 2, 2 * WB + 10 * BH, IW / 2, BH, "3D axes size"); view_value[23]->align(FL_ALIGN_RIGHT); view_value[23]->minimum(0); view_value[23]->maximum(1024); @@ -2908,85 +2971,20 @@ void GUI::create_option_window() view_menu_butt[0] = new Fl_Menu_Button(L + 2 * WB, 2 * WB + 9 * BH, IW, BH, "Fields"); view_menu_butt[0]->menu(menu_view_field_types); - - o->end(); - } - { - view_range = new Fl_Group(L + WB, WB + BH, width - 2 * WB, height - 2 * WB - BH, "Range"); - view_range->hide(); - - view_value[30] = new Fl_Value_Input(L + 2 * WB, 2 * WB + 1 * BH, IW, BH, "Number of intervals"); - view_value[30]->align(FL_ALIGN_RIGHT); - view_value[30]->minimum(1); - view_value[30]->maximum(256); - view_value[30]->step(1); - - static Fl_Menu_Item menu_iso[] = { - {"Iso-values", 0, 0, 0}, - {"Filled iso-values", 0, 0, 0}, - {"Continuous map", 0, 0, 0}, - {"Numeric values", 0, 0, 0}, - {0} - }; - view_choice[0] = new Fl_Choice(L + 2 * WB, 2 * WB + 2 * BH, IW, BH, "Intervals type"); - view_choice[0]->menu(menu_iso); - view_choice[0]->align(FL_ALIGN_RIGHT); - view_choice[0]->tooltip("(Alt+t)"); - - static Fl_Menu_Item menu_range[] = { - {"Default", 0, 0, 0}, - {"Per time step", 0, 0, 0}, - {"Custom", 0, 0, 0}, - {0} - }; - view_choice[7] = new Fl_Choice(L + 2 * WB, 2 * WB + 3 * BH, IW, BH, "Range type"); - view_choice[7]->menu(menu_range); - view_choice[7]->align(FL_ALIGN_RIGHT); - view_choice[7]->callback(activate_cb, (void*)"custom_range"); - - int sw = (int)(2.5 * fontsize); - view_push_butt[1] = new Fl_Button(L + 2 * WB, 2 * WB + 4 * BH, sw, BH, "Min"); - view_push_butt[1]->callback(view_options_custom_set_cb, (void*)"Min"); - view_value[31] = new Fl_Value_Input(L + 2 * WB + sw, 2 * WB + 4 * BH, IW - sw, BH, "Custom minimum"); - view_value[31]->align(FL_ALIGN_RIGHT); - - view_push_butt[2] = new Fl_Button(L + 2 * WB, 2 * WB + 5 * BH, sw, BH, "Max"); - view_push_butt[2]->callback(view_options_custom_set_cb, (void*)"Max"); - view_value[32] = new Fl_Value_Input(L + 2 * WB + sw, 2 * WB + 5 * BH, IW - sw, BH, "Custom maximum"); - view_value[32]->align(FL_ALIGN_RIGHT); - - static Fl_Menu_Item menu_scale[] = { - {"Linear", 0, 0, 0}, - {"Logarithmic", 0, 0, 0}, - {"Double logarithmic", 0, 0, 0}, - {0} - }; - view_choice[1] = new Fl_Choice(L + 2 * WB, 2 * WB + 6 * BH, IW, BH, "Scale"); - view_choice[1]->menu(menu_scale); - view_choice[1]->align(FL_ALIGN_RIGHT); - - view_input[1] = new Fl_Input(L + 2 * WB, 2 * WB + 7 * BH, IW, BH, "Number format"); - view_input[1]->align(FL_ALIGN_RIGHT); - - view_butt[38] = new Fl_Check_Button(L + 2 * WB, 2 * WB + 8 * BH, BW, BH, "Saturate values"); - view_butt[38]->type(FL_TOGGLE_BUTTON); - view_butt[38]->down_box(GMSH_TOGGLE_BOX); - view_butt[38]->selection_color(GMSH_TOGGLE_COLOR); - - view_value[33] = new Fl_Value_Input(L + 2 * WB, 2 * WB + 9 * BH, IW, BH, "Maximum recursion level"); + view_value[33] = new Fl_Value_Input(L + 2 * WB, 2 * WB + 10 * BH, IW, BH, "Maximum recursion level"); view_value[33]->align(FL_ALIGN_RIGHT); view_value[33]->minimum(0); view_value[33]->maximum(MAX_LEVEL_OF_ZOOM); view_value[33]->step(1); view_value[33]->value(0); - view_value[34] = new Fl_Value_Input(L + 2 * WB, 2 * WB + 10 * BH, IW, BH, "Target error"); + view_value[34] = new Fl_Value_Input(L + 2 * WB, 2 * WB + 11 * BH, IW, BH, "Target error"); view_value[34]->align(FL_ALIGN_RIGHT); view_value[34]->minimum(0); view_value[34]->maximum(1); view_value[34]->value(1.e-2); - view_range->end(); + o->end(); } { Fl_Group *o = new Fl_Group(L + WB, WB + BH, width - 2 * WB, height - 2 * WB - BH, "Offset"); @@ -3265,12 +3263,12 @@ void GUI::update_view_window(int num) } if(v->NbSP) { - view_butt[2]->activate(); - view_butt[3]->activate(); + ((Fl_Menu_Item*)view_choice[13]->menu())[1].activate(); + ((Fl_Menu_Item*)view_choice[13]->menu())[2].activate(); } else { - view_butt[2]->deactivate(); - view_butt[3]->deactivate(); + ((Fl_Menu_Item*)view_choice[13]->menu())[1].deactivate(); + ((Fl_Menu_Item*)view_choice[13]->menu())[2].deactivate(); } opt_view_auto_position(num, GMSH_GUI, 0); @@ -3304,11 +3302,11 @@ void GUI::update_view_window(int num) if(v->TextOnly) { view_range->deactivate(); - view_butt[1]->deactivate(); + ((Fl_Menu_Item*)view_choice[13]->menu())[0].deactivate(); } else { view_range->activate(); - view_butt[1]->activate(); + ((Fl_Menu_Item*)view_choice[13]->menu())[0].activate(); } opt_view_show_element(num, GMSH_GUI, 0); opt_view_light(num, GMSH_GUI, 0); diff --git a/Geo/GModelIO.cpp b/Geo/GModelIO.cpp index 290ec20f92..a2211499eb 100644 --- a/Geo/GModelIO.cpp +++ b/Geo/GModelIO.cpp @@ -1,4 +1,4 @@ -// $Id: GModelIO.cpp,v 1.18 2006-08-17 06:28:30 geuzaine Exp $ +// $Id: GModelIO.cpp,v 1.19 2006-08-17 18:15:39 geuzaine Exp $ // // Copyright (C) 1997-2006 C. Geuzaine, J.-F. Remacle // @@ -761,9 +761,9 @@ static int skipUntil(FILE *fp, char *key) static int readVerticesVRML(FILE *fp, std::map<int, MVertex*> &vertices, std::vector<MVertex*> &allvertices) { - int num = 0; double x, y, z; if(fscanf(fp, " [ %lf %lf %lf", &x, &y, &z) != 3) return 0; + int num = 0; vertices[num++] = new MVertex(x, y, z); while(fscanf(fp, " , %lf %lf %lf", &x, &y, &z) == 3) vertices[num++] = new MVertex(x, y, z); @@ -817,7 +817,7 @@ static int readElementsVRML(FILE *fp, std::map<int, MVertex*> &v, int region, } } if(idx.size()){ - Msg(GERROR, "Premature end of VRML file"); + Msg(GERROR, "Prematured end of VRML file"); return 0; } Msg(INFO, "%d elements", elements[0][region].size() + -- GitLab