m_translate.h revision c1f859d4
1/* 2 * Mesa 3-D graphics library 3 * Version: 6.5.1 4 * 5 * Copyright (C) 1999-2006 Brian Paul All Rights Reserved. 6 * 7 * Permission is hereby granted, free of charge, to any person obtaining a 8 * copy of this software and associated documentation files (the "Software"), 9 * to deal in the Software without restriction, including without limitation 10 * the rights to use, copy, modify, merge, publish, distribute, sublicense, 11 * and/or sell copies of the Software, and to permit persons to whom the 12 * Software is furnished to do so, subject to the following conditions: 13 * 14 * The above copyright notice and this permission notice shall be included 15 * in all copies or substantial portions of the Software. 16 * 17 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 18 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 20 * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN 21 * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 22 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 23 */ 24 25 26#ifndef _M_TRANSLATE_H_ 27#define _M_TRANSLATE_H_ 28 29#include "main/config.h" 30#include "main/mtypes.h" /* hack for GLchan */ 31 32 33/** 34 * Array translation. 35 * For example, convert array of GLushort[3] to GLfloat[4]. 36 * The function name specifies the destination format/size. 37 * \param to the destination address 38 * \param ptr the source address 39 * \param stride the source stride (in bytes) between elements 40 * \param type the source datatype (GL_SHORT, GL_UNSIGNED_INT, etc) 41 * \param size number of values per element in source array (1,2,3 or 4) 42 * \param start first element in source array to convert 43 * \param n number of elements to convert 44 * 45 * Note: "element" means a tuple like GLfloat[3] or GLubyte[4]. 46 */ 47 48 49extern void _math_trans_1f(GLfloat *to, 50 CONST void *ptr, 51 GLuint stride, 52 GLenum type, 53 GLuint start, 54 GLuint n ); 55 56extern void _math_trans_1ui(GLuint *to, 57 CONST void *ptr, 58 GLuint stride, 59 GLenum type, 60 GLuint start, 61 GLuint n ); 62 63extern void _math_trans_1ub(GLubyte *to, 64 CONST void *ptr, 65 GLuint stride, 66 GLenum type, 67 GLuint start, 68 GLuint n ); 69 70extern void _math_trans_4ub(GLubyte (*to)[4], 71 CONST void *ptr, 72 GLuint stride, 73 GLenum type, 74 GLuint size, 75 GLuint start, 76 GLuint n ); 77 78extern void _math_trans_4chan( GLchan (*to)[4], 79 CONST void *ptr, 80 GLuint stride, 81 GLenum type, 82 GLuint size, 83 GLuint start, 84 GLuint n ); 85 86extern void _math_trans_4us(GLushort (*to)[4], 87 CONST void *ptr, 88 GLuint stride, 89 GLenum type, 90 GLuint size, 91 GLuint start, 92 GLuint n ); 93 94/** Convert to floats w/out normalization (i.e. just cast) */ 95extern void _math_trans_4f(GLfloat (*to)[4], 96 CONST void *ptr, 97 GLuint stride, 98 GLenum type, 99 GLuint size, 100 GLuint start, 101 GLuint n ); 102 103/** Convert to normalized floats in [0,1] or [-1, 1] */ 104extern void _math_trans_4fn(GLfloat (*to)[4], 105 CONST void *ptr, 106 GLuint stride, 107 GLenum type, 108 GLuint size, 109 GLuint start, 110 GLuint n ); 111 112extern void _math_trans_3fn(GLfloat (*to)[3], 113 CONST void *ptr, 114 GLuint stride, 115 GLenum type, 116 GLuint start, 117 GLuint n ); 118 119extern void _math_init_translate( void ); 120 121 122#endif 123