11cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger/*
21cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Copyright 2010, Google Inc.
31cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * All rights reserved.
41cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger *
51cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Redistribution and use in source and binary forms, with or without
61cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * modification, are permitted provided that the following conditions are
71cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * met:
81cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger *
91cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger *     * Redistributions of source code must retain the above copyright
101cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * notice, this list of conditions and the following disclaimer.
111cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger *     * Redistributions in binary form must reproduce the above
121cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * copyright notice, this list of conditions and the following disclaimer
131cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * in the documentation and/or other materials provided with the
141cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * distribution.
151cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger *     * Neither the name of Google Inc. nor the names of its
161cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * contributors may be used to endorse or promote products derived from
171cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * this software without specific prior written permission.
181cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger *
191cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
201cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
211cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
221cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
231cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
241cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
251cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
261cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
271cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
281cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
291cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
301cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger */
311cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger
321cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger// This header is a skeleton substitute for GL/glu.h which contains
331cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger// only the definitions, constants and function declarations necessary
341cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger// to compile the GLU tessellator.
351cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger
361cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#ifndef SK_GLU_H_
371cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#define SK_GLU_H_
381cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger
391cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#include "gluos.h"
401cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger
411cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger/* Primitives */
421cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#define GL_LINE_LOOP                            0x0002
431cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#define GL_TRIANGLES                            0x0004
441cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#define GL_TRIANGLE_STRIP                       0x0005
451cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#define GL_TRIANGLE_FAN                         0x0006
461cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger
471cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger/* ErrorCode */
481cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#define GLU_INVALID_ENUM                     100900
491cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#define GLU_INVALID_VALUE                    100901
501cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#define GLU_OUT_OF_MEMORY                    100902
511cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger
521cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger/* TessCallback */
531cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#define GLU_TESS_BEGIN                       100100
541cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#define GLU_BEGIN                            100100
551cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#define GLU_TESS_VERTEX                      100101
561cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#define GLU_VERTEX                           100101
571cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#define GLU_TESS_END                         100102
581cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#define GLU_END                              100102
591cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#define GLU_TESS_ERROR                       100103
601cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#define GLU_TESS_EDGE_FLAG                   100104
611cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#define GLU_EDGE_FLAG                        100104
621cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#define GLU_TESS_COMBINE                     100105
631cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#define GLU_TESS_BEGIN_DATA                  100106
641cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#define GLU_TESS_VERTEX_DATA                 100107
651cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#define GLU_TESS_END_DATA                    100108
661cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#define GLU_TESS_ERROR_DATA                  100109
671cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#define GLU_TESS_EDGE_FLAG_DATA              100110
681cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#define GLU_TESS_COMBINE_DATA                100111
691cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger
701cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger/* TessContour */
711cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#define GLU_CW                               100120
721cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#define GLU_CCW                              100121
731cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#define GLU_INTERIOR                         100122
741cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#define GLU_EXTERIOR                         100123
751cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#define GLU_UNKNOWN                          100124
761cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger
771cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger/* TessProperty */
781cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#define GLU_TESS_WINDING_RULE                100140
791cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#define GLU_TESS_BOUNDARY_ONLY               100141
801cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#define GLU_TESS_TOLERANCE                   100142
811cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger
821cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger/* TessError */
831cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#define GLU_TESS_ERROR1                      100151
841cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#define GLU_TESS_ERROR2                      100152
851cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#define GLU_TESS_ERROR3                      100153
861cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#define GLU_TESS_ERROR4                      100154
871cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#define GLU_TESS_ERROR5                      100155
881cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#define GLU_TESS_ERROR6                      100156
891cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#define GLU_TESS_ERROR7                      100157
901cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#define GLU_TESS_ERROR8                      100158
911cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#define GLU_TESS_MISSING_BEGIN_POLYGON       100151
921cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#define GLU_TESS_MISSING_BEGIN_CONTOUR       100152
931cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#define GLU_TESS_MISSING_END_POLYGON         100153
941cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#define GLU_TESS_MISSING_END_CONTOUR         100154
951cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#define GLU_TESS_COORD_TOO_LARGE             100155
961cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#define GLU_TESS_NEED_COMBINE_CALLBACK       100156
971cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger
981cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger/* TessWinding */
991cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#define GLU_TESS_WINDING_ODD                 100130
1001cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#define GLU_TESS_WINDING_NONZERO             100131
1011cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#define GLU_TESS_WINDING_POSITIVE            100132
1021cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#define GLU_TESS_WINDING_NEGATIVE            100133
1031cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#define GLU_TESS_WINDING_ABS_GEQ_TWO         100134
1041cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger
1051cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#define GLU_TESS_MAX_COORD 1.0e150
1061cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger
1071cab2921ab279367f8206cdadc9259d12e603548Derek Sollenbergertypedef struct GLUtesselator GLUtesselator;
1081cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger
1091cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#ifdef __cplusplus
1101cab2921ab279367f8206cdadc9259d12e603548Derek Sollenbergerextern "C" {
1111cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#endif
1121cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger
1131cab2921ab279367f8206cdadc9259d12e603548Derek Sollenbergerextern GLUtesselator * GLAPIENTRY Sk_gluNewTess(void);
1141cab2921ab279367f8206cdadc9259d12e603548Derek Sollenbergerextern void GLAPIENTRY Sk_gluDeleteTess(GLUtesselator *tess);
1151cab2921ab279367f8206cdadc9259d12e603548Derek Sollenbergerextern void GLAPIENTRY Sk_gluTessProperty(GLUtesselator *tess,
1161cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger                                                GLenum which,
1171cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger                                                GLdouble value);
1181cab2921ab279367f8206cdadc9259d12e603548Derek Sollenbergerextern void GLAPIENTRY Sk_gluGetTessProperty(GLUtesselator *tess,
1191cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger                                                   GLenum which,
1201cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger                                                   GLdouble *value);
1211cab2921ab279367f8206cdadc9259d12e603548Derek Sollenbergerextern void GLAPIENTRY Sk_gluTessNormal(GLUtesselator *tess,
1221cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger                                              GLdouble x,
1231cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger                                              GLdouble y,
1241cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger                                              GLdouble z);
1251cab2921ab279367f8206cdadc9259d12e603548Derek Sollenbergerextern void GLAPIENTRY Sk_gluTessCallback(GLUtesselator *tess,
1261cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger                                                GLenum which,
1271cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger                                                void (GLAPIENTRY *fn)());
1281cab2921ab279367f8206cdadc9259d12e603548Derek Sollenbergerextern void GLAPIENTRY Sk_gluTessVertex(GLUtesselator *tess,
1291cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger                                              GLdouble coords[3],
1301cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger                                              void *data);
1311cab2921ab279367f8206cdadc9259d12e603548Derek Sollenbergerextern void GLAPIENTRY Sk_gluTessBeginPolygon(GLUtesselator *tess,
1321cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger                                                    void *data);
1331cab2921ab279367f8206cdadc9259d12e603548Derek Sollenbergerextern void GLAPIENTRY Sk_gluTessBeginContour(GLUtesselator *tess);
1341cab2921ab279367f8206cdadc9259d12e603548Derek Sollenbergerextern void GLAPIENTRY Sk_gluTessEndContour(GLUtesselator *tess);
1351cab2921ab279367f8206cdadc9259d12e603548Derek Sollenbergerextern void GLAPIENTRY Sk_gluTessEndPolygon(GLUtesselator *tess);
1361cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger
1371cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#ifdef __cplusplus
1381cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger}
1391cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#endif
1401cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger
1411cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#endif  // SK_GLU_H_
142