Split out the GLU into seperate files to keep windows happy.
[cl-glfw/dh.git] / lib / glu.lisp
blob1be1dfe5f9667df987c1ca6e8922e3d60b94454c
1 (defpackage #:openglu
2 (:use #:cffi #:cl)
3 (:nicknames #:glu)
4 (:export +ext-object-space-tess+ +ext-nurbs-tessellator+ +false+ +true+ +version-1-1+ +version-1-2+ +version-1-3+ +version+ +extensions+ +invalid-enum+ +invalid-value+ +out-of-memory+ +incompatible-gl-version+ +invalid-operation+ +outline-polygon+ +outline-patch+ +nurbs-error+ +error+ +nurbs-begin+ +nurbs-begin-ext+ +nurbs-vertex+ +nurbs-vertex-ext+ +nurbs-normal+ +nurbs-normal-ext+ +nurbs-color+ +nurbs-color-ext+ +nurbs-texture-coord+ +nurbs-tex-coord-ext+ +nurbs-end+ +nurbs-end-ext+ +nurbs-begin-data+ +nurbs-begin-data-ext+ +nurbs-vertex-data+ +nurbs-vertex-data-ext+ +nurbs-normal-data+ +nurbs-normal-data-ext+ +nurbs-color-data+ +nurbs-color-data-ext+ +nurbs-texture-coord-data+ +nurbs-tex-coord-data-ext+ +nurbs-end-data+ +nurbs-end-data-ext+ +nurbs-error-1+ +nurbs-error-2+ +nurbs-error-3+ +nurbs-error-4+ +nurbs-error-5+ +nurbs-error-6+ +nurbs-error-7+ +nurbs-error-8+ +nurbs-error-9+ +nurbs-error-10+ +nurbs-error-11+ +nurbs-error-12+ +nurbs-error-13+ +nurbs-error-14+ +nurbs-error-15+ +nurbs-error-16+ +nurbs-error-17+ +nurbs-error-18+ +nurbs-error-19+ +nurbs-error-20+ +nurbs-error-21+ +nurbs-error-22+ +nurbs-error-23+ +nurbs-error-24+ +nurbs-error-25+ +nurbs-error-26+ +nurbs-error-27+ +nurbs-error-28+ +nurbs-error-29+ +nurbs-error-30+ +nurbs-error-31+ +nurbs-error-32+ +nurbs-error-33+ +nurbs-error-34+ +nurbs-error-35+ +nurbs-error-36+ +nurbs-error-37+ +auto-load-matrix+ +culling+ +sampling-tolerance+ +display-mode+ +parametric-tolerance+ +sampling-method+ +u-step+ +v-step+ +nurbs-mode+ +nurbs-mode-ext+ +nurbs-tessellator+ +nurbs-tessellator-ext+ +nurbs-renderer+ +nurbs-renderer-ext+ +object-parametric-error+ +object-parametric-error-ext+ +object-path-length+ +object-path-length-ext+ +path-length+ +parametric-error+ +domain-distance+ +map-1-trim-2+ +map-1-trim-3+ +point+ +line+ +fill+ +silhouette+ +smooth+ +flat+ +none+ +outside+ +inside+ +tess-begin+ +begin+ +tess-vertex+ +vertex+ +tess-end+ +end+ +tess-error+ +tess-edge-flag+ +edge-flag+ +tess-combine+ +tess-begin-data+ +tess-vertex-data+ +tess-end-data+ +tess-error-data+ +tess-edge-flag-data+ +tess-combine-data+ +cw+ +ccw+ +interior+ +exterior+ +unknown+ +tess-winding-rule+ +tess-boundary-only+ +tess-tolerance+ +tess-error-1+ +tess-error-2+ +tess-error-3+ +tess-error-4+ +tess-error-5+ +tess-error-6+ +tess-error-7+ +tess-error-8+ +tess-missing-begin-polygon+ +tess-missing-begin-contour+ +tess-missing-end-polygon+ +tess-missing-end-contour+ +tess-coord-too-large+ +tess-need-combine-callback+ +tess-winding-odd+ +tess-winding-nonzero+ +tess-winding-positive+ +tess-winding-negative+ +tess-winding-abs-geq-two+ +tess-max-coord+ begin-curve begin-polygon begin-surface begin-trim build-1d-mipmap-levels build-1d-mipmaps build-2d-mipmap-levels build-2d-mipmaps build-3d-mipmap-levels build-3d-mipmaps check-extension cylinder delete-nurbs-renderer delete-quadric delete-tess disk end-curve end-polygon end-surface end-trim error-string get-nurbs-property get-string get-tess-property load-sampling-matrices look-at new-nurbs-renderer new-quadric new-tess next-contour nurbs-callback nurbs-callback-data nurbs-callback-dataext nurbs-curve nurbs-property nurbs-surface ortho-2d partial-disk perspective pick-matrix project pwl-curve quadric-callback quadric-draw-style quadric-normals quadric-orientation quadric-texture scale-image sphere tess-begin-contour tess-begin-polygon tess-callback tess-end-contour tess-end-polygon tess-normal tess-property tess-vertex un-project un-project-4))
6 (in-package #:glu)
8 (ignore-errors
9 (load-foreign-library '(:or "glu32.dll"
10 (:default "libGLU")
11 (:default "openglu")
12 (:default "GLU")
13 (:default "glu")
14 (:default "openglu32")
15 (:default "glu32"))))
16 ;; Extensions
17 (defconstant +ext-object-space-tess+ 1)
18 (defconstant +ext-nurbs-tessellator+ 1)
19 ;; Boolean
20 (defconstant +false+ 0)
21 (defconstant +true+ 1)
22 ;; Version
23 (defconstant +version-1-1+ 1)
24 (defconstant +version-1-2+ 1)
25 (defconstant +version-1-3+ 1)
26 ;; StringName
27 (defconstant +version+ 100800)
28 (defconstant +extensions+ 100801)
29 ;; ErrorCode
30 (defconstant +invalid-enum+ 100900)
31 (defconstant +invalid-value+ 100901)
32 (defconstant +out-of-memory+ 100902)
33 (defconstant +incompatible-gl-version+ 100903)
34 (defconstant +invalid-operation+ 100904)
35 ;; NurbsDisplay
36 ;; GLU_FILL
37 (defconstant +outline-polygon+ 100240)
38 (defconstant +outline-patch+ 100241)
39 ;; NurbsCallback
40 (defconstant +nurbs-error+ 100103)
41 (defconstant +error+ 100103)
42 (defconstant +nurbs-begin+ 100164)
43 (defconstant +nurbs-begin-ext+ 100164)
44 (defconstant +nurbs-vertex+ 100165)
45 (defconstant +nurbs-vertex-ext+ 100165)
46 (defconstant +nurbs-normal+ 100166)
47 (defconstant +nurbs-normal-ext+ 100166)
48 (defconstant +nurbs-color+ 100167)
49 (defconstant +nurbs-color-ext+ 100167)
50 (defconstant +nurbs-texture-coord+ 100168)
51 (defconstant +nurbs-tex-coord-ext+ 100168)
52 (defconstant +nurbs-end+ 100169)
53 (defconstant +nurbs-end-ext+ 100169)
54 (defconstant +nurbs-begin-data+ 100170)
55 (defconstant +nurbs-begin-data-ext+ 100170)
56 (defconstant +nurbs-vertex-data+ 100171)
57 (defconstant +nurbs-vertex-data-ext+ 100171)
58 (defconstant +nurbs-normal-data+ 100172)
59 (defconstant +nurbs-normal-data-ext+ 100172)
60 (defconstant +nurbs-color-data+ 100173)
61 (defconstant +nurbs-color-data-ext+ 100173)
62 (defconstant +nurbs-texture-coord-data+ 100174)
63 (defconstant +nurbs-tex-coord-data-ext+ 100174)
64 (defconstant +nurbs-end-data+ 100175)
65 (defconstant +nurbs-end-data-ext+ 100175)
66 ;; NurbsError
67 (defconstant +nurbs-error-1+ 100251)
68 (defconstant +nurbs-error-2+ 100252)
69 (defconstant +nurbs-error-3+ 100253)
70 (defconstant +nurbs-error-4+ 100254)
71 (defconstant +nurbs-error-5+ 100255)
72 (defconstant +nurbs-error-6+ 100256)
73 (defconstant +nurbs-error-7+ 100257)
74 (defconstant +nurbs-error-8+ 100258)
75 (defconstant +nurbs-error-9+ 100259)
76 (defconstant +nurbs-error-10+ 100260)
77 (defconstant +nurbs-error-11+ 100261)
78 (defconstant +nurbs-error-12+ 100262)
79 (defconstant +nurbs-error-13+ 100263)
80 (defconstant +nurbs-error-14+ 100264)
81 (defconstant +nurbs-error-15+ 100265)
82 (defconstant +nurbs-error-16+ 100266)
83 (defconstant +nurbs-error-17+ 100267)
84 (defconstant +nurbs-error-18+ 100268)
85 (defconstant +nurbs-error-19+ 100269)
86 (defconstant +nurbs-error-20+ 100270)
87 (defconstant +nurbs-error-21+ 100271)
88 (defconstant +nurbs-error-22+ 100272)
89 (defconstant +nurbs-error-23+ 100273)
90 (defconstant +nurbs-error-24+ 100274)
91 (defconstant +nurbs-error-25+ 100275)
92 (defconstant +nurbs-error-26+ 100276)
93 (defconstant +nurbs-error-27+ 100277)
94 (defconstant +nurbs-error-28+ 100278)
95 (defconstant +nurbs-error-29+ 100279)
96 (defconstant +nurbs-error-30+ 100280)
97 (defconstant +nurbs-error-31+ 100281)
98 (defconstant +nurbs-error-32+ 100282)
99 (defconstant +nurbs-error-33+ 100283)
100 (defconstant +nurbs-error-34+ 100284)
101 (defconstant +nurbs-error-35+ 100285)
102 (defconstant +nurbs-error-36+ 100286)
103 (defconstant +nurbs-error-37+ 100287)
104 ;; NurbsProperty
105 (defconstant +auto-load-matrix+ 100200)
106 (defconstant +culling+ 100201)
107 (defconstant +sampling-tolerance+ 100203)
108 (defconstant +display-mode+ 100204)
109 (defconstant +parametric-tolerance+ 100202)
110 (defconstant +sampling-method+ 100205)
111 (defconstant +u-step+ 100206)
112 (defconstant +v-step+ 100207)
113 (defconstant +nurbs-mode+ 100160)
114 (defconstant +nurbs-mode-ext+ 100160)
115 (defconstant +nurbs-tessellator+ 100161)
116 (defconstant +nurbs-tessellator-ext+ 100161)
117 (defconstant +nurbs-renderer+ 100162)
118 (defconstant +nurbs-renderer-ext+ 100162)
119 ;; NurbsSampling
120 (defconstant +object-parametric-error+ 100208)
121 (defconstant +object-parametric-error-ext+ 100208)
122 (defconstant +object-path-length+ 100209)
123 (defconstant +object-path-length-ext+ 100209)
124 (defconstant +path-length+ 100215)
125 (defconstant +parametric-error+ 100216)
126 (defconstant +domain-distance+ 100217)
127 ;; NurbsTrim
128 (defconstant +map-1-trim-2+ 100210)
129 (defconstant +map-1-trim-3+ 100211)
130 ;; QuadricDrawStyle
131 (defconstant +point+ 100010)
132 (defconstant +line+ 100011)
133 (defconstant +fill+ 100012)
134 (defconstant +silhouette+ 100013)
135 ;; QuadricCallback
136 ;; GLU_ERROR
137 ;; QuadricNormal
138 (defconstant +smooth+ 100000)
139 (defconstant +flat+ 100001)
140 (defconstant +none+ 100002)
141 ;; QuadricOrientation
142 (defconstant +outside+ 100020)
143 (defconstant +inside+ 100021)
144 ;; TessCallback
145 (defconstant +tess-begin+ 100100)
146 (defconstant +begin+ 100100)
147 (defconstant +tess-vertex+ 100101)
148 (defconstant +vertex+ 100101)
149 (defconstant +tess-end+ 100102)
150 (defconstant +end+ 100102)
151 (defconstant +tess-error+ 100103)
152 (defconstant +tess-edge-flag+ 100104)
153 (defconstant +edge-flag+ 100104)
154 (defconstant +tess-combine+ 100105)
155 (defconstant +tess-begin-data+ 100106)
156 (defconstant +tess-vertex-data+ 100107)
157 (defconstant +tess-end-data+ 100108)
158 (defconstant +tess-error-data+ 100109)
159 (defconstant +tess-edge-flag-data+ 100110)
160 (defconstant +tess-combine-data+ 100111)
161 ;; TessContour
162 (defconstant +cw+ 100120)
163 (defconstant +ccw+ 100121)
164 (defconstant +interior+ 100122)
165 (defconstant +exterior+ 100123)
166 (defconstant +unknown+ 100124)
167 ;; TessProperty
168 (defconstant +tess-winding-rule+ 100140)
169 (defconstant +tess-boundary-only+ 100141)
170 (defconstant +tess-tolerance+ 100142)
171 ;; TessError
172 (defconstant +tess-error-1+ 100151)
173 (defconstant +tess-error-2+ 100152)
174 (defconstant +tess-error-3+ 100153)
175 (defconstant +tess-error-4+ 100154)
176 (defconstant +tess-error-5+ 100155)
177 (defconstant +tess-error-6+ 100156)
178 (defconstant +tess-error-7+ 100157)
179 (defconstant +tess-error-8+ 100158)
180 (defconstant +tess-missing-begin-polygon+ 100151)
181 (defconstant +tess-missing-begin-contour+ 100152)
182 (defconstant +tess-missing-end-polygon+ 100153)
183 (defconstant +tess-missing-end-contour+ 100154)
184 (defconstant +tess-coord-too-large+ 100155)
185 (defconstant +tess-need-combine-callback+ 100156)
186 ;; TessWinding
187 (defconstant +tess-winding-odd+ 100130)
188 (defconstant +tess-winding-nonzero+ 100131)
189 (defconstant +tess-winding-positive+ 100132)
190 (defconstant +tess-winding-negative+ 100133)
191 (defconstant +tess-winding-abs-geq-two+ 100134)
192 ;; ***********************************************************
193 (defconstant +tess-max-coord+ 1.0d150)
195 (defcfun ("gluBeginCurve" begin-curve) :void (nurb :pointer))
196 (defcfun ("gluBeginSurface" begin-surface) :void (nurb :pointer))
197 (defcfun ("gluBeginTrim" begin-trim) :void (nurb :pointer))
198 (defcfun ("gluBuild1DMipmaps" build-1d-mipmaps) gl:int (target gl:enum) (internalFormat gl:int) (width gl:sizei) (format gl:enum) (type gl:enum) (data :pointer))
199 (defcfun ("gluBuild2DMipmaps" build-2d-mipmaps) gl:int (target gl:enum) (internalFormat gl:int) (width gl:sizei) (height gl:sizei) (format gl:enum) (type gl:enum) (data :pointer))
200 (defcfun ("gluCylinder" cylinder) :void (quad :pointer) (base gl:double) (top gl:double) (height gl:double) (slices gl:int) (stacks gl:int))
201 (defcfun ("gluDeleteNurbsRenderer" delete-nurbs-renderer) :void (nurb :pointer))
202 (defcfun ("gluDeleteQuadric" delete-quadric) :void (quad :pointer))
203 (defcfun ("gluDisk" disk) :void (quad :pointer) (inner gl:double) (outer gl:double) (slices gl:int) (loops gl:int))
204 (defcfun ("gluEndCurve" end-curve) :void (nurb :pointer))
205 (defcfun ("gluEndSurface" end-surface) :void (nurb :pointer))
206 (defcfun ("gluEndTrim" end-trim) :void (nurb :pointer))
207 (defcfun ("gluErrorString" error-string) :pointer (error gl:enum))
208 (defcfun ("gluGetNurbsProperty" get-nurbs-property) :void (nurb :pointer) (property gl:enum) (data :pointer))
209 (defcfun ("gluLoadSamplingMatrices" load-sampling-matrices) :void (nurb :pointer) (model :pointer) (perspective :pointer) (view :pointer))
210 (defcfun ("gluLookAt" look-at) :void (eyeX gl:double) (eyeY gl:double) (eyeZ gl:double) (centerX gl:double) (centerY gl:double) (centerZ gl:double) (upX gl:double) (upY gl:double) (upZ gl:double))
211 (defcfun ("gluNewNurbsRenderer" new-nurbs-renderer) :pointer )
212 (defcfun ("gluNewQuadric" new-quadric) :pointer )
213 (defcfun ("gluNurbsCurve" nurbs-curve) :void (nurb :pointer) (knotCount gl:int) (knots :pointer) (stride gl:int) (control :pointer) (order gl:int) (type gl:enum))
214 (defcfun ("gluNurbsProperty" nurbs-property) :void (nurb :pointer) (property gl:enum) (value gl:float))
215 (defcfun ("gluNurbsSurface" nurbs-surface) :void (nurb :pointer) (sKnotCount gl:int) (sKnots :pointer) (tKnotCount gl:int) (tKnots :pointer) (sStride gl:int) (tStride gl:int) (control :pointer) (sOrder gl:int) (tOrder gl:int) (type gl:enum))
216 (defcfun ("gluOrtho2D" ortho-2d) :void (left gl:double) (right gl:double) (bottom gl:double) (top gl:double))
217 (defcfun ("gluPartialDisk" partial-disk) :void (quad :pointer) (inner gl:double) (outer gl:double) (slices gl:int) (loops gl:int) (start gl:double) (sweep gl:double))
218 (defcfun ("gluPerspective" perspective) :void (fovy gl:double) (aspect gl:double) (zNear gl:double) (zFar gl:double))
219 (defcfun ("gluPickMatrix" pick-matrix) :void (x gl:double) (y gl:double) (delX gl:double) (delY gl:double) (viewport :pointer))
220 (defcfun ("gluProject" project) gl:int (objX gl:double) (objY gl:double) (objZ gl:double) (model :pointer) (proj :pointer) (view :pointer) (winX :pointer) (winY :pointer) (winZ :pointer))
221 (defcfun ("gluPwlCurve" pwl-curve) :void (nurb :pointer) (count gl:int) (data :pointer) (stride gl:int) (type gl:enum))
222 (defcfun ("gluQuadricCallback" quadric-callback) :void (quad :pointer) (which gl:enum) (CallBackFunc :pointer))
223 (defcfun ("gluQuadricDrawStyle" quadric-draw-style) :void (quad :pointer) (draw gl:enum))
224 (defcfun ("gluQuadricNormals" quadric-normals) :void (quad :pointer) (normal gl:enum))
225 (defcfun ("gluQuadricOrientation" quadric-orientation) :void (quad :pointer) (orientation gl:enum))
226 (defcfun ("gluQuadricTexture" quadric-texture) :void (quad :pointer) (texture gl:boolean))
227 (defcfun ("gluSphere" sphere) :void (quad :pointer) (radius gl:double) (slices gl:int) (stacks gl:int))
228 (defcfun ("gluUnProject" un-project) gl:int (winX gl:double) (winY gl:double) (winZ gl:double) (model :pointer) (proj :pointer) (view :pointer) (objX :pointer) (objY :pointer) (objZ :pointer))