Fix typo
[mesa.git] / src / mesa / swrast / s_lines.c
index e460a77f18183a6b900b7f00d80a23a70366dcdf..114ddeb320be0a7abde2ccc6d165cf0329b36542 100644 (file)
@@ -1,10 +1,10 @@
-/* $Id: s_lines.c,v 1.5 2000/11/13 20:02:57 keithw Exp $ */
+/* $Id: s_lines.c,v 1.12 2001/03/03 20:33:30 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
  * Version:  3.5
  * 
- * Copyright (C) 1999-2000  Brian Paul   All Rights Reserved.
+ * Copyright (C) 1999-2001  Brian Paul   All Rights Reserved.
  * 
  * Permission is hereby granted, free of charge, to any person obtaining a
  * copy of this software and associated documentation files (the "Software"),
@@ -26,9 +26,9 @@
 
 
 #include "glheader.h"
+#include "colormac.h"
 #include "macros.h"
 #include "mmath.h"
-#include "vb.h"
 #include "s_aaline.h"
 #include "s_pb.h"
 #include "s_context.h"
@@ -55,8 +55,8 @@
 
 /* Flat, color index line */
 static void flat_ci_line( GLcontext *ctx,
-                          SWvertex *vert0,
-                         SWvertex *vert1 )
+                          const SWvertex *vert0,
+                         const SWvertex *vert1 )
 {
    struct pixel_buffer *PB = SWRAST_CONTEXT(ctx)->PB;
 
@@ -67,15 +67,15 @@ static void flat_ci_line( GLcontext *ctx,
 
 #include "s_linetemp.h"
 
-   gl_flush_pb(ctx);
+   _mesa_flush_pb(ctx);
 }
 
 
 
 /* Flat, color index line with Z interpolation/testing */
 static void flat_ci_z_line( GLcontext *ctx,
-                            SWvertex *vert0,
-                           SWvertex *vert1 )
+                            const SWvertex *vert0,
+                           const SWvertex *vert1 )
 {
    struct pixel_buffer *PB = SWRAST_CONTEXT(ctx)->PB;
    PB_SET_INDEX( PB, vert0->index );
@@ -86,17 +86,17 @@ static void flat_ci_z_line( GLcontext *ctx,
 
 #include "s_linetemp.h"
 
-   gl_flush_pb(ctx);
+   _mesa_flush_pb(ctx);
 }
 
 
 
 /* Flat-shaded, RGBA line */
 static void flat_rgba_line( GLcontext *ctx,
-                            SWvertex *vert0,
-                           SWvertex *vert1 )
+                            const SWvertex *vert0,
+                           const SWvertex *vert1 )
 {
-   const GLchan *color = vert0->color;
+   const GLchan *color = vert1->color;
    struct pixel_buffer *PB = SWRAST_CONTEXT(ctx)->PB;
    PB_SET_COLOR( PB, color[0], color[1], color[2], color[3] );
 
@@ -105,17 +105,17 @@ static void flat_rgba_line( GLcontext *ctx,
 
 #include "s_linetemp.h"
 
-   gl_flush_pb(ctx);
+   _mesa_flush_pb(ctx);
 }
 
 
 
 /* Flat-shaded, RGBA line with Z interpolation/testing */
 static void flat_rgba_z_line( GLcontext *ctx,
-                              SWvertex *vert0,
-                             SWvertex *vert1 )
+                              const SWvertex *vert0,
+                             const SWvertex *vert1 )
 {
-   const GLchan *color = vert0->color;
+   const GLchan *color = vert1->color;
    struct pixel_buffer *PB = SWRAST_CONTEXT(ctx)->PB;
    PB_SET_COLOR( PB, color[0], color[1], color[2], color[3] );
 
@@ -125,15 +125,15 @@ static void flat_rgba_z_line( GLcontext *ctx,
 
 #include "s_linetemp.h"
 
-   gl_flush_pb(ctx);
+   _mesa_flush_pb(ctx);
 }
 
 
 
 /* Smooth shaded, color index line */
 static void smooth_ci_line( GLcontext *ctx,
-                            SWvertex *vert0,
-                           SWvertex *vert1 )
+                            const SWvertex *vert0,
+                           const SWvertex *vert1 )
 {
    struct pixel_buffer *PB = SWRAST_CONTEXT(ctx)->PB;
    GLint count = PB->count;
@@ -155,15 +155,15 @@ static void smooth_ci_line( GLcontext *ctx,
 #include "s_linetemp.h"
 
    PB->count = count;
-   gl_flush_pb(ctx);
+   _mesa_flush_pb(ctx);
 }
 
 
 
 /* Smooth shaded, color index line with Z interpolation/testing */
 static void smooth_ci_z_line( GLcontext *ctx,
-                              SWvertex *vert0,
-                             SWvertex *vert1 )
+                              const SWvertex *vert0,
+                             const SWvertex *vert1 )
 {
    struct pixel_buffer *PB = SWRAST_CONTEXT(ctx)->PB;
    GLint count = PB->count;
@@ -188,15 +188,15 @@ static void smooth_ci_z_line( GLcontext *ctx,
 #include "s_linetemp.h"
 
    PB->count = count;
-   gl_flush_pb(ctx);
+   _mesa_flush_pb(ctx);
 }
 
 
 
 /* Smooth-shaded, RGBA line */
 static void smooth_rgba_line( GLcontext *ctx,
-                                     SWvertex *vert0,
-                             SWvertex *vert1 )
+                                     const SWvertex *vert0,
+                             const SWvertex *vert1 )
 {
    struct pixel_buffer *PB = SWRAST_CONTEXT(ctx)->PB;
    GLint count = PB->count;
@@ -222,15 +222,15 @@ static void smooth_rgba_line( GLcontext *ctx,
 #include "s_linetemp.h"
 
    PB->count = count;
-   gl_flush_pb(ctx);
+   _mesa_flush_pb(ctx);
 }
 
 
 
 /* Smooth-shaded, RGBA line with Z interpolation/testing */
 static void smooth_rgba_z_line( GLcontext *ctx,
-                                       SWvertex *vert0,
-                               SWvertex *vert1 )
+                                       const SWvertex *vert0,
+                               const SWvertex *vert1 )
 {
    struct pixel_buffer *PB = SWRAST_CONTEXT(ctx)->PB;
    GLint count = PB->count;
@@ -262,14 +262,14 @@ static void smooth_rgba_z_line( GLcontext *ctx,
 #include "s_linetemp.h"
 
    PB->count = count;
-   gl_flush_pb(ctx);
+   _mesa_flush_pb(ctx);
 }
 
 
 #define CHECK_FULL(count)              \
    if (count >= PB_SIZE-MAX_WIDTH) {   \
       PB->count = count;               \
-      gl_flush_pb(ctx);                        \
+      _mesa_flush_pb(ctx);                     \
       count = PB->count;               \
    }
 
@@ -277,8 +277,8 @@ static void smooth_rgba_z_line( GLcontext *ctx,
 
 /* Smooth shaded, color index, any width, maybe stippled */
 static void general_smooth_ci_line( GLcontext *ctx,
-                                   SWvertex *vert0,
-                                   SWvertex *vert1 )
+                                   const SWvertex *vert0,
+                                   const SWvertex *vert1 )
 {
    struct pixel_buffer *PB = SWRAST_CONTEXT(ctx)->PB;
    GLint count = PB->count;
@@ -351,14 +351,14 @@ static void general_smooth_ci_line( GLcontext *ctx,
    }
 
    PB->count = count;
-   gl_flush_pb(ctx);
+   _mesa_flush_pb(ctx);
 }
 
 
 /* Flat shaded, color index, any width, maybe stippled */
 static void general_flat_ci_line( GLcontext *ctx,
-                                  SWvertex *vert0,
-                                 SWvertex *vert1 )
+                                  const SWvertex *vert0,
+                                 const SWvertex *vert1 )
 {
    struct pixel_buffer *PB = SWRAST_CONTEXT(ctx)->PB;
    GLint count;
@@ -423,14 +423,14 @@ static void general_flat_ci_line( GLcontext *ctx,
    }
 
    PB->count = count;
-   gl_flush_pb(ctx);
+   _mesa_flush_pb(ctx);
 }
 
 
 
 static void general_smooth_rgba_line( GLcontext *ctx,
-                                      SWvertex *vert0,
-                                     SWvertex *vert1 )
+                                      const SWvertex *vert0,
+                                     const SWvertex *vert1 )
 {
    struct pixel_buffer *PB = SWRAST_CONTEXT(ctx)->PB;
    GLint count = PB->count;
@@ -526,16 +526,16 @@ static void general_smooth_rgba_line( GLcontext *ctx,
    }
 
    PB->count = count;
-   gl_flush_pb(ctx);
+   _mesa_flush_pb(ctx);
 }
 
 
 static void general_flat_rgba_line( GLcontext *ctx,
-                                    SWvertex *vert0,
-                                   SWvertex *vert1 )
+                                    const SWvertex *vert0,
+                                   const SWvertex *vert1 )
 {
    struct pixel_buffer *PB = SWRAST_CONTEXT(ctx)->PB;
-   const GLchan *color = vert0->color;
+   const GLchan *color = vert1->color;
    PB_SET_COLOR( PB, color[0], color[1], color[2], color[3] );
 
    if (ctx->Line.StippleFlag) {
@@ -569,14 +569,14 @@ static void general_flat_rgba_line( GLcontext *ctx,
       }
    }
 
-   gl_flush_pb(ctx);
+   _mesa_flush_pb(ctx);
 }
 
 
 /* Flat-shaded, textured, any width, maybe stippled */
 static void flat_textured_line( GLcontext *ctx,
-                                SWvertex *vert0,
-                               SWvertex *vert1 )
+                                const SWvertex *vert0,
+                               const SWvertex *vert1 )
 {
    struct pixel_buffer *PB = SWRAST_CONTEXT(ctx)->PB;
    GLint count;
@@ -587,7 +587,7 @@ static void flat_textured_line( GLcontext *ctx,
    GLfloat *pbs = PB->s[0];
    GLfloat *pbt = PB->t[0];
    GLfloat *pbu = PB->u[0];
-   GLchan *color = vert0->color;
+   GLchan *color = (GLchan*) vert1->color;
    PB_SET_COLOR( PB, color[0], color[1], color[2], color[3] );
    count = PB->count;
 
@@ -634,15 +634,15 @@ static void flat_textured_line( GLcontext *ctx,
    }
 
    PB->count = count;
-   gl_flush_pb(ctx);
+   _mesa_flush_pb(ctx);
 }
 
 
 
 /* Smooth-shaded, textured, any width, maybe stippled */
 static void smooth_textured_line( GLcontext *ctx,
-                                  SWvertex *vert0,
-                                 SWvertex *vert1 )
+                                  const SWvertex *vert0,
+                                 const SWvertex *vert1 )
 {
    struct pixel_buffer *PB = SWRAST_CONTEXT(ctx)->PB;
    GLint count = PB->count;
@@ -712,7 +712,7 @@ static void smooth_textured_line( GLcontext *ctx,
    }
 
    PB->count = count;
-   gl_flush_pb(ctx);
+   _mesa_flush_pb(ctx);
 }
 
 
@@ -720,8 +720,8 @@ static void smooth_textured_line( GLcontext *ctx,
  * color interpolation.
  */
 static void smooth_multitextured_line( GLcontext *ctx,
-                                      SWvertex *vert0,
-                                      SWvertex *vert1 )
+                                      const SWvertex *vert0,
+                                      const SWvertex *vert1 )
 {
    struct pixel_buffer *PB = SWRAST_CONTEXT(ctx)->PB;
    GLint count = PB->count;
@@ -809,7 +809,7 @@ static void smooth_multitextured_line( GLcontext *ctx,
    }
 
    PB->count = count;
-   gl_flush_pb(ctx);
+   _mesa_flush_pb(ctx);
 }
 
 
@@ -817,8 +817,8 @@ static void smooth_multitextured_line( GLcontext *ctx,
  * color interpolation.
  */
 static void flat_multitextured_line( GLcontext *ctx,
-                                     SWvertex *vert0,
-                                    SWvertex *vert1 )
+                                     const SWvertex *vert0,
+                                    const SWvertex *vert1 )
 {
    struct pixel_buffer *PB = SWRAST_CONTEXT(ctx)->PB;
    GLint count = PB->count;
@@ -828,10 +828,10 @@ static void flat_multitextured_line( GLcontext *ctx,
    GLfixed *pbfog = PB->fog;
    GLchan (*pbrgba)[4] = PB->rgba;
    GLchan (*pbspec)[3] = PB->spec;
-   GLchan *color = vert0->color;
-   GLchan sRed   = vert0->specular[0];
-   GLchan sGreen = vert0->specular[1];
-   GLchan sBlue  = vert0->specular[2];
+   GLchan *color = (GLchan*) vert1->color;
+   GLchan sRed   = vert1->specular[0];
+   GLchan sGreen = vert1->specular[1];
+   GLchan sBlue  = vert1->specular[2];
 
    PB->mono = GL_FALSE;
 
@@ -906,10 +906,26 @@ static void flat_multitextured_line( GLcontext *ctx,
    }
 
    PB->count = count;
-   gl_flush_pb(ctx);
+   _mesa_flush_pb(ctx);
 }
 
 
+void _swrast_add_spec_terms_line( GLcontext *ctx, 
+                                 const SWvertex *v0,
+                                 const SWvertex *v1 )
+{
+   SWvertex *ncv0 = (SWvertex *)v0;
+   SWvertex *ncv1 = (SWvertex *)v1;
+   GLchan c[2][4];
+   COPY_CHAN4( c[0], ncv0->color );
+   COPY_CHAN4( c[1], ncv1->color );
+   ACC_3V( ncv0->color, ncv0->specular );
+   ACC_3V( ncv1->color, ncv1->specular );
+   SWRAST_CONTEXT(ctx)->SpecLine( ctx, ncv0, ncv1 );
+   COPY_CHAN4( ncv0->color, c[0] );
+   COPY_CHAN4( ncv1->color, c[1] );
+}
+
 
 #ifdef DEBUG
 extern void
@@ -970,7 +986,7 @@ void
 _swrast_choose_line( GLcontext *ctx )
 {
    SWcontext *swrast = SWRAST_CONTEXT(ctx);
-   const GLboolean rgbmode = ctx->Visual.RGBAflag;
+   const GLboolean rgbmode = ctx->Visual.rgbMode;
 
    if (ctx->RenderMode==GL_RENDER) {
       if (ctx->Line.SmoothFlag) {
@@ -979,9 +995,8 @@ _swrast_choose_line( GLcontext *ctx )
          ASSERT(swrast->Triangle);
       }
       else if (ctx->Texture._ReallyEnabled) {
-         if (swrast->_MultiTextureEnabled
-             || ctx->Light.Model.ColorControl==GL_SEPARATE_SPECULAR_COLOR
-            || ctx->Fog.ColorSumEnabled) {
+         if (swrast->_MultiTextureEnabled ||
+            (ctx->_TriangleCaps & DD_SEPERATE_SPECULAR)) {
             /* multi-texture and/or separate specular color */
             if (ctx->Light.ShadeModel==GL_SMOOTH)
                swrast->Line = smooth_multitextured_line;
@@ -1045,11 +1060,11 @@ _swrast_choose_line( GLcontext *ctx )
       }
    }
    else if (ctx->RenderMode==GL_FEEDBACK) {
-      swrast->Line = gl_feedback_line;
+      swrast->Line = _mesa_feedback_line;
    }
    else {
       /* GL_SELECT mode */
-      swrast->Line = gl_select_line;
+      swrast->Line = _mesa_select_line;
    }
 
    /*_mesa_print_line_function(ctx);*/