fix GLchan==GLfloat bug in solve_plane_chan (bug 694546)
authorBrian Paul <brian.paul@tungstengraphics.com>
Fri, 28 Feb 2003 15:08:49 +0000 (15:08 +0000)
committerBrian Paul <brian.paul@tungstengraphics.com>
Fri, 28 Feb 2003 15:08:49 +0000 (15:08 +0000)
src/mesa/swrast/s_aaline.c

index deaae01f71122d8046546eb80b49a9e0998cc658..5d391a2ad372b0111b11da08735195aa9275f21b 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: s_aaline.c,v 1.18 2003/02/27 23:37:53 brianp Exp $ */
+/* $Id: s_aaline.c,v 1.19 2003/02/28 15:08:49 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
@@ -180,12 +180,16 @@ solve_plane_recip(GLfloat x, GLfloat y, const GLfloat plane[4])
 static INLINE GLchan
 solve_plane_chan(GLfloat x, GLfloat y, const GLfloat plane[4])
 {
-   GLfloat z = (plane[3] + plane[0] * x + plane[1] * y) / -plane[2] + 0.5F;
-   if (z < 0.0F)
+   const GLfloat z = (plane[3] + plane[0] * x + plane[1] * y) / -plane[2];
+#if CHAN_TYPE == GL_FLOAT
+   return CLAMP(z, 0.0F, CHAN_MAXF);
+#else
+   if (z < 0)
       return 0;
-   else if (z > CHAN_MAXF)
-      return (GLchan) CHAN_MAXF;
-   return (GLchan) z;
+   else if (z > CHAN_MAX)
+      return CHAN_MAX;
+   return (GLchan) IROUND_POS(z);
+#endif
 }