/*
* Mesa 3-D graphics library
- * Version: 6.3
+ * Version: 6.5.1
*
- * Copyright (C) 1999-2005 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"),
* and PutMonoValues functions.
*
* Define the following macros before including this file:
- * NAME(PREFIX) to generate the function name
- * FORMAT must be either GL_RGBA, GL_RGBA8 or GL_COLOR_INDEX8_EXT
+ * 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
* ignored otherwise.
*/
-#include "macros.h"
+#include "main/macros.h"
+
+
+#ifdef CI_MODE
+#define RB_COMPONENTS 1
+#elif !defined(RB_COMPONENTS)
+#define RB_COMPONENTS 4
+#endif
static void
#ifdef SPAN_VARS
SPAN_VARS
#endif
-#if FORMAT == GL_RGBA
- GLchan (*dest)[4] = (GLchan (*)[4]) values;
-#elif FORMAT == GL_RGBA8
- GLubyte (*dest)[4] = (GLubyte (*)[4]) values;
-#elif FORMAT == GL_COLOR_INDEX8_EXT
- GLubyte *dest = (GLubyte *) values;
+#ifdef CI_MODE
+ RB_TYPE *dest = (RB_TYPE *) values;
#else
-#error FORMAT must be set!!!!
+ RB_TYPE (*dest)[RB_COMPONENTS] = (RB_TYPE (*)[RB_COMPONENTS]) values;
#endif
GLuint i;
INIT_PIXEL_PTR(pixel, x, y);
FETCH_PIXEL(dest[i], pixel);
INC_PIXEL_PTR(pixel);
}
+ (void) rb;
}
+
static void
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
-#if FORMAT == GL_RGBA
- GLchan (*dest)[4] = (GLchan (*)[4]) values;
-#elif FORMAT == GL_RGBA8
- GLubyte (*dest)[4] = (GLubyte (*)[4]) values;
-#elif FORMAT == GL_COLOR_INDEX8_EXT
- GLubyte *dest = (GLubyte *) values;
+#ifdef CI_MODE
+ RB_TYPE *dest = (RB_TYPE *) values;
+#else
+ RB_TYPE (*dest)[RB_COMPONENTS] = (RB_TYPE (*)[RB_COMPONENTS]) values;
#endif
GLuint i;
for (i = 0; i < count; i++) {
INIT_PIXEL_PTR(pixel, x[i], y[i]);
FETCH_PIXEL(dest[i], pixel);
}
+ (void) rb;
}
#ifdef SPAN_VARS
SPAN_VARS
#endif
-#if FORMAT == GL_RGBA
- const GLchan (*src)[4] = (const GLchan (*)[4]) values;
-#elif FORMAT == GL_RGBA8
- const GLubyte (*src)[4] = (const GLubyte (*)[4]) values;
-#elif FORMAT == GL_COLOR_INDEX8_EXT
- const GLubyte (*src)[1] = (const GLubyte (*)[1]) values;
-#endif
+ const RB_TYPE (*src)[RB_COMPONENTS] = (const RB_TYPE (*)[RB_COMPONENTS]) values;
GLuint i;
INIT_PIXEL_PTR(pixel, x, y);
if (mask) {
INC_PIXEL_PTR(pixel);
}
}
+ (void) rb;
}
-#if 00
+
+#if !defined(CI_MODE)
static void
-NAME(write_rgb_span)( const GLcontext *ctx, struct gl_renderbuffer *rb,
- GLuint count, GLint x, GLint y,
- CONST GLchan rgb[][3], 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 < count; 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 < count; i++) {
- STORE_RGB_PIXEL(pixel, x+i, y, rgb[i][RCOMP], rgb[i][GCOMP],
- rgb[i][BCOMP]);
- 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(put_mono_row)( GLcontext *ctx, struct gl_renderbuffer *rb,
GLuint count, GLint x, GLint y,
#ifdef SPAN_VARS
SPAN_VARS
#endif
-#if FORMAT == GL_RGBA
- const GLchan *src = (const GLchan *) value;
-#elif FORMAT == GL_RGBA8
- const GLubyte *src = (const GLubyte *) value;
-#elif FORMAT == GL_COLOR_INDEX8_EXT
- const GLubyte *src = (const GLubyte *) value;
-#endif
+ const RB_TYPE *src = (const RB_TYPE *) value;
GLuint i;
INIT_PIXEL_PTR(pixel, x, y);
if (mask) {
INC_PIXEL_PTR(pixel);
}
}
+ (void) rb;
}
#ifdef SPAN_VARS
SPAN_VARS
#endif
-#if FORMAT == GL_RGBA
- const GLchan (*src)[4] = (const GLchan (*)[4]) values;
-#elif FORMAT == GL_RGBA8
- const GLubyte (*src)[4] = (const GLubyte (*)[4]) values;
-#elif FORMAT == GL_COLOR_INDEX8_EXT
- const GLubyte (*src)[1] = (const GLubyte (*)[1]) values;
-#endif
+ const RB_TYPE (*src)[RB_COMPONENTS] = (const RB_TYPE (*)[RB_COMPONENTS]) values;
GLuint i;
ASSERT(mask);
for (i = 0; i < count; i++) {
STORE_PIXEL(pixel, x[i], y[i], src[i]);
}
}
+ (void) rb;
}
#ifdef SPAN_VARS
SPAN_VARS
#endif
-#if FORMAT == GL_RGBA
- const GLchan *src = (const GLchan *) value;
-#elif FORMAT == GL_RGBA8
- const GLubyte *src = (const GLubyte *) value;
-#elif FORMAT == GL_COLOR_INDEX8_EXT
- const GLubyte *src = (const GLubyte *) value;
-#endif
+ const RB_TYPE *src = (const RB_TYPE *) value;
GLuint i;
ASSERT(mask);
for (i = 0; i < count; i++) {
STORE_PIXEL(pixel, x[i], y[i], src);
}
}
+ (void) rb;
}
#undef NAME
+#undef RB_TYPE
+#undef RB_COMPONENTS
+#undef CI_MODE
#undef SPAN_VARS
#undef INIT_PIXEL_PTR
#undef INC_PIXEL_PTR
#undef STORE_PIXEL
+#undef STORE_PIXEL_RGB
#undef FETCH_PIXEL
-#undef FORMAT