diff --git a/Common/Context.cpp b/Common/Context.cpp index 1284cc7b6e37ba47b331bc2d37493da551f5d37d..1c4fcba6689c1df885e642fa622a6583e92cbe1c 100644 --- a/Common/Context.cpp +++ b/Common/Context.cpp @@ -77,7 +77,7 @@ CTX::CTX() mesh.volumesEdges = mesh.volumesFaces = mesh.surfacesEdges = mesh.surfacesFaces = 0; mesh.volumesFaces = mesh.surfacesEdges = mesh.surfacesFaces = 0; mesh.smoothInternalEdges = mesh.smoothNormals = mesh.reverseAllNormals = 0; - mesh.explode = mesh.angleSmoothNormals = 0; + mesh.explode = mesh.numSubEdges = mesh.angleSmoothNormals = 0; mesh.colorCarousel = 0; color.mesh.tangents = color.mesh.tetrahedron = color.mesh.triangle = 0; color.mesh.prism = color.mesh.pyramid = color.mesh.hexahedron = 0; diff --git a/Common/Options.cpp b/Common/Options.cpp index ebbd34799167aee012b836bea46238bde3ef67c2..ea727f097b5ab7ee26ab4282e731d0e208b922e2 100644 --- a/Common/Options.cpp +++ b/Common/Options.cpp @@ -4775,8 +4775,17 @@ double opt_geometry_old_newreg(OPT_ARGS_NUM) double opt_geometry_num_sub_edges(OPT_ARGS_NUM) { - if(action & GMSH_SET) + if(action & GMSH_SET){ CTX::instance()->geom.numSubEdges = (int)val; + if(CTX::instance()->geom.numSubEdges < 1) + CTX::instance()->geom.numSubEdges = 1; + } +#if defined(HAVE_FLTK) + if(FlGui::available() && (action & GMSH_GUI)) { + FlGui::instance()->options->geo.value[19]->value + (CTX::instance()->geom.numSubEdges); + } +#endif return CTX::instance()->geom.numSubEdges; } @@ -4892,6 +4901,7 @@ double opt_mesh_optimize_netgen(OPT_ARGS_NUM) #endif return CTX::instance()->mesh.optimizeNetgen; } + double opt_mesh_remove_4_triangles(OPT_ARGS_NUM) { if(action & GMSH_SET) @@ -4908,7 +4918,7 @@ double opt_mesh_remove_4_triangles(OPT_ARGS_NUM) double opt_mesh_refine_steps(OPT_ARGS_NUM) { if(action & GMSH_SET) - CTX::instance()->mesh.refineSteps =(int) val; + CTX::instance()->mesh.refineSteps = (int)val; return CTX::instance()->mesh.refineSteps; } @@ -4927,8 +4937,18 @@ double opt_mesh_normals(OPT_ARGS_NUM) double opt_mesh_num_sub_edges(OPT_ARGS_NUM) { - if(action & GMSH_SET) - CTX::instance()->mesh.numSubEdges =(int) val; + if(action & GMSH_SET){ + if(CTX::instance()->mesh.numSubEdges != val) + CTX::instance()->mesh.changed |= (ENT_LINE | ENT_SURFACE | ENT_VOLUME); + CTX::instance()->mesh.numSubEdges = (int)val; + if(CTX::instance()->mesh.numSubEdges < 1) + CTX::instance()->mesh.numSubEdges = 1; + } +#if defined(HAVE_FLTK) + if(FlGui::available() && (action & GMSH_GUI)) + FlGui::instance()->options->mesh.value[14]->value + (CTX::instance()->mesh.numSubEdges); +#endif return CTX::instance()->mesh.numSubEdges; } diff --git a/Fltk/menuWindow.cpp b/Fltk/menuWindow.cpp index d2f64cc6292933daa689de61d78c46801cf469e7..d2636d04bc6d4329d651d33524a50952f6defca7 100644 --- a/Fltk/menuWindow.cpp +++ b/Fltk/menuWindow.cpp @@ -111,7 +111,7 @@ static const char *input_formats = "STL Surface Mesh" TT "*.stl" NN "VTK Mesh" TT "*.vtk" NN "VRML Surface Mesh" TT "*.{wrl,vrml}" NN - "PLY2 Surface Mesh" TT "*.{ply2}" NN + "PLY2 Surface Mesh" TT "*.ply2" NN "BMP" TT "*.bmp" NN #if defined(HAVE_LIBJPEG) "JPEG" TT "*.{jpg,jpeg}" NN diff --git a/Fltk/optionWindow.cpp b/Fltk/optionWindow.cpp index 2cedcb5e5c6d3b8b48cc84904adfa3a5ff02b402..55da5d110a9c0e9b38db05d86e767abd5748371c 100644 --- a/Fltk/optionWindow.cpp +++ b/Fltk/optionWindow.cpp @@ -403,6 +403,7 @@ static void geometry_options_ok_cb(Fl_Widget *w, void *data) opt_geometry_offset0(0, GMSH_SET, o->geo.value[10]->value()); opt_geometry_offset1(0, GMSH_SET, o->geo.value[14]->value()); opt_geometry_offset2(0, GMSH_SET, o->geo.value[18]->value()); + opt_geometry_num_sub_edges(0, GMSH_SET, o->geo.value[19]->value()); opt_geometry_point_type(0, GMSH_SET, o->geo.choice[0]->value()); opt_geometry_line_type(0, GMSH_SET, o->geo.choice[1]->value()); @@ -466,6 +467,7 @@ static void mesh_options_ok_cb(Fl_Widget *w, void *data) opt_mesh_normals(0, GMSH_SET, o->mesh.value[8]->value()); opt_mesh_explode(0, GMSH_SET, o->mesh.value[9]->value()); opt_mesh_tangents(0, GMSH_SET, o->mesh.value[13]->value()); + opt_mesh_num_sub_edges(0, GMSH_SET, o->mesh.value[14]->value()); opt_mesh_point_size(0, GMSH_SET, o->mesh.value[10]->value()); opt_mesh_line_width(0, GMSH_SET, o->mesh.value[11]->value()); opt_mesh_label_sampling(0, GMSH_SET, o->mesh.value[12]->value()); @@ -1974,8 +1976,16 @@ optionWindow::optionWindow(int deltaFontSize) geo.choice[1]->align(FL_ALIGN_RIGHT); geo.choice[1]->callback(geometry_options_ok_cb); + geo.value[19] = new Fl_Value_Input + (L + 2 * WB, 2 * WB + 5 * BH, IW, BH, "Line subdivisions"); + geo.value[19]->minimum(1); + geo.value[19]->maximum(50); + geo.value[19]->step(1); + geo.value[19]->align(FL_ALIGN_RIGHT); + geo.value[19]->callback(geometry_options_ok_cb); + geo.value[4] = new Fl_Value_Input - (L + 2 * WB, 2 * WB + 5 * BH, IW, BH, "Line width"); + (L + 2 * WB, 2 * WB + 6 * BH, IW, BH, "Line width"); geo.value[4]->minimum(0.1); geo.value[4]->maximum(50); geo.value[4]->step(0.1); @@ -1983,7 +1993,7 @@ optionWindow::optionWindow(int deltaFontSize) geo.value[4]->callback(geometry_options_ok_cb); geo.value[6] = new Fl_Value_Input - (L + 2 * WB, 2 * WB + 6 * BH, IW, BH, "Selected line width"); + (L + 2 * WB, 2 * WB + 7 * BH, IW, BH, "Selected line width"); geo.value[6]->minimum(0.1); geo.value[6]->maximum(50); geo.value[6]->step(0.1); @@ -1991,7 +2001,7 @@ optionWindow::optionWindow(int deltaFontSize) geo.value[6]->callback(geometry_options_ok_cb); geo.choice[2] = new Fl_Choice - (L + 2 * WB, 2 * WB + 7 * BH, IW, BH, "Surface display"); + (L + 2 * WB, 2 * WB + 8 * BH, IW, BH, "Surface display"); geo.choice[2]->menu(menu_surface_display); geo.choice[2]->align(FL_ALIGN_RIGHT); geo.choice[2]->callback(geometry_options_ok_cb); @@ -2409,6 +2419,15 @@ optionWindow::optionWindow(int deltaFontSize) mesh.value[11]->align(FL_ALIGN_RIGHT); mesh.value[11]->callback(mesh_options_ok_cb); + mesh.value[14] = new Fl_Value_Input + (L + 2 * WB, 2 * WB + 5 * BH, IW, BH, "High-order element subdivisions"); + mesh.value[14]->minimum(1); + mesh.value[14]->maximum(10); + mesh.value[14]->step(1); + mesh.value[14]->align(FL_ALIGN_RIGHT); + mesh.value[14]->when(FL_WHEN_RELEASE); + mesh.value[14]->callback(mesh_options_ok_cb); + o->end(); } {