ReactOS  0.4.14-dev-376-gaedba84
glsurfeval.h
Go to the documentation of this file.
1 /*
2  * SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008)
3  * Copyright (C) 1991-2000 Silicon Graphics, Inc. All Rights Reserved.
4  *
5  * Permission is hereby granted, free of charge, to any person obtaining a
6  * copy of this software and associated documentation files (the "Software"),
7  * to deal in the Software without restriction, including without limitation
8  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
9  * and/or sell copies of the Software, and to permit persons to whom the
10  * Software is furnished to do so, subject to the following conditions:
11  *
12  * The above copyright notice including the dates of first publication and
13  * either this permission notice or a reference to
14  * http://oss.sgi.com/projects/FreeB/
15  * shall be included in all copies or substantial portions of the Software.
16  *
17  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
18  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
20  * SILICON GRAPHICS, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
21  * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
22  * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23  * SOFTWARE.
24  *
25  * Except as contained in this notice, the name of Silicon Graphics, Inc.
26  * shall not be used in advertising or otherwise to promote the sale, use or
27  * other dealings in this Software without prior written authorization from
28  * Silicon Graphics, Inc.
29  */
30 
31 /*
32  * glsurfeval.h
33  *
34  */
35 
36 #ifndef __gluglsurfeval_h_
37 #define __gluglsurfeval_h_
38 
39 #include "basicsurfeval.h"
40 #include "bezierPatchMesh.h" //in case output triangles
41 #include <GL/gl.h>
42 #include <GL/glu.h>
43 
44 class SurfaceMap;
46 class StoredVertex;
47 
48 #define TYPECOORD 1
49 #define TYPEPOINT 2
50 
51 /* Cache up to 3 vertices from tmeshes */
52 #define VERTEX_CACHE_SIZE 3
53 
54 /*for internal evaluator callback stuff*/
55 #ifndef IN_MAX_BEZIER_ORDER
56 #define IN_MAX_BEZIER_ORDER 40 /*XXX should be bigger than machine order*/
57 #endif
58 
59 #ifndef IN_MAX_DIMENSION
60 #define IN_MAX_DIMENSION 4
61 #endif
62 
63 typedef struct surfEvalMachine{
64  REAL uprime;//cached previusly evaluated uprime.
66  int k; /*the dimension*/
69  int ustride;
70  int uorder;
73  int vstride;
74  int vorder;
76  REAL ucoeff[IN_MAX_BEZIER_ORDER]; /*cache the polynomial values*/
78  REAL ucoeffDeriv[IN_MAX_BEZIER_ORDER]; /*cache the polynomial derivatives*/
81 
82 
83 
84 class StoredVertex {
85 public:
86  StoredVertex() { type = 0; coord[0] = 0; coord[1] = 0; point[0] = 0; point[1] = 0; }
87  ~StoredVertex(void) {}
89  {coord[0] = x; coord[1] = y; type = TYPECOORD; }
90  void saveEvalPoint(long x, long y)
91  {point[0] = x; point[1] = y; type = TYPEPOINT; }
92  void invoke(OpenGLSurfaceEvaluator *eval);
93 
94 private:
95  int type;
96  REAL coord[2];
97  long point[2];
98 };
99 
101 public:
103  virtual ~OpenGLSurfaceEvaluator( void );
104  void polymode( long style );
105  void range2f( long, REAL *, REAL * );
106  void domain2f( REAL, REAL, REAL, REAL );
107  void addMap( SurfaceMap * ) { }
108 
109  void enable( long );
110  void disable( long );
111  void bgnmap2f( long );
112  void map2f( long, REAL, REAL, long, long,
113  REAL, REAL, long, long, REAL * );
114  void mapgrid2f( long, REAL, REAL, long, REAL, REAL );
115  void mapmesh2f( long, long, long, long, long );
116  void evalcoord2f( long, REAL, REAL );
117  void evalpoint2i( long, long );
118  void endmap2f( void );
119 
120  void bgnline( void );
121  void endline( void );
122  void bgnclosedline( void );
123  void endclosedline( void );
124  void bgntmesh( void );
125  void swaptmesh( void );
126  void endtmesh( void );
127  void bgnqstrip( void );
128  void endqstrip( void );
129 
130  void bgntfan( void );
131  void endtfan( void );
132  void evalUStrip(int n_upper, REAL v_upper, REAL* upper_val,
133  int n_lower, REAL v_lower, REAL* lower_val);
134  void evalVStrip(int n_left, REAL u_left, REAL* left_val,
135  int n_right, REAL u_right, REAL* right_val);
136 
137  void coord2f( REAL, REAL );
138  void point2i( long, long );
139 
140  void newtmeshvert( REAL, REAL );
141  void newtmeshvert( long, long );
142 
143 #ifdef _WIN32
144  void putCallBack(GLenum which, void (GLAPIENTRY *fn)() );
145 #else
147 #endif
148 
150  {
151  return output_triangles;
152  }
154  {
156  }
157 
159  {
161  }
162 
164  {
165  return callback_auto_normal;
166  }
167 
169  {
170  userData = data;
171  }
172 
173  /**************begin for LOD_eval_list***********/
174  void LOD_eval_list(int level);
175 
176 
177 
178 
179 private:
181  int tmeshing;
182  int which;
183  int vcount;
184 
185  GLint gl_polygon_mode[2];/*to save and restore so that
186  *no side effect
187  */
188  bezierPatchMesh *global_bpm; //for output triangles
189  int output_triangles; //true 1 or false 0
190 
191 
192 
193  void (GLAPIENTRY *beginCallBackN) (GLenum type);
194  void (GLAPIENTRY *endCallBackN) (void);
195  void (GLAPIENTRY *vertexCallBackN) (const GLfloat *vert);
196  void (GLAPIENTRY *normalCallBackN) (const GLfloat *normal);
197  void (GLAPIENTRY *colorCallBackN) (const GLfloat *color);
198  void (GLAPIENTRY *texcoordCallBackN) (const GLfloat *texcoord);
199 
200  void (GLAPIENTRY *beginCallBackData) (GLenum type, void* data);
201  void (GLAPIENTRY *endCallBackData) (void* data);
202  void (GLAPIENTRY *vertexCallBackData) (const GLfloat *vert, void* data);
203  void (GLAPIENTRY *normalCallBackData) (const GLfloat *normal, void* data);
204  void (GLAPIENTRY *colorCallBackData) (const GLfloat *color, void* data);
205  void (GLAPIENTRY *texcoordCallBackData) (const GLfloat *texcoord, void* data);
206 
207  void beginCallBack (GLenum type, void* data);
208  void endCallBack (void* data);
209  void vertexCallBack (const GLfloat *vert, void* data);
210  void normalCallBack (const GLfloat *normal, void* data);
211  void colorCallBack (const GLfloat *color, void* data);
212  void texcoordCallBack (const GLfloat *texcoord, void* data);
213 
214 
215  void* userData; //the opaque pointer for Data callback functions.
216 
217  /*LOD evaluation*/
218  void LOD_triangle(REAL A[2], REAL B[2], REAL C[2],
219  int level);
220  void LOD_eval(int num_vert, REAL* verts, int type, int level);
221 
222  int LOD_eval_level; //set by LOD_eval_list()
223 
224  /*************begin for internal evaluators*****************/
225 
226  /*the following global variables are only defined in this file.
227  *They are used to cache the precomputed Bezier polynomial values.
228  *These calues may be used consecutively in which case we don't have
229  *recompute these values again.
230  */
231  int global_uorder; /*store the uorder in the previous evaluation*/
232  int global_vorder; /*store the vorder in the previous evaluation*/
237  int global_uorder_BV; /*store the uorder in the previous evaluation*/
238  int global_vorder_BV; /*store the vorder in the previous evaluation*/
239  int global_uorder_BU; /*store the uorder in the previous evaluation*/
240  int global_vorder_BU; /*store the vorder in the previous evaluation*/
241 
242  REAL global_ucoeff[IN_MAX_BEZIER_ORDER]; /*cache the polynomial values*/
244  REAL global_ucoeffDeriv[IN_MAX_BEZIER_ORDER]; /*cache the polynomial derivatives*/
246 
252 
253  int global_ev_k; /*the dimension*/
263 
270 
271 /*functions*/
272  void inDoDomain2WithDerivs(int k, REAL u, REAL v,
273  REAL u1, REAL u2, int uorder,
274  REAL v1, REAL v2, int vorder,
275  REAL *baseData,
276  REAL *retPoint, REAL *retdu, REAL *retdv);
277  void inPreEvaluate(int order, REAL vprime, REAL *coeff);
278  void inPreEvaluateWithDeriv(int order, REAL vprime, REAL *coeff, REAL *coeffDeriv);
279  void inComputeFirstPartials(REAL *p, REAL *pu, REAL *pv);
280  void inComputeNormal2(REAL *pu, REAL *pv, REAL *n);
281  void inDoEvalCoord2(REAL u, REAL v,
282  REAL *retPoint, REAL *retNormal);
284  REAL *retPoint, REAL *retNormal);
285  void inMap2f(int k,
286  REAL ulower,
287  REAL uupper,
288  int ustride,
289  int uorder,
290  REAL vlower,
291  REAL vupper,
292  int vstride,
293  int vorder,
294  REAL *ctlPoints);
295 
296  void inMapGrid2f(int nu, REAL u0, REAL u1,
297  int nv, REAL v0, REAL v1);
298 
299  void inEvalMesh2(int lowU, int lowV, int highU, int highV);
300  void inEvalPoint2(int i, int j);
301  void inEvalCoord2f(REAL u, REAL v);
302 
303 void inEvalULine(int n_points, REAL v, REAL* u_vals,
304  int stride, REAL ret_points[][3], REAL ret_normals[][3]);
305 
306 void inEvalVLine(int n_points, REAL u, REAL* v_vals,
307  int stride, REAL ret_points[][3], REAL ret_normals[][3]);
308 
309 void inEvalUStrip(int n_upper, REAL v_upper, REAL* upper_val,
310  int n_lower, REAL v_lower, REAL* lower_val
311  );
312 void inEvalVStrip(int n_left, REAL u_left, REAL* left_val, int n_right, REAL u_right, REAL* right_val);
313 
314 void inPreEvaluateBV(int k, int uorder, int vorder, REAL vprime, REAL *baseData);
315 void inPreEvaluateBU(int k, int uorder, int vorder, REAL uprime, REAL *baseData);
317  {
319  }
320 
322  {
324  }
325 
326 void inDoDomain2WithDerivsBV(int k, REAL u, REAL v,
327  REAL u1, REAL u2, int uorder,
328  REAL v1, REAL v2, int vorder,
329  REAL *baseData,
330  REAL *retPoint, REAL* retdu, REAL *retdv);
331 
332 void inDoDomain2WithDerivsBU(int k, REAL u, REAL v,
333  REAL u1, REAL u2, int uorder,
334  REAL v1, REAL v2, int vorder,
335  REAL *baseData,
336  REAL *retPoint, REAL* retdu, REAL *retdv);
337 
338 
340  REAL *retPoint, REAL *retNormal);
341 
343  REAL *retPoint, REAL *retNormal);
344 
345 void inBPMEval(bezierPatchMesh* bpm);
347 
348 /*-------------begin for surfEvalMachine -------------*/
353 
354 int auto_normal_flag; //whether to output normla or not in callback
355  //determined by GL_AUTO_NORMAL and callback_auto_normal
356 int callback_auto_normal; //GLU_CALLBACK_AUTO_NORMAL_EXT
361 
362 void inMap2fEM(int which, //0:vert,1:norm,2:color,3:tex
363  int dimension,
364  REAL ulower,
365  REAL uupper,
366  int ustride,
367  int uorder,
368  REAL vlower,
369  REAL vupper,
370  int vstride,
371  int vorder,
372  REAL *ctlPoints);
373 
375  REAL *retPoint, REAL *retdu, REAL *retdv);
377  REAL *retPoint);
378  void inDoEvalCoord2EM(REAL u, REAL v);
379 
380 void inBPMEvalEM(bezierPatchMesh* bpm);
382 
383 /*-------------end for surfEvalMachine -------------*/
384 
385 
386  /*************end for internal evaluators*****************/
387 
388 };
389 
391 {
392  switch(type) {
393  case TYPECOORD:
394  eval->coord2f(coord[0], coord[1]);
395  break;
396  case TYPEPOINT:
397  eval->point2i(point[0], point[1]);
398  break;
399  default:
400  break;
401  }
402 }
403 
404 #endif /* __gluglsurfeval_h_ */
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble * u
Definition: glfuncs.h:240
REAL global_vcoeffDeriv[IN_MAX_BEZIER_ORDER]
Definition: glsurfeval.h:245
void inMap2f(int k, REAL ulower, REAL uupper, int ustride, int uorder, REAL vlower, REAL vupper, int vstride, int vorder, REAL *ctlPoints)
Definition: insurfeval.cc:444
GLdouble GLdouble GLint GLint GLdouble GLdouble GLint vstride
Definition: glext.h:8308
void inComputeNormal2(REAL *pu, REAL *pv, REAL *n)
Definition: insurfeval.cc:518
void evalVStrip(int n_left, REAL u_left, REAL *left_val, int n_right, REAL u_right, REAL *right_val)
Definition: glsurfeval.cc:530
GLint level
Definition: gl.h:1546
GLdouble GLdouble GLint ustride
Definition: glext.h:8308
GLdouble GLdouble u2
Definition: glext.h:8308
GLuint GLdouble GLdouble GLint GLint order
Definition: glext.h:11194
~StoredVertex(void)
Definition: glsurfeval.h:87
void inComputeFirstPartials(REAL *p, REAL *pu, REAL *pv)
Definition: insurfeval.cc:501
void inEvalCoord2f(REAL u, REAL v)
Definition: insurfeval.cc:375
#define IN_MAX_DIMENSION
Definition: glsurfeval.h:60
long point[2]
Definition: glsurfeval.h:97
REAL global_BV[IN_MAX_BEZIER_ORDER][IN_MAX_DIMENSION]
Definition: glsurfeval.h:247
REAL ctlPoints[IN_MAX_BEZIER_ORDER *IN_MAX_BEZIER_ORDER *IN_MAX_DIMENSION]
Definition: glsurfeval.h:75
void inPreEvaluateWithDeriv(int order, REAL vprime, REAL *coeff, REAL *coeffDeriv)
Definition: insurfeval.cc:1066
void inPreEvaluateBU_intfac(REAL u)
Definition: glsurfeval.h:321
static GLenum _GLUfuncptr fn
Definition: wgl_font.c:159
void evalUStrip(int n_upper, REAL v_upper, REAL *upper_val, int n_lower, REAL v_lower, REAL *lower_val)
Definition: glsurfeval.cc:343
void inEvalPoint2(int i, int j)
Definition: insurfeval.cc:362
void inDoEvalCoord2NOGE(REAL u, REAL v, REAL *retPoint, REAL *retNormal)
Definition: insurfeval.cc:749
REAL vcoeff[IN_MAX_BEZIER_ORDER]
Definition: glsurfeval.h:77
void inDoDomain2WithDerivsBV(int k, REAL u, REAL v, REAL u1, REAL u2, int uorder, REAL v1, REAL v2, int vorder, REAL *baseData, REAL *retPoint, REAL *retdu, REAL *retdv)
Definition: insurfeval.cc:903
void(GLAPIENTRY *beginCallBackN)(GLenum type)
void inPreEvaluateBV_intfac(REAL v)
Definition: glsurfeval.h:316
void inEvalMesh2(int lowU, int lowV, int highU, int highV)
Definition: insurfeval.cc:400
GLfloat v0
Definition: glext.h:6061
surfEvalMachine em_vertex
Definition: glsurfeval.h:349
GLdouble n
Definition: glext.h:7729
#define VERTEX_CACHE_SIZE
Definition: glsurfeval.h:52
REAL ucoeff[IN_MAX_BEZIER_ORDER]
Definition: glsurfeval.h:76
surfEvalMachine em_color
Definition: glsurfeval.h:351
bezierPatchMesh * global_bpm
Definition: glsurfeval.h:188
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545
REAL vcoeffDeriv[IN_MAX_BEZIER_ORDER]
Definition: glsurfeval.h:79
GLint GLint GLint GLint GLint x
Definition: gl.h:1548
void inMapGrid2f(int nu, REAL u0, REAL u1, int nv, REAL v0, REAL v1)
Definition: insurfeval.cc:389
void inBPMListEvalEM(bezierPatchMesh *list)
Definition: insurfeval.cc:2056
GLdouble GLdouble GLint GLint GLdouble GLdouble GLint GLint vorder
Definition: glext.h:8308
GLdouble u1
Definition: glext.h:8308
void colorCallBack(const GLfloat *color, void *data)
Definition: glsurfeval.cc:1274
void mapmesh2f(long, long, long, long, long)
Definition: glsurfeval.cc:946
#define TYPECOORD
Definition: glsurfeval.h:48
void LOD_eval(int num_vert, REAL *verts, int type, int level)
void inPreEvaluateBV(int k, int uorder, int vorder, REAL vprime, REAL *baseData)
Definition: insurfeval.cc:809
void put_vertices_call_back(int flag)
Definition: glsurfeval.h:153
void mapgrid2f(long, REAL, REAL, long, REAL, REAL)
Definition: glsurfeval.cc:195
GLuint coord
Definition: glext.h:9511
REAL ucoeffDeriv[IN_MAX_BEZIER_ORDER]
Definition: glsurfeval.h:78
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
void inPreEvaluate(int order, REAL vprime, REAL *coeff)
Definition: insurfeval.cc:1022
void inEvalVStrip(int n_left, REAL u_left, REAL *left_val, int n_right, REAL u_right, REAL *right_val)
Definition: insurfeval.cc:1355
void inMap2fEM(int which, int dimension, REAL ulower, REAL uupper, int ustride, int uorder, REAL vlower, REAL vupper, int vstride, int vorder, REAL *ctlPoints)
Definition: insurfeval.cc:1540
GLuint color
Definition: glext.h:6243
void put_callback_auto_normal(int flag)
Definition: glsurfeval.h:158
void saveEvalCoord(REAL x, REAL y)
Definition: glsurfeval.h:88
void normalCallBack(const GLfloat *normal, void *data)
Definition: glsurfeval.cc:1265
void LOD_eval_list(int level)
Definition: glsurfeval.cc:84
void bgnclosedline(void)
Definition: glsurfeval.cc:268
void coord2f(REAL, REAL)
Definition: glsurfeval.cc:1106
void saveEvalPoint(long x, long y)
Definition: glsurfeval.h:90
StoredVertex * vertexCache[VERTEX_CACHE_SIZE]
Definition: glsurfeval.h:180
void inDoDomain2EM(surfEvalMachine *em, REAL u, REAL v, REAL *retPoint)
Definition: insurfeval.cc:1653
void vertexCallBack(const GLfloat *vert, void *data)
Definition: glsurfeval.cc:1255
void inEvalULine(int n_points, REAL v, REAL *u_vals, int stride, REAL ret_points[][3], REAL ret_normals[][3])
Definition: insurfeval.cc:1125
void addMap(SurfaceMap *)
Definition: glsurfeval.h:107
REAL global_ucoeff[IN_MAX_BEZIER_ORDER]
Definition: glsurfeval.h:242
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
Definition: glfuncs.h:250
virtual ~OpenGLSurfaceEvaluator(void)
Definition: glsurfeval.cc:162
void map2f(long, REAL, REAL, long, long, REAL, REAL, long, long, REAL *)
Definition: glsurfeval.cc:872
#define IN_MAX_BEZIER_ORDER
Definition: glsurfeval.h:56
void endclosedline(void)
Definition: glsurfeval.cc:277
GLdouble GLdouble GLint GLint uorder
Definition: glext.h:8308
GLsizei stride
Definition: glext.h:5848
void inBPMListEval(bezierPatchMesh *list)
Definition: insurfeval.cc:238
void domain2f(REAL, REAL, REAL, REAL)
Definition: glsurfeval.cc:263
REAL global_PBU[IN_MAX_BEZIER_ORDER][IN_MAX_DIMENSION]
Definition: glsurfeval.h:250
REAL global_vcoeff[IN_MAX_BEZIER_ORDER]
Definition: glsurfeval.h:243
void invoke(OpenGLSurfaceEvaluator *eval)
Definition: glsurfeval.h:390
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
void inPreEvaluateBU(int k, int uorder, int vorder, REAL uprime, REAL *baseData)
Definition: insurfeval.cc:838
void(WINAPI * _GLUfuncptr)(void)
Definition: wgl_font.c:148
void inDoDomain2WithDerivs(int k, REAL u, REAL v, REAL u1, REAL u2, int uorder, REAL v1, REAL v2, int vorder, REAL *baseData, REAL *retPoint, REAL *retdu, REAL *retdv)
Definition: insurfeval.cc:949
void inDoEvalCoord2NOGE_BU(REAL u, REAL v, REAL *retPoint, REAL *retNormal)
Definition: insurfeval.cc:621
Definition: ttei1.cpp:12
REAL global_PBV[IN_MAX_BEZIER_ORDER][IN_MAX_DIMENSION]
Definition: glsurfeval.h:248
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean flag
Definition: glfuncs.h:52
void newtmeshvert(REAL, REAL)
Definition: glsurfeval.cc:1160
void inDoEvalCoord2NOGE_BV(REAL u, REAL v, REAL *retPoint, REAL *retNormal)
Definition: insurfeval.cc:684
void putCallBack(GLenum which, _GLUfuncptr fn)
Definition: glsurfeval.cc:1190
Definition: _list.h:228
void inEvalUStrip(int n_upper, REAL v_upper, REAL *upper_val, int n_lower, REAL v_lower, REAL *lower_val)
Definition: insurfeval.cc:1166
void evalpoint2i(long, long)
Definition: glsurfeval.cc:1059
void texcoordCallBack(const GLfloat *texcoord, void *data)
Definition: glsurfeval.cc:1283
unsigned int GLenum
Definition: gl.h:150
surfEvalMachine em_texcoord
Definition: glsurfeval.h:352
void inDoEvalCoord2EM(REAL u, REAL v)
Definition: insurfeval.cc:1702
void inEvalVLine(int n_points, REAL u, REAL *v_vals, int stride, REAL ret_points[][3], REAL ret_normals[][3])
Definition: insurfeval.cc:1144
GLfloat GLfloat GLfloat v2
Definition: glext.h:6063
void inDoDomain2WithDerivsEM(surfEvalMachine *em, REAL u, REAL v, REAL *retPoint, REAL *retdu, REAL *retdv)
Definition: insurfeval.cc:1600
void inDoDomain2WithDerivsBU(int k, REAL u, REAL v, REAL u1, REAL u2, int uorder, REAL v1, REAL v2, int vorder, REAL *baseData, REAL *retPoint, REAL *retdu, REAL *retdv)
Definition: insurfeval.cc:868
const GLdouble * v
Definition: gl.h:2040
REAL global_ev_ctlPoints[IN_MAX_BEZIER_ORDER *IN_MAX_BEZIER_ORDER *IN_MAX_DIMENSION]
Definition: glsurfeval.h:262
void inBPMEval(bezierPatchMesh *bpm)
Definition: insurfeval.cc:247
Definition: ttei6.cpp:27
#define B(row, col)
void LOD_triangle(REAL A[2], REAL B[2], REAL C[2], int level)
GLint GLint GLint GLint GLint GLint y
Definition: gl.h:1548
void beginCallBack(GLenum type, void *data)
Definition: glsurfeval.cc:1237
float GLfloat
Definition: gl.h:161
void endCallBack(void *data)
Definition: glsurfeval.cc:1246
surfEvalMachine em_normal
Definition: glsurfeval.h:350
#define TYPEPOINT
Definition: glsurfeval.h:49
REAL global_ucoeffDeriv[IN_MAX_BEZIER_ORDER]
Definition: glsurfeval.h:244
void inDoEvalCoord2(REAL u, REAL v, REAL *retPoint, REAL *retNormal)
Definition: insurfeval.cc:541
int GLint
Definition: gl.h:156
void range2f(long, REAL *, REAL *)
Definition: glsurfeval.cc:258
GLfloat GLfloat p
Definition: glext.h:8902
void point2i(long, long)
Definition: glsurfeval.cc:1069
float REAL
Definition: types.h:41
void inBPMEvalEM(bezierPatchMesh *bpm)
Definition: insurfeval.cc:1826
Arabic default style
Definition: afstyles.h:93
GLfloat GLfloat v1
Definition: glext.h:6062
int k
Definition: mpi.c:3369
REAL global_BU[IN_MAX_BEZIER_ORDER][IN_MAX_DIMENSION]
Definition: glsurfeval.h:249
struct surfEvalMachine surfEvalMachine
#define GLAPIENTRY
Definition: glu.h:44
void set_callback_userData(void *data)
Definition: glsurfeval.h:168
void evalcoord2f(long, REAL, REAL)
Definition: glsurfeval.cc:1042
void polymode(long style)
Definition: glsurfeval.cc:219