diff --git a/Common/Context.h b/Common/Context.h index 2ff9e4b1170799e0b526635a651d3167917bf911..24a67fcfa1cfd46a2c9f8f29020c39d5098f1f2e 100644 --- a/Common/Context.h +++ b/Common/Context.h @@ -192,7 +192,7 @@ public : struct{ List_T *list ; int force_num, compute_bb, vertex_arrays; - int draw, scales, link ; + int draw, scales, link, horizontal_scales ; int smooth, anim_cycle, combine_time, combine_remove_orig ; double anim_delay ; }post; diff --git a/Common/DefaultOptions.h b/Common/DefaultOptions.h index 55f6b8f8a6eb20563638bf267c2eea006efdc129..503937d1a8e93713200d014521be5f8f58c58274 100644 --- a/Common/DefaultOptions.h +++ b/Common/DefaultOptions.h @@ -915,6 +915,9 @@ StringXNumber PostProcessingOptions_Number[] = { { F|O, "CombineRemoveOriginal" , opt_post_combine_remove_orig , 1. , "Remove original views after a Combine operation" }, + { F|O, "HorizontalScales" , opt_post_horizontal_scales , 0. , + "Display value scales horizontally" }, + { F|O, "Link" , opt_post_link , 0. , "Link post-processing views (0=none, 1,2=changes in visible/all, 3,4=everything in visible/all)" }, @@ -1061,8 +1064,6 @@ StringXNumber ViewOptions_Number[] = { "Tensor Visualization Type" }, { F, "TimeStep" , opt_view_timestep , 0. , "Current time step displayed" }, - { F|O, "TransparentScale" , opt_view_transparent_scale , 1. , - "Display a `transparent' value scale?" }, { F, "Type" , opt_view_type , DRAW_POST_3D , "Type of graph (1=3D, 2=2D-space, 3=2D-time)" }, diff --git a/Common/Options.cpp b/Common/Options.cpp index 34ae2d079c948ee33ffc0d711bda2fa96ed5113e..78710b201d34f874f3c13de77374ed1015901ca1 100644 --- a/Common/Options.cpp +++ b/Common/Options.cpp @@ -1,4 +1,4 @@ -// $Id: Options.cpp,v 1.186 2004-09-25 06:16:12 geuzaine Exp $ +// $Id: Options.cpp,v 1.187 2004-10-11 17:22:56 geuzaine Exp $ // // Copyright (C) 1997-2004 C. Geuzaine, J.-F. Remacle // @@ -4141,6 +4141,17 @@ double opt_post_scales(OPT_ARGS_NUM) return CTX.post.scales; } +double opt_post_horizontal_scales(OPT_ARGS_NUM) +{ + if(action & GMSH_SET) + CTX.post.horizontal_scales = (int)val; +#if defined(HAVE_FLTK) + if(WID && (action & GMSH_GUI)) + WID->post_butt[2]->value(CTX.post.horizontal_scales); +#endif + return CTX.post.horizontal_scales; +} + double opt_post_link(OPT_ARGS_NUM) { if(action & GMSH_SET){ @@ -4924,15 +4935,6 @@ double opt_view_draw_tensors(OPT_ARGS_NUM) return v->DrawTensors; } -double opt_view_transparent_scale(OPT_ARGS_NUM) -{ - GET_VIEW(0.); - if(action & GMSH_SET) { - v->TransparentScale = (int)val; - } - return v->TransparentScale; -} - double opt_view_scale_type(OPT_ARGS_NUM) { GET_VIEW(0.); diff --git a/Common/Options.h b/Common/Options.h index 1660a2dd1e06204c94625d5ff8bbd57a3f93c6f4..b2ae315f05c40a9e2ed97fac68b5366e0d27f0b7 100644 --- a/Common/Options.h +++ b/Common/Options.h @@ -428,6 +428,7 @@ double opt_solver_merge_views3(OPT_ARGS_NUM); double opt_solver_merge_views4(OPT_ARGS_NUM); double opt_post_vertex_arrays(OPT_ARGS_NUM); double opt_post_scales(OPT_ARGS_NUM); +double opt_post_horizontal_scales(OPT_ARGS_NUM); double opt_post_link(OPT_ARGS_NUM); double opt_post_smooth(OPT_ARGS_NUM); double opt_post_anim_delay(OPT_ARGS_NUM); @@ -486,7 +487,6 @@ double opt_view_draw_pyramids(OPT_ARGS_NUM); double opt_view_draw_scalars(OPT_ARGS_NUM); double opt_view_draw_vectors(OPT_ARGS_NUM); double opt_view_draw_tensors(OPT_ARGS_NUM); -double opt_view_transparent_scale(OPT_ARGS_NUM); double opt_view_scale_type(OPT_ARGS_NUM); double opt_view_tensor_type(OPT_ARGS_NUM); double opt_view_range_type(OPT_ARGS_NUM); diff --git a/Common/Views.cpp b/Common/Views.cpp index 80b54b4ed8c02c40b0960e01c81abf04d617e2a7..7846ff827e68e9bf449ec29bbc1a71a908a79864 100644 --- a/Common/Views.cpp +++ b/Common/Views.cpp @@ -1,4 +1,4 @@ -// $Id: Views.cpp,v 1.134 2004-09-18 20:25:25 geuzaine Exp $ +// $Id: Views.cpp,v 1.135 2004-10-11 17:22:56 geuzaine Exp $ // // Copyright (C) 1997-2004 C. Geuzaine, J.-F. Remacle // @@ -649,7 +649,6 @@ void CopyViewOptions(Post_View * src, Post_View * dest) dest->DrawVectors = src->DrawVectors; dest->DrawTensors = src->DrawTensors; dest->DrawStrings = src->DrawStrings; - dest->TransparentScale = src->TransparentScale; dest->ScaleType = src->ScaleType; dest->RangeType = src->RangeType; dest->VectorType = src->VectorType; diff --git a/Common/Views.h b/Common/Views.h index 95aa9b175b5796fb28a8eeb27058e9a563a81b25..1da08287cc8442508e862237a41d1121c5631ef3 100644 --- a/Common/Views.h +++ b/Common/Views.h @@ -73,7 +73,7 @@ class Post_View{ double AngleSmoothNormals, AlphaChannel; int SaturateValues; int ShowElement, ShowTime, ShowScale; - int TransparentScale, ScaleType, RangeType; + int ScaleType, RangeType; int VectorType, TensorType, ArrowLocation; int TimeStep; int DrawStrings; diff --git a/Fltk/Callbacks.cpp b/Fltk/Callbacks.cpp index b2db5564d09a2c9f0f8fa3cade9e0d2e15a730d5..f734c4a9142311543a6d1b8464f986ba719d1e47 100644 --- a/Fltk/Callbacks.cpp +++ b/Fltk/Callbacks.cpp @@ -1,4 +1,4 @@ -// $Id: Callbacks.cpp,v 1.279 2004-09-25 17:25:45 geuzaine Exp $ +// $Id: Callbacks.cpp,v 1.280 2004-10-11 17:22:57 geuzaine Exp $ // // Copyright (C) 1997-2004 C. Geuzaine, J.-F. Remacle // @@ -1058,6 +1058,7 @@ void post_options_ok_cb(CALLBACK_ARGS) { opt_post_anim_cycle(0, GMSH_SET, WID->post_butt[0]->value()); opt_post_combine_remove_orig(0, GMSH_SET, WID->post_butt[1]->value()); + opt_post_horizontal_scales(0, GMSH_SET, WID->post_butt[2]->value()); opt_post_anim_delay(0, GMSH_SET, WID->post_value[0]->value()); diff --git a/Fltk/GUI.cpp b/Fltk/GUI.cpp index bd6bc3e866c08f979d3465765b5b2179d8a31fc2..77464f4830efc6868723414156bd5bc31ab74896 100644 --- a/Fltk/GUI.cpp +++ b/Fltk/GUI.cpp @@ -1,4 +1,4 @@ -// $Id: GUI.cpp,v 1.357 2004-09-28 23:07:27 geuzaine Exp $ +// $Id: GUI.cpp,v 1.358 2004-10-11 17:22:57 geuzaine Exp $ // // Copyright (C) 1997-2004 C. Geuzaine, J.-F. Remacle // @@ -2283,6 +2283,11 @@ void GUI::create_option_window() post_butt[1]->down_box(TOGGLE_BOX); post_butt[1]->selection_color(TOGGLE_COLOR); + post_butt[2] = new Fl_Check_Button(2 * WB, 2 * WB + 5 * BH, BW, BH, "Draw horizontal scales"); + post_butt[2]->type(FL_TOGGLE_BUTTON); + post_butt[2]->down_box(TOGGLE_BOX); + post_butt[2]->selection_color(TOGGLE_COLOR); + o->end(); } o->end(); diff --git a/Graphics/Graph2D.cpp b/Graphics/Graph2D.cpp index 6caace4743b9908788e385ec17ada38dc3b9d44a..477613db57fe17aebd3aa8fc2242d54ad17a1e61 100644 --- a/Graphics/Graph2D.cpp +++ b/Graphics/Graph2D.cpp @@ -1,4 +1,4 @@ -// $Id: Graph2D.cpp,v 1.35 2004-04-24 05:31:13 geuzaine Exp $ +// $Id: Graph2D.cpp,v 1.36 2004-10-11 17:22:57 geuzaine Exp $ // // Copyright (C) 1997-2004 C. Geuzaine, J.-F. Remacle // @@ -106,16 +106,6 @@ static void Draw_Graph2D(Post_View * v, double Abs, Val, ValMin = 0., ValMax = 0., AbsMin, AbsMax; double p1[3], p2[3]; - if(!v->TransparentScale) { - glColor4ubv((GLubyte *) & CTX.color.bg); - glBegin(GL_QUADS); - glVertex2d(bb[0], CTX.viewport[3] - bb[1]); - glVertex2d(bb[2], CTX.viewport[3] - bb[1]); - glVertex2d(bb[2], CTX.viewport[3] - bb[3]); - glVertex2d(bb[0], CTX.viewport[3] - bb[3]); - glEnd(); - } - gl_font(CTX.gl_font_enum, CTX.gl_fontsize); font_h = gl_height(); // total font height font_a = gl_height() - gl_descent(); // height above ref pt diff --git a/Graphics/Scale.cpp b/Graphics/Scale.cpp index f69155eccc319a3f7666fc1820d706871e7d266c..19b28883383a36c108ea98a5dfdd75217fef4bc5 100644 --- a/Graphics/Scale.cpp +++ b/Graphics/Scale.cpp @@ -1,4 +1,4 @@ -// $Id: Scale.cpp,v 1.44 2004-09-01 20:23:50 geuzaine Exp $ +// $Id: Scale.cpp,v 1.45 2004-10-11 17:22:57 geuzaine Exp $ // // Copyright (C) 1997-2004 C. Geuzaine, J.-F. Remacle // @@ -35,19 +35,19 @@ extern Context_T CTX; void draw_scale(Post_View * v, double xmin, double ymin, double width, double height, - double tic, double space, double dx, double dy) + double tic, int horizontal) { - int i, nbv; - double font_h, font_a; - double cs_bh, cv_xmin, cv_bh; - char label[1024]; - double Val, ValMin, ValMax; + gl_font(CTX.gl_font_enum, CTX.gl_fontsize); + double font_h = gl_height(); // total font height + double font_a = gl_height() - gl_descent(); // height above ref pt - gl_font(FL_HELVETICA, CTX.gl_fontsize); - font_h = gl_height(); // total font height - font_a = gl_height() - gl_descent(); // height above ref pt - cs_bh = height / (v->NbIso ? v->NbIso : 1); // colorscale box height - cv_xmin = xmin + width + tic; // valuescale xmin + double box; + if(horizontal){ + box = width / (v->NbIso ? v->NbIso : 1); // colorscale box width + } + else{ + box = height / (v->NbIso ? v->NbIso : 1); // colorscale box height + } glPointSize(v->PointSize); gl2psPointSize(v->PointSize * CTX.print.eps_point_size_factor); @@ -55,19 +55,7 @@ void draw_scale(Post_View * v, glLineWidth(v->LineWidth); gl2psLineWidth(v->LineWidth * CTX.print.eps_line_width_factor); - if(!v->TransparentScale) { - double dytop = 0.; - if(v->IntervalsType != DRAW_POST_ISO) - dytop = font_h / 2.; - glColor4ubv((GLubyte *) & CTX.color.bg); - glBegin(GL_QUADS); - glVertex2d(xmin - space, ymin - dy - space); - glVertex2d(xmin + width + dx + space, ymin - dy - space); - glVertex2d(xmin + width + dx + space, ymin + height + dytop + space); - glVertex2d(xmin - space, ymin + height + dytop + space); - glEnd(); - } - + double ValMin, ValMax; if(v->VectorType == DRAW_POST_DISPLACEMENT_EXTERNAL){ ValMin = v->MinForDisplacement; ValMax = v->MaxForDisplacement; @@ -107,14 +95,22 @@ void draw_scale(Post_View * v, // colorscale - for(i = 0; i < v->NbIso; i++) { + for(int i = 0; i < v->NbIso; i++) { if(v->IntervalsType == DRAW_POST_DISCRETE) { PaletteDiscrete(v, v->NbIso, i); glBegin(GL_QUADS); - glVertex2d(xmin, ymin + i * cs_bh); - glVertex2d(xmin + width, ymin + i * cs_bh); - glVertex2d(xmin + width, ymin + (i + 1) * cs_bh); - glVertex2d(xmin, ymin + (i + 1) * cs_bh); + if(horizontal){ + glVertex2d(xmin + i * box, ymin); + glVertex2d(xmin + (i + 1) * box, ymin); + glVertex2d(xmin + (i + 1) * box, ymin + height); + glVertex2d(xmin + i * box, ymin + height); + } + else{ + glVertex2d(xmin, ymin + i * box); + glVertex2d(xmin + width, ymin + i * box); + glVertex2d(xmin + width, ymin + (i + 1) * box); + glVertex2d(xmin, ymin + (i + 1) * box); + } glEnd(); } else if(v->IntervalsType == DRAW_POST_CONTINUOUS) { @@ -122,28 +118,58 @@ void draw_scale(Post_View * v, PaletteContinuousLinear(v, ValMin, ValMax, ValMin + i * (ValMax - ValMin) / (v->NbIso ? v->NbIso : 1)); - glVertex2d(xmin, ymin + i * cs_bh); - glVertex2d(xmin + width, ymin + i * cs_bh); + if(horizontal){ + glVertex2d(xmin + i * box, ymin + height); + glVertex2d(xmin + i * box, ymin); + } + else{ + glVertex2d(xmin, ymin + i * box); + glVertex2d(xmin + width, ymin + i * box); + } PaletteContinuousLinear(v, ValMin, ValMax, ValMin + (i + 1) * (ValMax - ValMin) / (v->NbIso ? v->NbIso : 1)); - glVertex2d(xmin + width, ymin + (i + 1) * cs_bh); - glVertex2d(xmin, ymin + (i + 1) * cs_bh); + if(horizontal){ + glVertex2d(xmin + (i + 1) * box, ymin); + glVertex2d(xmin + (i + 1) * box, ymin + height); + } + else{ + glVertex2d(xmin + width, ymin + (i + 1) * box); + glVertex2d(xmin, ymin + (i + 1) * box); + } glEnd(); } else { PaletteDiscrete(v, v->NbIso, i); glBegin(GL_LINES); - glVertex2d(xmin, ymin + i * cs_bh + 0.5 * cs_bh); - glVertex2d(xmin + width, ymin + i * cs_bh + 0.5 * cs_bh); + if(horizontal){ + glVertex2d(xmin + i * box + 0.5 * box, ymin); + glVertex2d(xmin + i * box + 0.5 * box, ymin + height); + } + else{ + glVertex2d(xmin, ymin + i * box + 0.5 * box); + glVertex2d(xmin + width, ymin + i * box + 0.5 * box); + } glEnd(); } } // valuescale - nbv = (v->NbIso < floor(height / font_h)) ? v->NbIso : -1; - cv_bh = height / nbv; + char label[1024]; + int nbv; + double cv_box; + + if(horizontal){ + sprintf(label, v->Format, -100*M_PI); + double estim = gl_width(label); + nbv = (v->NbIso < floor(width / estim)) ? v->NbIso : -1; + cv_box = width / nbv; + } + else{ + nbv = (v->NbIso < floor(height / font_h)) ? v->NbIso : -1; + cv_box = height / nbv; + } glColor4ubv((GLubyte *) & CTX.color.text); @@ -151,39 +177,57 @@ void draw_scale(Post_View * v, if(v->IntervalsType == DRAW_POST_DISCRETE || v->IntervalsType == DRAW_POST_CONTINUOUS) { sprintf(label, v->Format, ValMin); - glRasterPos2d(cv_xmin, ymin - font_a / 3.); + if(horizontal) + glRasterPos2d(xmin - gl_width(label)/2., ymin + height + tic); + else + glRasterPos2d(xmin + width + tic, ymin - font_a / 3.); Draw_String(label); sprintf(label, v->Format, ValMax); - glRasterPos2d(cv_xmin, ymin + height - font_a / 3.); + if(horizontal) + glRasterPos2d(xmin + width - gl_width(label)/2., ymin + height + tic); + else + glRasterPos2d(xmin + width + tic, ymin + height - font_a / 3.); Draw_String(label); } else { sprintf(label, v->Format, ValMin); - glRasterPos2d(cv_xmin, ymin + (cs_bh / 2) - font_a / 3.); + if(horizontal) + glRasterPos2d(xmin + (box / 2) - gl_width(label)/2., ymin + height + tic); + else + glRasterPos2d(xmin + width + tic, ymin + (box / 2) - font_a / 3.); Draw_String(label); sprintf(label, v->Format, ValMax); - glRasterPos2d(cv_xmin, ymin + height - (cs_bh / 2) - font_a / 3.); + if(horizontal) + glRasterPos2d(xmin + width - (box / 2) - gl_width(label)/2., ymin + height + tic); + else + glRasterPos2d(xmin + width + tic, ymin + height - (box / 2) - font_a / 3.); Draw_String(label); } } else { if(v->IntervalsType == DRAW_POST_DISCRETE || v->IntervalsType == DRAW_POST_CONTINUOUS) { - for(i = 0; i < nbv + 1; i++) { - Val = v->GVFI(ValMin, ValMax, nbv + 1, i); + for(int i = 0; i < nbv + 1; i++) { + double Val = v->GVFI(ValMin, ValMax, nbv + 1, i); sprintf(label, v->Format, Val); - glRasterPos2d(cv_xmin, ymin + i * cv_bh - font_a / 3.); + if(horizontal) + glRasterPos2d(xmin + i * cv_box - gl_width(label) / 2., ymin + height + tic); + else + glRasterPos2d(xmin + width + tic, ymin + i * cv_box - font_a / 3.); Draw_String(label); } } else { - for(i = 0; i < nbv; i++) { - Val = v->GVFI(ValMin, ValMax, nbv, i); + for(int i = 0; i < nbv; i++) { + double Val = v->GVFI(ValMin, ValMax, nbv, i); sprintf(label, v->Format, Val); - glRasterPos2d(cv_xmin, - ymin + (2 * i + 1) * (cv_bh / 2) - font_a / 3.); + if(horizontal) + glRasterPos2d(xmin + (2 * i + 1) * (cv_box / 2) - gl_width(label) / 2., + ymin + height + tic); + else + glRasterPos2d(xmin + width + tic, ymin + (2 * i + 1) * (cv_box / 2) - font_a / 3.); Draw_String(label); } } @@ -191,26 +235,23 @@ void draw_scale(Post_View * v, // the label - glRasterPos2d(cv_xmin, ymin - 2 * font_h); if((v->ShowTime == 1 && List_Nbr(v->Time) > 1) || (v->ShowTime == 2 && List_Nbr(v->Time) > 0)) sprintf(label, "%s (%g)", v->Name, *(double *)List_Pointer(v->Time, v->TimeStep)); else sprintf(label, "%s", v->Name); - Draw_String(label); -} + if(horizontal) + glRasterPos2d(xmin + width / 2. - gl_width(label) / 2., ymin + height + tic + 1.4*font_h); + else + glRasterPos2d(xmin, ymin - 2 * font_h); -static List_T *todraw = NULL; + Draw_String(label); +} void Draw_Scales(void) { - int i; - double xmin, ymin, width, height, xsep, ysep; - double oldwidth, totalwidth; - double dx = 0., dy = 0., tic = 10., space = 10.; - char label[1024]; - Post_View *v; + static List_T *todraw = NULL; if(!CTX.post.list) return; @@ -222,8 +263,8 @@ void Draw_Scales(void) else List_Reset(todraw); - for(i = 0; i < List_Nbr(CTX.post.list); i++) { - v = (Post_View *) List_Pointer(CTX.post.list, i); + for(int i = 0; i < List_Nbr(CTX.post.list); i++) { + Post_View *v = (Post_View *) List_Pointer(CTX.post.list, i); if(v->Visible && !v->Dirty && v->ShowScale && v->Type == DRAW_POST_3D && !v->TextOnly) List_Add(todraw, &v); @@ -233,55 +274,80 @@ void Draw_Scales(void) return; } - xsep = 20.; - width = 16.0; - totalwidth = 0.0; - if(List_Nbr(todraw) == 1) - ysep = (CTX.viewport[3] - CTX.viewport[1]) / 6.; - else - ysep = (CTX.viewport[3] - CTX.viewport[1]) / 15.; - xmin = CTX.viewport[0] + xsep; - ymin = CTX.viewport[1] + ysep; - - for(i = 0; i < List_Nbr(todraw); i++) { - v = *(Post_View **) List_Pointer(todraw, i); - oldwidth = width + dx + space; - dx = dy = 0.; - gl_font(FL_HELVETICA, CTX.gl_fontsize); - sprintf(label, v->Format, v->CustomMin); - if(gl_width(label) + tic > dx) - dx = gl_width(label) + tic; - sprintf(label, v->Format, v->CustomMax); - if(gl_width(label) + tic > dx) - dx = gl_width(label) + tic; - if(List_Nbr(v->Time) > 1 && v->ShowTime) - sprintf(label, "%s (%g)", v->Name, - *(double *)List_Pointer(v->Time, v->TimeStep)); - else - sprintf(label, "%s", v->Name); - if(gl_width(label) + tic > dx) - dx = gl_width(label) + tic; - dy = 2. * gl_height(); - if(v->AutoPosition) { - if(List_Nbr(todraw) == 1) { - height = CTX.viewport[3] - CTX.viewport[1] - 2 * ysep - dy; - draw_scale(v, xmin, ymin + dy, width, height, tic, space, dx, dy); + gl_font(CTX.gl_font_enum, CTX.gl_fontsize); + + const double tic = 10., bar_size = 16.; + double width = 0., width_prev = 0., width_total = 0.; + + for(int i = 0; i < List_Nbr(todraw); i++) { + Post_View *v = *(Post_View **) List_Pointer(todraw, i); + + if(!v->AutoPosition) { + draw_scale(v, + v->Position[0], + CTX.viewport[3] - v->Size[1] - v->Position[1], + v->Size[0], v->Size[1], + tic, CTX.post.horizontal_scales); + } + else{ + if(CTX.post.horizontal_scales){ + double ysep = 20.; + if(List_Nbr(todraw) == 1){ + double ww = (CTX.viewport[2] - CTX.viewport[0]) / 2.; + draw_scale(v, + (CTX.viewport[2] - CTX.viewport[0]) / 2. - ww / 2, + CTX.viewport[1] + ysep, + ww, bar_size, + tic, 1); + } + else{ + char label[1024]; + sprintf(label, v->Format, -100*M_PI); + double xsep = gl_width(label)/2. + 20; + double ww = (CTX.viewport[2] - CTX.viewport[0]) / 2. - 2 * xsep; + if(ww < 20) ww = 20; + draw_scale(v, + (CTX.viewport[2] - CTX.viewport[0]) / 2. - (i%2 ? -(xsep-10) : ww+xsep-10), + CTX.viewport[1] + ysep + (i/2) * (bar_size+tic+2*gl_height()+ysep), + ww, bar_size, + tic, 1); + } } - else { - height = - (CTX.viewport[3] - CTX.viewport[1] - 3 * ysep - 2.5 * dy) / 2.; - draw_scale(v, xmin + totalwidth + (i / 2) * xsep, - ymin + dy + (1 - i % 2) * (height + 1.5 * dy + ysep), - width, height, tic, space, dx, dy); + else{ + double xsep = 20.; + double ysep = (CTX.viewport[3] - CTX.viewport[1]) / ((List_Nbr(todraw) == 1) ? 6. : 15.); + double dy = 2. * gl_height(); + if(List_Nbr(todraw) == 1){ + double hh = CTX.viewport[3] - CTX.viewport[1] - 2 * ysep - dy; + draw_scale(v, + CTX.viewport[0] + xsep, + CTX.viewport[1] + ysep + dy, + bar_size, hh, + tic, 0); + } + else{ + double hh = (CTX.viewport[3] - CTX.viewport[1] - 3 * ysep - 2.5 * dy) / 2.; + draw_scale(v, + CTX.viewport[0] + xsep + width_total + (i / 2) * xsep, + CTX.viewport[1] + ysep + dy + (1 - i % 2) * (hh + 1.5 * dy + ysep), + bar_size, hh, + tic, 0); + } + // compute width + width_prev = width; + char label[1024]; + sprintf(label, v->Format, -100*M_PI); + width = bar_size + tic + gl_width(label); + if(List_Nbr(v->Time) > 1 && v->ShowTime) + sprintf(label, "%s (%g)", v->Name, *(double *)List_Pointer(v->Time, v->TimeStep)); + else + sprintf(label, "%s", v->Name); + if(gl_width(label) > width) + width = gl_width(label); + if(i % 2) + width_total += DMAX(bar_size + width, bar_size + width_prev); } - if(i % 2) - totalwidth += DMAX(width + dx + space, oldwidth); } - else - draw_scale(v, v->Position[0], - CTX.viewport[3] - v->Size[1] - v->Position[1], v->Size[0], - v->Size[1], tic, space, dx, dy); } - - } + diff --git a/Makefile b/Makefile index 2e970daf455dfda68cf5c8e375fa932017f1f310..403c8a7cbed9c3c4418db5d1eda22cef8b262605 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -# $Id: Makefile,v 1.373 2004-10-08 04:36:20 geuzaine Exp $ +# $Id: Makefile,v 1.374 2004-10-11 17:22:56 geuzaine Exp $ # # Copyright (C) 1997-2004 C. Geuzaine, J.-F. Remacle # @@ -23,7 +23,7 @@ include variables GMSH_MAJOR_VERSION = 1 GMSH_MINOR_VERSION = 55 -GMSH_PATCH_VERSION = 5 +GMSH_PATCH_VERSION = 6 GMSH_EXTRA_VERSION = "-cvs" GMSH_VERSION = ${GMSH_MAJOR_VERSION}.${GMSH_MINOR_VERSION}.${GMSH_PATCH_VERSION}${GMSH_EXTRA_VERSION} diff --git a/doc/FAQ b/doc/FAQ index c508676498a74a7a0d2ee68fe2b546780bc6f63e..f0ac39e8ed434634ae2c28fe57d403ea65289e8e 100644 --- a/doc/FAQ +++ b/doc/FAQ @@ -1,4 +1,4 @@ -$Id: FAQ,v 1.38 2004-06-30 21:15:58 geuzaine Exp $ +$Id: FAQ,v 1.39 2004-10-11 17:22:57 geuzaine Exp $ This is the Gmsh FAQ @@ -212,6 +212,10 @@ The solver executable (e.g. 'getdp.exe') has to be in your path. If not, simply go to the solver options (e.g. Solver->GetDP->Options->Executable) to specify its location. +On recent versions of Microsoft Windows (XP SP2), it seems that you +need to execute the solver (e.g. launch 'getdp.exe') at least once +independently of Gmsh in order to authorize future executions. + ******************************************************************** Section 7: Post-processing module diff --git a/doc/texinfo/opt_post.texi b/doc/texinfo/opt_post.texi index 93b9b311a0530ef8a7ddee8acad4e70f27aeecd7..48d8e37771340d91400783aef2ce68af2a1b68fa 100644 --- a/doc/texinfo/opt_post.texi +++ b/doc/texinfo/opt_post.texi @@ -14,6 +14,11 @@ Remove original views after a Combine operation@* Default value: @code{1}@* Saved in: @code{General.OptionsFileName} +@item PostProcessing.HorizontalScales +Display value scales horizontally@* +Default value: @code{0}@* +Saved in: @code{General.OptionsFileName} + @item PostProcessing.Link Link post-processing views (0=none, 1,2=changes in visible/all, 3,4=everything in visible/all)@* Default value: @code{0}@* diff --git a/doc/texinfo/opt_view.texi b/doc/texinfo/opt_view.texi index 850104d669f5cdb2030653783dd6a776b70bf5e7..c91bca8dbc8a06c4a4cc057e529327e8ec8f98eb 100644 --- a/doc/texinfo/opt_view.texi +++ b/doc/texinfo/opt_view.texi @@ -309,11 +309,6 @@ Current time step displayed@* Default value: @code{0}@* Saved in: @code{-} -@item View.TransparentScale -Display a `transparent' value scale?@* -Default value: @code{1}@* -Saved in: @code{General.OptionsFileName} - @item View.Type Type of graph (1=3D, 2=2D-space, 3=2D-time)@* Default value: @code{1}@*