From ae2e4bd341c96f0ab75bcb5406aec29af4e44d75 Mon Sep 17 00:00:00 2001 From: Christophe Geuzaine <cgeuzaine@ulg.ac.be> Date: Wed, 21 Dec 2005 02:01:28 +0000 Subject: [PATCH] added radial gradient ;-) --- Common/DefaultOptions.h | 2 +- Common/Options.cpp | 4 ++-- Fltk/GUI.cpp | 3 ++- Graphics/Draw.cpp | 28 +++++++++++++++++++++++----- 4 files changed, 28 insertions(+), 9 deletions(-) diff --git a/Common/DefaultOptions.h b/Common/DefaultOptions.h index 895b09b2b1..e7638f1bc5 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 de4c7437b6..74952095b8 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 3434d77184..cf5cf06188 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 558de666bd..770be8b017 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(); } } -- GitLab