ReactOS  0.4.15-dev-313-g8fde48b
colortab.c File Reference
#include "colortab.h"
#include "context.h"
#include "macros.h"
Include dependency graph for colortab.c:

Go to the source code of this file.

Functions

static GLboolean power_of_two (GLint k)
 
static GLint decode_internal_format (GLint format)
 
void gl_ColorTable (GLcontext *ctx, GLenum target, GLenum internalFormat, struct gl_image *table)
 
void gl_ColorSubTable (GLcontext *ctx, GLenum target, GLsizei start, struct gl_image *data)
 
void gl_GetColorTable (GLcontext *ctx, GLenum target, GLenum format, GLenum type, GLvoid *table)
 
void gl_GetColorTableParameterfv (GLcontext *ctx, GLenum target, GLenum pname, GLfloat *params)
 
void gl_GetColorTableParameteriv (GLcontext *ctx, GLenum target, GLenum pname, GLint *params)
 

Function Documentation

◆ decode_internal_format()

static GLint decode_internal_format ( GLint  format)
static

Definition at line 72 of file colortab.c.

73 {
74  switch (format) {
75  case GL_ALPHA:
76  case GL_ALPHA4:
77  case GL_ALPHA8:
78  case GL_ALPHA12:
79  case GL_ALPHA16:
80  return GL_ALPHA;
81  case 1:
82  case GL_LUMINANCE:
83  case GL_LUMINANCE4:
84  case GL_LUMINANCE8:
85  case GL_LUMINANCE12:
86  case GL_LUMINANCE16:
87  return GL_LUMINANCE;
88  case 2:
89  case GL_LUMINANCE_ALPHA:
96  return GL_LUMINANCE_ALPHA;
97  case GL_INTENSITY:
98  case GL_INTENSITY4:
99  case GL_INTENSITY8:
100  case GL_INTENSITY12:
101  case GL_INTENSITY16:
102  return GL_INTENSITY;
103  case 3:
104  case GL_RGB:
105  case GL_R3_G3_B2:
106  case GL_RGB4:
107  case GL_RGB5:
108  case GL_RGB8:
109  case GL_RGB10:
110  case GL_RGB12:
111  case GL_RGB16:
112  return GL_RGB;
113  case 4:
114  case GL_RGBA:
115  case GL_RGBA2:
116  case GL_RGBA4:
117  case GL_RGB5_A1:
118  case GL_RGBA8:
119  case GL_RGB10_A2:
120  case GL_RGBA12:
121  case GL_RGBA16:
122  return GL_RGBA;
123  default:
124  return -1; /* error */
125  }
126 }
#define GL_INTENSITY8
Definition: gl.h:749
#define GL_LUMINANCE12_ALPHA4
Definition: gl.h:744
#define GL_INTENSITY4
Definition: gl.h:748
#define GL_ALPHA
Definition: gl.h:483
#define GL_RGB8
Definition: gl.h:755
#define GL_LUMINANCE4_ALPHA4
Definition: gl.h:741
#define GL_RGB16
Definition: gl.h:758
#define GL_ALPHA4
Definition: gl.h:733
#define GL_RGB5
Definition: gl.h:754
#define GL_LUMINANCE6_ALPHA2
Definition: gl.h:742
#define GL_RGBA4
Definition: gl.h:760
#define GL_RGB12
Definition: gl.h:757
GLint GLint GLsizei GLsizei GLsizei GLint GLenum format
Definition: gl.h:1546
#define GL_RGB4
Definition: gl.h:753
#define GL_ALPHA12
Definition: gl.h:735
#define GL_INTENSITY16
Definition: gl.h:751
#define GL_LUMINANCE4
Definition: gl.h:737
#define GL_LUMINANCE8_ALPHA8
Definition: gl.h:743
#define GL_LUMINANCE8
Definition: gl.h:738
#define GL_LUMINANCE16_ALPHA16
Definition: gl.h:746
#define GL_LUMINANCE_ALPHA
Definition: gl.h:485
#define GL_RGB10
Definition: gl.h:756
#define GL_RGB
Definition: gl.h:502
#define GL_RGBA8
Definition: gl.h:762
#define GL_LUMINANCE12_ALPHA12
Definition: gl.h:745
#define GL_LUMINANCE12
Definition: gl.h:739
#define GL_RGB10_A2
Definition: gl.h:763
#define GL_LUMINANCE
Definition: gl.h:484
#define GL_R3_G3_B2
Definition: gl.h:752
#define GL_LUMINANCE16
Definition: gl.h:740
#define GL_RGBA
Definition: gl.h:503
#define GL_INTENSITY12
Definition: gl.h:750
#define GL_RGBA12
Definition: gl.h:764
#define GL_ALPHA16
Definition: gl.h:736
#define GL_RGBA2
Definition: gl.h:759
#define GL_INTENSITY
Definition: gl.h:747
#define GL_RGBA16
Definition: gl.h:765
#define GL_ALPHA8
Definition: gl.h:734
#define GL_RGB5_A1
Definition: gl.h:761

Referenced by gl_ColorTable().

◆ gl_ColorSubTable()

void gl_ColorSubTable ( GLcontext ctx,
GLenum  target,
GLsizei  start,
struct gl_image data 
)

Definition at line 187 of file colortab.c.

189 {
190  /* XXX TODO */
191  gl_problem(ctx, "glColorSubTableEXT not implemented");
192 }
void gl_problem(const GLcontext *ctx, const char *s)
Definition: context.c:1394

Referenced by execute_list(), and init_exec_pointers().

◆ gl_ColorTable()

void gl_ColorTable ( GLcontext ctx,
GLenum  target,
GLenum  internalFormat,
struct gl_image table 
)

Definition at line 129 of file colortab.c.

131 {
132  struct gl_texture_object *texObj;
134 
135  if (INSIDE_BEGIN_END(ctx)) {
136  gl_error( ctx, GL_INVALID_OPERATION, "glGetBooleanv" );
137  return;
138  }
139 
140  switch (target) {
141  case GL_TEXTURE_1D:
142  texObj = ctx->Texture.Current1D;
143  break;
144  case GL_TEXTURE_2D:
145  texObj = ctx->Texture.Current2D;
146  break;
147  case GL_PROXY_TEXTURE_1D:
148  texObj = ctx->Texture.Proxy1D;
149  proxy = GL_TRUE;
150  break;
151  case GL_PROXY_TEXTURE_2D:
152  texObj = ctx->Texture.Proxy2D;
153  proxy = GL_TRUE;
154  break;
155  default:
156  gl_error(ctx, GL_INVALID_ENUM, "glColorTableEXT(target)");
157  return;
158  }
159 
160  /* internalformat = just like glTexImage */
161 
162  if (table->Width < 1 || table->Width > MAX_TEXTURE_PALETTE_SIZE
163  || !power_of_two(table->Width)) {
164  gl_error(ctx, GL_INVALID_VALUE, "glColorTableEXT(width)");
165  if (proxy) {
166  texObj->PaletteSize = 0;
167  texObj->PaletteIntFormat = 0;
168  texObj->PaletteFormat = 0;
169  }
170  return;
171  }
172 
173  /* per-texture object palette */
174  texObj->PaletteSize = table->Width;
177  if (!proxy) {
178  MEMCPY(texObj->Palette, table->Data, table->Width*table->Components);
179  if (ctx->Driver.UpdateTexturePalette) {
180  (*ctx->Driver.UpdateTexturePalette)( ctx, texObj );
181  }
182  }
183 }
GLubyte Palette[MAX_TEXTURE_PALETTE_SIZE *4]
Definition: types.h:1103
int proxy
Definition: main.c:67
#define GL_PROXY_TEXTURE_2D
Definition: gl.h:727
#define MAX_TEXTURE_PALETTE_SIZE
Definition: config.h:122
#define GL_FALSE
Definition: gl.h:173
static GLint decode_internal_format(GLint format)
Definition: colortab.c:72
#define INSIDE_BEGIN_END(CTX)
Definition: macros.h:135
struct dd_function_table Driver
Definition: types.h:1276
static GLboolean power_of_two(GLint k)
Definition: colortab.c:60
#define GL_TEXTURE_1D
Definition: gl.h:644
unsigned char GLboolean
Definition: gl.h:151
GLenum internalFormat
Definition: glext.h:8404
struct gl_texture_attrib Texture
Definition: types.h:1334
#define GL_PROXY_TEXTURE_1D
Definition: gl.h:726
#define MEMCPY(DST, SRC, BYTES)
Definition: macros.h:231
GLenum PaletteFormat
Definition: types.h:1106
GLenum PaletteIntFormat
Definition: types.h:1105
#define GL_INVALID_VALUE
Definition: gl.h:695
#define GL_INVALID_OPERATION
Definition: gl.h:696
void gl_error(GLcontext *ctx, GLenum error, const char *s)
Definition: context.c:1421
#define GL_TRUE
Definition: gl.h:174
#define GL_INVALID_ENUM
Definition: gl.h:694
#define GL_TEXTURE_2D
Definition: gl.h:645
GLenum target
Definition: glext.h:7315
GLuint PaletteSize
Definition: types.h:1104

Referenced by execute_list(), and init_exec_pointers().

◆ gl_GetColorTable()

void gl_GetColorTable ( GLcontext ctx,
GLenum  target,
GLenum  format,
GLenum  type,
GLvoid table 
)

Definition at line 196 of file colortab.c.

198 {
199  if (INSIDE_BEGIN_END(ctx)) {
200  gl_error( ctx, GL_INVALID_OPERATION, "glGetBooleanv" );
201  return;
202  }
203 
204  switch (target) {
205  case GL_TEXTURE_1D:
206  break;
207  case GL_TEXTURE_2D:
208  break;
209  case GL_TEXTURE_3D_EXT:
210  break;
211  default:
212  gl_error(ctx, GL_INVALID_ENUM, "glGetColorTableEXT(target)");
213  return;
214  }
215 
216  gl_problem(ctx, "glGetColorTableEXT not implemented!");
217 }
#define GL_TEXTURE_3D_EXT
Definition: glext.h:2471
#define INSIDE_BEGIN_END(CTX)
Definition: macros.h:135
#define GL_TEXTURE_1D
Definition: gl.h:644
#define GL_INVALID_OPERATION
Definition: gl.h:696
void gl_problem(const GLcontext *ctx, const char *s)
Definition: context.c:1394
void gl_error(GLcontext *ctx, GLenum error, const char *s)
Definition: context.c:1421
#define GL_INVALID_ENUM
Definition: gl.h:694
#define GL_TEXTURE_2D
Definition: gl.h:645
GLenum target
Definition: glext.h:7315

Referenced by init_dlist_pointers(), and init_exec_pointers().

◆ gl_GetColorTableParameterfv()

void gl_GetColorTableParameterfv ( GLcontext ctx,
GLenum  target,
GLenum  pname,
GLfloat params 
)

Definition at line 221 of file colortab.c.

223 {
224  GLint iparams[10];
225 
226  gl_GetColorTableParameteriv( ctx, target, pname, iparams );
227  *params = (GLfloat) iparams[0];
228 }
GLenum pname
Definition: glext.h:5645
GLenum const GLfloat * params
Definition: glext.h:5645
void gl_GetColorTableParameteriv(GLcontext *ctx, GLenum target, GLenum pname, GLint *params)
Definition: colortab.c:232
float GLfloat
Definition: gl.h:161
GLenum target
Definition: glext.h:7315
int GLint
Definition: gl.h:156

◆ gl_GetColorTableParameteriv()

void gl_GetColorTableParameteriv ( GLcontext ctx,
GLenum  target,
GLenum  pname,
GLint params 
)

Definition at line 232 of file colortab.c.

234 {
235  struct gl_texture_object *texObj;
236 
237  if (INSIDE_BEGIN_END(ctx)) {
238  gl_error( ctx, GL_INVALID_OPERATION, "glGetColorTableParameter" );
239  return;
240  }
241 
242  switch (target) {
243  case GL_TEXTURE_1D:
244  texObj = ctx->Texture.Current1D;
245  break;
246  case GL_TEXTURE_2D:
247  texObj = ctx->Texture.Current2D;
248  break;
249  default:
250  gl_error(ctx, GL_INVALID_ENUM, "glGetColorTableParameter(target)");
251  return;
252  }
253 
254  switch (pname) {
256  if (texObj)
257  *params = texObj->PaletteIntFormat;
258  break;
260  if (texObj)
261  *params = texObj->PaletteSize;
262  break;
264  *params = 8;
265  break;
267  *params = 8;
268  break;
270  *params = 8;
271  break;
273  *params = 8;
274  break;
276  *params = 8;
277  break;
279  *params = 8;
280  break;
281  default:
282  gl_error(ctx, GL_INVALID_ENUM, "glGetColorTableParameter" );
283  return;
284  }
285 }
#define GL_COLOR_TABLE_RED_SIZE_EXT
Definition: colortab.h:40
#define INSIDE_BEGIN_END(CTX)
Definition: macros.h:135
GLenum pname
Definition: glext.h:5645
GLenum const GLfloat * params
Definition: glext.h:5645
#define GL_TEXTURE_1D
Definition: gl.h:644
#define GL_COLOR_TABLE_BLUE_SIZE_EXT
Definition: colortab.h:42
struct gl_texture_attrib Texture
Definition: types.h:1334
#define GL_COLOR_TABLE_WIDTH_EXT
Definition: colortab.h:39
GLenum PaletteIntFormat
Definition: types.h:1105
#define GL_INVALID_OPERATION
Definition: gl.h:696
void gl_error(GLcontext *ctx, GLenum error, const char *s)
Definition: context.c:1421
#define GL_COLOR_TABLE_GREEN_SIZE_EXT
Definition: colortab.h:41
#define GL_COLOR_TABLE_ALPHA_SIZE_EXT
Definition: colortab.h:43
#define GL_INVALID_ENUM
Definition: gl.h:694
#define GL_TEXTURE_2D
Definition: gl.h:645
GLenum target
Definition: glext.h:7315
#define GL_COLOR_TABLE_FORMAT_EXT
Definition: colortab.h:38
GLuint PaletteSize
Definition: types.h:1104
#define GL_COLOR_TABLE_INTENSITY_SIZE_EXT
Definition: colortab.h:45
#define GL_COLOR_TABLE_LUMINANCE_SIZE_EXT
Definition: colortab.h:44

Referenced by gl_GetColorTableParameterfv(), init_dlist_pointers(), and init_exec_pointers().

◆ power_of_two()

static GLboolean power_of_two ( GLint  k)
static

Definition at line 60 of file colortab.c.

61 {
62  GLint i, m = 1;
63  for (i=0; i<32; i++) {
64  if (k == m)
65  return GL_TRUE;
66  m = m << 1;
67  }
68  return GL_FALSE;
69 }
#define GL_FALSE
Definition: gl.h:173
const GLfloat * m
Definition: glext.h:10848
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
#define GL_TRUE
Definition: gl.h:174
int GLint
Definition: gl.h:156
int k
Definition: mpi.c:3369

Referenced by gl_ColorTable().