Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | RSS feed

  1. /*
  2.  * Mesa 3-D graphics library
  3.  *
  4.  * Copyright (C) 1999-2006  Brian Paul   All Rights Reserved.
  5.  *
  6.  * Permission is hereby granted, free of charge, to any person obtaining a
  7.  * copy of this software and associated documentation files (the "Software"),
  8.  * to deal in the Software without restriction, including without limitation
  9.  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
  10.  * and/or sell copies of the Software, and to permit persons to whom the
  11.  * Software is furnished to do so, subject to the following conditions:
  12.  *
  13.  * The above copyright notice and this permission notice shall be included
  14.  * in all copies or substantial portions of the Software.
  15.  *
  16.  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
  17.  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  18.  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
  19.  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
  20.  * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
  21.  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
  22.  * OTHER DEALINGS IN THE SOFTWARE.
  23.  */
  24.  
  25. /**
  26.  * \brief  Templates for vector conversions.
  27.  * \author Keith Whitwell.
  28.  */
  29.  
  30. #ifdef DEST_4F
  31. static void DEST_4F( GLfloat (*t)[4],
  32.                      const void *ptr,
  33.                      GLuint stride,
  34.                      ARGS )
  35. {
  36.    const GLubyte *f = (GLubyte *) ptr + SRC_START * stride;
  37.    const GLubyte *first = f;
  38.    GLuint i;
  39.  
  40.    (void) first;
  41.    (void) start;
  42.    for (i = DST_START ; i < n ; i++, NEXT_F) {
  43.       NEXT_F2;
  44.       if (SZ >= 1) t[i][0] = TRX_4F(f, 0);
  45.       if (SZ >= 2) t[i][1] = TRX_4F(f, 1);
  46.       if (SZ >= 3) t[i][2] = TRX_4F(f, 2);
  47.       if (SZ == 4) t[i][3] = TRX_4F(f, 3); else t[i][3] = 1.0;
  48.    }
  49. }
  50. #endif
  51.  
  52.  
  53.  
  54. #ifdef DEST_4FN
  55. static void DEST_4FN( GLfloat (*t)[4],
  56.                       const void *ptr,
  57.                       GLuint stride,
  58.                       ARGS )
  59. {
  60.    const GLubyte *f = (GLubyte *) ptr + SRC_START * stride;
  61.    const GLubyte *first = f;
  62.    GLuint i;
  63.  
  64.    (void) first;
  65.    (void) start;
  66.    for (i = DST_START ; i < n ; i++, NEXT_F) {
  67.       NEXT_F2;
  68.       if (SZ >= 1) t[i][0] = TRX_4FN(f, 0);
  69.       if (SZ >= 2) t[i][1] = TRX_4FN(f, 1);
  70.       if (SZ >= 3) t[i][2] = TRX_4FN(f, 2);
  71.       if (SZ == 4) t[i][3] = TRX_4FN(f, 3); else t[i][3] = 1.0;
  72.    }
  73. }
  74. #endif
  75.  
  76.  
  77. #ifdef DEST_3FN
  78. static void DEST_3FN( GLfloat (*t)[3],
  79.                      const void *ptr,
  80.                      GLuint stride,
  81.                      ARGS )
  82. {
  83.    const GLubyte *f = (GLubyte *) ptr + SRC_START * stride;
  84.    const GLubyte *first = f;
  85.    GLuint i;
  86.    (void) first;
  87.    (void) start;
  88.    for (i = DST_START ; i < n ; i++, NEXT_F) {
  89.       NEXT_F2;
  90.       t[i][0] = TRX_3FN(f, 0);
  91.       t[i][1] = TRX_3FN(f, 1);
  92.       t[i][2] = TRX_3FN(f, 2);
  93.    }
  94. }
  95. #endif
  96.  
  97. #ifdef DEST_1F
  98. static void DEST_1F( GLfloat *t,
  99.                      const void *ptr,
  100.                      GLuint stride,
  101.                      ARGS )
  102. {
  103.    const GLubyte *f = (GLubyte *) ptr + SRC_START * stride;
  104.    const GLubyte *first = f;
  105.    GLuint i;
  106.    (void) first;
  107.    (void) start;
  108.    for (i = DST_START ; i < n ; i++, NEXT_F) {
  109.       NEXT_F2;
  110.       t[i] = TRX_1F(f, 0);
  111.    }
  112. }
  113. #endif
  114.  
  115. #ifdef DEST_4UB
  116. static void DEST_4UB( GLubyte (*t)[4],
  117.                       const void *ptr,
  118.                       GLuint stride,
  119.                       ARGS )
  120. {
  121.    const GLubyte *f = (GLubyte *) ptr + SRC_START * stride;
  122.    const GLubyte *first = f;
  123.    GLuint i;
  124.    (void) start;
  125.    (void) first;
  126.    for (i = DST_START ; i < n ; i++, NEXT_F) {
  127.       NEXT_F2;
  128.       if (SZ >= 1) TRX_UB(t[i][0], f, 0);
  129.       if (SZ >= 2) TRX_UB(t[i][1], f, 1);
  130.       if (SZ >= 3) TRX_UB(t[i][2], f, 2);
  131.       if (SZ == 4) TRX_UB(t[i][3], f, 3); else t[i][3] = 255;
  132.    }
  133. }
  134. #endif
  135.  
  136.  
  137. #ifdef DEST_4US
  138. static void DEST_4US( GLushort (*t)[4],
  139.                       const void *ptr,
  140.                       GLuint stride,
  141.                       ARGS )
  142. {
  143.    const GLubyte *f = (GLubyte *) ((GLubyte *) ptr + SRC_START * stride);
  144.    const GLubyte *first = f;
  145.    GLuint i;
  146.    (void) start;
  147.    (void) first;
  148.    for (i = DST_START ; i < n ; i++, NEXT_F) {
  149.       NEXT_F2;
  150.       if (SZ >= 1) TRX_US(t[i][0], f, 0);
  151.       if (SZ >= 2) TRX_US(t[i][1], f, 1);
  152.       if (SZ >= 3) TRX_US(t[i][2], f, 2);
  153.       if (SZ == 4) TRX_US(t[i][3], f, 3); else t[i][3] = 65535;
  154.    }
  155. }
  156. #endif
  157.  
  158.  
  159. #ifdef DEST_1UB
  160. static void DEST_1UB( GLubyte *t,
  161.                       const void *ptr,
  162.                       GLuint stride,
  163.                       ARGS )
  164. {
  165.    const GLubyte *f = (GLubyte *) ptr + SRC_START * stride;
  166.    const GLubyte *first = f;
  167.    GLuint i;
  168.    (void) start;
  169.    (void) first;
  170.    for (i = DST_START ; i < n ; i++, NEXT_F) {
  171.       NEXT_F2;
  172.       TRX_UB(t[i], f, 0);
  173.    }
  174. }
  175. #endif
  176.  
  177.  
  178. #ifdef DEST_1UI
  179. static void DEST_1UI( GLuint *t,
  180.                       const void *ptr,
  181.                       GLuint stride,
  182.                       ARGS )
  183. {
  184.    const GLubyte *f = (GLubyte *) ptr + SRC_START * stride;
  185.    const GLubyte *first = f;
  186.    GLuint i;
  187.    (void) start;
  188.    (void) first;
  189.  
  190.    for (i = DST_START ; i < n ; i++, NEXT_F) {
  191.       NEXT_F2;
  192.       t[i] = TRX_UI(f, 0);
  193.    }
  194. }
  195. #endif
  196.  
  197.  
  198. static void INIT(void)
  199. {
  200. #ifdef DEST_1UI
  201.    assert(SZ == 1);
  202.    TAB(_1ui)[SRC_IDX] = DEST_1UI;
  203. #endif
  204. #ifdef DEST_1UB
  205.    assert(SZ == 1);
  206.    TAB(_1ub)[SRC_IDX] = DEST_1UB;
  207. #endif
  208. #ifdef DEST_1F
  209.    assert(SZ == 1);
  210.    TAB(_1f)[SRC_IDX] = DEST_1F;
  211. #endif
  212. #ifdef DEST_3FN
  213.    assert(SZ == 3);
  214.    TAB(_3fn)[SRC_IDX] = DEST_3FN;
  215. #endif
  216. #ifdef DEST_4UB
  217.    TAB(_4ub)[SZ][SRC_IDX] = DEST_4UB;
  218. #endif
  219. #ifdef DEST_4US
  220.    TAB(_4us)[SZ][SRC_IDX] = DEST_4US;
  221. #endif
  222. #ifdef DEST_4F
  223.    TAB(_4f)[SZ][SRC_IDX] = DEST_4F;
  224. #endif
  225. #ifdef DEST_4FN
  226.    TAB(_4fn)[SZ][SRC_IDX] = DEST_4FN;
  227. #endif
  228.  
  229. }
  230.  
  231.  
  232. #ifdef INIT
  233. #undef INIT
  234. #endif
  235. #ifdef DEST_1UI
  236. #undef DEST_1UI
  237. #endif
  238. #ifdef DEST_1UB
  239. #undef DEST_1UB
  240. #endif
  241. #ifdef DEST_4UB
  242. #undef DEST_4UB
  243. #endif
  244. #ifdef DEST_4US
  245. #undef DEST_4US
  246. #endif
  247. #ifdef DEST_3FN
  248. #undef DEST_3FN
  249. #endif
  250. #ifdef DEST_4F
  251. #undef DEST_4F
  252. #endif
  253. #ifdef DEST_4FN
  254. #undef DEST_4FN
  255. #endif
  256. #ifdef DEST_1F
  257. #undef DEST_1F
  258. #endif
  259. #ifdef SZ
  260. #undef SZ
  261. #endif
  262. #ifdef TAG
  263. #undef TAG
  264. #endif
  265.  
  266.