glu.def 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242
  1. # This is the definition file for all GLU stuff
  2. %COPY_INTERFACE
  3. // ===================================================================
  4. // GLU consts, types and functions
  5. // ===================================================================
  6. const
  7. GLU_TRUE = GL_TRUE;
  8. GLU_FALSE = GL_FALSE;
  9. // Normal vectors
  10. GLU_SMOOTH = 100000;
  11. GLU_FLAT = 100001;
  12. GLU_NONE = 100002;
  13. // Quadric draw styles
  14. GLU_POINT = 100010;
  15. GLU_LINE = 100011;
  16. GLU_FILL = 100012;
  17. GLU_SILHOUETTE = 100013;
  18. // Quadric orientation
  19. GLU_OUTSIDE = 100020;
  20. GLU_INSIDE = 100021;
  21. // Tesselator
  22. GLU_TESS_BEGIN = 100100;
  23. GLU_TESS_VERTEX = 100101;
  24. GLU_TESS_END = 100102;
  25. GLU_TESS_ERROR = 100103;
  26. GLU_TESS_EDGE_FLAG = 100104;
  27. GLU_TESS_COMBINE = 100105;
  28. GLU_TESS_BEGIN_DATA = 100106;
  29. GLU_TESS_VERTEX_DATA = 100107;
  30. GLU_TESS_END_DATA = 100108;
  31. GLU_TESS_ERROR_DATA = 100109;
  32. GLU_TESS_EDGE_FLAG_DATA = 100110;
  33. GLU_TESS_COMBINE_DATA = 100111;
  34. // Winding rules
  35. GLU_TESS_WINDING_ODD = 100130;
  36. GLU_TESS_WINDING_NONZERO = 100131;
  37. GLU_TESS_WINDING_POSITIVE = 100132;
  38. GLU_TESS_WINDING_NEGATIVE = 100133;
  39. GLU_TESS_WINDING_ABS_GEQ_TWO = 100134;
  40. // Tessellation properties
  41. GLU_TESS_WINDING_RULE = 100140;
  42. GLU_TESS_BOUNDARY_ONLY = 100141;
  43. GLU_TESS_TOLERANCE = 100142;
  44. // Tessellation errors
  45. GLU_TESS_ERROR1 = 100151; // Missing gluBeginPolygon
  46. GLU_TESS_ERROR2 = 100152; // Missing gluBeginContour
  47. GLU_TESS_ERROR3 = 100153; // Missing gluEndPolygon
  48. GLU_TESS_ERROR4 = 100154; // Missing gluEndContour
  49. GLU_TESS_ERROR5 = 100155;
  50. GLU_TESS_ERROR6 = 100156;
  51. GLU_TESS_ERROR7 = 100157;
  52. GLU_TESS_ERROR8 = 100158;
  53. // NURBS
  54. GLU_AUTO_LOAD_MATRIX = 100200;
  55. GLU_CULLING = 100201;
  56. GLU_PARAMETRIC_TOLERANCE = 100202;
  57. GLU_SAMPLING_TOLERANCE = 100203;
  58. GLU_DISPLAY_MODE = 100204;
  59. GLU_SAMPLING_METHOD = 100205;
  60. GLU_U_STEP = 100206;
  61. GLU_V_STEP = 100207;
  62. GLU_PATH_LENGTH = 100215;
  63. GLU_PARAMETRIC_ERROR = 100216;
  64. GLU_DOMAIN_DISTANCE = 100217;
  65. GLU_MAP1_TRIM_2 = 100210;
  66. GLU_MAP1_TRIM_3 = 100211;
  67. GLU_OUTLINE_POLYGON = 100240;
  68. GLU_OUTLINE_PATCH = 100241;
  69. GLU_NURBS_ERROR1 = 100251; // spline order un-supported
  70. GLU_NURBS_ERROR2 = 100252; // too few knots
  71. GLU_NURBS_ERROR3 = 100253; // valid knot range is empty
  72. GLU_NURBS_ERROR4 = 100254; // decreasing knot sequence
  73. GLU_NURBS_ERROR5 = 100255; // knot multiplicity > spline order
  74. GLU_NURBS_ERROR6 = 100256; // endcurve() must follow bgncurve()
  75. GLU_NURBS_ERROR7 = 100257; // bgncurve() must precede endcurve()
  76. GLU_NURBS_ERROR8 = 100258; // ctrlarray or knot vector is NULL
  77. GLU_NURBS_ERROR9 = 100259; // cannot draw pwlcurves
  78. GLU_NURBS_ERROR10 = 100260; // missing gluNurbsCurve()
  79. GLU_NURBS_ERROR11 = 100261; // missing gluNurbsSurface()
  80. GLU_NURBS_ERROR12 = 100262; // endtrim() must precede endsurface()
  81. GLU_NURBS_ERROR13 = 100263; // bgnsurface() must precede endsurface()
  82. GLU_NURBS_ERROR14 = 100264; // curve of improper type passed as trim curve
  83. GLU_NURBS_ERROR15 = 100265; // bgnsurface() must precede bgntrim()
  84. GLU_NURBS_ERROR16 = 100266; // endtrim() must follow bgntrim()
  85. GLU_NURBS_ERROR17 = 100267; // bgntrim() must precede endtrim()*/
  86. GLU_NURBS_ERROR18 = 100268; // invalid or missing trim curve*/
  87. GLU_NURBS_ERROR19 = 100269; // bgntrim() must precede pwlcurve()
  88. GLU_NURBS_ERROR20 = 100270; // pwlcurve referenced twice*/
  89. GLU_NURBS_ERROR21 = 100271; // pwlcurve and nurbscurve mixed
  90. GLU_NURBS_ERROR22 = 100272; // improper usage of trim data type
  91. GLU_NURBS_ERROR23 = 100273; // nurbscurve referenced twice
  92. GLU_NURBS_ERROR24 = 100274; // nurbscurve and pwlcurve mixed
  93. GLU_NURBS_ERROR25 = 100275; // nurbssurface referenced twice
  94. GLU_NURBS_ERROR26 = 100276; // invalid property
  95. GLU_NURBS_ERROR27 = 100277; // endsurface() must follow bgnsurface()
  96. GLU_NURBS_ERROR28 = 100278; // intersecting or misoriented trim curves
  97. GLU_NURBS_ERROR29 = 100279; // intersecting trim curves
  98. GLU_NURBS_ERROR30 = 100280; // UNUSED
  99. GLU_NURBS_ERROR31 = 100281; // unconnected trim curves
  100. GLU_NURBS_ERROR32 = 100282; // unknown knot error
  101. GLU_NURBS_ERROR33 = 100283; // negative vertex count encountered
  102. GLU_NURBS_ERROR34 = 100284; // negative byte-stride
  103. GLU_NURBS_ERROR35 = 100285; // unknown type descriptor
  104. GLU_NURBS_ERROR36 = 100286; // null control point reference
  105. GLU_NURBS_ERROR37 = 100287; // duplicate point on pwlcurve
  106. // Errors
  107. GLU_INVALID_ENUM = 100900;
  108. GLU_INVALID_VALUE = 100901;
  109. GLU_OUT_OF_MEMORY = 100902;
  110. GLU_INCOMPATIBLE_GL_VERSION = 100903;
  111. // New in GLU 1.1
  112. GLU_VERSION = 100800;
  113. GLU_EXTENSIONS = 100801;
  114. // === GLU 1.0 tessellation - obsolete! ===
  115. // Contour types
  116. GLU_CW = 100120;
  117. GLU_CCW = 100121;
  118. GLU_INTERIOR = 100122;
  119. GLU_EXTERIOR = 100123;
  120. GLU_UNKNOWN = 100124;
  121. // Tessellator
  122. GLU_BEGIN = GLU_TESS_BEGIN;
  123. GLU_VERTEX = GLU_TESS_VERTEX;
  124. GLU_END = GLU_TESS_END;
  125. GLU_ERROR = GLU_TESS_ERROR;
  126. GLU_EDGE_FLAG = GLU_TESS_EDGE_FLAG;
  127. type
  128. PGLUquadricObj = ^TGLUquadricObj;
  129. TGLUquadricObj = record end;
  130. PGLUnurbsObj = ^TGLUnurbsObj;
  131. TGLUnurbsObj = record end;
  132. PGLUtesselator = ^TGLUtesselator;
  133. TGLUtesselator = record end;
  134. PGLUtriangulatorObj = PGLUtesselator;
  135. // Callback function declarations
  136. TGLUQuadricCallback = procedure; cdecl;
  137. TGLUNurbsCallback = procedure; cdecl;
  138. TGLUTessCallback = procedure; cdecl;
  139. // We need some private array types
  140. TGLUViewport = array[0..3] of LongInt;
  141. TGLUMatrixd = array[0..15] of GLdouble;
  142. TGLUMatrixf = array[0..15] of GLfloat;
  143. TGLUVectord = array[0..2] of GLdouble;
  144. var
  145. %END
  146. #=====================================================================
  147. # Procedures and functions
  148. #=====================================================================
  149. %PROCS
  150. // Miscellaneous functions
  151. gluLookAt: procedure(eye, eyey, eyez, centerx, centery, centerz, upx, upy, upz: GLdouble);
  152. gluOrtho2D: procedure(left, right, bottom, top: GLdouble);
  153. gluPerspective: procedure(fovy, aspect, zNear, zFar: GLdouble);
  154. gluPickMatrix: procedure(x, y, width, height: GLdouble; const viewport: TGLUViewport);
  155. gluProject: function(objx, objy, objz: GLdouble; const modelMatrix, projMatrix: TGLUMatrixd; const viewport: TGLUViewport; var winx, winy, winz: GLdouble): LongInt;
  156. gluUnProject: function(winx, winy, winz: GLdouble; const modelMatrix, projMatrix: TGLUMatrixd; const viewport: TGLUViewport; var objx, objy, objz: GLdouble): LongInt;
  157. gluErrorString: function(errorCode: GLenum): PChar;
  158. // Mipmapping and image scaling
  159. gluScaleImage: procedure(format: GLenum; within, heightin: LongInt; typein: GLenum; const datain; widthout, heightout: LongInt; typeout: GLenum; var dataout);
  160. gluBuild1DMipmaps: procedure(target: GLenum; components, width: LongInt; format, AType: GLEnum; const data);
  161. gluBuild2DMipmaps: procedure(target: GLenum; components, width, height: LongInt; format, AType: GLEnum; const data);
  162. // Quadrics
  163. gluNewQuadric: function: PGLUquadricObj;
  164. gluDeleteQuadric: procedure(state: PGLUquadricObj);
  165. gluQuadricDrawStyle: procedure(quadObject: PGLUquadricObj; drawStyle: GLenum);
  166. gluQuadricOrientation: procedure(quadObject: PGLUquadricObj; orientation: GLenum);
  167. gluQuadricNormals: procedure(quadObject: PGLUquadricObj; normals: GLenum);
  168. gluQuadricTexture: procedure(quadObject: PGLUquadricObj; textureCoords: Boolean);
  169. gluQuadricCallback: procedure(quadObject: PGLUquadricObj; which: GLenum; fn: TGLUQuadricCallback);
  170. gluCylinder: procedure(qobj: PGLUquadricObj; baseRadius, topRadius, height: GLdouble; slices, stacks: LongInt);
  171. gluSphere: procedure(qobj: PGLUquadricObj; radius: GLdouble; slices, stacks: LongInt);
  172. gluDisk: procedure(qobj: PGLUquadricObj; innerRadius, outerRadius: GLdouble; slices, loops: LongInt);
  173. gluPartialDisk: procedure(qobj: PGLUquadricObj; innerRadius, outerRadius: GLdouble; slices, loops: LongInt; startAngle, sweepAngle: GLdouble);
  174. // Nurbs
  175. gluNewNurbsRenderer: function: PGLUnurbsObj;
  176. gluDeleteNurbsRenderer: procedure(nobj: PGLUnurbsObj);
  177. gluLoadSamplingMatrices: procedure(nobj: PGLUnurbsObj; const modelMatrix, projMatrix: TGLUMatrixf; const viewport: TGLUViewport);
  178. gluNurbsProperty: procedure(nobj: PGLUnurbsObj; AProperty: GLenum; value: GLfloat);
  179. gluGetNurbsProperty: procedure(nobj: PGLUnurbsObj; AProperty: GLEnum; var value: GLfloat);
  180. gluBeginCurve: procedure(nobj: PGLUnurbsObj);
  181. gluEndCurve: procedure(nobj: PGLUnurbsObj);
  182. gluNurbsCurve: procedure(nobj: PGLUnurbsObj; nknots: LongInt; var know: GLfloat; stride: LongInt; var ctlarray: GLfloat; order: LongInt; AType: GLenum);
  183. gluBeginSurface: procedure(nobj: PGLUnurbsObj);
  184. gluEndSurface: procedure(nobj: PGLUnurbsObj);
  185. gluNurbsSurface: procedure(nobj: PGLUnurbsObj; sknot_count: LongInt; var sknot: GLfloat; tknot_count: LongInt; var tknot: GLfloat; s_stride, t_stride: LongInt; var ctlarray: GLfloat; sorder, torder: LongInt; AType: GLenum);
  186. gluBeginTrim: procedure(nobj: PGLUnurbsObj);
  187. gluEndTrim: procedure(nobj: PGLUnurbsObj);
  188. gluPwlCurve: procedure(nobj: PGLUnurbsObj; count: LongInt; var AArray: GLfloat; stride: LongInt; AType: GLenum);
  189. gluNurbsCallback: procedure(nobj: PGLUnurbsObj; which: GLenum; fn: TGLUNurbsCallback);
  190. // Polygon tesselation
  191. gluNewTess: function: PGLUtesselator;
  192. gluDeleteTess: procedure(tobj: PGLUtesselator);
  193. gluTessBeginPolygon: procedure(tobj: PGLUtesselator; var polygon_data);
  194. gluTessBeginContour: procedure(tobj: PGLUtesselator);
  195. gluTessVertex: procedure(tobj: PGLUtesselator; v: TGLUVectord; var data);
  196. gluTessEndContour: procedure(tobj: PGLUtesselator);
  197. gluTessEndPolygon: procedure(tobj: PGLUtesselator);
  198. gluTessProperty: procedure(tobj: PGLUtesselator; which: GLenum; value: GLdouble);
  199. gluTessNormal: procedure(tobj: PGLUtesselator; x, y, z: GLdouble);
  200. gluTessCallback: procedure(tobj: PGLUtesselator; which: GLenum; fn: TGLUTessCallback);
  201. gluGetTessProperty: procedure(tobj: PGLUtesselator; which: GLenum; var value: GLdouble);
  202. // Obsolete 1.0 tessellation functions
  203. gluBeginPolygon: procedure(tobj: PGLUtesselator);
  204. gluNextContour: procedure(tobj: PGLUtesselator; AType: GLenum);
  205. gluEndPolygon: procedure(tobj: PGLUtesselator);
  206. // New functions in GLU 1.1
  207. gluGetString: function(name: GLenum): PChar;
  208. %END