1afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg/* 2afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * Mesa 3-D graphics library 39fbb2e9e76aabc73148c464ce8fd6980a2c1d3f5Brian * Version: 6.5.3 45e3bc0c2a2bcdf59949410f94c9b705fc1281ce8Jouk Jansen * 59fbb2e9e76aabc73148c464ce8fd6980a2c1d3f5Brian * Copyright (C) 1999-2007 Brian Paul All Rights Reserved. 65e3bc0c2a2bcdf59949410f94c9b705fc1281ce8Jouk Jansen * 7afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * Permission is hereby granted, free of charge, to any person obtaining a 8afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * copy of this software and associated documentation files (the "Software"), 9afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * to deal in the Software without restriction, including without limitation 10afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * the rights to use, copy, modify, merge, publish, distribute, sublicense, 11afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * and/or sell copies of the Software, and to permit persons to whom the 12afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * Software is furnished to do so, subject to the following conditions: 135e3bc0c2a2bcdf59949410f94c9b705fc1281ce8Jouk Jansen * 14afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * The above copyright notice and this permission notice shall be included 15afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * in all copies or substantial portions of the Software. 165e3bc0c2a2bcdf59949410f94c9b705fc1281ce8Jouk Jansen * 17afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 18afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 20afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN 21afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 22afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 23afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg */ 24afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 25afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 268be72c5b5dca9b8390914a6d7b8b8a3fb6196df8Brian Paul/** 278be72c5b5dca9b8390914a6d7b8b8a3fb6196df8Brian Paul * \file rastpos.c 288be72c5b5dca9b8390914a6d7b8b8a3fb6196df8Brian Paul * Raster position operations. 298be72c5b5dca9b8390914a6d7b8b8a3fb6196df8Brian Paul */ 308be72c5b5dca9b8390914a6d7b8b8a3fb6196df8Brian Paul 31fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul#include "glheader.h" 32485f04074151686fa24d40e3eeb83029d3d8c425Keith Whitwell#include "context.h" 33afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg#include "feedback.h" 34afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg#include "macros.h" 35db61b9ce39bccc43140357652ceb78baaf2aea44Vinson Lee#include "mfeatures.h" 360117da40cd7edd3d165bb28569c289b37eca12b9Vinson Lee#include "mtypes.h" 37485f04074151686fa24d40e3eeb83029d3d8c425Keith Whitwell#include "rastpos.h" 38ea39f042c378c234b573ceead4c5194020d949c4Brian Paul#include "state.h" 392cf44390d1e819f23e1d7ceb3199276c9148c647Chia-I Wu#include "main/dispatch.h" 40d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wu 41d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wu 42d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wu#if FEATURE_rastpos 4323caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell 4423caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell 4592f9785c727ea10ff5f8dc9770f0e8f388fcea70Brian Paul/** 466b146214dc16b441376d8dcaba21bcc4256a2402Keith Whitwell * Helper function for all the RasterPos functions. 4723caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell */ 483b399df6382d3cfb3cf9bfde4888878bebd2903fBrian Paulstatic void 496b146214dc16b441376d8dcaba21bcc4256a2402Keith Whitwellrasterpos(GLfloat x, GLfloat y, GLfloat z, GLfloat w) 5023caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell{ 516b146214dc16b441376d8dcaba21bcc4256a2402Keith Whitwell GET_CURRENT_CONTEXT(ctx); 526b146214dc16b441376d8dcaba21bcc4256a2402Keith Whitwell GLfloat p[4]; 538be72c5b5dca9b8390914a6d7b8b8a3fb6196df8Brian Paul 546b146214dc16b441376d8dcaba21bcc4256a2402Keith Whitwell p[0] = x; 556b146214dc16b441376d8dcaba21bcc4256a2402Keith Whitwell p[1] = y; 566b146214dc16b441376d8dcaba21bcc4256a2402Keith Whitwell p[2] = z; 576b146214dc16b441376d8dcaba21bcc4256a2402Keith Whitwell p[3] = w; 588be72c5b5dca9b8390914a6d7b8b8a3fb6196df8Brian Paul 59cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx); 60cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell FLUSH_CURRENT(ctx, 0); 61afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 62064b04d464e006e76e888b481900b3f63f015063Xiang, Haihao if (ctx->NewState) 63064b04d464e006e76e888b481900b3f63f015063Xiang, Haihao _mesa_update_state( ctx ); 64064b04d464e006e76e888b481900b3f63f015063Xiang, Haihao 656b146214dc16b441376d8dcaba21bcc4256a2402Keith Whitwell ctx->Driver.RasterPos(ctx, p); 66afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg} 67afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 68afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 69d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wustatic void GLAPIENTRY 70fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul_mesa_RasterPos2d(GLdouble x, GLdouble y) 71afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg{ 726b146214dc16b441376d8dcaba21bcc4256a2402Keith Whitwell rasterpos((GLfloat)x, (GLfloat)y, (GLfloat)0.0, (GLfloat)1.0); 73fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul} 74afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 75d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wustatic void GLAPIENTRY 76fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul_mesa_RasterPos2f(GLfloat x, GLfloat y) 77fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul{ 786b146214dc16b441376d8dcaba21bcc4256a2402Keith Whitwell rasterpos(x, y, 0.0F, 1.0F); 79fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul} 80afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 81d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wustatic void GLAPIENTRY 82fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul_mesa_RasterPos2i(GLint x, GLint y) 83fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul{ 846b146214dc16b441376d8dcaba21bcc4256a2402Keith Whitwell rasterpos((GLfloat) x, (GLfloat) y, 0.0F, 1.0F); 85fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul} 86afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 87d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wustatic void GLAPIENTRY 88fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul_mesa_RasterPos2s(GLshort x, GLshort y) 89fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul{ 906b146214dc16b441376d8dcaba21bcc4256a2402Keith Whitwell rasterpos(x, y, 0.0F, 1.0F); 91fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul} 92afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 93d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wustatic void GLAPIENTRY 94fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul_mesa_RasterPos3d(GLdouble x, GLdouble y, GLdouble z) 95fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul{ 966b146214dc16b441376d8dcaba21bcc4256a2402Keith Whitwell rasterpos((GLfloat) x, (GLfloat) y, (GLfloat) z, 1.0F); 97fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul} 98afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 99d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wustatic void GLAPIENTRY 100fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul_mesa_RasterPos3f(GLfloat x, GLfloat y, GLfloat z) 101fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul{ 1026b146214dc16b441376d8dcaba21bcc4256a2402Keith Whitwell rasterpos(x, y, z, 1.0F); 103fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul} 104afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 105d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wustatic void GLAPIENTRY 106fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul_mesa_RasterPos3i(GLint x, GLint y, GLint z) 107fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul{ 1086b146214dc16b441376d8dcaba21bcc4256a2402Keith Whitwell rasterpos((GLfloat) x, (GLfloat) y, (GLfloat) z, 1.0F); 109fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul} 110fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul 111d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wustatic void GLAPIENTRY 112fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul_mesa_RasterPos3s(GLshort x, GLshort y, GLshort z) 113fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul{ 1146b146214dc16b441376d8dcaba21bcc4256a2402Keith Whitwell rasterpos(x, y, z, 1.0F); 115fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul} 116fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul 117d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wustatic void GLAPIENTRY 118fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul_mesa_RasterPos4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w) 119fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul{ 1206b146214dc16b441376d8dcaba21bcc4256a2402Keith Whitwell rasterpos((GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w); 121fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul} 122fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul 123d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wustatic void GLAPIENTRY 124fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul_mesa_RasterPos4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w) 125fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul{ 1266b146214dc16b441376d8dcaba21bcc4256a2402Keith Whitwell rasterpos(x, y, z, w); 127fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul} 128fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul 129d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wustatic void GLAPIENTRY 130fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul_mesa_RasterPos4i(GLint x, GLint y, GLint z, GLint w) 131fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul{ 1326b146214dc16b441376d8dcaba21bcc4256a2402Keith Whitwell rasterpos((GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w); 133fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul} 134fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul 135d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wustatic void GLAPIENTRY 136fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul_mesa_RasterPos4s(GLshort x, GLshort y, GLshort z, GLshort w) 137fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul{ 1386b146214dc16b441376d8dcaba21bcc4256a2402Keith Whitwell rasterpos(x, y, z, w); 139fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul} 140fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul 141d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wustatic void GLAPIENTRY 142fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul_mesa_RasterPos2dv(const GLdouble *v) 143fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul{ 1446b146214dc16b441376d8dcaba21bcc4256a2402Keith Whitwell rasterpos((GLfloat) v[0], (GLfloat) v[1], 0.0F, 1.0F); 145fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul} 146fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul 147d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wustatic void GLAPIENTRY 148fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul_mesa_RasterPos2fv(const GLfloat *v) 149fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul{ 1506b146214dc16b441376d8dcaba21bcc4256a2402Keith Whitwell rasterpos(v[0], v[1], 0.0F, 1.0F); 151fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul} 152fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul 153d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wustatic void GLAPIENTRY 154fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul_mesa_RasterPos2iv(const GLint *v) 155fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul{ 1566b146214dc16b441376d8dcaba21bcc4256a2402Keith Whitwell rasterpos((GLfloat) v[0], (GLfloat) v[1], 0.0F, 1.0F); 157fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul} 158fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul 159d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wustatic void GLAPIENTRY 160fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul_mesa_RasterPos2sv(const GLshort *v) 161fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul{ 1626b146214dc16b441376d8dcaba21bcc4256a2402Keith Whitwell rasterpos(v[0], v[1], 0.0F, 1.0F); 163fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul} 164fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul 165d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wustatic void GLAPIENTRY 166fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul_mesa_RasterPos3dv(const GLdouble *v) 167fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul{ 1686b146214dc16b441376d8dcaba21bcc4256a2402Keith Whitwell rasterpos((GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], 1.0F); 169fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul} 170fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul 171d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wustatic void GLAPIENTRY 172fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul_mesa_RasterPos3fv(const GLfloat *v) 173fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul{ 1746b146214dc16b441376d8dcaba21bcc4256a2402Keith Whitwell rasterpos(v[0], v[1], v[2], 1.0F); 175fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul} 176fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul 177d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wustatic void GLAPIENTRY 178fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul_mesa_RasterPos3iv(const GLint *v) 179fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul{ 1806b146214dc16b441376d8dcaba21bcc4256a2402Keith Whitwell rasterpos((GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], 1.0F); 181fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul} 182fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul 183d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wustatic void GLAPIENTRY 184fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul_mesa_RasterPos3sv(const GLshort *v) 185fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul{ 1866b146214dc16b441376d8dcaba21bcc4256a2402Keith Whitwell rasterpos(v[0], v[1], v[2], 1.0F); 187fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul} 188fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul 189d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wustatic void GLAPIENTRY 190fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul_mesa_RasterPos4dv(const GLdouble *v) 191fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul{ 1926b146214dc16b441376d8dcaba21bcc4256a2402Keith Whitwell rasterpos((GLfloat) v[0], (GLfloat) v[1], 1937b9fe820a3fba3849864682fbb1cb512362934abKarl Schultz (GLfloat) v[2], (GLfloat) v[3]); 194fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul} 195fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul 196d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wustatic void GLAPIENTRY 197fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul_mesa_RasterPos4fv(const GLfloat *v) 198fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul{ 1996b146214dc16b441376d8dcaba21bcc4256a2402Keith Whitwell rasterpos(v[0], v[1], v[2], v[3]); 200fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul} 201fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul 202d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wustatic void GLAPIENTRY 203fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul_mesa_RasterPos4iv(const GLint *v) 204fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul{ 2056b146214dc16b441376d8dcaba21bcc4256a2402Keith Whitwell rasterpos((GLfloat) v[0], (GLfloat) v[1], 2067b9fe820a3fba3849864682fbb1cb512362934abKarl Schultz (GLfloat) v[2], (GLfloat) v[3]); 207fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul} 208fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul 209d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wustatic void GLAPIENTRY 210fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul_mesa_RasterPos4sv(const GLshort *v) 211fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul{ 2126b146214dc16b441376d8dcaba21bcc4256a2402Keith Whitwell rasterpos(v[0], v[1], v[2], v[3]); 213afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg} 2141b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 2151b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 2161b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul/**********************************************************************/ 217a8f2efd1476878c3acad2a03f3164b5a691ea366Brian Paul/*** GL_ARB_window_pos / GL_MESA_window_pos ***/ 2181b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul/**********************************************************************/ 2191b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 220d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wu 22192f9785c727ea10ff5f8dc9770f0e8f388fcea70Brian Paul/** 22292f9785c727ea10ff5f8dc9770f0e8f388fcea70Brian Paul * All glWindowPosMESA and glWindowPosARB commands call this function to 22392f9785c727ea10ff5f8dc9770f0e8f388fcea70Brian Paul * update the current raster position. 22492f9785c727ea10ff5f8dc9770f0e8f388fcea70Brian Paul */ 225a8f2efd1476878c3acad2a03f3164b5a691ea366Brian Paulstatic void 226a8f2efd1476878c3acad2a03f3164b5a691ea366Brian Paulwindow_pos3f(GLfloat x, GLfloat y, GLfloat z) 2271b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul{ 2281b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul GET_CURRENT_CONTEXT(ctx); 229a8f2efd1476878c3acad2a03f3164b5a691ea366Brian Paul GLfloat z2; 230a8f2efd1476878c3acad2a03f3164b5a691ea366Brian Paul 2311b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx); 2321b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul FLUSH_CURRENT(ctx, 0); 2331b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 234a8f2efd1476878c3acad2a03f3164b5a691ea366Brian Paul z2 = CLAMP(z, 0.0F, 1.0F) * (ctx->Viewport.Far - ctx->Viewport.Near) 235a8f2efd1476878c3acad2a03f3164b5a691ea366Brian Paul + ctx->Viewport.Near; 236a8f2efd1476878c3acad2a03f3164b5a691ea366Brian Paul 2371b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul /* set raster position */ 2381b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul ctx->Current.RasterPos[0] = x; 2391b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul ctx->Current.RasterPos[1] = y; 240a8f2efd1476878c3acad2a03f3164b5a691ea366Brian Paul ctx->Current.RasterPos[2] = z2; 241a8f2efd1476878c3acad2a03f3164b5a691ea366Brian Paul ctx->Current.RasterPos[3] = 1.0F; 2421b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 2431b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul ctx->Current.RasterPosValid = GL_TRUE; 244a8f2efd1476878c3acad2a03f3164b5a691ea366Brian Paul 245a8f2efd1476878c3acad2a03f3164b5a691ea366Brian Paul if (ctx->Fog.FogCoordinateSource == GL_FOG_COORDINATE_EXT) 246a8f2efd1476878c3acad2a03f3164b5a691ea366Brian Paul ctx->Current.RasterDistance = ctx->Current.Attrib[VERT_ATTRIB_FOG][0]; 247a8f2efd1476878c3acad2a03f3164b5a691ea366Brian Paul else 248a8f2efd1476878c3acad2a03f3164b5a691ea366Brian Paul ctx->Current.RasterDistance = 0.0; 2491b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 2501b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul /* raster color = current color or index */ 25122a96f305898b5d1aa26809c7156a01686eb9bf0Ian Romanick ctx->Current.RasterColor[0] 25222a96f305898b5d1aa26809c7156a01686eb9bf0Ian Romanick = CLAMP(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][0], 0.0F, 1.0F); 25322a96f305898b5d1aa26809c7156a01686eb9bf0Ian Romanick ctx->Current.RasterColor[1] 25422a96f305898b5d1aa26809c7156a01686eb9bf0Ian Romanick = CLAMP(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][1], 0.0F, 1.0F); 25522a96f305898b5d1aa26809c7156a01686eb9bf0Ian Romanick ctx->Current.RasterColor[2] 25622a96f305898b5d1aa26809c7156a01686eb9bf0Ian Romanick = CLAMP(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][2], 0.0F, 1.0F); 25722a96f305898b5d1aa26809c7156a01686eb9bf0Ian Romanick ctx->Current.RasterColor[3] 25822a96f305898b5d1aa26809c7156a01686eb9bf0Ian Romanick = CLAMP(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][3], 0.0F, 1.0F); 25922a96f305898b5d1aa26809c7156a01686eb9bf0Ian Romanick ctx->Current.RasterSecondaryColor[0] 26022a96f305898b5d1aa26809c7156a01686eb9bf0Ian Romanick = CLAMP(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][0], 0.0F, 1.0F); 26122a96f305898b5d1aa26809c7156a01686eb9bf0Ian Romanick ctx->Current.RasterSecondaryColor[1] 26222a96f305898b5d1aa26809c7156a01686eb9bf0Ian Romanick = CLAMP(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][1], 0.0F, 1.0F); 26322a96f305898b5d1aa26809c7156a01686eb9bf0Ian Romanick ctx->Current.RasterSecondaryColor[2] 26422a96f305898b5d1aa26809c7156a01686eb9bf0Ian Romanick = CLAMP(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][2], 0.0F, 1.0F); 26522a96f305898b5d1aa26809c7156a01686eb9bf0Ian Romanick ctx->Current.RasterSecondaryColor[3] 26622a96f305898b5d1aa26809c7156a01686eb9bf0Ian Romanick = CLAMP(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][3], 0.0F, 1.0F); 2671b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 2681b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul /* raster texcoord = current texcoord */ 2691b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul { 2701b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul GLuint texSet; 27192f9785c727ea10ff5f8dc9770f0e8f388fcea70Brian Paul for (texSet = 0; texSet < ctx->Const.MaxTextureCoordUnits; texSet++) { 272a32e7c487cbae1a8521fa2d244763e2ec596af91Brian Paul assert(texSet < Elements(ctx->Current.RasterTexCoords)); 273002483e009e7c8610a5abfbf61a43694cb34e1d3Brian Paul COPY_4FV( ctx->Current.RasterTexCoords[texSet], 27486b842790b720cd6b1499ce8edca8a4e9c8dc029Brian Paul ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texSet] ); 2751b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul } 2761b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul } 2771b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 2781b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul if (ctx->RenderMode==GL_SELECT) { 2791b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul _mesa_update_hitflag( ctx, ctx->Current.RasterPos[2] ); 2801b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul } 2811b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul} 2821b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 2831b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 284a8f2efd1476878c3acad2a03f3164b5a691ea366Brian Paul/* This is just to support the GL_MESA_window_pos version */ 285a8f2efd1476878c3acad2a03f3164b5a691ea366Brian Paulstatic void 286a8f2efd1476878c3acad2a03f3164b5a691ea366Brian Paulwindow_pos4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w) 287a8f2efd1476878c3acad2a03f3164b5a691ea366Brian Paul{ 288a8f2efd1476878c3acad2a03f3164b5a691ea366Brian Paul GET_CURRENT_CONTEXT(ctx); 289a8f2efd1476878c3acad2a03f3164b5a691ea366Brian Paul window_pos3f(x, y, z); 290a8f2efd1476878c3acad2a03f3164b5a691ea366Brian Paul ctx->Current.RasterPos[3] = w; 291a8f2efd1476878c3acad2a03f3164b5a691ea366Brian Paul} 2921b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 2931b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 294d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wustatic void GLAPIENTRY 2951b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul_mesa_WindowPos2dMESA(GLdouble x, GLdouble y) 2961b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul{ 297a8f2efd1476878c3acad2a03f3164b5a691ea366Brian Paul window_pos4f((GLfloat) x, (GLfloat) y, 0.0F, 1.0F); 2981b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul} 2991b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 300d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wustatic void GLAPIENTRY 3011b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul_mesa_WindowPos2fMESA(GLfloat x, GLfloat y) 3021b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul{ 303a8f2efd1476878c3acad2a03f3164b5a691ea366Brian Paul window_pos4f(x, y, 0.0F, 1.0F); 3041b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul} 3051b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 306d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wustatic void GLAPIENTRY 3071b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul_mesa_WindowPos2iMESA(GLint x, GLint y) 3081b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul{ 309a8f2efd1476878c3acad2a03f3164b5a691ea366Brian Paul window_pos4f((GLfloat) x, (GLfloat) y, 0.0F, 1.0F); 3101b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul} 3111b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 312d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wustatic void GLAPIENTRY 3131b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul_mesa_WindowPos2sMESA(GLshort x, GLshort y) 3141b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul{ 315a8f2efd1476878c3acad2a03f3164b5a691ea366Brian Paul window_pos4f(x, y, 0.0F, 1.0F); 3161b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul} 3171b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 318d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wustatic void GLAPIENTRY 3191b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul_mesa_WindowPos3dMESA(GLdouble x, GLdouble y, GLdouble z) 3201b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul{ 321a8f2efd1476878c3acad2a03f3164b5a691ea366Brian Paul window_pos4f((GLfloat) x, (GLfloat) y, (GLfloat) z, 1.0F); 3221b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul} 3231b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 324d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wustatic void GLAPIENTRY 3251b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul_mesa_WindowPos3fMESA(GLfloat x, GLfloat y, GLfloat z) 3261b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul{ 327a8f2efd1476878c3acad2a03f3164b5a691ea366Brian Paul window_pos4f(x, y, z, 1.0F); 3281b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul} 3291b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 330d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wustatic void GLAPIENTRY 3311b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul_mesa_WindowPos3iMESA(GLint x, GLint y, GLint z) 3321b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul{ 333a8f2efd1476878c3acad2a03f3164b5a691ea366Brian Paul window_pos4f((GLfloat) x, (GLfloat) y, (GLfloat) z, 1.0F); 3341b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul} 3351b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 336d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wustatic void GLAPIENTRY 3371b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul_mesa_WindowPos3sMESA(GLshort x, GLshort y, GLshort z) 3381b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul{ 339a8f2efd1476878c3acad2a03f3164b5a691ea366Brian Paul window_pos4f(x, y, z, 1.0F); 3401b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul} 3411b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 342d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wustatic void GLAPIENTRY 3431b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul_mesa_WindowPos4dMESA(GLdouble x, GLdouble y, GLdouble z, GLdouble w) 3441b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul{ 345a8f2efd1476878c3acad2a03f3164b5a691ea366Brian Paul window_pos4f((GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w); 346a8f2efd1476878c3acad2a03f3164b5a691ea366Brian Paul} 347a8f2efd1476878c3acad2a03f3164b5a691ea366Brian Paul 348d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wustatic void GLAPIENTRY 349a8f2efd1476878c3acad2a03f3164b5a691ea366Brian Paul_mesa_WindowPos4fMESA(GLfloat x, GLfloat y, GLfloat z, GLfloat w) 350a8f2efd1476878c3acad2a03f3164b5a691ea366Brian Paul{ 351a8f2efd1476878c3acad2a03f3164b5a691ea366Brian Paul window_pos4f(x, y, z, w); 3521b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul} 3531b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 354d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wustatic void GLAPIENTRY 3551b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul_mesa_WindowPos4iMESA(GLint x, GLint y, GLint z, GLint w) 3561b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul{ 357a8f2efd1476878c3acad2a03f3164b5a691ea366Brian Paul window_pos4f((GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w); 3581b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul} 3591b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 360d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wustatic void GLAPIENTRY 3611b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul_mesa_WindowPos4sMESA(GLshort x, GLshort y, GLshort z, GLshort w) 3621b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul{ 363a8f2efd1476878c3acad2a03f3164b5a691ea366Brian Paul window_pos4f(x, y, z, w); 3641b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul} 3651b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 366d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wustatic void GLAPIENTRY 3671b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul_mesa_WindowPos2dvMESA(const GLdouble *v) 3681b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul{ 369a8f2efd1476878c3acad2a03f3164b5a691ea366Brian Paul window_pos4f((GLfloat) v[0], (GLfloat) v[1], 0.0F, 1.0F); 3701b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul} 3711b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 372d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wustatic void GLAPIENTRY 3731b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul_mesa_WindowPos2fvMESA(const GLfloat *v) 3741b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul{ 375a8f2efd1476878c3acad2a03f3164b5a691ea366Brian Paul window_pos4f(v[0], v[1], 0.0F, 1.0F); 3761b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul} 3771b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 378d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wustatic void GLAPIENTRY 3791b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul_mesa_WindowPos2ivMESA(const GLint *v) 3801b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul{ 381a8f2efd1476878c3acad2a03f3164b5a691ea366Brian Paul window_pos4f((GLfloat) v[0], (GLfloat) v[1], 0.0F, 1.0F); 3821b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul} 3831b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 384d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wustatic void GLAPIENTRY 3851b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul_mesa_WindowPos2svMESA(const GLshort *v) 3861b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul{ 387a8f2efd1476878c3acad2a03f3164b5a691ea366Brian Paul window_pos4f(v[0], v[1], 0.0F, 1.0F); 3881b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul} 3891b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 390d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wustatic void GLAPIENTRY 3911b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul_mesa_WindowPos3dvMESA(const GLdouble *v) 3921b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul{ 393a8f2efd1476878c3acad2a03f3164b5a691ea366Brian Paul window_pos4f((GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], 1.0F); 3941b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul} 3951b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 396d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wustatic void GLAPIENTRY 3971b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul_mesa_WindowPos3fvMESA(const GLfloat *v) 3981b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul{ 399a8f2efd1476878c3acad2a03f3164b5a691ea366Brian Paul window_pos4f(v[0], v[1], v[2], 1.0); 4001b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul} 4011b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 402d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wustatic void GLAPIENTRY 4031b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul_mesa_WindowPos3ivMESA(const GLint *v) 4041b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul{ 405a8f2efd1476878c3acad2a03f3164b5a691ea366Brian Paul window_pos4f((GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], 1.0F); 4061b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul} 4071b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 408d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wustatic void GLAPIENTRY 4091b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul_mesa_WindowPos3svMESA(const GLshort *v) 4101b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul{ 411a8f2efd1476878c3acad2a03f3164b5a691ea366Brian Paul window_pos4f(v[0], v[1], v[2], 1.0F); 4121b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul} 4131b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 414d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wustatic void GLAPIENTRY 4151b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul_mesa_WindowPos4dvMESA(const GLdouble *v) 4161b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul{ 417a8f2efd1476878c3acad2a03f3164b5a691ea366Brian Paul window_pos4f((GLfloat) v[0], (GLfloat) v[1], 4187b9fe820a3fba3849864682fbb1cb512362934abKarl Schultz (GLfloat) v[2], (GLfloat) v[3]); 4191b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul} 4201b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 421d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wustatic void GLAPIENTRY 4221b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul_mesa_WindowPos4fvMESA(const GLfloat *v) 4231b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul{ 424a8f2efd1476878c3acad2a03f3164b5a691ea366Brian Paul window_pos4f(v[0], v[1], v[2], v[3]); 4251b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul} 4261b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 427d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wustatic void GLAPIENTRY 4281b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul_mesa_WindowPos4ivMESA(const GLint *v) 4291b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul{ 430a8f2efd1476878c3acad2a03f3164b5a691ea366Brian Paul window_pos4f((GLfloat) v[0], (GLfloat) v[1], 4317b9fe820a3fba3849864682fbb1cb512362934abKarl Schultz (GLfloat) v[2], (GLfloat) v[3]); 4321b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul} 4331b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 434d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wustatic void GLAPIENTRY 4351b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul_mesa_WindowPos4svMESA(const GLshort *v) 4361b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul{ 437a8f2efd1476878c3acad2a03f3164b5a691ea366Brian Paul window_pos4f(v[0], v[1], v[2], v[3]); 4381b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul} 4391b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 4401b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 4411b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul#if 0 4421b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 4431b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul/* 4441b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul * OpenGL implementation of glWindowPos*MESA() 4451b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul */ 4461b258989462e907e45abbdf8743b0a75f22c02b3Brian Paulvoid glWindowPos4fMESA( GLfloat x, GLfloat y, GLfloat z, GLfloat w ) 4471b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul{ 4481b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul GLfloat fx, fy; 4491b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 4501b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul /* Push current matrix mode and viewport attributes */ 4511b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul glPushAttrib( GL_TRANSFORM_BIT | GL_VIEWPORT_BIT ); 4521b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 4531b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul /* Setup projection parameters */ 4541b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul glMatrixMode( GL_PROJECTION ); 4551b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul glPushMatrix(); 4561b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul glLoadIdentity(); 4571b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul glMatrixMode( GL_MODELVIEW ); 4581b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul glPushMatrix(); 4591b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul glLoadIdentity(); 4601b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 4611b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul glDepthRange( z, z ); 4621b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul glViewport( (int) x - 1, (int) y - 1, 2, 2 ); 4631b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 4641b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul /* set the raster (window) position */ 4651b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul fx = x - (int) x; 4661b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul fy = y - (int) y; 4671b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul glRasterPos4f( fx, fy, 0.0, w ); 4681b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 4691b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul /* restore matrices, viewport and matrix mode */ 4701b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul glPopMatrix(); 4711b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul glMatrixMode( GL_PROJECTION ); 4721b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul glPopMatrix(); 4731b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 4741b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul glPopAttrib(); 4751b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul} 4761b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 4771b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul#endif 4786dc85575000127630489b407c50a4b3ea87c9acbKeith Whitwell 4796dc85575000127630489b407c50a4b3ea87c9acbKeith Whitwell 480d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wuvoid 481d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wu_mesa_init_rastpos_dispatch(struct _glapi_table *disp) 482d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wu{ 483d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wu SET_RasterPos2f(disp, _mesa_RasterPos2f); 484d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wu SET_RasterPos2fv(disp, _mesa_RasterPos2fv); 485d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wu SET_RasterPos2i(disp, _mesa_RasterPos2i); 486d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wu SET_RasterPos2iv(disp, _mesa_RasterPos2iv); 487d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wu SET_RasterPos2d(disp, _mesa_RasterPos2d); 488d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wu SET_RasterPos2dv(disp, _mesa_RasterPos2dv); 489d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wu SET_RasterPos2s(disp, _mesa_RasterPos2s); 490d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wu SET_RasterPos2sv(disp, _mesa_RasterPos2sv); 491d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wu SET_RasterPos3d(disp, _mesa_RasterPos3d); 492d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wu SET_RasterPos3dv(disp, _mesa_RasterPos3dv); 493d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wu SET_RasterPos3f(disp, _mesa_RasterPos3f); 494d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wu SET_RasterPos3fv(disp, _mesa_RasterPos3fv); 495d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wu SET_RasterPos3i(disp, _mesa_RasterPos3i); 496d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wu SET_RasterPos3iv(disp, _mesa_RasterPos3iv); 497d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wu SET_RasterPos3s(disp, _mesa_RasterPos3s); 498d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wu SET_RasterPos3sv(disp, _mesa_RasterPos3sv); 499d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wu SET_RasterPos4d(disp, _mesa_RasterPos4d); 500d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wu SET_RasterPos4dv(disp, _mesa_RasterPos4dv); 501d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wu SET_RasterPos4f(disp, _mesa_RasterPos4f); 502d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wu SET_RasterPos4fv(disp, _mesa_RasterPos4fv); 503d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wu SET_RasterPos4i(disp, _mesa_RasterPos4i); 504d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wu SET_RasterPos4iv(disp, _mesa_RasterPos4iv); 505d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wu SET_RasterPos4s(disp, _mesa_RasterPos4s); 506d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wu SET_RasterPos4sv(disp, _mesa_RasterPos4sv); 507d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wu 508d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wu /* 197. GL_MESA_window_pos */ 509d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wu SET_WindowPos2dMESA(disp, _mesa_WindowPos2dMESA); 510d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wu SET_WindowPos2dvMESA(disp, _mesa_WindowPos2dvMESA); 511d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wu SET_WindowPos2fMESA(disp, _mesa_WindowPos2fMESA); 512d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wu SET_WindowPos2fvMESA(disp, _mesa_WindowPos2fvMESA); 513d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wu SET_WindowPos2iMESA(disp, _mesa_WindowPos2iMESA); 514d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wu SET_WindowPos2ivMESA(disp, _mesa_WindowPos2ivMESA); 515d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wu SET_WindowPos2sMESA(disp, _mesa_WindowPos2sMESA); 516d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wu SET_WindowPos2svMESA(disp, _mesa_WindowPos2svMESA); 517d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wu SET_WindowPos3dMESA(disp, _mesa_WindowPos3dMESA); 518d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wu SET_WindowPos3dvMESA(disp, _mesa_WindowPos3dvMESA); 519d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wu SET_WindowPos3fMESA(disp, _mesa_WindowPos3fMESA); 520d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wu SET_WindowPos3fvMESA(disp, _mesa_WindowPos3fvMESA); 521d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wu SET_WindowPos3iMESA(disp, _mesa_WindowPos3iMESA); 522d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wu SET_WindowPos3ivMESA(disp, _mesa_WindowPos3ivMESA); 523d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wu SET_WindowPos3sMESA(disp, _mesa_WindowPos3sMESA); 524d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wu SET_WindowPos3svMESA(disp, _mesa_WindowPos3svMESA); 525d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wu SET_WindowPos4dMESA(disp, _mesa_WindowPos4dMESA); 526d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wu SET_WindowPos4dvMESA(disp, _mesa_WindowPos4dvMESA); 527d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wu SET_WindowPos4fMESA(disp, _mesa_WindowPos4fMESA); 528d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wu SET_WindowPos4fvMESA(disp, _mesa_WindowPos4fvMESA); 529d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wu SET_WindowPos4iMESA(disp, _mesa_WindowPos4iMESA); 530d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wu SET_WindowPos4ivMESA(disp, _mesa_WindowPos4ivMESA); 531d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wu SET_WindowPos4sMESA(disp, _mesa_WindowPos4sMESA); 532d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wu SET_WindowPos4svMESA(disp, _mesa_WindowPos4svMESA); 533d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wu} 534d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wu 535d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wu 536d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wu#endif /* FEATURE_rastpos */ 537d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wu 538d25080074f2da1ebc47cdfb5c3491740a57ec03fChia-I Wu 5396dc85575000127630489b407c50a4b3ea87c9acbKeith Whitwell/**********************************************************************/ 5406dc85575000127630489b407c50a4b3ea87c9acbKeith Whitwell/** \name Initialization */ 5416dc85575000127630489b407c50a4b3ea87c9acbKeith Whitwell/**********************************************************************/ 5426dc85575000127630489b407c50a4b3ea87c9acbKeith Whitwell/*@{*/ 5436dc85575000127630489b407c50a4b3ea87c9acbKeith Whitwell 5446dc85575000127630489b407c50a4b3ea87c9acbKeith Whitwell/** 5456dc85575000127630489b407c50a4b3ea87c9acbKeith Whitwell * Initialize the context current raster position information. 5466dc85575000127630489b407c50a4b3ea87c9acbKeith Whitwell * 5476dc85575000127630489b407c50a4b3ea87c9acbKeith Whitwell * \param ctx GL context. 5486dc85575000127630489b407c50a4b3ea87c9acbKeith Whitwell * 5496dc85575000127630489b407c50a4b3ea87c9acbKeith Whitwell * Initialize the current raster position information in 550f9995b30756140724f41daf963fa06167912be7fKristian Høgsberg * __struct gl_contextRec::Current, and adds the extension entry points to the 5516dc85575000127630489b407c50a4b3ea87c9acbKeith Whitwell * dispatcher. 5526dc85575000127630489b407c50a4b3ea87c9acbKeith Whitwell */ 553f9995b30756140724f41daf963fa06167912be7fKristian Høgsbergvoid _mesa_init_rastpos( struct gl_context * ctx ) 5546dc85575000127630489b407c50a4b3ea87c9acbKeith Whitwell{ 5556dc85575000127630489b407c50a4b3ea87c9acbKeith Whitwell int i; 5566dc85575000127630489b407c50a4b3ea87c9acbKeith Whitwell 5576dc85575000127630489b407c50a4b3ea87c9acbKeith Whitwell ASSIGN_4V( ctx->Current.RasterPos, 0.0, 0.0, 0.0, 1.0 ); 5586dc85575000127630489b407c50a4b3ea87c9acbKeith Whitwell ctx->Current.RasterDistance = 0.0; 5596dc85575000127630489b407c50a4b3ea87c9acbKeith Whitwell ASSIGN_4V( ctx->Current.RasterColor, 1.0, 1.0, 1.0, 1.0 ); 560959571f83595dcc8026bc6c7eb52bb9ee50cc6d5Brian Paul ASSIGN_4V( ctx->Current.RasterSecondaryColor, 0.0, 0.0, 0.0, 1.0 ); 561a32e7c487cbae1a8521fa2d244763e2ec596af91Brian Paul for (i = 0; i < Elements(ctx->Current.RasterTexCoords); i++) 5626dc85575000127630489b407c50a4b3ea87c9acbKeith Whitwell ASSIGN_4V( ctx->Current.RasterTexCoords[i], 0.0, 0.0, 0.0, 1.0 ); 5636dc85575000127630489b407c50a4b3ea87c9acbKeith Whitwell ctx->Current.RasterPosValid = GL_TRUE; 5646dc85575000127630489b407c50a4b3ea87c9acbKeith Whitwell} 5656dc85575000127630489b407c50a4b3ea87c9acbKeith Whitwell 5666dc85575000127630489b407c50a4b3ea87c9acbKeith Whitwell/*@}*/ 567