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