swrast: remove prototypes for obsolete functions
[mesa.git] / src / mesa / swrast / s_spantemp.h
index 1ce0b00bef9885d8a84eb3403d29dd5539aa2431..bab2ca7378f326fbec2f7aecb64d42f1f773084f 100644 (file)
@@ -1,9 +1,8 @@
-
 /*
  * Mesa 3-D graphics library
- * Version:  5.1
+ * Version:  6.5.1
  *
- * Copyright (C) 1999-2002  Brian Paul   All Rights Reserved.
+ * Copyright (C) 1999-2006  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"),
 
 /*
  * Templates for the span/pixel-array write/read functions called via
- * swrast.  This is intended for memory-based framebuffers (like OSMesa).
+ * the gl_renderbuffer's GetRow, GetValues, PutRow, PutMonoRow, PutValues
+ * and PutMonoValues functions.
  *
  * Define the following macros before including this file:
- *   NAME(PREFIX)  to generate the function name
+ *   NAME(BASE)  to generate the function name (i.e. add prefix or suffix)
+ *   RB_TYPE  the renderbuffer DataType
+ *   CI_MODE  if set, color index mode, else RGBA
  *   SPAN_VARS  to declare any local variables
  *   INIT_PIXEL_PTR(P, X, Y)  to initialize a pointer to a pixel
  *   INC_PIXEL_PTR(P)  to increment a pixel pointer by one pixel
- *   STORE_RGB_PIXEL(P, X, Y, R, G, B)  to store RGB values in  pixel P
- *   STORE_RGBA_PIXEL(P, X, Y, R, G, B, A)  to store RGBA values in pixel P
- *   FETCH_RGBA_PIXEL(R, G, B, A, P)  to fetch RGBA values from pixel P
- *
- * Note that in the above STORE_RGBx_PIXEL macros, we also pass in the (X,Y)
- * coordinates for the pixels to be stored, which enables dithering in 8-bit
- * and 15/16-bit display modes. Most undithered modes or 24/32-bit display
- * modes will simply ignore the passed in (X,Y) values.
+ *   STORE_PIXEL(DST, X, Y, VALUE)  to store pixel values in buffer
+ *   FETCH_PIXEL(DST, SRC)  to fetch pixel values from buffer
  *
- * For color index mode:
- *   STORE_CI_PIXEL(P, CI)  to store a color index in pixel P
- *   FETCH_CI_PIXEL(CI, P)  to fetch a pixel index from pixel P
+ * Note that in the STORE_PIXEL macros, we also pass in the (X,Y) coordinates
+ * for the pixels to be stored.  This is useful when dithering and probably
+ * ignored otherwise.
  */
 
-#include "macros.h"
+#include "main/macros.h"
 
-#ifdef STORE_RGBA_PIXEL
 
-static void
-NAME(write_rgba_span)( const GLcontext *ctx, GLuint n, GLint x, GLint y,
-                       CONST GLchan rgba[][4], const GLubyte mask[] )
-{
-#ifdef SPAN_VARS
-   SPAN_VARS
+#ifdef CI_MODE
+#define RB_COMPONENTS 1
+#elif !defined(RB_COMPONENTS)
+#define RB_COMPONENTS 4
 #endif
-   GLuint i;
-   INIT_PIXEL_PTR(pixel, x, y);
-   if (mask) {
-      for (i = 0; i < n; i++) {
-         if (mask[i]) {
-            STORE_RGBA_PIXEL(pixel, x+i, y, rgba[i][RCOMP], rgba[i][GCOMP],
-                             rgba[i][BCOMP], rgba[i][ACOMP]);
-         }
-         INC_PIXEL_PTR(pixel);
-      }
-   }
-   else {
-      for (i = 0; i < n; i++) {
-         STORE_RGBA_PIXEL(pixel, x+i, y, rgba[i][RCOMP], rgba[i][GCOMP],
-                          rgba[i][BCOMP], rgba[i][ACOMP]);
-         INC_PIXEL_PTR(pixel);
-      }
-   }
-}
 
-static void
-NAME(write_rgb_span)( const GLcontext *ctx, GLuint n, GLint x, GLint y,
-                      CONST GLchan rgb[][3], const GLubyte mask[] )
-{
-#ifdef SPAN_VARS
-   SPAN_VARS
-#endif
-   GLuint i;
-   INIT_PIXEL_PTR(pixel, x, y);
-   if (mask) {
-      for (i = 0; i < n; i++) {
-         if (mask[i]) {
-            STORE_RGB_PIXEL(pixel, x+i, y, rgb[i][RCOMP], rgb[i][GCOMP],
-                            rgb[i][BCOMP]);
-         }
-         INC_PIXEL_PTR(pixel);
-      }
-   }
-   else {
-      for (i = 0; i < n; i++) {
-         STORE_RGB_PIXEL(pixel, x+i, y, rgb[i][RCOMP], rgb[i][GCOMP],
-                         rgb[i][BCOMP]);
-         INC_PIXEL_PTR(pixel);
-      }
-   }
-}
 
 static void
-NAME(write_monorgba_span)( const GLcontext *ctx, GLuint n, GLint x, GLint y,
-                           const GLchan color[4], const GLubyte mask[] )
+NAME(get_row)( GLcontext *ctx, struct gl_renderbuffer *rb,
+               GLuint count, GLint x, GLint y, void *values )
 {
 #ifdef SPAN_VARS
    SPAN_VARS
 #endif
-   GLuint i;
-   INIT_PIXEL_PTR(pixel, x, y);
-   if (mask) {
-      for (i = 0; i < n; i++) {
-         if (mask[i]) {
-            STORE_RGBA_PIXEL(pixel, x+i, y, color[RCOMP], color[GCOMP],
-                             color[BCOMP], color[ACOMP]);
-         }
-         INC_PIXEL_PTR(pixel);
-      }
-   }
-   else {
-      for (i = 0; i < n; i++) {
-         STORE_RGBA_PIXEL(pixel, x+i, y, color[RCOMP], color[GCOMP],
-                          color[BCOMP], color[ACOMP]);
-         INC_PIXEL_PTR(pixel);
-      }
-   }
-}
-
-static void
-NAME(write_rgba_pixels)( const GLcontext *ctx, GLuint n,
-                         const GLint x[], const GLint y[],
-                         CONST GLchan rgba[][4], const GLubyte mask[] )
-{
-#ifdef SPAN_VARS
-   SPAN_VARS
-#endif
-   GLuint i;
-   ASSERT(mask);
-   for (i = 0; i < n; i++) {
-      if (mask[i]) {
-         INIT_PIXEL_PTR(pixel, x[i], y[i]);
-         STORE_RGBA_PIXEL(pixel, x[i], y[i], rgba[i][RCOMP], rgba[i][GCOMP],
-                          rgba[i][BCOMP], rgba[i][ACOMP]);
-      }
-   }
-}
-
-static void
-NAME(write_monorgba_pixels)( const GLcontext *ctx,
-                             GLuint n, const GLint x[], const GLint y[],
-                             const GLchan color[4], const GLubyte mask[] )
-{
-#ifdef SPAN_VARS
-   SPAN_VARS
-#endif
-   GLuint i;
-   ASSERT(mask);
-   for (i = 0; i < n; i++) {
-      if (mask[i]) {
-         INIT_PIXEL_PTR(pixel, x[i], y[i]);
-         STORE_RGBA_PIXEL(pixel, x[i], y[i], color[RCOMP], color[GCOMP],
-                          color[BCOMP], color[ACOMP]);
-      }
-   }
-}
-
-static void
-NAME(read_rgba_span)( const GLcontext *ctx, GLuint n, GLint x, GLint y,
-                      GLchan rgba[][4] )
-{
-#ifdef SPAN_VARS
-   SPAN_VARS
+#ifdef CI_MODE
+   RB_TYPE *dest = (RB_TYPE *) values;
+#else
+   RB_TYPE (*dest)[RB_COMPONENTS] = (RB_TYPE (*)[RB_COMPONENTS]) values;
 #endif
    GLuint i;
    INIT_PIXEL_PTR(pixel, x, y);
-   for (i = 0; i < n; i++) {
-      FETCH_RGBA_PIXEL(rgba[i][RCOMP], rgba[i][GCOMP], rgba[i][BCOMP],
-                       rgba[i][ACOMP], pixel);
+   for (i = 0; i < count; i++) {
+      FETCH_PIXEL(dest[i], pixel);
       INC_PIXEL_PTR(pixel);
    }
+   (void) rb;
 }
 
+
 static void
-NAME(read_rgba_pixels)( const GLcontext *ctx,
-                        GLuint n, const GLint x[], const GLint y[],
-                        GLchan rgba[][4], const GLubyte mask[] )
+NAME(get_values)( GLcontext *ctx, struct gl_renderbuffer *rb,
+                  GLuint count, const GLint x[], const GLint y[], void *values )
 {
 #ifdef SPAN_VARS
    SPAN_VARS
+#endif
+#ifdef CI_MODE
+   RB_TYPE *dest = (RB_TYPE *) values;
+#else
+   RB_TYPE (*dest)[RB_COMPONENTS] = (RB_TYPE (*)[RB_COMPONENTS]) values;
 #endif
    GLuint i;
-   ASSERT(mask);
-   for (i = 0; i < n; i++) {
-      if (mask[i]) {
-         INIT_PIXEL_PTR(pixel, x[i], y[i]);
-         FETCH_RGBA_PIXEL(rgba[i][RCOMP], rgba[i][GCOMP], rgba[i][BCOMP],
-                          rgba[i][ACOMP], pixel);
-      }
+   for (i = 0; i < count; i++) {
+      INIT_PIXEL_PTR(pixel, x[i], y[i]);
+      FETCH_PIXEL(dest[i], pixel);
    }
+   (void) rb;
 }
 
 
-#endif /* STORE_RGBA_PIXEL */
-
-
-
-#ifdef STORE_CI_PIXEL
-
 static void
-NAME(write_index32_span)( const GLcontext *ctx, GLuint n, GLint x, GLint y,
-                          const GLuint index[], const GLubyte mask[] )
+NAME(put_row)( GLcontext *ctx, struct gl_renderbuffer *rb,
+               GLuint count, GLint x, GLint y,
+               const void *values, const GLubyte mask[] )
 {
 #ifdef SPAN_VARS
    SPAN_VARS
 #endif
+   const RB_TYPE (*src)[RB_COMPONENTS] = (const RB_TYPE (*)[RB_COMPONENTS]) values;
    GLuint i;
    INIT_PIXEL_PTR(pixel, x, y);
    if (mask) {
-      for (i = 0; i < n; i++) {
+      for (i = 0; i < count; i++) {
          if (mask[i]) {
-            STORE_CI_PIXEL(pixel, index[i]);
+            STORE_PIXEL(pixel, x + i, y, src[i]);
          }
          INC_PIXEL_PTR(pixel);
       }
    }
    else {
-      for (i = 0; i < n; i++) {
-         STORE_CI_PIXEL(pixel, index[i]);
+      for (i = 0; i < count; i++) {
+         STORE_PIXEL(pixel, x + i, y, src[i]);
          INC_PIXEL_PTR(pixel);
       }
    }
+   (void) rb;
 }
 
 
+#if !defined(CI_MODE)
 static void
-NAME(write_index8_span)( const GLcontext *ctx, GLuint n, GLint x, GLint y,
-                         const GLubyte index[], const GLubyte mask[] )
+NAME(put_row_rgb)( GLcontext *ctx, struct gl_renderbuffer *rb,
+                   GLuint count, GLint x, GLint y,
+                   const void *values, const GLubyte mask[] )
 {
 #ifdef SPAN_VARS
    SPAN_VARS
 #endif
+   const RB_TYPE (*src)[3] = (const RB_TYPE (*)[3]) values;
    GLuint i;
    INIT_PIXEL_PTR(pixel, x, y);
-   if (mask) {
-      for (i = 0; i < n; i++) {
-         if (mask[i]) {
-            STORE_CI_PIXEL(pixel, index[i]);
-         }
-         INC_PIXEL_PTR(pixel);
-      }
-   }
-   else {
-      for (i = 0; i < n; i++) {
-         STORE_CI_PIXEL(pixel, index[i]);
-         INC_PIXEL_PTR(pixel);
+   for (i = 0; i < count; i++) {
+      if (!mask || mask[i]) {
+#ifdef STORE_PIXEL_RGB
+         STORE_PIXEL_RGB(pixel, x + i, y, src[i]);
+#else
+         STORE_PIXEL(pixel, x + i, y, src[i]);
+#endif
       }
+      INC_PIXEL_PTR(pixel);
    }
+   (void) rb;
 }
+#endif
 
 
 static void
-NAME(write_monoindex_span)( const GLcontext *ctx, GLuint n, GLint x, GLint y,
-                            GLuint colorIndex, const GLubyte mask[] )
+NAME(put_mono_row)( GLcontext *ctx, struct gl_renderbuffer *rb,
+                    GLuint count, GLint x, GLint y,
+                    const void *value, const GLubyte mask[] )
 {
 #ifdef SPAN_VARS
    SPAN_VARS
 #endif
+   const RB_TYPE *src = (const RB_TYPE *) value;
    GLuint i;
    INIT_PIXEL_PTR(pixel, x, y);
    if (mask) {
-      for (i = 0; i < n; i++) {
+      for (i = 0; i < count; i++) {
          if (mask[i]) {
-            STORE_CI_PIXEL(pixel, colorIndex);
+            STORE_PIXEL(pixel, x + i, y, src);
          }
          INC_PIXEL_PTR(pixel);
       }
-   }      
+   }
    else {
-      for (i = 0; i < n; i++) {
-         STORE_CI_PIXEL(pixel, colorIndex);
+      for (i = 0; i < count; i++) {
+         STORE_PIXEL(pixel, x + i, y, src);
          INC_PIXEL_PTR(pixel);
       }
-   }      
-}
-
-
-static void
-NAME(write_index_pixels)( const GLcontext *ctx,
-                          GLuint n, const GLint x[], const GLint y[],
-                          const GLuint index[], const GLubyte mask[] )
-{
-#ifdef SPAN_VARS
-   SPAN_VARS
-#endif
-   GLuint i;
-   ASSERT(mask);
-   for (i = 0; i < n; i++) {
-      if (mask[i]) {
-         INIT_PIXEL_PTR(pixel, x[i], y[i]);
-         STORE_CI_PIXEL(pixel, index[i]);
-      }
    }
+   (void) rb;
 }
 
 
 static void
-NAME(write_monoindex_pixels)( const GLcontext *ctx,
-                              GLuint n, const GLint x[], const GLint y[],
-                              GLuint colorIndex, const GLubyte mask[] )
+NAME(put_values)( GLcontext *ctx, struct gl_renderbuffer *rb,
+                  GLuint count, const GLint x[], const GLint y[],
+                  const void *values, const GLubyte mask[] )
 {
 #ifdef SPAN_VARS
    SPAN_VARS
 #endif
+   const RB_TYPE (*src)[RB_COMPONENTS] = (const RB_TYPE (*)[RB_COMPONENTS]) values;
    GLuint i;
    ASSERT(mask);
-   for (i = 0; i < n; i++) {
+   for (i = 0; i < count; i++) {
       if (mask[i]) {
          INIT_PIXEL_PTR(pixel, x[i], y[i]);
-         STORE_CI_PIXEL(pixel, colorIndex);
+         STORE_PIXEL(pixel, x[i], y[i], src[i]);
       }
    }
+   (void) rb;
 }
 
 
 static void
-NAME(read_index_span)( const GLcontext *ctx,
-                       GLuint n, GLint x, GLint y, GLuint index[] )
-{
-#ifdef SPAN_VARS
-   SPAN_VARS
-#endif
-   GLuint i;
-   INIT_PIXEL_PTR(pixel, x, y);
-   for (i = 0; i < n; i++) {
-      FETCH_CI_PIXEL(index[i], pixel);
-      INC_PIXEL_PTR(pixel);
-   }
-}
-
-
-static void
-NAME(read_index_pixels)( const GLcontext *ctx,
-                         GLuint n, const GLint x[], const GLint y[],
-                         GLuint index[], const GLubyte mask[] )
+NAME(put_mono_values)( GLcontext *ctx, struct gl_renderbuffer *rb,
+                       GLuint count, const GLint x[], const GLint y[],
+                       const void *value, const GLubyte mask[] )
 {
 #ifdef SPAN_VARS
    SPAN_VARS
 #endif
+   const RB_TYPE *src = (const RB_TYPE *) value;
    GLuint i;
    ASSERT(mask);
-   for (i = 0; i < n; i++) {
-      if (mask[i] ) {
+   for (i = 0; i < count; i++) {
+      if (mask[i]) {
          INIT_PIXEL_PTR(pixel, x[i], y[i]);
-         FETCH_CI_PIXEL(index[i], pixel);
+         STORE_PIXEL(pixel, x[i], y[i], src);
       }
    }
+   (void) rb;
 }
 
-#endif /* STORE_CI_PIXEL */
-
-
 
 #undef NAME
+#undef RB_TYPE
+#undef RB_COMPONENTS
+#undef CI_MODE
 #undef SPAN_VARS
 #undef INIT_PIXEL_PTR
 #undef INC_PIXEL_PTR
-#undef STORE_RGB_PIXEL
-#undef STORE_RGBA_PIXEL
-#undef FETCH_RGBA_PIXEL
-#undef STORE_CI_PIXEL
-#undef FETCH_CI_PIXEL
+#undef STORE_PIXEL
+#undef STORE_PIXEL_RGB
+#undef FETCH_PIXEL