From aaad687d510b3c933e4ca532e1c12ec723d33588 Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Sat, 28 Feb 2004 19:34:05 +0000 Subject: replace color table FloatTable boolean with Type enum --- src/mesa/main/colortab.c | 84 ++++++++++++++++++++++++++++-------------------- 1 file changed, 50 insertions(+), 34 deletions(-) (limited to 'src/mesa/main/colortab.c') diff --git a/src/mesa/main/colortab.c b/src/mesa/main/colortab.c index a44f9a01c5..d0fa323c39 100644 --- a/src/mesa/main/colortab.c +++ b/src/mesa/main/colortab.c @@ -1,9 +1,8 @@ - /* * Mesa 3-D graphics library - * Version: 5.1 + * Version: 6.1 * - * Copyright (C) 1999-2003 Brian Paul All Rights Reserved. + * Copyright (C) 1999-2004 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"), @@ -99,12 +98,29 @@ base_colortab_format( GLenum format ) static void set_component_sizes( struct gl_color_table *table ) { + GLubyte sz; + + switch (table->Type) { + case GL_UNSIGNED_BYTE: + sz = sizeof(GLubyte); + break; + case GL_UNSIGNED_SHORT: + sz = sizeof(GLushort); + break; + case GL_FLOAT: + sz = sizeof(GLfloat); + break; + default: + _mesa_problem(NULL, "bad color table type in set_component_sizes 0x%x", table->Type); + return; + } + switch (table->Format) { case GL_ALPHA: table->RedSize = 0; table->GreenSize = 0; table->BlueSize = 0; - table->AlphaSize = CHAN_BITS; + table->AlphaSize = sz; table->IntensitySize = 0; table->LuminanceSize = 0; break; @@ -114,37 +130,37 @@ set_component_sizes( struct gl_color_table *table ) table->BlueSize = 0; table->AlphaSize = 0; table->IntensitySize = 0; - table->LuminanceSize = CHAN_BITS; + table->LuminanceSize = sz; break; case GL_LUMINANCE_ALPHA: table->RedSize = 0; table->GreenSize = 0; table->BlueSize = 0; - table->AlphaSize = CHAN_BITS; + table->AlphaSize = sz; table->IntensitySize = 0; - table->LuminanceSize = CHAN_BITS; + table->LuminanceSize = sz; break; case GL_INTENSITY: table->RedSize = 0; table->GreenSize = 0; table->BlueSize = 0; table->AlphaSize = 0; - table->IntensitySize = CHAN_BITS; + table->IntensitySize = sz; table->LuminanceSize = 0; break; case GL_RGB: - table->RedSize = CHAN_BITS; - table->GreenSize = CHAN_BITS; - table->BlueSize = CHAN_BITS; + table->RedSize = sz; + table->GreenSize = sz; + table->BlueSize = sz; table->AlphaSize = 0; table->IntensitySize = 0; table->LuminanceSize = 0; break; case GL_RGBA: - table->RedSize = CHAN_BITS; - table->GreenSize = CHAN_BITS; - table->BlueSize = CHAN_BITS; - table->AlphaSize = CHAN_BITS; + table->RedSize = sz; + table->GreenSize = sz; + table->BlueSize = sz; + table->AlphaSize = sz; table->IntensitySize = 0; table->LuminanceSize = 0; break; @@ -168,7 +184,7 @@ _mesa_ColorTable( GLenum target, GLenum internalFormat, GLint baseFormat; GLfloat rScale = 1.0, gScale = 1.0, bScale = 1.0, aScale = 1.0; GLfloat rBias = 0.0, gBias = 0.0, bBias = 0.0, aBias = 0.0; - GLboolean floatTable = GL_FALSE; + GLenum tableType = CHAN_TYPE; GLint comps; ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx); /* too complex */ @@ -221,7 +237,7 @@ _mesa_ColorTable( GLenum target, GLenum internalFormat, break; case GL_COLOR_TABLE: table = &ctx->ColorTable; - floatTable = GL_TRUE; + tableType = GL_FLOAT; rScale = ctx->Pixel.ColorTableScale[0]; gScale = ctx->Pixel.ColorTableScale[1]; bScale = ctx->Pixel.ColorTableScale[2]; @@ -241,7 +257,7 @@ _mesa_ColorTable( GLenum target, GLenum internalFormat, return; } table = &(texUnit->ColorTable); - floatTable = GL_TRUE; + tableType = GL_FLOAT; rScale = ctx->Pixel.TextureColorTableScale[0]; gScale = ctx->Pixel.TextureColorTableScale[1]; bScale = ctx->Pixel.TextureColorTableScale[2]; @@ -261,7 +277,7 @@ _mesa_ColorTable( GLenum target, GLenum internalFormat, break; case GL_POST_CONVOLUTION_COLOR_TABLE: table = &ctx->PostConvolutionColorTable; - floatTable = GL_TRUE; + tableType = GL_FLOAT; rScale = ctx->Pixel.PCCTscale[0]; gScale = ctx->Pixel.PCCTscale[1]; bScale = ctx->Pixel.PCCTscale[2]; @@ -277,7 +293,7 @@ _mesa_ColorTable( GLenum target, GLenum internalFormat, break; case GL_POST_COLOR_MATRIX_COLOR_TABLE: table = &ctx->PostColorMatrixColorTable; - floatTable = GL_TRUE; + tableType = GL_FLOAT; rScale = ctx->Pixel.PCMCTscale[0]; gScale = ctx->Pixel.PCMCTscale[1]; bScale = ctx->Pixel.PCMCTscale[2]; @@ -350,7 +366,7 @@ _mesa_ColorTable( GLenum target, GLenum internalFormat, table->Table = NULL; } if (width > 0) { - if (floatTable) { + if (tableType == GL_FLOAT) { GLfloat tempTab[MAX_COLOR_TABLE_SIZE * 4]; GLfloat *tableF; GLint i; @@ -360,7 +376,7 @@ _mesa_ColorTable( GLenum target, GLenum internalFormat, format, type, data, &ctx->Unpack, 0, GL_FALSE); - table->FloatTable = GL_TRUE; + table->Type = GL_FLOAT; table->Table = MALLOC(comps * width * sizeof(GLfloat)); if (!table->Table) { _mesa_error(ctx, GL_OUT_OF_MEMORY, "glColorTable"); @@ -413,7 +429,7 @@ _mesa_ColorTable( GLenum target, GLenum internalFormat, } else { /* store GLchan table */ - table->FloatTable = GL_FALSE; + table->Type = CHAN_TYPE; table->Table = MALLOC(comps * width * sizeof(GLchan)); if (!table->Table) { _mesa_error(ctx, GL_OUT_OF_MEMORY, "glColorTable"); @@ -423,7 +439,7 @@ _mesa_ColorTable( GLenum target, GLenum internalFormat, (GLchan *) table->Table, /* dest */ format, type, data, &ctx->Unpack, 0); - } /* floatTable */ + } /* type==GL_FLOAT */ } /* width > 0 */ } /* proxy */ @@ -556,7 +572,7 @@ _mesa_ColorSubTable( GLenum target, GLsizei start, return; } - if (!table->FloatTable) { + if (table->Type != GL_FLOAT) { GLchan *dest = (GLchan *) table->Table + start * comps * sizeof(GLchan); _mesa_unpack_chan_color_span(ctx, count, table->Format, dest, format, type, data, &ctx->Unpack, 0); @@ -566,7 +582,7 @@ _mesa_ColorSubTable( GLenum target, GLsizei start, GLfloat *tableF; GLint i; - ASSERT(table->FloatTable); + ASSERT(table->Type == GL_FLOAT); _mesa_unpack_float_color_span(ctx, count, table->Format, tempTab, /* dest */ @@ -718,11 +734,11 @@ _mesa_GetColorTable( GLenum target, GLenum format, return; } - assert(table); + ASSERT(table); switch (table->Format) { case GL_ALPHA: - if (table->FloatTable) { + if (table->Type == GL_FLOAT) { const GLfloat *tableF = (const GLfloat *) table->Table; GLuint i; for (i = 0; i < table->Size; i++) { @@ -744,7 +760,7 @@ _mesa_GetColorTable( GLenum target, GLenum format, } break; case GL_LUMINANCE: - if (table->FloatTable) { + if (table->Type == GL_FLOAT) { const GLfloat *tableF = (const GLfloat *) table->Table; GLuint i; for (i = 0; i < table->Size; i++) { @@ -766,7 +782,7 @@ _mesa_GetColorTable( GLenum target, GLenum format, } break; case GL_LUMINANCE_ALPHA: - if (table->FloatTable) { + if (table->Type == GL_FLOAT) { const GLfloat *tableF = (const GLfloat *) table->Table; GLuint i; for (i = 0; i < table->Size; i++) { @@ -788,7 +804,7 @@ _mesa_GetColorTable( GLenum target, GLenum format, } break; case GL_INTENSITY: - if (table->FloatTable) { + if (table->Type == GL_FLOAT) { const GLfloat *tableF = (const GLfloat *) table->Table; GLuint i; for (i = 0; i < table->Size; i++) { @@ -810,7 +826,7 @@ _mesa_GetColorTable( GLenum target, GLenum format, } break; case GL_RGB: - if (table->FloatTable) { + if (table->Type == GL_FLOAT) { const GLfloat *tableF = (const GLfloat *) table->Table; GLuint i; for (i = 0; i < table->Size; i++) { @@ -832,7 +848,7 @@ _mesa_GetColorTable( GLenum target, GLenum format, } break; case GL_RGBA: - if (table->FloatTable) { + if (table->Type == GL_FLOAT) { const GLfloat *tableF = (const GLfloat *) table->Table; GLuint i; for (i = 0; i < table->Size; i++) { @@ -1334,7 +1350,7 @@ _mesa_GetColorTableParameteriv( GLenum target, GLenum pname, GLint *params ) void _mesa_init_colortable( struct gl_color_table *p ) { - p->FloatTable = GL_FALSE; + p->Type = CHAN_TYPE; p->Table = NULL; p->Size = 0; p->IntFormat = GL_RGBA; -- cgit v1.2.3