Subversion Repositories Kolibri OS

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
5564 serge 1
/*
2
 * Copyright (C) 2009 Chia-I Wu 
3
 *
4
 * Permission is hereby granted, free of charge, to any person obtaining a
5
 * copy of this software and associated documentation files (the "Software"),
6
 * to deal in the Software without restriction, including without limitation
7
 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8
 * and/or sell copies of the Software, and to permit persons to whom the
9
 * Software is furnished to do so, subject to the following conditions:
10
 *
11
 * The above copyright notice and this permission notice (including the next
12
 * paragraph) shall be included in all copies or substantial portions of the
13
 * Software.
14
 *
15
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
18
 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
20
 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
21
 * DEALINGS IN THE SOFTWARE.
22
 */
23
 
24
#include "main/drawtex.h"
25
#include "main/state.h"
26
#include "main/imports.h"
27
#include "main/mtypes.h"
28
 
29
 
30
static void
31
draw_texture(struct gl_context *ctx, GLfloat x, GLfloat y, GLfloat z,
32
             GLfloat width, GLfloat height)
33
{
34
   if (!ctx->Extensions.OES_draw_texture) {
35
      _mesa_error(ctx, GL_INVALID_OPERATION,
36
                  "glDrawTex(unsupported)");
37
      return;
38
   }
39
   if (width <= 0.0f || height <= 0.0f) {
40
      _mesa_error(ctx, GL_INVALID_VALUE, "glDrawTex(width or height <= 0)");
41
      return;
42
   }
43
 
44
   _mesa_set_vp_override(ctx, GL_TRUE);
45
 
46
   if (ctx->NewState)
47
      _mesa_update_state(ctx);
48
 
49
   assert(ctx->Driver.DrawTex);
50
   ctx->Driver.DrawTex(ctx, x, y, z, width, height);
51
 
52
   _mesa_set_vp_override(ctx, GL_FALSE);
53
}
54
 
55
 
56
void GLAPIENTRY
57
_mesa_DrawTexfOES(GLfloat x, GLfloat y, GLfloat z, GLfloat width, GLfloat height)
58
{
59
   GET_CURRENT_CONTEXT(ctx);
60
   draw_texture(ctx, x, y, z, width, height);
61
}
62
 
63
 
64
void GLAPIENTRY
65
_mesa_DrawTexfvOES(const GLfloat *coords)
66
{
67
   GET_CURRENT_CONTEXT(ctx);
68
   draw_texture(ctx, coords[0], coords[1], coords[2], coords[3], coords[4]);
69
}
70
 
71
 
72
void GLAPIENTRY
73
_mesa_DrawTexiOES(GLint x, GLint y, GLint z, GLint width, GLint height)
74
{
75
   GET_CURRENT_CONTEXT(ctx);
76
   draw_texture(ctx, (GLfloat) x, (GLfloat) y, (GLfloat) z,
77
                (GLfloat) width, (GLfloat) height);
78
}
79
 
80
 
81
void GLAPIENTRY
82
_mesa_DrawTexivOES(const GLint *coords)
83
{
84
   GET_CURRENT_CONTEXT(ctx);
85
   draw_texture(ctx, (GLfloat) coords[0], (GLfloat) coords[1],
86
                (GLfloat) coords[2], (GLfloat) coords[3], (GLfloat) coords[4]);
87
}
88
 
89
 
90
void GLAPIENTRY
91
_mesa_DrawTexsOES(GLshort x, GLshort y, GLshort z, GLshort width, GLshort height)
92
{
93
   GET_CURRENT_CONTEXT(ctx);
94
   draw_texture(ctx, (GLfloat) x, (GLfloat) y, (GLfloat) z,
95
                (GLfloat) width, (GLfloat) height);
96
}
97
 
98
 
99
void GLAPIENTRY
100
_mesa_DrawTexsvOES(const GLshort *coords)
101
{
102
   GET_CURRENT_CONTEXT(ctx);
103
   draw_texture(ctx, (GLfloat) coords[0], (GLfloat) coords[1],
104
                (GLfloat) coords[2], (GLfloat) coords[3], (GLfloat) coords[4]);
105
}
106
 
107
 
108
void GLAPIENTRY
109
_mesa_DrawTexx(GLfixed x, GLfixed y, GLfixed z, GLfixed width, GLfixed height)
110
{
111
   GET_CURRENT_CONTEXT(ctx);
112
   draw_texture(ctx,
113
                (GLfloat) x / 65536.0f,
114
                (GLfloat) y / 65536.0f,
115
                (GLfloat) z / 65536.0f,
116
                (GLfloat) width / 65536.0f,
117
                (GLfloat) height / 65536.0f);
118
}
119
 
120
 
121
void GLAPIENTRY
122
_mesa_DrawTexxv(const GLfixed *coords)
123
{
124
   GET_CURRENT_CONTEXT(ctx);
125
   draw_texture(ctx,
126
                (GLfloat) coords[0] / 65536.0f,
127
                (GLfloat) coords[1] / 65536.0f,
128
                (GLfloat) coords[2] / 65536.0f,
129
                (GLfloat) coords[3] / 65536.0f,
130
                (GLfloat) coords[4] / 65536.0f);
131
}