1cdc920a0Smrg/* 2cdc920a0Smrg * (C) Copyright IBM Corporation 2004 3cdc920a0Smrg * All Rights Reserved. 4cdc920a0Smrg * 5cdc920a0Smrg * Permission is hereby granted, free of charge, to any person obtaining a 6cdc920a0Smrg * copy of this software and associated documentation files (the "Software"), 7cdc920a0Smrg * to deal in the Software without restriction, including without limitation 8cdc920a0Smrg * on the rights to use, copy, modify, merge, publish, distribute, sub 9cdc920a0Smrg * license, and/or sell copies of the Software, and to permit persons to whom 10cdc920a0Smrg * the Software is furnished to do so, subject to the following conditions: 11cdc920a0Smrg * 12cdc920a0Smrg * The above copyright notice and this permission notice (including the next 13cdc920a0Smrg * paragraph) shall be included in all copies or substantial portions of the 14cdc920a0Smrg * Software. 15cdc920a0Smrg * 16cdc920a0Smrg * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17cdc920a0Smrg * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18cdc920a0Smrg * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL 19cdc920a0Smrg * THE COPYRIGHT HOLDERS AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, 20cdc920a0Smrg * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 21cdc920a0Smrg * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE 22cdc920a0Smrg * USE OR OTHER DEALINGS IN THE SOFTWARE. 23cdc920a0Smrg */ 24cdc920a0Smrg 25cdc920a0Smrg#include <GL/gl.h> 26cdc920a0Smrg#include "indirect.h" 27cdc920a0Smrg 28cdc920a0Smrgstatic void 29cdc920a0SmrgTransposeMatrixf(const GLfloat s[16], GLfloat d[16]) 30cdc920a0Smrg{ 31cdc920a0Smrg int i, j; 32cdc920a0Smrg for (i = 0; i < 4; i++) { 33cdc920a0Smrg for (j = 0; j < 4; j++) { 34cdc920a0Smrg d[i * 4 + j] = s[j * 4 + i]; 35cdc920a0Smrg } 36cdc920a0Smrg } 37cdc920a0Smrg} 38cdc920a0Smrg 39cdc920a0Smrgstatic void 40cdc920a0SmrgTransposeMatrixd(const GLdouble s[16], GLdouble d[16]) 41cdc920a0Smrg{ 42cdc920a0Smrg int i, j; 43cdc920a0Smrg for (i = 0; i < 4; i++) { 44cdc920a0Smrg for (j = 0; j < 4; j++) { 45cdc920a0Smrg d[i * 4 + j] = s[j * 4 + i]; 46cdc920a0Smrg } 47cdc920a0Smrg } 48cdc920a0Smrg} 49cdc920a0Smrg 50cdc920a0Smrg 51cdc920a0Smrgvoid 52af69d88dSmrg__indirect_glLoadTransposeMatrixd(const GLdouble * m) 53cdc920a0Smrg{ 54cdc920a0Smrg GLdouble mt[16]; 55cdc920a0Smrg 56cdc920a0Smrg TransposeMatrixd(m, mt); 57cdc920a0Smrg __indirect_glLoadMatrixd(mt); 58cdc920a0Smrg} 59cdc920a0Smrg 60cdc920a0Smrgvoid 61af69d88dSmrg__indirect_glLoadTransposeMatrixf(const GLfloat * m) 62cdc920a0Smrg{ 63cdc920a0Smrg GLfloat mt[16]; 64cdc920a0Smrg 65cdc920a0Smrg TransposeMatrixf(m, mt); 66cdc920a0Smrg __indirect_glLoadMatrixf(mt); 67cdc920a0Smrg} 68cdc920a0Smrg 69cdc920a0Smrgvoid 70af69d88dSmrg__indirect_glMultTransposeMatrixd(const GLdouble * m) 71cdc920a0Smrg{ 72cdc920a0Smrg GLdouble mt[16]; 73cdc920a0Smrg 74cdc920a0Smrg TransposeMatrixd(m, mt); 75cdc920a0Smrg __indirect_glMultMatrixd(mt); 76cdc920a0Smrg} 77cdc920a0Smrg 78cdc920a0Smrgvoid 79af69d88dSmrg__indirect_glMultTransposeMatrixf(const GLfloat * m) 80cdc920a0Smrg{ 81cdc920a0Smrg GLfloat mt[16]; 82cdc920a0Smrg 83cdc920a0Smrg TransposeMatrixf(m, mt); 84cdc920a0Smrg __indirect_glMultMatrixf(mt); 85cdc920a0Smrg} 86