From dc66de55a098f8fc230b8da3e2730b9d856b1cbb Mon Sep 17 00:00:00 2001 From: Christophe Geuzaine <cgeuzaine@ulg.ac.be> Date: Sat, 3 Feb 2001 13:10:26 +0000 Subject: [PATCH] Finalized first FLTK version (shortcuts, help, redraw, etc.) --- Fltk/Callbacks.cpp | 4 +- Fltk/Callbacks.h | 1 + Fltk/Colorbar_Window.cpp | 30 ++-- Fltk/GUI.cpp | 221 +++++++++++++++++++++++--- Fltk/GUI.h | 1 + Fltk/Help.h | 74 +++++++++ Fltk/Makefile | 10 +- Fltk/Opengl.cpp | 6 +- Fltk/Opengl_Window.cpp | 148 ++++------------- Fltk/Opengl_Window.h | 3 - Graphics/Draw.cpp | 4 +- Graphics/Makefile | 14 +- Graphics/Scale.cpp | 4 +- Makefile | 331 +++++++++++++++++++++------------------ {Common => Motif}/Help.h | 0 Motif/Makefile | 4 +- doc/gmsh.1 | 24 +-- tutorial/README | 54 ++----- utils/Makefile | 3 +- www/gmsh.html | 72 ++++++--- 20 files changed, 619 insertions(+), 389 deletions(-) create mode 100644 Fltk/Help.h rename {Common => Motif}/Help.h (100%) diff --git a/Fltk/Callbacks.cpp b/Fltk/Callbacks.cpp index 6dc7e3a78a..63e92ea566 100644 --- a/Fltk/Callbacks.cpp +++ b/Fltk/Callbacks.cpp @@ -1,4 +1,4 @@ -// $Id: Callbacks.cpp,v 1.23 2001-02-02 15:05:03 geuzaine Exp $ +// $Id: Callbacks.cpp,v 1.24 2001-02-03 13:10:26 geuzaine Exp $ #include "Gmsh.h" #include "GmshUI.h" @@ -387,7 +387,7 @@ void opt_general_orthographic_cb(CALLBACK_ARGS){ else CTX.ortho = 0; } void opt_general_color_cb(CALLBACK_ARGS){ - Init_Colors((int)((Fl_Value_Input*)w)->value()-1); + Init_Colors((int)((Fl_Value_Input*)w)->value()); Draw(); } void opt_general_shininess_cb(CALLBACK_ARGS){ diff --git a/Fltk/Callbacks.h b/Fltk/Callbacks.h index 5a8d20a9a0..485432b843 100644 --- a/Fltk/Callbacks.h +++ b/Fltk/Callbacks.h @@ -4,6 +4,7 @@ #define CALLBACK_ARGS Fl_Widget* w, void* data int SetGlobalShortcut(int event); +void MarkAllViewsChanged(int action); // Common callbacks diff --git a/Fltk/Colorbar_Window.cpp b/Fltk/Colorbar_Window.cpp index a160c4650d..db18e239c3 100644 --- a/Fltk/Colorbar_Window.cpp +++ b/Fltk/Colorbar_Window.cpp @@ -1,4 +1,4 @@ -// $Id: Colorbar_Window.cpp,v 1.3 2001-01-29 08:43:44 geuzaine Exp $ +// $Id: Colorbar_Window.cpp,v 1.4 2001-02-03 13:10:26 geuzaine Exp $ #include "Gmsh.h" #include "GmshUI.h" @@ -242,31 +242,31 @@ void Colorbar_Window::redraw_range(int a, int b){ if (help_flag){ int i=0, xx=11*font_height; fl_draw("1, 2, ..., 6", 10,10+(i+1)*font_height); - fl_draw("select predefined colormap", xx,10+(i+1)*font_height); i++; + fl_draw( "select predefined colormap", xx,10+(i+1)*font_height); i++; fl_draw("mouse1", 10,10+(i+1)*font_height); - fl_draw("draw red or hue channel", xx,10+(i+1)*font_height); i++; + fl_draw( "draw red or hue channel", xx,10+(i+1)*font_height); i++; fl_draw("mouse2", 10,10+(i+1)*font_height); - fl_draw("draw green or saturation channel", xx,10+(i+1)*font_height); i++; + fl_draw( "draw green or saturation channel", xx,10+(i+1)*font_height); i++; fl_draw("mouse3", 10,10+(i+1)*font_height); - fl_draw("draw blue or value channel", xx,10+(i+1)*font_height); i++; + fl_draw( "draw blue or value channel", xx,10+(i+1)*font_height); i++; fl_draw("Ctrl+mouse1", 10,10+(i+1)*font_height); - fl_draw("draw alpha channel", xx,10+(i+1)*font_height); i++; + fl_draw( "draw alpha channel", xx,10+(i+1)*font_height); i++; fl_draw("c, p, r", 10,10+(i+1)*font_height); - fl_draw("copy, paste or reset current colormap", xx,10+(i+1)*font_height); i++; + fl_draw( "copy, paste or reset current colormap", xx,10+(i+1)*font_height); i++; fl_draw("m", 10,10+(i+1)*font_height); - fl_draw("toggle RGB/HSV mode", xx,10+(i+1)*font_height); i++; + fl_draw( "toggle RGB/HSV mode", xx,10+(i+1)*font_height); i++; fl_draw("left, right", 10,10+(i+1)*font_height); - fl_draw("move or rotate colormap", xx,10+(i+1)*font_height); i++; + fl_draw( "move or rotate colormap", xx,10+(i+1)*font_height); i++; fl_draw("up, down", 10,10+(i+1)*font_height); - fl_draw("modify color curvature", xx,10+(i+1)*font_height); i++; + fl_draw( "modify color curvature", xx,10+(i+1)*font_height); i++; fl_draw("Ctrl+up, Ctrl+down", 10,10+(i+1)*font_height); - fl_draw("modify alpha curvature", xx,10+(i+1)*font_height); i++; + fl_draw( "modify alpha curvature", xx,10+(i+1)*font_height); i++; fl_draw("i, Ctrl+i", 10,10+(i+1)*font_height); - fl_draw("invert x or y range", xx,10+(i+1)*font_height); i++; + fl_draw( "invert x or y range", xx,10+(i+1)*font_height); i++; fl_draw("b, Ctrl+b", 10,10+(i+1)*font_height); - fl_draw("increase or decrease gamma", xx,10+(i+1)*font_height); i++; + fl_draw( "increase or decrease gamma", xx,10+(i+1)*font_height); i++; fl_draw("h", 10,10+(i+1)*font_height); - fl_draw("show this help message", xx,10+(i+1)*font_height); i++; + fl_draw( "show this help message", xx,10+(i+1)*font_height); i++; } else if(ct->ipar[COLORTABLE_MODE] == COLORTABLE_RGB) @@ -479,7 +479,7 @@ int Colorbar_Window::handle(int event){ move_marker = 1; // determine which curve to modify - if (0) { + if (Fl::event_state(FL_CTRL)) { p4 = 1; } else { diff --git a/Fltk/GUI.cpp b/Fltk/GUI.cpp index e3aab59e73..384817019d 100644 --- a/Fltk/GUI.cpp +++ b/Fltk/GUI.cpp @@ -1,4 +1,4 @@ -// $Id: GUI.cpp,v 1.31 2001-02-02 15:05:03 geuzaine Exp $ +// $Id: GUI.cpp,v 1.32 2001-02-03 13:10:26 geuzaine Exp $ // To make the interface as visually consistent as possible, please: // - use the BH, BW, WB, IW values for button heights/widths, window borders, etc. @@ -241,35 +241,218 @@ int GUI::global_shortcuts(int event){ // we only handle shortcuts here if(event != FL_SHORTCUT) return 0 ; - // test... - if(Fl::test_shortcut('e')){ - end_selection = 1; - return 1; - } - else if(Fl::test_shortcut('q')){ - quit_selection = 1; + + if(Fl::test_shortcut('0') || Fl::test_shortcut(FL_Escape)){ + geometry_reload_cb(0,0); return 1; } - else if(Fl::test_shortcut('1')){ + else if(Fl::test_shortcut('1') || Fl::test_shortcut(FL_F+1)){ mesh_1d_cb(0,0); return 1; } - else if(Fl::test_shortcut('2')){ + else if(Fl::test_shortcut('2') || Fl::test_shortcut(FL_F+2)){ mesh_2d_cb(0,0); return 1; } - else if(Fl::test_shortcut('3')){ + else if(Fl::test_shortcut('3') || Fl::test_shortcut(FL_F+3)){ mesh_3d_cb(0,0); return 1; } + else if(Fl::test_shortcut('g')){ + mod_geometry_cb(0,0); + return 1; + } + else if(Fl::test_shortcut('m')){ + mod_mesh_cb(0,0); + return 1; + } + else if(Fl::test_shortcut('p')){ + mod_post_cb(0,0); + return 1; + } + else if(Fl::test_shortcut('e')){ + end_selection = 1; + return 1; + } + else if(Fl::test_shortcut('q')){ + quit_selection = 1; + return 1; + } + else if(Fl::test_shortcut('s')){ + CTX.post.anim_delay += 100000 ; + post_value[0]->value(1.e-6*CTX.post.anim_delay); + post_value[0]->redraw(); + return 1; + } + else if(Fl::test_shortcut(FL_SHIFT+'s')){ + CTX.post.anim_delay -= 100000 ; + if(CTX.post.anim_delay < 0) CTX.post.anim_delay = 0 ; + post_value[0]->value(1.e-6*CTX.post.anim_delay); + post_value[0]->redraw(); + return 1; + } else if(Fl::test_shortcut(FL_CTRL+'z')){ g_window->iconize(); return 1; } - else if(Fl::test_shortcut(FL_Escape)){ + else if(Fl::test_shortcut(FL_ALT+'f')){ + CTX.fast = !CTX.fast; + gen_butt[2]->value(CTX.fast); + gen_butt[2]->redraw(); + redraw_opengl(); + return 1; + } + else if(Fl::test_shortcut(FL_ALT+'b')){ + CTX.post.scales = !CTX.post.scales; + redraw_opengl(); + return 1; + } + else if(Fl::test_shortcut(FL_ALT+'o')){ + CTX.ortho = !CTX.ortho ; + gen_butt[6]->value(CTX.ortho); + gen_butt[6]->redraw(); + gen_butt[7]->value(!CTX.ortho); + gen_butt[7]->redraw(); + redraw_opengl(); + return 1; + } + else if(Fl::test_shortcut(FL_ALT+'c')){ + if(CTX.color.id==0) Init_Colors(1); + else if(CTX.color.id==1) Init_Colors(2); + else Init_Colors(0); + gen_value[0]->value(CTX.color.id); + redraw_opengl(); + return 1; + } + else if(Fl::test_shortcut(FL_ALT+'d')){ + if(!CTX.mesh.hidden && !CTX.mesh.shade) + CTX.mesh.hidden = 1; + else if(CTX.mesh.hidden && !CTX.mesh.shade) + CTX.mesh.shade = 1; + else{ + CTX.mesh.hidden = 0; CTX.mesh.shade = 0; + } + mesh_butt[11]->value(!CTX.mesh.hidden); + mesh_butt[11]->redraw(); + mesh_butt[12]->value(CTX.mesh.hidden); + mesh_butt[12]->redraw(); + mesh_butt[13]->value(CTX.mesh.shade); + mesh_butt[13]->redraw(); + redraw_opengl(); + return 1; + } + else if(Fl::test_shortcut(FL_ALT+'x')){ + status_xyz1p_cb(0,(void*)0); + return 1; + } + else if(Fl::test_shortcut(FL_ALT+'y')){ + status_xyz1p_cb(0,(void*)1); + return 1; + } + else if(Fl::test_shortcut(FL_ALT+'z')){ + status_xyz1p_cb(0,(void*)2); + return 1; + } + else if(Fl::test_shortcut(FL_ALT+FL_SHIFT+'a')){ + CTX.axes = !CTX.axes; + gen_butt[0]->value(CTX.axes); + gen_butt[0]->redraw(); + redraw_opengl(); + return 1; + } + else if(Fl::test_shortcut(FL_ALT+'a')){ + CTX.small_axes = !CTX.small_axes; + gen_butt[1]->value(CTX.small_axes); + gen_butt[1]->redraw(); + redraw_opengl(); + return 1; + } + else if(Fl::test_shortcut(FL_ALT+'p')){ + CTX.geom.points = !CTX.geom.points; + geo_butt[0]->value(CTX.geom.points); + geo_butt[0]->redraw(); + redraw_opengl(); + return 1; + } + else if(Fl::test_shortcut(FL_ALT+'l')){ + CTX.geom.lines = !CTX.geom.lines; + geo_butt[1]->value(CTX.geom.lines); + geo_butt[1]->redraw(); + redraw_opengl(); + return 1; + } + else if(Fl::test_shortcut(FL_ALT+'s')){ + CTX.geom.surfaces = !CTX.geom.surfaces; + geo_butt[2]->value(CTX.geom.surfaces); + geo_butt[2]->redraw(); + redraw_opengl(); + return 1; + } + else if(Fl::test_shortcut(FL_ALT+'v')){ + CTX.geom.volumes = !CTX.geom.volumes; + geo_butt[3]->value(CTX.geom.volumes); + geo_butt[3]->redraw(); + redraw_opengl(); + return 1; + } + else if(Fl::test_shortcut(FL_ALT+FL_SHIFT+'p')){ + CTX.mesh.points = !CTX.mesh.points; + mesh_butt[3]->value(CTX.mesh.points); + mesh_butt[3]->redraw(); + redraw_opengl(); + return 1; + } + else if(Fl::test_shortcut(FL_ALT+FL_SHIFT+'l')){ + CTX.mesh.lines = !CTX.mesh.lines; + mesh_butt[4]->value(CTX.mesh.lines); + mesh_butt[4]->redraw(); + redraw_opengl(); + return 1; + } + else if(Fl::test_shortcut(FL_ALT+FL_SHIFT+'s')){ + CTX.mesh.surfaces = !CTX.mesh.surfaces; + mesh_butt[5]->value(CTX.mesh.surfaces); + mesh_butt[5]->redraw(); + redraw_opengl(); + return 1; + } + else if(Fl::test_shortcut(FL_ALT+FL_SHIFT+'v')){ + CTX.mesh.volumes = !CTX.mesh.volumes; + mesh_butt[6]->value(CTX.mesh.volumes); + mesh_butt[6]->redraw(); + redraw_opengl(); + return 1; + } + else if(Fl::test_shortcut(FL_ALT+'m')){ + CTX.mesh.points = !CTX.mesh.points; + CTX.mesh.lines = !CTX.mesh.lines; + CTX.mesh.surfaces = !CTX.mesh.surfaces; + CTX.mesh.volumes = !CTX.mesh.volumes; + mesh_butt[3]->value(CTX.mesh.points); + mesh_butt[3]->redraw(); + mesh_butt[4]->value(CTX.mesh.lines); + mesh_butt[4]->redraw(); + mesh_butt[5]->value(CTX.mesh.surfaces); + mesh_butt[5]->redraw(); + mesh_butt[6]->value(CTX.mesh.volumes); + mesh_butt[6]->redraw(); + redraw_opengl(); + return 1; + } + else if(Fl::test_shortcut(FL_ALT+'t')){ + MarkAllViewsChanged(1); + Post_View *v = (Post_View*)List_Pointer(Post_ViewList, view_number); + view_butt[6]->value(v->IntervalsType==DRAW_POST_ISO); + view_butt[6]->redraw(); + view_butt[7]->value(v->IntervalsType==DRAW_POST_DISCRETE); + view_butt[7]->redraw(); + view_butt[8]->value(v->IntervalsType==DRAW_POST_CONTINUOUS); + view_butt[8]->redraw(); + redraw_opengl(); return 1; } + return 0; } @@ -750,10 +933,10 @@ void GUI::create_general_options_window(){ o->labelsize(CTX.fontsize); o->hide(); gen_value[0] = new Fl_Value_Input(2*WB, 2*WB+1*BH, IW, BH, "Predefined color scheme"); - gen_value[0]->minimum(1); - gen_value[0]->maximum(3); + gen_value[0]->minimum(0); + gen_value[0]->maximum(2); gen_value[0]->step(1); - gen_value[0]->value(0); + gen_value[0]->value(CTX.color.id); gen_value[0]->callback(opt_general_color_cb); gen_value[1] = new Fl_Value_Input(2*WB, 2*WB+2*BH, IW, BH, "Material shininess"); gen_value[1]->minimum(0); @@ -1143,7 +1326,7 @@ void GUI::create_post_options_window(){ post_value[0]->maximum(10); post_value[0]->step(0.01); post_value[0]->callback(opt_post_anim_delay_cb); - post_value[0]->value(CTX.post.anim_delay); + post_value[0]->value(1.e-6*CTX.post.anim_delay); post_value[0]->labelsize(CTX.fontsize); post_value[0]->type(FL_HORIZONTAL); post_value[0]->align(FL_ALIGN_RIGHT); @@ -1516,7 +1699,7 @@ void GUI::create_view_window(int num){ { view_colors = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Colors"); view_colors->labelsize(CTX.fontsize); - //view_colorbar->hide(); + view_colors->hide(); view_colorbar_window = new Colorbar_Window(2*WB, 2*WB+1*BH, width-4*WB, height-5*WB-2*BH); view_colorbar_window->end(); @@ -1575,7 +1758,7 @@ void GUI::create_view_window(int num){ { view_intervals = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Intervals"); view_intervals->labelsize(CTX.fontsize); - view_intervals->hide(); + //view_intervals->hide(); view_value[2] = new Fl_Value_Input(2*WB, 2*WB+1*BH, IW, BH, "Number of intervals"); view_value[2]->labelsize(CTX.fontsize); view_value[2]->type(FL_HORIZONTAL); @@ -1703,6 +1886,8 @@ void GUI::create_view_window(int num){ void GUI::update_view_window(int num){ int i; double val; + + view_number = num ; Post_View *v = (Post_View*)List_Pointer(Post_ViewList, num); static char buffer[1024]; diff --git a/Fltk/GUI.h b/Fltk/GUI.h index d193a2f566..466f3fb139 100644 --- a/Fltk/GUI.h +++ b/Fltk/GUI.h @@ -132,6 +132,7 @@ class GUI{ Fl_Window *about_window ; // view options window + int view_number ; Fl_Window *view_window ; Fl_Group *view_colors, *view_colorbar, *view_range, *view_intervals ; Fl_Group *view_offsetraise, *view_timestep, *view_vector ; diff --git a/Fltk/Help.h b/Fltk/Help.h new file mode 100644 index 0000000000..92fc7ea2be --- /dev/null +++ b/Fltk/Help.h @@ -0,0 +1,74 @@ +#ifndef _HELP_H_ +#define _HELP_H_ + +static char txt_help[]= +"Mouse:\n" +"\n" +" move - highlight the elementary geometrical entity\n" +" currently under the mouse pointer and display\n" +" its properties in the status bar\n" +" - size a rubber zoom started with (Ctrl+mouse1)\n" +" mouse1 - rotate\n" +" - accept a rubber zoom started by Ctrl+mouse1\n" +" Ctrl+mouse1 start (anisotropic) rubber zoom\n" +" Shift+mouse1 - zoom (isotropic)\n" +" - cancel a rubber zoom\n" +" mouse2 same as Shift+mouse1\n" +" Ctrl+mouse2 orthogonalize display\n" +" mouse3 - pan\n" +" - cancel a rubber zoom\n" +" - pop up menu on module name\n" +" - pop up menu on post-processing view button\n" +" Ctrl+mouse3 reset viewpoint to default\n" +"\n" +"Menu bar shortcuts:\n" +"\n" +" g go to geometry module\n" +" Shift+g show geometry options\n" +" Shift+i show statistics window\n" +" Ctrl+l reload all post-processing views\n" +" m go to mesh module\n" +" Shift+m show mesh options\n" +" Ctrl+m merge file\n" +" Shift+o show general options\n" +" Ctrl+o open file\n" +" p go to post processor module\n" +" Shift+p show post-processing general options\n" +" Ctrl+p save file by extension\n" +" Ctrl+q quit\n" +" Ctrl+r remove all post-processing views\n" +" Ctrl+s save mesh\n" +"\n" +"Other shortcuts\n" +"\n" +" 0 or Esc reload geometry input file\n" +" 1 or F1 mesh curves\n" +" 2 or F2 mesh surfaces\n" +" 3 or F3 mesh volumes\n" +" Alt+a hide/show small axes\n" +" Alt+Shift+a hide/show big moving axes\n" +" Alt+b hide/show all post processing scales\n" +" Alt+c alternate between predefined color schemes\n" +" Alt+d alternate between mesh wire frame, hidden lines and shading modes\n" +" Alt+f toggle redraw mode (fast/full)\n" +" Alt+l hide/show geometry lines\n" +" Alt+Shift+l hide/show mesh lines\n" +" Alt+m toggle visibility of all mesh entities\n" +" Alt+o change projection mode\n" +" Alt+p hide/show geometry points\n" +" Alt+Shift+p hide/show mesh points\n" +" s increase animation delay\n" +" Shift+s decrease animation delay\n" +" Alt+s hide/show geometry surfaces\n" +" Alt+Shift+s hide/show mesh surfaces\n" +" Alt+t alternate intervals mode for all post-processing views\n" +" Alt+v hide/show geometry volumes\n" +" Alt+Shift+v hide/show mesh volumes\n" +" Alt+x set X view\n" +" Alt+y set Y view\n" +" Alt+z set Z view\n" +"\n" +; + + +#endif diff --git a/Fltk/Makefile b/Fltk/Makefile index 6820986bd3..c5bce63787 100644 --- a/Fltk/Makefile +++ b/Fltk/Makefile @@ -1,4 +1,4 @@ -# $Id: Makefile,v 1.5 2001-01-13 17:08:41 geuzaine Exp $ +# $Id: Makefile,v 1.6 2001-02-03 13:10:26 geuzaine Exp $ # # Makefile for "libFltk.a" # @@ -81,7 +81,7 @@ GUI.o: GUI.cpp ../Common/Gmsh.h ../Common/Message.h ../DataStr/Malloc.h \ ../Mesh/Simplex.h ../Mesh/Edge.h ../Geo/ExtrudeParams.h \ ../Mesh/Metric.h ../Graphics/Draw.h ../Common/Views.h \ ../Common/ColorTable.h GUI.h Opengl_Window.h Colorbar_Window.h \ - Callbacks.h ../Common/Bitmaps.h ../Common/GetOptions.h ../Common/Help.h + Callbacks.h ../Common/Bitmaps.h ../Common/GetOptions.h Help.h Callbacks.o: Callbacks.cpp ../Common/Gmsh.h ../Common/Message.h \ ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \ ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h ../Geo/Geo.h \ @@ -107,4 +107,8 @@ Opengl_Window.o: Opengl_Window.cpp ../Common/Gmsh.h ../Common/Message.h \ ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Graphics/Draw.h \ ../Common/Views.h ../Common/ColorTable.h GUI.h Opengl_Window.h \ Colorbar_Window.h -Colorbar_Window.o: Colorbar_Window.cpp +Colorbar_Window.o: Colorbar_Window.cpp ../Common/Gmsh.h \ + ../Common/Message.h ../DataStr/Malloc.h ../DataStr/List.h \ + ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \ + ../Common/GmshUI.h GUI.h Opengl_Window.h Colorbar_Window.h \ + ../Common/ColorTable.h ../Common/Context.h ../Common/Const.h diff --git a/Fltk/Opengl.cpp b/Fltk/Opengl.cpp index ce3498919a..d32b7074f9 100644 --- a/Fltk/Opengl.cpp +++ b/Fltk/Opengl.cpp @@ -1,4 +1,4 @@ -// $Id: Opengl.cpp,v 1.14 2001-01-29 08:43:44 geuzaine Exp $ +// $Id: Opengl.cpp,v 1.15 2001-02-03 13:10:26 geuzaine Exp $ #include "Gmsh.h" #include "GmshUI.h" @@ -52,8 +52,8 @@ void Draw_String(char *s){ } gl_font(FL_HELVETICA, CTX.gl_fontsize); - CTX.gl_fontheight = gl_height() ; - CTX.gl_fontascent = gl_height()-gl_descent() ; + //CTX.gl_fontheight = gl_height() ; + //CTX.gl_fontascent = gl_height()-gl_descent() ; gl_draw(s); } diff --git a/Fltk/Opengl_Window.cpp b/Fltk/Opengl_Window.cpp index 77376a2245..dfe380ce78 100644 --- a/Fltk/Opengl_Window.cpp +++ b/Fltk/Opengl_Window.cpp @@ -1,4 +1,4 @@ -// $Id: Opengl_Window.cpp,v 1.8 2001-01-29 08:43:44 geuzaine Exp $ +// $Id: Opengl_Window.cpp,v 1.9 2001-02-03 13:10:26 geuzaine Exp $ #include "Gmsh.h" #include "GmshUI.h" @@ -47,75 +47,39 @@ void Opengl_Window::draw() { Draw2d(); } -void Opengl_Window::clear_overlay() { - if(CTX.overlay) {} -} +static double O1,O2,O3,O4; -void Opengl_Window::draw_overlay_zoom() { +void Opengl_Window::draw_overlay() { /* - if (!valid()) { + if(!valid()){ valid(1); - CTX.viewport[0] = 0 ; - CTX.viewport[1] = 0 ; - CTX.viewport[2] = w() ; - CTX.viewport[3] = h() ; - glViewport(CTX.viewport[0], - CTX.viewport[1], - CTX.viewport[2], - CTX.viewport[3]); + CTX.viewport[0] = 0 ; CTX.viewport[1] = 0 ; + CTX.viewport[2] = w() ; CTX.viewport[3] = h() ; + glViewport(CTX.viewport[0], CTX.viewport[1], + CTX.viewport[2], CTX.viewport[3]); } Orthogonalize(0,0); glClearIndex(0); glClear(GL_COLOR_BUFFER_BIT); - glLineWidth(1.); glClearIndex(0); glClear(GL_COLOR_BUFFER_BIT); glIndexi((CTX.color.bg<CTX.color.fg)?FL_WHITE:FL_BLACK); glBegin(GL_LINE_STRIP); - glVertex2d(xb,yb); - glVertex2d(xb+movzx,yb); - glVertex2d(xb+movzx,yb+movzy); - glVertex2d(xb,yb+movzy); - glVertex2d(xb,yb); + glVertex2d(O1, O2); + glVertex2d(O1+O3, O2); + glVertex2d(O1+O3, O2+O4); + glVertex2d(O1, O2+O4); + glVertex2d(O1, O2); glEnd(); */ } -void Opengl_Window::draw_overlay_highlight(){ - /* - if(CTX.overlay){ - glXMakeCurrent(XtDisplay(WID.G.glo), XtWindow(WID.G.glo), XCTX.glo.context); - if(ov != v || oc != c || os != s) { - glClearIndex(0); - glClear(GL_COLOR_BUFFER_BIT); - glIndexi((CTX.color.bg<CTX.color.fg)?XCTX.xcolor.ovwhite:XCTX.xcolor.ovblack); - BeginHighlight(); - HighlightEntity(v,c,s,0); - EndHighlight(0); - } - glXMakeCurrent(XtDisplay(WID.G.glw), XtWindow(WID.G.glw), XCTX.glw.context); - } - else{ - if(ov != v || oc != c || os != s) { - if(CTX.geom.highlight){ - Draw(); - } - BeginHighlight(); - HighlightEntity(v,c,s,0); - EndHighlight(0); - } - } - */ -} - -void Opengl_Window::draw_overlay() { +void Opengl_Window::clear_overlay() { } -static int Modifier=0; - -// le principe de FLTK est assez diffrent des autres toolkits: les +// le principe de FLTK est assez different des autres toolkits: les // events sont passes au handle du widget qui a le focus. Si ce handle // revoie 1, alors l'event est considere comme traite, et est // supprime. Si le handle retourne 0, l'event est passe au handle du @@ -141,15 +105,13 @@ int Opengl_Window::handle(int event) { xpos = Fl::event_x(); ypos = Fl::event_y(); - switch(ibut){ - case 1: - if(!ZoomClick && Modifier){ + if(ibut == 1 && !Fl::event_state(FL_SHIFT)){ + if(!ZoomClick && Fl::event_state(FL_CTRL)){ xb = CTX.vxmin + ((double)xpos/(double)w()) * (CTX.vxmax - CTX.vxmin); yb = CTX.vymax - ((double)ypos/(double)h()) * (CTX.vymax - CTX.vymin); xc1 = xb/CTX.s[0] - CTX.t[0]; yc1 = yb/CTX.s[1] - CTX.t[1]; ZoomClick = 1; - Modifier = 0; } else if(ZoomClick){ xe = CTX.vxmin + ((double)xpos/(double)w()) * (CTX.vxmax - CTX.vxmin); @@ -163,10 +125,9 @@ int Opengl_Window::handle(int event) { else{ WID->try_selection = 1 ; } - break; - case 2: - if(Modifier && !ZoomClick){ - Modifier = 0; + } + else if(ibut == 2 || (ibut == 1 && Fl::event_state(FL_SHIFT))){ + if(Fl::event_state(FL_CTRL) && !ZoomClick){ set_s(1, CTX.s[0]); set_s(2, CTX.s[0]); redraw(); @@ -175,10 +136,9 @@ int Opengl_Window::handle(int event) { ZoomClick = 0; clear_overlay(); } - break; - case 3: - if(Modifier && !ZoomClick){ - Modifier = 0; + } + else{ + if(Fl::event_state(FL_CTRL) && !ZoomClick){ if(CTX.useTrackball) CTX.setQuaternion(0.,0.,0.,1.); else{ @@ -192,7 +152,6 @@ int Opengl_Window::handle(int event) { ZoomClick = 0; clear_overlay(); } - break; } return 1; @@ -207,58 +166,20 @@ int Opengl_Window::handle(int event) { } return 1; - case FL_DRAG: xmov = Fl::event_x() - xpos; ymov = Fl::event_y() - ypos; if(ZoomClick) { printf("should draw the zoom... %d %d %d %d\n", xpos, ypos, xmov, ymov); - xz = CTX.vxmin + ((double)Fl::event_x()/(double)w()) * (CTX.vxmax - CTX.vxmin); yz = CTX.vymax - ((double)Fl::event_y()/(double)h()) * (CTX.vymax - CTX.vymin); movzx = xz - xb; movzy = yz - yb; - - WID->make_opengl_current(); - glPopMatrix(); - glDisable(GL_DEPTH_TEST); - glDisable(GL_LIGHTING); - glMatrixMode(GL_PROJECTION); - glPushMatrix(); - glLoadIdentity(); - gluOrtho2D(CTX.vxmin, CTX.vxmax, CTX.vymin, CTX.vymax); - glMatrixMode(GL_MODELVIEW); - glPushMatrix(); - glLoadIdentity(); - if(CTX.db) glDrawBuffer(GL_BACK); - glDisable(GL_DEPTH_TEST); - glColor3f(1.,1.,1.); - glBlendFunc(GL_ONE_MINUS_DST_COLOR, GL_ZERO); - glEnable(GL_BLEND); - glBegin(GL_LINE_STRIP); - glVertex2d(xb,yb); - glVertex2d(xb+movzx,yb); - glVertex2d(xb+movzx,yb+movzy); - glVertex2d(xb,yb+movzy); - glVertex2d(xb,yb); - glEnd(); - movzx = xz - xb; movzy = yz - yb; - glBegin(GL_LINE_STRIP); - glVertex2d(xb,yb); - glVertex2d(xb+movzx,yb); - glVertex2d(xb+movzx,yb+movzy); - glVertex2d(xb,yb+movzy); - glVertex2d(xb,yb); - glEnd(); - glDisable(GL_BLEND); - glEnable(GL_DEPTH_TEST); - glPopMatrix(); - glMatrixMode(GL_PROJECTION); - glPopMatrix(); - glMatrixMode(GL_MODELVIEW); - if(CTX.db) swap_buffers(); - else glFlush(); - + O1 = xb; + O2 = yb; + O3 = movzx; + O4 = movzx; + redraw_overlay(); } else { clear_overlay(); @@ -275,8 +196,7 @@ int Opengl_Window::handle(int event) { FirstClick=0; } - switch(ibut){ - case 1: + if(ibut == 1 && !Fl::event_state(FL_SHIFT)){ if(CTX.useTrackball) CTX.addQuaternion((2.0*xpos - w()) / w(), (h() - 2.0*ypos) / h(), @@ -286,8 +206,8 @@ int Opengl_Window::handle(int event) { set_r(1, CTX.r[1] + ((abs(xmov) > abs(ymov))?180*(float)xmov/(float)w():0)); set_r(0, CTX.r[0] + ((abs(xmov) > abs(ymov))?0:180*(float)ymov/(float)h())); } - break; - case 2: + } + else if(ibut == 2 || (ibut == 1 && Fl::event_state(FL_SHIFT))){ if(!CTX.useTrackball) set_r(2, CTX.r[2] + ((abs(ymov) > abs(xmov))?0:-180*(float)xmov/(float)w())); set_s(0, CTX.s[0] * ( (abs(ymov) > abs(xmov)) ? @@ -300,8 +220,8 @@ int Opengl_Window::handle(int event) { set_t(0, xt1*(xscale1/CTX.s[0])-xc1*(1.-(xscale1/CTX.s[0]))); set_t(1, yt1*(yscale1/CTX.s[1])-yc1*(1.-(yscale1/CTX.s[1]))); } - break; - case 3: + } + else{ xc = ( ((double)xpos/(double)w()) * (CTX.vxmax - CTX.vxmin) + CTX.vxmin ) / CTX.s[0]; yc = ( CTX.vymax - ((double)ypos/(double)h()) * (CTX.vymax - CTX.vymin)) @@ -309,13 +229,13 @@ int Opengl_Window::handle(int event) { set_t(0, xc-xc1); set_t(1, yc-yc1); set_t(2, 0.); - break; } if(CTX.fast){ CTX.mesh.draw = 0 ; CTX.post.draw = 0; } + redraw(); } diff --git a/Fltk/Opengl_Window.h b/Fltk/Opengl_Window.h index 7bbedaa1e1..ae48f4df54 100644 --- a/Fltk/Opengl_Window.h +++ b/Fltk/Opengl_Window.h @@ -7,10 +7,7 @@ class Opengl_Window : public Fl_Gl_Window { int handle(int); // new - void draw_highlight(); void clear_overlay(); - void draw_overlay_zoom(); - void draw_overlay_highlight(); public: Opengl_Window(int x,int y,int w,int h,const char *l=0) diff --git a/Graphics/Draw.cpp b/Graphics/Draw.cpp index 83df953dad..55a41a4a63 100644 --- a/Graphics/Draw.cpp +++ b/Graphics/Draw.cpp @@ -1,4 +1,4 @@ -// $Id: Draw.cpp,v 1.21 2001-02-02 15:05:03 geuzaine Exp $ +// $Id: Draw.cpp,v 1.22 2001-02-03 13:10:26 geuzaine Exp $ #include "Gmsh.h" #include "GmshUI.h" @@ -63,7 +63,7 @@ void Draw2d(void){ glLoadIdentity(); glPushMatrix(); - if(CTX.post.scales) Draw_Scales(); + if(CTX.post.draw && CTX.post.scales) Draw_Scales(); if(CTX.small_axes) Draw_SmallAxes(); glPopMatrix(); } diff --git a/Graphics/Makefile b/Graphics/Makefile index 85fd7b13d3..df5c9e6005 100644 --- a/Graphics/Makefile +++ b/Graphics/Makefile @@ -1,4 +1,4 @@ -# $Id: Makefile,v 1.15 2001-01-29 22:33:41 remacle Exp $ +# $Id: Makefile,v 1.16 2001-02-03 13:10:26 geuzaine Exp $ # # Makefile for "libGraphics.a" # @@ -100,12 +100,20 @@ PostSimplex.o: PostSimplex.cpp ../Common/Gmsh.h ../Common/Message.h \ ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h ../Geo/Geo.h \ ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \ ../Geo/ExtrudeParams.h ../Mesh/Metric.h Draw.h ../Common/Views.h \ - ../Common/Const.h ../Common/ColorTable.h Iso.h ../Common/Context.h + ../Common/Const.h ../Common/ColorTable.h Iso.h IsoSimplex.h \ + ../Common/Context.h Iso.o: Iso.cpp ../Common/Gmsh.h ../Common/Message.h ../DataStr/Malloc.h \ ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \ ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \ ../Geo/ExtrudeParams.h ../Mesh/Metric.h Draw.h ../Common/Views.h \ - ../Common/Const.h ../Common/ColorTable.h + ../Common/Const.h ../Common/ColorTable.h ../Mesh/Numeric.h +IsoSimplex.o: IsoSimplex.cpp ../Common/Gmsh.h ../Common/Message.h \ + ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \ + ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h ../Geo/Geo.h \ + ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \ + ../Geo/ExtrudeParams.h ../Mesh/Metric.h Draw.h ../Common/Views.h \ + ../Common/Const.h ../Common/ColorTable.h Iso.h ../Common/Context.h \ + ../Mesh/Numeric.h Entity.o: Entity.cpp ../Common/Gmsh.h ../Common/Message.h \ ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \ ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h ../Mesh/Mesh.h \ diff --git a/Graphics/Scale.cpp b/Graphics/Scale.cpp index fbe652161c..ce559c28e1 100644 --- a/Graphics/Scale.cpp +++ b/Graphics/Scale.cpp @@ -1,4 +1,4 @@ -// $Id: Scale.cpp,v 1.16 2001-01-29 08:43:44 geuzaine Exp $ +// $Id: Scale.cpp,v 1.17 2001-02-03 13:10:26 geuzaine Exp $ #include "Gmsh.h" #include "GmshUI.h" @@ -174,6 +174,8 @@ void draw_scale(Post_View *v, double xmin, double ymin, double *width, double he for(i=0 ; i<nbv+1 ; i++){ Val = v->GVFI(ValMin,ValMax,nbv+1,i); sprintf(label, v->Format, Val); + /* suppressing the 2 following lines improves fltk performance + a lot on linux. and only on linux. Why? */ glRasterPos2d(cv_xmin,cv_ymin+i*cv_bh-font_a/3.); Draw_String(label); CHECK_W; } diff --git a/Makefile b/Makefile index 47fff7a141..cba2e1e510 100644 --- a/Makefile +++ b/Makefile @@ -1,78 +1,72 @@ -# $Id: Makefile,v 1.46 2001-02-02 15:05:03 geuzaine Exp $ +# $Id: Makefile,v 1.47 2001-02-03 13:10:26 geuzaine Exp $ # ---------------------------------------------------------------------- # Makefile for Gmsh # ---------------------------------------------------------------------- - GMSH_RELEASE = 1.00 - - MAKE = make - CC = g++ - FLAGS = -g -Wall - RM = rm - RMFLAGS = -f - - OPENGL_INC = -I/usr/include/X11/GLw\ - -I$(HOME)/SOURCES/Mesa-3.1/include\ - -I$(HOME)/SOURCES/Mesa-3.1/include/GL - MOTIF_INC = -I/usr/X11R6/LessTif/Motif1.2/include - FLTK_INC = -I$(HOME)/SOURCES/fltk - - OPENGL_LIB = -lGLU -lGL -OPENGL_MOTIF_LIB = -lGLw - MESA_LIB = -L$(HOME)/SOURCES/Mesa-3.1/lib -lGLU -lGL - MESA_MOTIF_LIB = -L$(HOME)/SOURCES/Mesa-3.1/lib -lGLw - MESA_STATIC_LIB = $(HOME)/SOURCES/Mesa-static/lib/libGLU.a\ - $(HOME)/SOURCES/Mesa-static/lib/libGL.a + GMSH_RELEASE = 1.10 + + MAKE = make + CC = g++ + FLAGS = -g -Wall + RM = rm + RMFLAGS = -f + + OPENGL_INC = -I/usr/include/X11/GLw\ + -I$(HOME)/SOURCES/Mesa-3.1/include\ + -I$(HOME)/SOURCES/Mesa-3.1/include/GL + MOTIF_INC = -I/usr/X11R6/LessTif/Motif1.2/include + FLTK_INC = -I$(HOME)/SOURCES/fltk + + OPENGL_LIB = -lGLU -lGL + OPENGL_MOTIF_LIB = -lGLw + MESA_LIB = -L$(HOME)/SOURCES/Mesa-3.1/lib -lGLU -lGL + MESA_MOTIF_LIB = -L$(HOME)/SOURCES/Mesa-3.1/lib -lGLw + MESA_STATIC_LIB = $(HOME)/SOURCES/Mesa-static/lib/libGLU.a\ + $(HOME)/SOURCES/Mesa-static/lib/libGL.a MESA_MOTIF_STATIC_LIB = $(HOME)/SOURCES/Mesa-static/lib/libGLw.a -# XMOTIF_LIB = /usr/local/lib/libXm.so.2 -L/usr/X11R6/lib -lXt -lX11 -lXext - XMOTIF_LIB = -L/usr/local/lib -L/usr/X11R6/LessTif/Motif1.2/lib -lXm\ - -L/usr/X11R6/lib -lXt -lX11 -lXext - FLTK_LIB = -L$(HOME)/SOURCES/fltk/lib -lfltk\ - -L/usr/X11R6/lib -lXext -lX11 - - THREAD_LIB = -L/usr/lib -lpthread - JPEG_LIB = jpeg/libjpeg.a - - GMSH_DIR = Adapt Common DataStr Geo Graphics Mesh Parser Motif Fltk jpeg utils - GMSH_XMOTIF_DIR = Adapt Common DataStr Geo Graphics Mesh Parser Motif jpeg - GMSH_FLTK_DIR = Adapt Common DataStr Geo Graphics Mesh Parser Fltk jpeg -GMSH_FLTKWIN_DIR = Adapt Common DataStr Geo Graphics Mesh Parser Fltk - GMSH_BOX_DIR = Adapt Box Common DataStr Geo Mesh Parser - GMSH_UTILS_DIR = utils - GMSH_BIN_DIR = bin - GMSH_LIB_DIR = lib - GMSH_DOC_DIR = doc - GMSH_DEMO_DIR = demos - GMSH_TUTOR_DIR = tutorial -GMSH_ARCHIVE_DIR = archives - GMSH_XMOTIF_LIB = -L$(GMSH_LIB_DIR) -lMotif -lGraphics -lParser -lMesh -lGeo\ - -lAdapt -lCommon -lDataStr $(JPEG_LIB) - GMSH_FLTK_LIB = -L$(GMSH_LIB_DIR) -lFltk -lParser -lGraphics -lMesh -lGeo\ - -lAdapt -lCommon -lDataStr $(JPEG_LIB) -GMSH_FLTKWIN_LIB = -L$(GMSH_LIB_DIR) -lFltk -lParser -lGraphics -lMesh -lGeo\ - -lAdapt -lCommon -lDataStr - GMSH_BOX_LIB = -L$(GMSH_LIB_DIR) -lBox -lParser -lMesh -lGeo\ - -lAdapt -lCommon -lDataStr - GMSH_ARCHIVE = $(GMSH_ARCHIVE_DIR)/gmsh-`date "+%Y.%m.%d"` - GMSH_SRCRPM = gmsh-$(GMSH_RELEASE) - GMSH_SOURCES = `find . \( ! -name "*.tar*" -a ! -name "*.tgz" \ - -a ! -name "*.o" -a ! -name "lib*.a" \ - -a ! -name "*.msh" -a ! -name "*.bak" \ - -a ! -name "gmsh" -a ! -name "gmsh-*"\ - -a ! -type d \)` - GMSH_UNAME = `uname` +# XMOTIF_LIB = /usr/local/lib/libXm.so.2 -L/usr/X11R6/lib -lXt -lX11 -lXext + XMOTIF_LIB = -L/usr/local/lib -L/usr/X11R6/LessTif/Motif1.2/lib -lXm\ + -L/usr/X11R6/lib -lXt -lX11 -lXext + FLTK_LIB = -L$(HOME)/SOURCES/fltk/lib -lfltk\ + -L/usr/X11R6/lib -lXext -lX11 + + THREAD_LIB = -L/usr/lib -lpthread + JPEG_LIB = jpeg/libjpeg.a + + GMSH_DIR = Adapt Common DataStr Geo Graphics Mesh Parser Motif Fltk\ + jpeg utils + GMSH_XMOTIF_DIR = Adapt Common DataStr Geo Graphics Mesh Parser Motif jpeg + GMSH_FLTK_DIR = Adapt Common DataStr Geo Graphics Mesh Parser Fltk jpeg + GMSH_FLTKWIN_DIR = Adapt Common DataStr Geo Graphics Mesh Parser Fltk + GMSH_BOX_DIR = Adapt Box Common DataStr Geo Mesh Parser + GMSH_BIN_DIR = bin + GMSH_LIB_DIR = lib + GMSH_DOC_DIR = doc + GMSH_DEMO_DIR = demos + GMSH_TUTOR_DIR = tutorial + GMSH_ARCHIVE_DIR = archives + GMSH_XMOTIF_LIB = -L$(GMSH_LIB_DIR) -lMotif -lGraphics -lParser -lMesh -lGeo\ + -lAdapt -lCommon -lDataStr $(JPEG_LIB) + GMSH_FLTK_LIB = -L$(GMSH_LIB_DIR) -lFltk -lParser -lGraphics -lMesh -lGeo\ + -lAdapt -lCommon -lDataStr $(JPEG_LIB) + GMSH_FLTKWIN_LIB = -L$(GMSH_LIB_DIR) -lFltk -lParser -lGraphics -lMesh -lGeo\ + -lAdapt -lCommon -lDataStr + GMSH_BOX_LIB = -L$(GMSH_LIB_DIR) -lBox -lParser -lMesh -lGeo\ + -lAdapt -lCommon -lDataStr + GMSH_ARCHIVE = $(GMSH_ARCHIVE_DIR)/gmsh-`date "+%Y.%m.%d"` + GMSH_SRCRPM = gmsh-$(GMSH_RELEASE) + GMSH_SOURCES = `find . \( ! -name "*.tar*" -a ! -name "*.tgz" \ + -a ! -name "*.o" -a ! -name "lib*.a" \ + -a ! -name "*.msh" -a ! -name "*.bak" \ + -a ! -name "gmsh" -a ! -name "gmsh-*"\ + -a ! -type d \)` + GMSH_UNAME = `uname` -default: initialtag - @for i in $(GMSH_XMOTIF_DIR); do (cd $$i && $(MAKE) \ - "CC=$(CC)" \ - "C_FLAGS=$(FLAGS)" \ - "OS_FLAGS=-D_LITTLE_ENDIAN" \ - "VERSION_FLAGS=-D_XMOTIF" \ - "GL_INCLUDE=$(OPENGL_INC)" \ - "GUI_INCLUDE=$(MOTIF_INC)" \ - ); done +# ---------------------------------------------------------------------- +# Rules for developpers +# ---------------------------------------------------------------------- -fltk: initialtag +default: initialtag @for i in $(GMSH_FLTK_DIR); do (cd $$i && $(MAKE) \ "CC=$(CC)" \ "C_FLAGS=$(FLAGS)" \ @@ -82,27 +76,7 @@ fltk: initialtag "GUI_INCLUDE=$(FLTK_INC)" \ ); done -fltkwin: initialtag - @for i in $(GMSH_FLTKWIN_DIR); do (cd $$i && $(MAKE) \ - "CC=g++ -mno-cygwin -I/mingw/include" \ - "C_FLAGS=-O2 -DWIN32" \ - "OS_FLAGS=-D_LITTLE_ENDIAN" \ - "VERSION_FLAGS=-D_FLTK" \ - "GL_INCLUDE=$(OPENGL_INC)" \ - "GUI_INCLUDE=$(FLTK_INC)" \ - ); done - -fltkcygwin: initialtag - @for i in $(GMSH_FLTKWIN_DIR); do (cd $$i && $(MAKE) \ - "CC=g++" \ - "C_FLAGS=-O2 -DWIN32" \ - "OS_FLAGS=-D_LITTLE_ENDIAN" \ - "VERSION_FLAGS=-D_FLTK" \ - "GL_INCLUDE=$(OPENGL_INC)" \ - "GUI_INCLUDE=$(FLTK_INC)" \ - ); done - -threads: initialtag +motif: initialtag @for i in $(GMSH_XMOTIF_DIR); do (cd $$i && $(MAKE) \ "CC=$(CC)" \ "C_FLAGS=$(FLAGS)" \ @@ -112,57 +86,42 @@ threads: initialtag "GUI_INCLUDE=$(MOTIF_INC)" \ ); done -profile: initialtag - @for i in $(GMSH_XMOTIF_DIR); do (cd $$i && $(MAKE) \ - "CC=$(CC)" \ - "C_FLAGS=-O3 -pg" \ - "OS_FLAGS=-D_LITTLE_ENDIAN" \ - "VERSION_FLAGS=-D_XMOTIF" \ - "GL_INCLUDE=$(OPENGL_INC)" \ - "GUI_INCLUDE=$(MOTIF_INC)" \ - ); done - $(CC) -pg -o $(GMSH_BIN_DIR)/gmsh-profile $(GMSH_XMOTIF_LIB)\ - $(OPENGL_MOTIF_LIB) $(OPENGL_LIB) $(XMOTIF_LIB) $(THREAD_LIB) -lm - gmsh: - $(CC) -o $(GMSH_BIN_DIR)/gmsh $(GMSH_XMOTIF_LIB)\ - $(OPENGL_MOTIF_LIB) $(OPENGL_LIB) $(XMOTIF_LIB) $(THREAD_LIB) -lm - -gmsh2: - $(CC) -o $(GMSH_BIN_DIR)/gmsh $(GMSH_XMOTIF_LIB)\ - $(MESA_MOTIF_LIB) $(MESA_LIB) $(XMOTIF_LIB) $(THREAD_LIB) -lm - -gmsh3: $(CC) -o $(GMSH_BIN_DIR)/gmsh $(GMSH_FLTK_LIB) $(MESA_LIB) \ $(FLTK_LIB) -lm -gmshwin: - g++ -mno-cygwin -L/mingw/lib -o $(GMSH_BIN_DIR)/gmsh $(GMSH_FLTKWIN_LIB) \ - $(HOME)/SOURCES/fltk/lib/libfltk.a -lglu32 -lopengl32 -lgdi32 -lwsock32 -lm -gmshcygwin: - g++ -Wl,--subsystem,windows -o $(GMSH_BIN_DIR)/gmsh $(GMSH_FLTKWIN_LIB) \ - $(HOME)/SOURCES/fltk/lib/libfltk.a -lglu32 -lopengl32 -lgdi32 -lwsock32 -lm - -gmsh4: +gmsh2: $(CC) -o $(GMSH_BIN_DIR)/gmsh $(GMSH_FLTK_LIB) $(MESA_LIB) \ $(FLTK_LIB) -lfltk_gl $(THREAD_LIB) -lm -gmshm: +motifgl: + $(CC) -o $(GMSH_BIN_DIR)/gmsh $(GMSH_XMOTIF_LIB)\ + $(OPENGL_MOTIF_LIB) $(OPENGL_LIB) $(XMOTIF_LIB) $(THREAD_LIB) -lm + +motifmesa: + $(CC) -o $(GMSH_BIN_DIR)/gmsh $(GMSH_XMOTIF_LIB)\ + $(MESA_MOTIF_LIB) $(MESA_LIB) $(XMOTIF_LIB) $(THREAD_LIB) -lm + +motifmesastatic: $(CC) -o $(GMSH_BIN_DIR)/gmshm $(GMSH_XMOTIF_LIB)\ $(MESA_MOTIF_STATIC_LIB) $(MESA_STATIC_LIB)\ $(XMOTIF_LIB) $(THREAD_LIB) -lm -gmshm3: - $(CC) -o $(GMSH_BIN_DIR)/gmshm $(GMSH_FLTK_LIB)\ - $(MESA_STATIC_LIB) $(FLTK_LIB) $(THREAD_LIB) -lm + +# ---------------------------------------------------------------------- +# Utilities +# ---------------------------------------------------------------------- parser: cd Parser && $(MAKE) parser +utilities: + cd utils && $(MAKE) + purge: for i in "." $(GMSH_DIR) $(GMSH_LIB_DIR) $(GMSH_ARCHIVE_DIR)\ $(GMSH_DEMO_DIR) $(GMSH_TUTOR_DIR) $(GMSH_DOC_DIR) $(GMSH_BOX_DIR); \ - do (cd $$i && $(RM) $(RMFLAGS) *~ *~~); \ + do (cd $$i && $(RM) $(RMFLAGS) *~ *~~ .gmshrc .gmshtmp .gmshlog gmon.out); \ done clean: @@ -211,6 +170,14 @@ src: tar cvf $(GMSH_SRCRPM).tar $(GMSH_SOURCES) gzip $(GMSH_SRCRPM).tar +compress_bin: + cd $(GMSH_BIN_DIR) && tar cvf gmsh-$(GMSH_UNAME).tar gmsh + gzip $(GMSH_BIN_DIR)/gmsh-$(GMSH_UNAME).tar + mv $(GMSH_BIN_DIR)/gmsh-$(GMSH_UNAME).tar.gz gmsh-$(GMSH_UNAME).tgz + +strip_bin: + strip $(GMSH_BIN_DIR)/gmsh + # ---------------------------------------------------------------------- # Demos # ---------------------------------------------------------------------- @@ -246,40 +213,32 @@ bbn: tag g++ -o $(GMSH_BIN_DIR)/gmsh.exe -mno-cygwin -L/mingw/lib $(GMSH_BOX_LIB) -lm # ---------------------------------------------------------------------- -# Ready to compile for somes platforms +# Ready to compile for somes platforms with MOTIF # ---------------------------------------------------------------------- -dec: tag compile_little_endian link_opengl strip_bin compress_bin +motif_dec: tag motif_compile_little_endian motif_link_opengl strip_bin compress_bin -linux: tag compile_little_endian link_mesa strip_bin compress_bin +motif_linux: tag motif_compile_little_endian motif_link_mesa strip_bin compress_bin -linux-rpm: tag compile_little_endian_2952 link_mesa_2952 strip_bin compress_bin +motif_linux_2952: tag motif_compile_little_endian_2952 motif_link_mesa_2952 strip_bin compress_bin -ibm: tag compile_big_endian link_mesa strip_bin compress_bin +motif_ibm: tag motif_compile_big_endian motif_link_mesa strip_bin compress_bin -sun: tag compile_big_endian link_opengl strip_bin compress_bin +motif_sun: tag motif_compile_big_endian motif_link_opengl strip_bin compress_bin -hp: tag compile_big_endian link_hp strip_bin compress_bin +motif_hp: tag motif_compile_big_endian motif_link_hp strip_bin compress_bin -sgi: tag compile_sgi link_sgi strip_bin compress_bin +motif_sgi: tag motif_compile_sgi motif_link_sgi strip_bin compress_bin -rpm: src +motif_rpm: src mv $(GMSH_SRCRPM).tar.gz /usr/src/redhat/SOURCES - rpm -bb utils/gmsh.spec + rpm -bb utils/gmsh_motif.spec cp /usr/src/redhat/RPMS/i386/$(GMSH_SRCRPM)-1.i386.rpm . cp /usr/src/redhat/BUILD/$(GMSH_SRCRPM)/bin/gmsh . gtar zcvf gmsh-$(GMSH_UNAME).tgz gmsh rm -f gmsh -compress_bin: - cd $(GMSH_BIN_DIR) && tar cvf gmsh-$(GMSH_UNAME).tar gmsh - gzip $(GMSH_BIN_DIR)/gmsh-$(GMSH_UNAME).tar - mv $(GMSH_BIN_DIR)/gmsh-$(GMSH_UNAME).tar.gz gmsh-$(GMSH_UNAME).tgz - -strip_bin: - strip $(GMSH_BIN_DIR)/gmsh - -compile_little_endian: +motif_compile_little_endian: @for i in $(GMSH_XMOTIF_DIR); do (cd $$i && $(MAKE) \ "CC=g++" \ "C_FLAGS=-O3" \ @@ -289,7 +248,7 @@ compile_little_endian: "GUI_INCLUDE=$(MOTIF_INC)" \ ); done -compile_little_endian_2952: +motif_compile_little_endian_2952: @for i in $(GMSH_XMOTIF_DIR); do (cd $$i && $(MAKE) \ "CC=$(HOME)/gcc-2.95.2/bin/g++" \ "C_FLAGS=-O3" \ @@ -299,7 +258,7 @@ compile_little_endian_2952: "GUI_INCLUDE=$(MOTIF_INC)" \ ); done -compile_little_endian_threads: +motif_compile_little_endian_threads: @for i in $(GMSH_XMOTIF_DIR); do (cd $$i && $(MAKE) \ "CC=g++" \ "C_FLAGS=-D_REENTRANT -O3" \ @@ -309,7 +268,7 @@ compile_little_endian_threads: "GUI_INCLUDE=$(MOTIF_INC)" \ ); done -compile_big_endian: +motif_compile_big_endian: @for i in $(GMSH_XMOTIF_DIR); do (cd $$i && $(MAKE) \ "CC=g++" \ "C_FLAGS=-O3" \ @@ -320,7 +279,7 @@ compile_big_endian: ); done # special car -O2 merde dans 3d_smesh.c sur TransfiniteHex() -compile_sgi: +motif_compile_sgi: @for i in $(GMSH_XMOTIF_DIR); do (cd $$i && $(MAKE) \ "CC=CC" \ "C_FLAGS=-O2 -o32 -Olimit 3000" \ @@ -342,28 +301,98 @@ compile_sgi: "GUI_INCLUDE=$(MOTIF_INC)" \ ); done -link_sgi: +motif_link_sgi: CC -O2 -o32 -o $(GMSH_BIN_DIR)/gmsh $(GMSH_XMOTIF_LIB)\ $(OPENGL_MOTIF_LIB) $(OPENGL_LIB) $(XMOTIF_LIB) -lm -link_opengl: +motif_link_opengl: g++ -o $(GMSH_BIN_DIR)/gmsh $(GMSH_XMOTIF_LIB)\ $(OPENGL_MOTIF_LIB) $(OPENGL_LIB) $(XMOTIF_LIB) -lm -link_mesa: +motif_link_mesa: g++ -o $(GMSH_BIN_DIR)/gmsh $(GMSH_XMOTIF_LIB)\ $(MESA_MOTIF_LIB) $(MESA_LIB) $(XMOTIF_LIB) -lm -link_mesa_2952: +motif_link_mesa_2952: $(HOME)/gcc-2.95.2/bin/g++ -o $(GMSH_BIN_DIR)/gmsh $(GMSH_XMOTIF_LIB)\ $(MESA_MOTIF_LIB) $(MESA_LIB) $(XMOTIF_LIB) -lm -link_mesa_threads: +motif_link_mesa_threads: g++ -o $(GMSH_BIN_DIR)/gmsh $(GMSH_XMOTIF_LIB)\ $(MESA_MOTIF_LIB) $(MESA_LIB) $(XMOTIF_LIB) $(THREAD_LIB) -lm # special car +s necessaire pour shared libs avec SHLIB_PATH variable. -link_hp: +motif_link_hp: g++ -Wl,+s -o $(GMSH_BIN_DIR)/gmsh $(GMSH_XMOTIF_LIB)\ $(MESA_MOTIF_LIB) $(MESA_LIB) $(XMOTIF_LIB) -lm + +# ---------------------------------------------------------------------- +# Ready to compile for some platforms with FLTK +# ---------------------------------------------------------------------- + +fltk_compile_little_endian: + @for i in $(GMSH_FLTK_DIR); do (cd $$i && $(MAKE) \ + "CC=$(CC)" \ + "C_FLAGS=-O3" \ + "OS_FLAGS=-D_LITTLE_ENDIAN" \ + "VERSION_FLAGS=-D_FLTK" \ + "GL_INCLUDE=$(OPENGL_INC)" \ + "GUI_INCLUDE=$(FLTK_INC)" \ + ); done + +fltk_link_mesa: + $(CC) -o $(GMSH_BIN_DIR)/gmsh $(GMSH_FLTK_LIB) $(MESA_LIB) \ + $(FLTK_LIB) -lm + +fltk_compile_little_endian_2952: + @for i in $(GMSH_FLTK_DIR); do (cd $$i && $(MAKE) \ + "CC=$(HOME)/gcc-2.95.2/bin/g++" \ + "C_FLAGS=-O3" \ + "OS_FLAGS=-D_LITTLE_ENDIAN" \ + "VERSION_FLAGS=-D_FLTK" \ + "GL_INCLUDE=$(OPENGL_INC)" \ + "GUI_INCLUDE=$(FLTK_INC)" \ + ); done + +fltk_link_mesa_2952: + $(HOME)/gcc-2.95.2/bin/g++ -o $(GMSH_BIN_DIR)/gmsh $(GMSH_FLTK_LIB) $(MESA_LIB) \ + $(FLTK_LIB) -lm + + +fltk_linux: tag fltk_compile_little_endian fltk_link_mesa strip_bin compress_bin + +fltk_linux_2952: tag fltk_compile_little_endian_2952 fltk_link_mesa_2952 strip_bin compress_bin + +fltk_rpm: src + mv $(GMSH_SRCRPM).tar.gz /usr/src/redhat/SOURCES + rpm -bb utils/gmsh_fltk.spec + cp /usr/src/redhat/RPMS/i386/$(GMSH_SRCRPM)-1.i386.rpm . + cp /usr/src/redhat/BUILD/$(GMSH_SRCRPM)/bin/gmsh . + gtar zcvf gmsh-$(GMSH_UNAME).tgz gmsh + rm -f gmsh + +fltk_mingw: tag + @for i in $(GMSH_FLTKWIN_DIR); do (cd $$i && $(MAKE) \ + "CC=g++ -mno-cygwin -I/mingw/include" \ + "C_FLAGS=-O2 -DWIN32" \ + "OS_FLAGS=-D_LITTLE_ENDIAN" \ + "VERSION_FLAGS=-D_FLTK" \ + "GL_INCLUDE=$(OPENGL_INC)" \ + "GUI_INCLUDE=$(FLTK_INC)" \ + ); done + g++ -mno-cygwin -L/mingw/lib -o $(GMSH_BIN_DIR)/gmsh $(GMSH_FLTKWIN_LIB) \ + $(HOME)/SOURCES/fltk/lib/libfltk.a -lglu32 -lopengl32 -lgdi32 -lwsock32 -lm + +fltk_cygwin: tag + @for i in $(GMSH_FLTKWIN_DIR); do (cd $$i && $(MAKE) \ + "CC=g++" \ + "C_FLAGS=-O2 -DWIN32" \ + "OS_FLAGS=-D_LITTLE_ENDIAN" \ + "VERSION_FLAGS=-D_FLTK" \ + "GL_INCLUDE=$(OPENGL_INC)" \ + "GUI_INCLUDE=$(FLTK_INC)" \ + ); done + g++ -Wl,--subsystem,windows -o $(GMSH_BIN_DIR)/gmsh $(GMSH_FLTKWIN_LIB) \ + $(HOME)/SOURCES/fltk/lib/libfltk.a -lglu32 -lopengl32 -lgdi32 -lwsock32 -lm + diff --git a/Common/Help.h b/Motif/Help.h similarity index 100% rename from Common/Help.h rename to Motif/Help.h diff --git a/Motif/Makefile b/Motif/Makefile index 60ee8f118f..624d4751cc 100644 --- a/Motif/Makefile +++ b/Motif/Makefile @@ -1,4 +1,4 @@ -# $Id: Makefile,v 1.4 2001-01-13 17:08:41 geuzaine Exp $ +# $Id: Makefile,v 1.5 2001-02-03 13:10:26 geuzaine Exp $ # # Makefile for "libMotif.a" # @@ -85,7 +85,7 @@ Widgets.o: Widgets.cpp ../Common/Gmsh.h ../Common/Message.h \ ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h ../Mesh/Mesh.h \ ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \ ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Common/Context.h \ - ../Common/Const.h XContext.h Info.h Widgets.h ../Common/Help.h + ../Common/Const.h XContext.h Info.h Widgets.h Help.h Geometry.o: Geometry.cpp ../Common/Gmsh.h ../Common/Message.h \ ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \ ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h \ diff --git a/doc/gmsh.1 b/doc/gmsh.1 index 09c52b047d..ba264a9c30 100644 --- a/doc/gmsh.1 +++ b/doc/gmsh.1 @@ -5,7 +5,7 @@ .\" Copyright (c) 2000-2001 J.-F. Remacle, C. Geuzaine .\" .\" ====================================================================== -.TH Gmsh 1.00 "1 January 2001" +.TH Gmsh 1.10 "5 February 2001" .UC 4 .\" ====================================================================== .SH NAME @@ -116,6 +116,9 @@ set output mesh format (default: msh) .B \-algo iso|aniso select the two-dimensional mesh algorithm (default: iso) .TP 4 +.B \-rand float +set random perturbation factor (default: 1.e-5) +.TP 4 .B \-smooth int set the number of smoothing passes (default value is 3). .TP 4 @@ -126,6 +129,9 @@ set the degree of the generated elements (default value is 1). apply a global scaling factor to the generated mesh (default value is 1.0). .TP 4 +.B \-meshscale float +apply a global scaling factor to all generated elements (default value is 1.0). +.TP 4 .B \-clscale float apply a global scaling factor to all the characteristic lengths in the mesh (default value is 1.0). @@ -152,11 +158,11 @@ views) at startup. .SH DISPLAY OPTIONS .TP 4 .B \-nodb -suppress the double buffer. Use this options if you use \fIGmsh\fR on -a remote host without GLX. +(Motif versions only) suppress the double buffer. Use this options if +you use \fIGmsh\fR on a remote host without GLX. .TP 4 .B \-noov -suppress overlay visual. +(Motif versions only) suppress overlay visual. .TP 4 .B \-alpha enable alpha blending. @@ -168,7 +174,7 @@ don't use trackball mode for rotations. specify main window geometry. .TP 4 .B \-viewport 9*float. -specify rotation, translation and scale +(Motif versions only) specify rotation, translation and scale .TP 4 .B \-display disp. specify display. @@ -180,15 +186,15 @@ use perspective instead of orthographic projection. allow colormap flashing. .TP 4 .B \-samevisual -force same visual for OpenGL and GUI. +(Motif versions only) force same visual for OpenGL and GUI. .\" ====================================================================== .SH OTHER OPTIONS .TP 4 .B \-v int -set verbosity level (0=quiet, 3=debug; default:2). +set verbosity level (default:2). .TP 4 .B \-nothreads -disable threads. +(Motif versions only) disable threads. .TP 4 .B \-path string set the path for included files. @@ -209,7 +215,7 @@ Remacle (Remacle@scorec.rpi.edu). .SH SEE ALSO Gmsh homepage at \fIhttp://www.geuz.org/gmsh/\fR .PP -Gmsh example files in \fI/usr/doc/gmsh-1.00/\fR +Gmsh example files in \fI/usr/doc/gmsh-1.10/\fR .PP GetDP (a scientific computation software for the numerical solution of integro-differential equations, using finite element and integral type diff --git a/tutorial/README b/tutorial/README index f6c65b4e26..e87631a972 100644 --- a/tutorial/README +++ b/tutorial/README @@ -1,4 +1,4 @@ -$Id: README,v 1.2 2000-12-10 14:16:34 geuzaine Exp $ +$Id: README,v 1.3 2001-02-03 13:10:26 geuzaine Exp $ Here are the examples in the Gmsh tutorial. These examples are commented (both C and C++-style comments can be used in Gmsh input @@ -21,8 +21,8 @@ graphic window (with a status bar at the bottom) and the menu window (with a menu bar and some context dependent buttons). To open the first tutorial file, you have to select the 'File->Open' menu, and choose 't1.geo' in the input field. To perform the mesh generation, -you have to go to the mesh module (by selecting 'Module->Mesh' in the -menu bar) and choose the required dimension in the context-dependent +you have to go to the mesh module (by selecting 'Mesh' in the module +menu) and choose the required dimension in the context-dependent buttons ('1D' will mesh all the curves; '2D' will mesh all the surfaces ---as well as all the curves if '1D' was not called before; '3D' will mesh all the volumes ---and all the surfaces if '2D' was not @@ -33,7 +33,7 @@ any input file given), with an appended extension depending on the mesh format. Note: nearly all the interactive commands have shortcuts. Select -'?->Short_Help' in the menu bar to learn about these shortcuts. +'Help->Short_Help' in the menu bar to learn about these shortcuts. Instead of opening the tutorial with the 'File->Open' menu, it is often more convenient to put the file name on the command line, here @@ -47,11 +47,11 @@ Note: to define new geometries, if it is often handy to define the variables and the points directly in the input files, it is almost always simpler to define the curves, the surfaces and the volumes interactively. To do so, just follow the context dependent buttons in -the Geometry module. For example, to create a line, select -'Module->Geometry' in the menu bar, and then select 'Elementary, Add, -Create, Line'. You will then be asked (in the status bar of the -graphic window) to select a list of points, and to click 'e' when -you're done. Once the interactive command is completed, a string is +the Geometry module. For example, to create a line, select 'Geometry' +in the module menu, and then select 'Elementary, Add, Create, +Line'. You will then be asked (in the status bar of the graphic +window) to select a list of points, and to click 'e' when you're +done. Once the interactive command is completed, a string is automatically added at the end of the currently opened project file. @@ -73,38 +73,18 @@ the following line on the command line: > gmsh t1.geo view1.pos view2.pos -In the Post-Processing module (select 'Module->Post_Processing'), two -view buttons will appear, respectively labeled "a scalar map" and "a -vector map". A left mouse click will toggle the visibility of the -selected view. A right mouse click provides access to the view's -options: -- Reload: reloads the file from which the view was loaded -- Remove: removes the view -- Duplicate: makes a copy of the view (without duplicating the data) -- Lighting: activates/deactivates lighting for the view -- Scale: gives access to the scale menu (range definition, iso-value - choice, ...) -- Color: defines the color map for the view -- Offset: permits to move the view around, and to make elevation - maps -- Vector display: changes vector attributes -- Time step: selects the displayed time step -- Export as background mesh: exports the map, considered as an - error map, as a background mesh, i.e. as a characteristic length map -- Apply as current bg mesh: applies the view as the current background - mesh. -If you want the modifications made to one view to affect also all other -views, select the 'Link all views' option in the +In the Post-Processing module (select 'Post_Processing' in the module +menu), two view buttons will appear, respectively labeled "a scalar +map" and "a vector map". A left mouse click will toggle the visibility +of the selected view. A right mouse click provides access to the +view's options. If you want the modifications made to one view to +affect also all other views, select the 'Link all views' option in the 'Options->Post-Processing' menu. Note: all the options specified interactively can also be directly specified in the ascii input files. The current options can be saved -into a file by selecting 'File->Save_Options_as'. For UNIX versions, -all user interface options can be changed in a standard X resource file -('.gmshrc' in your home directory or app-defaults directory, or -'.Xdefaults'). Use 'editres' to get the full widget tree and -associated resources. - +into a file by selecting 'File->Save_as', or simply viewed by pressing +the '?' button in the status bar. OK, that's all, folks. Enjoy the tutorial. diff --git a/utils/Makefile b/utils/Makefile index d48b619708..58a9544545 100644 --- a/utils/Makefile +++ b/utils/Makefile @@ -1,5 +1,4 @@ -# $Id: Makefile,v 1.2 2000-11-25 15:26:12 geuzaine Exp $ -# $Id: Makefile,v 1.2 2000-11-25 15:26:12 geuzaine Exp $ +# $Id: Makefile,v 1.3 2001-02-03 13:10:26 geuzaine Exp $ CC = c++ C_FLAGS = -g diff --git a/www/gmsh.html b/www/gmsh.html index b3136ba43a..60660db4ec 100644 --- a/www/gmsh.html +++ b/www/gmsh.html @@ -47,7 +47,7 @@ cat << EOM page requests since<br>1998/05/24<p> ENDSCRIPT---> -<!---BEGINDATE$Date: 2001-01-04 09:24:05 $ENDDATE---> +<!---BEGINDATE$Date: 2001-02-03 13:10:26 $ENDDATE---> Copyright © 1998-2001<br> J.-F. Remacle<br> @@ -61,10 +61,8 @@ C. Geuzaine<br> <td><font face="Helvetica, Arial"> <font size="+3"><b>Gmsh</b></font> <p> - <b>a three-dimensional finite element mesh generator with pre- and + <b>A three-dimensional finite element mesh generator with pre- and post-processing facilities</b> - <p> - <b>Version 1.00</b> </font></td> @@ -257,7 +255,7 @@ description. <b>Stable Release: Version 1.00 (January 1, 2001)</b> <p> -The stable release of GMSH is available for most classical UNIX +The stable release of Gmsh is available for most classical UNIX platforms. All executables (no source distribution is available for the moment) are dynamically linked with OpenGL and Motif. You should have these libraries installed on your system, and in the @@ -277,25 +275,27 @@ in order for Gmsh to find these libraries. <ul> <li>Red Hat package with man page and examples <ul> - <li><A href="/gmsh/latest/gmsh-1.00-1.i386.rpm">Linux RPM for Red Hat + <li><A href="/gmsh/1.00/gmsh-1.00-1.i386.rpm">Linux RPM for Red Hat 6.2 and compatible (i386, glibc 2.1)</A> </ul> <li>Tarballs <ul> - <li><A href="/gmsh/latest/gmsh-Linux.tgz" >Gmsh for Linux (i386, glibc 2.1)</A> - <li><A href="/gmsh/latest/gmsh-OSF1.tgz" >Gmsh for Digital OSF 4.0/Compaq Tru64</A> - <li><A href="/gmsh/latest/gmsh-SunOS.tgz" >Gmsh for Sun OS 5.5.1</A> - <li><A href="/gmsh/latest/gmsh-AIX.tgz" >Gmsh for IBM AIX</A> - <li><A href="/gmsh/latest/gmsh-HP-UX.tgz" >Gmsh for HP-UX 10.20</A> - <li><A href="/gmsh/latest/gmsh-IRIX.tgz" >Gmsh for SGI IRIX 6.5</A> + <li><A href="/gmsh/1.00/gmsh-Linux.tgz" >Gmsh for Linux (i386, glibc 2.1)</A> + <li><A href="/gmsh/1.00/gmsh-OSF1.tgz" >Gmsh for Digital OSF 4.0/Compaq Tru64</A> + <li><A href="/gmsh/1.00/gmsh-SunOS.tgz" >Gmsh for Sun OS 5.5.1</A> + <li><A href="/gmsh/1.00/gmsh-AIX.tgz" >Gmsh for IBM AIX</A> + <li><A href="/gmsh/1.00/gmsh-HP-UX.tgz" >Gmsh for HP-UX 10.20</A> + <li><A href="/gmsh/1.00/gmsh-IRIX.tgz" >Gmsh for SGI IRIX 6.5</A> </ul> <li>Tutorial and demos <ul> - <li><A href="/gmsh/latest/gmsh-tutorial.tgz">Gmsh tutorial</A> - <li><A href="/gmsh/latest/gmsh-demos.tgz">Gmsh demo files</A> + <li><A href="/gmsh/1.00/gmsh-tutorial.tgz">Gmsh tutorial</A> + <li><A href="/gmsh/1.00/gmsh-demos.tgz">Gmsh demo files</A> </ul> </ul> + + </td> <td width="10%"> @@ -303,17 +303,38 @@ in order for Gmsh to find these libraries. <td width="45%"> <font face="Helvetica, Arial" size=-1> -<b>Development Release: --</b> -<p> -Short term: exact arithmetic in critical sections of the code to -improve stability; replacement of Motif by <a -href="http://www.fltk.org">FLTK</a> to unify Unix/Windows development; -<p> -Middle term: further uncoupling of geometry and mesh code; + + +<b>Development Release: 1.10 (February 5, 2001)</b> <p> -Long term: encapsulation of proprietary algorithms into dynamically -loadable modules and release of source code for all other parts; -standardize API with these modules; STEP parser? +The development release of Gmsh is available for Linux and +Windows. All executables (no source distribution is available for the +moment) are dynamically linked with OpenGL. You should thus have the +OpenGL libraries installed on your system, and in the path of the +library loader. A free replacement for OpenGL can be found at <A +target="_top" +href="http://mesa3d.sourceforge.net">http://mesa3d.sourceforge.net</A>. +<ul> +<li>Red Hat package with man page and examples + <ul> + <li><A href="/gmsh/latst/gmsh-1.10-1.i386.rpm">Linux RPM for Red Hat + 6.2 and compatible (i386, glibc 2.1)</A> + </ul> +<li>Tarballs + <ul> + <li><A href="/gmsh/latest/gmsh-Linux.tgz">Gmsh for Linux (i386, glibc 2.1)</A> + <li><A href="/gmsh/latest/gmsh-Windows.zip">Gmsh for Windows 95/98/NT</A> + </ul> +<li>Tutorial and demos + <ul> + <li><A href="/gmsh/latest/gmsh-tutorial.tgz">Gmsh tutorial</A> + <li><A href="/gmsh/latest/gmsh-demos.tgz">Gmsh demo files</A> + </ul> +</ul> + + + + </td> @@ -338,6 +359,9 @@ standardize API with these modules; STEP parser? <td><font face="Helvetica, Arial" size=-1> +New in 1.10: Switched from Motif to FLTK for the GUI. Many small +tweaks. +<p> New in 1.00: Added PPM and YUV output; Corrected nested If/Endif; Corrected several bugs for pixel output and enhanced GIF output (dithering, transparency); Slightly changed the post-processing file -- GitLab