/* * Macros used in this file: * NAME(x) Name of the function * TYPE Type to use * TYPEIDX Type constant (FLAG_BYTE, FLAG_UBYTE, etc) */ static void NAME(color_element_3)(GLcontext context, struct GLarray_t *array, GLuint i, GLuint unit) { TYPE *cur = (TYPE *)((uint8 *)array->pointer + array->stride * i); #ifdef DIVIDE float oneoverdiv = 1.0/DIVIDE; context->current.CurrentColor.r = (GLfloat)cur[0] * oneoverdiv; context->current.CurrentColor.g = (GLfloat)cur[1] * oneoverdiv; context->current.CurrentColor.b = (GLfloat)cur[2] * oneoverdiv; context->current.CurrentColor.a = 1.0; #else context->current.CurrentColor.r = (GLfloat)cur[0]; context->current.CurrentColor.g = (GLfloat)cur[1]; context->current.CurrentColor.b = (GLfloat)cur[2]; context->current.CurrentColor.a = 1.0; #endif #ifdef MGL_USE_LIGHTING if (context->enable.ColorMaterial) { light_UpdateColorMaterial(context); } #endif }; static void NAME(color_element_4)(GLcontext context, struct GLarray_t *array, GLuint i, GLuint unit) { TYPE *cur = (TYPE *)((uint8 *)array->pointer + array->stride * i); #ifdef DIVIDE float oneoverdiv = 1.0/DIVIDE; context->current.CurrentColor.r = (GLfloat)cur[0] * oneoverdiv; context->current.CurrentColor.g = (GLfloat)cur[1] * oneoverdiv; context->current.CurrentColor.b = (GLfloat)cur[2] * oneoverdiv; context->current.CurrentColor.a = (GLfloat)cur[3] * oneoverdiv; #else context->current.CurrentColor.r = (GLfloat)cur[0]; context->current.CurrentColor.g = (GLfloat)cur[1]; context->current.CurrentColor.b = (GLfloat)cur[2]; context->current.CurrentColor.a = (GLfloat)cur[3]; #endif #ifdef MGL_USE_LIGHTING if (context->enable.ColorMaterial) { light_UpdateColorMaterial(context); } #endif }; static void NAME(color_element_bgra)(GLcontext context, struct GLarray_t *array, GLuint i, GLuint unit) { TYPE *cur = (TYPE *)((uint8 *)array->pointer + array->stride * i); #ifdef DIVIDE float oneoverdiv = 1.0/DIVIDE; context->current.CurrentColor.b = (GLfloat)cur[0] * oneoverdiv; context->current.CurrentColor.g = (GLfloat)cur[1] * oneoverdiv; context->current.CurrentColor.r = (GLfloat)cur[2] * oneoverdiv; context->current.CurrentColor.a = (GLfloat)cur[3] * oneoverdiv; #else context->current.CurrentColor.b = (GLfloat)cur[0]; context->current.CurrentColor.g = (GLfloat)cur[1]; context->current.CurrentColor.r = (GLfloat)cur[2]; context->current.CurrentColor.a = (GLfloat)cur[3]; #endif #ifdef MGL_USE_LIGHTING if (context->enable.ColorMaterial) { light_UpdateColorMaterial(context); } #endif } static void NAME(color_fetch_3)(GLcontext context, struct GLarray_t *array, GLvoid *pos, GLuint unit) { TYPE *cur = (TYPE *)pos; #ifdef DIVIDE float oneoverdiv = 1.0/DIVIDE; THIS_VERTEX.r = (GLfloat)cur[0] * oneoverdiv; THIS_VERTEX.g = (GLfloat)cur[1] * oneoverdiv; THIS_VERTEX.b = (GLfloat)cur[2] * oneoverdiv; THIS_VERTEX.a = 1.0; #else THIS_VERTEX.r = (GLfloat)cur[0]; THIS_VERTEX.g = (GLfloat)cur[1]; THIS_VERTEX.b = (GLfloat)cur[2]; THIS_VERTEX.a = 1.0; #endif #ifdef MGL_USE_LIGHTING if (context->enable.ColorMaterial) { light_UpdateColorMaterialVertex(context); } #endif } static void NAME(color_fetch_4)(GLcontext context, struct GLarray_t *array, GLvoid *pos, GLuint unit) { TYPE *cur = (TYPE *)pos; #ifdef DIVIDE float oneoverdiv = 1.0/DIVIDE; THIS_VERTEX.r = (GLfloat)cur[0] * oneoverdiv; THIS_VERTEX.g = (GLfloat)cur[1] * oneoverdiv; THIS_VERTEX.b = (GLfloat)cur[2] * oneoverdiv; THIS_VERTEX.a = (GLfloat)cur[3] * oneoverdiv; #else THIS_VERTEX.r = (GLfloat)cur[0]; THIS_VERTEX.g = (GLfloat)cur[1]; THIS_VERTEX.b = (GLfloat)cur[2]; THIS_VERTEX.a = (GLfloat)cur[3]; #endif #ifdef MGL_USE_LIGHTING if (context->enable.ColorMaterial) { light_UpdateColorMaterialVertex(context); } #endif } static void NAME(color_fetch_bgra)(GLcontext context, struct GLarray_t *array, GLvoid *pos, GLuint unit) { TYPE *cur = (TYPE *)pos; #ifdef DIVIDE float oneoverdiv = 1.0/DIVIDE; THIS_VERTEX.b = (GLfloat)cur[0] * oneoverdiv; THIS_VERTEX.g = (GLfloat)cur[1] * oneoverdiv; THIS_VERTEX.r = (GLfloat)cur[2] * oneoverdiv; THIS_VERTEX.a = (GLfloat)cur[3] * oneoverdiv; #else THIS_VERTEX.b = (GLfloat)cur[0]; THIS_VERTEX.g = (GLfloat)cur[1]; THIS_VERTEX.r = (GLfloat)cur[2]; THIS_VERTEX.a = (GLfloat)cur[3]; #endif #ifdef MGL_USE_LIGHTING if (context->enable.ColorMaterial) { light_UpdateColorMaterialVertex(context); } #endif } static void NAME(color_fetch_idx_3)(GLcontext context, struct GLarray_t *array, GLuint i, GLuint unit) { TYPE *cur = (TYPE *)((uint8 *)array->pointer + array->stride * i); #ifdef DIVIDE float oneoverdiv = 1.0/DIVIDE; THIS_VERTEX.r = (GLfloat)cur[0] * oneoverdiv; THIS_VERTEX.g = (GLfloat)cur[1] * oneoverdiv; THIS_VERTEX.b = (GLfloat)cur[2] * oneoverdiv; THIS_VERTEX.a = 1.0; #else THIS_VERTEX.r = (GLfloat)cur[0]; THIS_VERTEX.g = (GLfloat)cur[1]; THIS_VERTEX.b = (GLfloat)cur[2]; THIS_VERTEX.a = 1.0; #endif #ifdef MGL_USE_LIGHTING if (context->enable.ColorMaterial) { light_UpdateColorMaterialVertex(context); } #endif } static void NAME(color_fetch_idx_4)(GLcontext context, struct GLarray_t *array, GLuint i, GLuint unit) { TYPE *cur = (TYPE *)((uint8 *)array->pointer + array->stride * i); #ifdef DIVIDE float oneoverdiv = 1.0/DIVIDE; THIS_VERTEX.r = (GLfloat)cur[0] * oneoverdiv; THIS_VERTEX.g = (GLfloat)cur[1] * oneoverdiv; THIS_VERTEX.b = (GLfloat)cur[2] * oneoverdiv; THIS_VERTEX.a = (GLfloat)cur[3] * oneoverdiv; #else THIS_VERTEX.r = (GLfloat)cur[0]; THIS_VERTEX.g = (GLfloat)cur[1]; THIS_VERTEX.b = (GLfloat)cur[2]; THIS_VERTEX.a = (GLfloat)cur[3]; #endif #ifdef MGL_USE_LIGHTING if (context->enable.ColorMaterial) { light_UpdateColorMaterialVertex(context); } #endif } static void NAME(color_fetch_idx_bgra)(GLcontext context, struct GLarray_t *array, GLuint i, GLuint unit) { TYPE *cur = (TYPE *)((uint8 *)array->pointer + array->stride * i); #ifdef DIVIDE float oneoverdiv = 1.0/DIVIDE; THIS_VERTEX.b = (GLfloat)cur[0] * oneoverdiv; THIS_VERTEX.g = (GLfloat)cur[1] * oneoverdiv; THIS_VERTEX.r = (GLfloat)cur[2] * oneoverdiv; THIS_VERTEX.a = (GLfloat)cur[3] * oneoverdiv; #else THIS_VERTEX.b = (GLfloat)cur[0]; THIS_VERTEX.g = (GLfloat)cur[1]; THIS_VERTEX.r = (GLfloat)cur[2]; THIS_VERTEX.a = (GLfloat)cur[3]; #endif #ifdef MGL_USE_LIGHTING if (context->enable.ColorMaterial) { light_UpdateColorMaterialVertex(context); } #endif } static void NAME(color_init)(void) { color_fetchElement[TYPEIDX|FLAG_3] = NAME(color_element_3); color_fetchElement[TYPEIDX|FLAG_4] = NAME(color_element_4); color_fetchElement[TYPEIDX|FLAG_BGRA] = NAME(color_element_bgra); color_fetch[TYPEIDX|FLAG_3] = NAME(color_fetch_3); color_fetch[TYPEIDX|FLAG_4] = NAME(color_fetch_4); color_fetch[TYPEIDX|FLAG_BGRA] = NAME(color_fetch_bgra); color_fetchIdx[TYPEIDX|FLAG_3] = NAME(color_fetch_idx_3); color_fetchIdx[TYPEIDX|FLAG_4] = NAME(color_fetch_idx_4); color_fetchIdx[TYPEIDX|FLAG_BGRA] = NAME(color_fetch_idx_bgra); } #undef NAME #undef TYPE #undef TYPEIDX #undef DIVIDE