From 8eb1e5147914f64edd41369c19dd05bf736fa06a Mon Sep 17 00:00:00 2001
From: Christophe Geuzaine <cgeuzaine@ulg.ac.be>
Date: Mon, 19 Dec 2005 02:24:56 +0000
Subject: [PATCH] fixes for windows/cygwin (cannot use glVertex2d when there is
 a transfo along z)

---
 Graphics/Draw.cpp | 46 +++++++++++++++++++++++-----------------------
 1 file changed, 23 insertions(+), 23 deletions(-)

diff --git a/Graphics/Draw.cpp b/Graphics/Draw.cpp
index f4cd2c2ee1..f83e881bf4 100644
--- a/Graphics/Draw.cpp
+++ b/Graphics/Draw.cpp
@@ -1,4 +1,4 @@
-// $Id: Draw.cpp,v 1.86 2005-12-18 23:45:01 geuzaine Exp $
+// $Id: Draw.cpp,v 1.87 2005-12-19 02:24:56 geuzaine Exp $
 //
 // Copyright (C) 1997-2005 C. Geuzaine, J.-F. Remacle
 //
@@ -176,24 +176,24 @@ void InitProjection(int x, int y)
   // we should generalize the following for cases when the object is
   // located far from the z=0 plane
 
-  double gradient_zdist, gradient_xyfact;
+  double grad_z, grad_xy;
   if(CTX.ortho) {
     // setting up the near and far clipping planes so that the box is
     // large enough to manipulate the model and zoom, but not too big
     // (the z-buffer resolution, e.g., on software Mesa can become
     // insufficient)
-    double maxz = MAX(fabs(CTX.min[2]), fabs(CTX.max[2]));
-    if(maxz < CTX.lc) maxz = CTX.lc;
-    double clip = maxz * CTX.s[2] * CTX.clip_factor;
+    double zmax = MAX(fabs(CTX.min[2]), fabs(CTX.max[2]));
+    if(zmax < CTX.lc) zmax = CTX.lc;
+    double clip = zmax * CTX.s[2] * CTX.clip_factor;
     glOrtho(CTX.vxmin, CTX.vxmax, CTX.vymin, CTX.vymax, -clip, clip);
     glMatrixMode(GL_MODELVIEW);
     glLoadIdentity();
-    gradient_zdist = 0.99 * clip;
-    gradient_xyfact = 1.;
+    grad_z = 0.99 * clip;
+    grad_xy = 1.;
   }
   else {
-    double near = 0.75 * CTX.clip_factor * CTX.lc;
-    double far = 75. * CTX.clip_factor * CTX.lc;
+    double znear = 0.75 * CTX.clip_factor * CTX.lc;
+    double zfar = 75. * CTX.clip_factor * CTX.lc;
     // recenter the model such that the perspective is always at the
     // center of gravity (we should maybe add an option to choose
     // this, as we do for the rotation center)
@@ -203,37 +203,36 @@ void InitProjection(int x, int y)
     CTX.vxmax -= CTX.t_init[0];
     CTX.vymin -= CTX.t_init[1];
     CTX.vymax -= CTX.t_init[1];
-    glFrustum(CTX.vxmin, CTX.vxmax, CTX.vymin, CTX.vymax, near, far);
+    glFrustum(CTX.vxmin, CTX.vxmax, CTX.vymin, CTX.vymax, znear, zfar);
     glMatrixMode(GL_MODELVIEW);
     glLoadIdentity();
-    glTranslated(-10 * CTX.t_init[0], -10 * CTX.t_init[1], -10 * near);
+    glTranslated(-10 * CTX.t_init[0], -10 * CTX.t_init[1], -10 * znear);
     glScaled(10., 10., 10.);
-    gradient_zdist = 0.99 * far;
-    gradient_xyfact = far / near;
+    grad_z = 0.99 * zfar;
+    grad_xy = zfar / znear;
   }
 
   // draw background gradient
   if(CTX.render_mode != GMSH_SELECT && CTX.bg_gradient){
     glPushMatrix();
     glLoadIdentity();
-    glTranslated(0., 0., -gradient_zdist);
-    glShadeModel(GL_SMOOTH);
+    glTranslated(0., 0., -grad_z);
     glBegin(GL_QUADS);
     if(CTX.bg_gradient == 1){
       glColor4ubv((GLubyte *) & CTX.color.bg);
-      glVertex2d(gradient_xyfact * CTX.vxmin, gradient_xyfact * CTX.vymin);
-      glVertex2d(gradient_xyfact * CTX.vxmax, gradient_xyfact * CTX.vymin);
+      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);
-      glVertex2d(gradient_xyfact * CTX.vxmax, gradient_xyfact * CTX.vymax);
-      glVertex2d(gradient_xyfact * CTX.vxmin, gradient_xyfact * CTX.vymax);
+      glVertex3d(grad_xy * CTX.vxmax, grad_xy * CTX.vymax, 0.);
+      glVertex3d(grad_xy * CTX.vxmin, grad_xy * CTX.vymax, 0.);
     }
     else{
       glColor4ubv((GLubyte *) & CTX.color.bg);
-      glVertex2d(gradient_xyfact * CTX.vxmax, gradient_xyfact * CTX.vymin);
-      glVertex2d(gradient_xyfact * CTX.vxmax, gradient_xyfact * CTX.vymax);
+      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);
-      glVertex2d(gradient_xyfact * CTX.vxmin, gradient_xyfact * CTX.vymax);
-      glVertex2d(gradient_xyfact * CTX.vxmin, gradient_xyfact * CTX.vymin);
+      glVertex3d(grad_xy * CTX.vxmin, grad_xy * CTX.vymax, 0.);
+      glVertex3d(grad_xy * CTX.vxmin, grad_xy * CTX.vymin, 0.);
     }
     glEnd();
     glPopMatrix();
@@ -288,6 +287,7 @@ void InitRenderModel(void)
   glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, CTX.shine_exponent);
 
   glShadeModel(GL_SMOOTH);
+
   // Normalize the normals automatically. We could use the more
   // efficient glEnable(GL_RESCALE_NORMAL) instead (since we initially
   // specify unit normals), but GL_RESCALE_NORMAL does only work with
-- 
GitLab