diff --git a/Common/DefaultOptions.h b/Common/DefaultOptions.h index 895b09b2b14a850140789546dee3fb45cff0b341..e7638f1bc5d46b479ed142606a4f5efdb10601a5 100644 --- a/Common/DefaultOptions.h +++ b/Common/DefaultOptions.h @@ -469,7 +469,7 @@ StringXNumber GeneralOptions_Number[] = { { F|O, "AxesTicsZ" , opt_general_axes_tics2 , 5. , "Number of tics on the Z-axis" }, { F|O, "BackgroundGradient" , opt_general_background_gradient , 0. , - "Draw background gradient (0=none, 1=vertical, 2=horizontal)" }, + "Draw background gradient (0=none, 1=vertical, 2=horizontal, 3=radial)" }, { F, "Clip0" , opt_general_clip0 , 0. , "Enable clipping plane 0 (Geometry=2^0, Mesh=2^1, View[i]=2^(2+i))" }, { F, "Clip0A" , opt_general_clip0a , 1.0 , diff --git a/Common/Options.cpp b/Common/Options.cpp index de4c7437b67333449fab355b73cb8eae450c42fb..74952095b897a9fc686ad529f521754c2ab3bb2e 100644 --- a/Common/Options.cpp +++ b/Common/Options.cpp @@ -1,4 +1,4 @@ -// $Id: Options.cpp,v 1.267 2005-12-20 23:17:28 geuzaine Exp $ +// $Id: Options.cpp,v 1.268 2005-12-21 02:01:26 geuzaine Exp $ // // Copyright (C) 1997-2005 C. Geuzaine, J.-F. Remacle // @@ -3106,7 +3106,7 @@ double opt_general_background_gradient(OPT_ARGS_NUM) { if(action & GMSH_SET){ CTX.bg_gradient = (int)val; - if(CTX.bg_gradient < 0 || CTX.bg_gradient > 2) + if(CTX.bg_gradient < 0 || CTX.bg_gradient > 3) CTX.bg_gradient = 0; } #if defined(HAVE_FLTK) diff --git a/Fltk/GUI.cpp b/Fltk/GUI.cpp index 3434d7718492bb8689bac9071e6a310cac5cfc5c..cf5cf06188a181b4f3b6945a765e7b341c5b9d08 100644 --- a/Fltk/GUI.cpp +++ b/Fltk/GUI.cpp @@ -1,4 +1,4 @@ -// $Id: GUI.cpp,v 1.474 2005-12-18 22:13:26 geuzaine Exp $ +// $Id: GUI.cpp,v 1.475 2005-12-21 02:01:27 geuzaine Exp $ // // Copyright (C) 1997-2005 C. Geuzaine, J.-F. Remacle // @@ -1985,6 +1985,7 @@ void GUI::create_option_window() {"None", 0, 0, 0}, {"Vertical", 0, 0, 0}, {"Horizontal", 0, 0, 0}, + {"Radial", 0, 0, 0}, {0} }; diff --git a/Graphics/Draw.cpp b/Graphics/Draw.cpp index 558de666bd06cad54a417a8f20f6e92f2064df9f..770be8b0172b50688f6cfadf1c3331ca5f6d6383 100644 --- a/Graphics/Draw.cpp +++ b/Graphics/Draw.cpp @@ -1,4 +1,4 @@ -// $Id: Draw.cpp,v 1.88 2005-12-19 05:08:05 geuzaine Exp $ +// $Id: Draw.cpp,v 1.89 2005-12-21 02:01:28 geuzaine Exp $ // // Copyright (C) 1997-2005 C. Geuzaine, J.-F. Remacle // @@ -217,24 +217,42 @@ void InitProjection(int x, int y) glPushMatrix(); glLoadIdentity(); glTranslated(0., 0., -grad_z); - glBegin(GL_QUADS); - if(CTX.bg_gradient == 1){ + if(CTX.bg_gradient == 1){ // vertical + glBegin(GL_QUADS); glColor4ubv((GLubyte *) & CTX.color.bg); glVertex3d(grad_xy * CTX.vxmin, grad_xy * CTX.vymin, 0.); glVertex3d(grad_xy * CTX.vxmax, grad_xy * CTX.vymin, 0.); glColor4ubv((GLubyte *) & CTX.color.bg_grad); glVertex3d(grad_xy * CTX.vxmax, grad_xy * CTX.vymax, 0.); glVertex3d(grad_xy * CTX.vxmin, grad_xy * CTX.vymax, 0.); + glEnd(); } - else{ + else if(CTX.bg_gradient == 2){ // horizontal + glBegin(GL_QUADS); glColor4ubv((GLubyte *) & CTX.color.bg); glVertex3d(grad_xy * CTX.vxmax, grad_xy * CTX.vymin, 0.); glVertex3d(grad_xy * CTX.vxmax, grad_xy * CTX.vymax, 0.); glColor4ubv((GLubyte *) & CTX.color.bg_grad); glVertex3d(grad_xy * CTX.vxmin, grad_xy * CTX.vymax, 0.); glVertex3d(grad_xy * CTX.vxmin, grad_xy * CTX.vymin, 0.); + glEnd(); + } + else{ // radial + double cx = grad_xy * (CTX.vxmin + CTX.vxmax) / 2.; + double cy = grad_xy * (CTX.vymin + CTX.vymax) / 2.; + double r = MAX(CTX.vxmax - CTX.vxmin, CTX.vymax - CTX.vymin) / 2.; + glBegin(GL_TRIANGLE_FAN); + glColor4ubv((GLubyte *) & CTX.color.bg_grad); + glVertex3d(cx, cy, 0.); + glColor4ubv((GLubyte *) & CTX.color.bg); + glVertex3d(cx + r, cy, 0.); + int ntheta = 36; + for(int i = 1; i < ntheta + 1; i ++){ + double theta = i * 2 * M_PI / (double)ntheta; + glVertex3d(cx + r * cos(theta), cy + r * sin(theta), 0.); + } + glEnd(); } - glEnd(); glPopMatrix(); } }