glaux_w32d.tem 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504
  1. {
  2. $Id$
  3. Translation of the GLaux headers for FreePascal
  4. Version for static linking in Win32 environment by Alexander Stohr.
  5. Latest change: 1999-11-13
  6. Further information:
  7. GLaux is an outdated toolkit from SGI and later used by Microsoft.
  8. }
  9. {*++ BUILD Version: 0004 // Increment this if a change has global effects
  10. Copyright (c) 1985-95, Microsoft Corporation
  11. Module Name:
  12. glaux.h
  13. Abstract:
  14. Procedure declarations, constant definitions and macros for the OpenGL
  15. Auxiliary Library.
  16. --*}
  17. {*
  18. * (c) Copyright 1993, Silicon Graphics, Inc.
  19. * ALL RIGHTS RESERVED
  20. * Permission to use, copy, modify, and distribute this software for
  21. * any purpose and without fee is hereby granted, provided that the above
  22. * copyright notice appear in all copies and that both the copyright notice
  23. * and this permission notice appear in supporting documentation, and that
  24. * the name of Silicon Graphics, Inc. not be used in advertising
  25. * or publicity pertaining to distribution of the software without specific,
  26. * written prior permission.
  27. *
  28. * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS"
  29. * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE,
  30. * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR
  31. * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
  32. * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT,
  33. * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY
  34. * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION,
  35. * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF
  36. * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN
  37. * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON
  38. * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE
  39. * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE.
  40. *
  41. * US Government Users Restricted Rights
  42. * Use, duplication, or disclosure by the Government is subject to
  43. * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph
  44. * (c)(1)(ii) of the Rights in Technical Data and Computer Software
  45. * clause at DFARS 252.227-7013 and/or in similar or successor
  46. * clauses in the FAR or the DOD or NASA FAR Supplement.
  47. * Unpublished-- rights reserved under the copyright laws of the
  48. * United States. Contractor/manufacturer is Silicon Graphics,
  49. * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311.
  50. *
  51. * OpenGL(TM) is a trademark of Silicon Graphics, Inc.
  52. *}
  53. {$MODE delphi}
  54. {You have to enable Macros (compiler switch "-Sm") for compiling this unit!
  55. This is necessary for supporting different platforms with different calling
  56. conventions via a single unit.}
  57. {$define WINNT}
  58. {$define GLauximp}
  59. {x$define UNICODE}
  60. unit GLaux; { version which does statically linking }
  61. interface
  62. {$MACRO ON}
  63. {$IFDEF Win32}
  64. {$DEFINE glaux_dll := external 'Glauximp.dll'}
  65. {$DEFINE glaux_callback := cdecl}
  66. {$ELSE}
  67. {$MESSAGE Unsupported platform.}
  68. {$ENDIF}
  69. USES
  70. windows,
  71. GL;
  72. {
  73. #include <windows.h>
  74. #include <GL/glu.h>
  75. }
  76. TYPE
  77. LPCSTR = Pointer; { pointer on a zero terminated string }
  78. LPCWSTR = Pointer; { pointer on a zero terminated unicode string }
  79. {*
  80. ** ToolKit Window Types
  81. ** In the future, AUX_RGBA may be a combination of both RGB and ALPHA
  82. *}
  83. const
  84. AUX_RGB = 0;
  85. AUX_RGBA = AUX_RGB;
  86. AUX_INDEX = 1;
  87. AUX_SINGLE = 0;
  88. AUX_DOUBLE = 2;
  89. AUX_DIRECT = 0;
  90. AUX_INDIRECT = 4;
  91. AUX_ACCUM = 8;
  92. AUX_ALPHA = 16;
  93. AUX_DEPTH24 = 32; {* 24-bit depth buffer *}
  94. AUX_STENCIL = 64;
  95. AUX_AUX = 128;
  96. AUX_DEPTH16 = 256; {* 16-bit depth buffer *}
  97. AUX_FIXED_332_PAL = 512;
  98. AUX_DEPTH = AUX_DEPTH16; {* default is 16-bit depth buffer *}
  99. {*
  100. ** Window Masks
  101. *}
  102. { These have been macros and were converted to boolean funtions }
  103. FUNCTION AUX_WIND_IS_RGB (x : DWORD) : BOOLEAN;
  104. FUNCTION AUX_WIND_IS_INDEX (x : DWORD) : BOOLEAN;
  105. FUNCTION AUX_WIND_IS_SINGLE (x : DWORD) : BOOLEAN;
  106. FUNCTION AUX_WIND_IS_DOUBLE (x : DWORD) : BOOLEAN;
  107. FUNCTION AUX_WIND_IS_INDIRECT (x : DWORD) : BOOLEAN;
  108. FUNCTION AUX_WIND_IS_DIRECT (x : DWORD) : BOOLEAN;
  109. FUNCTION AUX_WIND_HAS_ACCUM (x : DWORD) : BOOLEAN;
  110. FUNCTION AUX_WIND_HAS_ALPHA (x : DWORD) : BOOLEAN;
  111. FUNCTION AUX_WIND_HAS_DEPTH (x : DWORD) : BOOLEAN;
  112. FUNCTION AUX_WIND_HAS_STENCIL (x : DWORD) : BOOLEAN;
  113. FUNCTION AUX_WIND_USES_FIXED_332_PAL(x : DWORD) : BOOLEAN;
  114. {*
  115. ** ToolKit Event Structure
  116. *}
  117. type
  118. AUX_EVENTREC = RECORD
  119. {BEGIN}
  120. event : GLint;
  121. data : ARRAY[0..3] OF GLint;
  122. END;
  123. {*
  124. ** ToolKit Event Types
  125. *}
  126. CONST
  127. AUX_EXPOSE = 1;
  128. AUX_CONFIG = 2;
  129. AUX_DRAW = 4;
  130. AUX_KEYEVENT = 8;
  131. AUX_MOUSEDOWN = 16;
  132. AUX_MOUSEUP = 32;
  133. AUX_MOUSELOC = 64;
  134. {*
  135. ** Toolkit Event Data Indices
  136. *}
  137. AUX_WINDOWX = 0;
  138. AUX_WINDOWY = 1;
  139. AUX_MOUSEX = 0;
  140. AUX_MOUSEY = 1;
  141. AUX_MOUSESTATUS = 3;
  142. AUX_KEY = 0;
  143. AUX_KEYSTATUS = 1;
  144. {*
  145. ** ToolKit Event Status Messages
  146. *}
  147. AUX_LEFTBUTTON = 1;
  148. AUX_RIGHTBUTTON = 2;
  149. AUX_MIDDLEBUTTON = 4;
  150. AUX_SHIFT = 1;
  151. AUX_CONTROL = 2;
  152. {*
  153. ** ToolKit Key Codes
  154. *}
  155. AUX_RETURN = #$0D;
  156. AUX_ESCAPE = #$1B;
  157. AUX_SPACE = #$20;
  158. AUX_LEFT = #$25;
  159. AUX_UP = #$26;
  160. AUX_RIGHT = #$27;
  161. AUX_DOWN = #$28;
  162. AUX_A = 'A';
  163. AUX_B = 'B';
  164. AUX_C = 'C';
  165. AUX_D = 'D';
  166. AUX_E = 'E';
  167. AUX_F = 'F';
  168. AUX_G = 'G';
  169. AUX_H = 'H';
  170. AUX_I = 'I';
  171. AUX_J = 'J';
  172. AUX_K = 'K';
  173. AUX_L = 'L';
  174. AUX_M = 'M';
  175. AUX_N = 'N';
  176. AUX_O = 'O';
  177. AUX_P = 'P';
  178. AUX_Q = 'Q';
  179. AUX_R = 'R';
  180. AUX_S = 'S';
  181. AUX_T = 'T';
  182. AUX_U = 'U';
  183. AUX_V = 'V';
  184. AUX_W = 'W';
  185. AUX_X = 'X';
  186. AUX_Y = 'Y';
  187. AUX_Z = 'Z';
  188. AUX_a_ = 'a';
  189. AUX_b_ = 'b';
  190. AUX_c_ = 'c';
  191. AUX_d_ = 'd';
  192. AUX_e_ = 'e';
  193. AUX_f_ = 'f';
  194. AUX_g_ = 'g';
  195. AUX_h_ = 'h';
  196. AUX_i_ = 'i';
  197. AUX_j_ = 'j';
  198. AUX_k_ = 'k';
  199. AUX_l_ = 'l';
  200. AUX_m_ = 'm';
  201. AUX_n_ = 'n';
  202. AUX_o_ = 'o';
  203. AUX_p_ = 'p';
  204. AUX_q_ = 'q';
  205. AUX_r_ = 'r';
  206. AUX_s_ = 's';
  207. AUX_t_ = 't';
  208. AUX_u_ = 'u';
  209. AUX_v_ = 'v';
  210. AUX_w_ = 'w';
  211. AUX_x_ = 'x';
  212. AUX_y_ = 'y';
  213. AUX_z_ = 'z';
  214. AUX_0 = '0';
  215. AUX_1 = '1';
  216. AUX_2 = '2';
  217. AUX_3 = '3';
  218. AUX_4 = '4';
  219. AUX_5 = '5';
  220. AUX_6 = '6';
  221. AUX_7 = '7';
  222. AUX_8 = '8';
  223. AUX_9 = '9';
  224. {*
  225. ** ToolKit Gets and Sets
  226. *}
  227. AUX_FD = 1; {* return fd (long) *}
  228. AUX_COLORMAP = 3; {* pass buf of r, g and b (unsigned char) *}
  229. AUX_GREYSCALEMAP = 4;
  230. AUX_FOGMAP = 5; {* pass fog and color bits (long) *}
  231. AUX_ONECOLOR = 6; {* pass index, r, g, and b (long) *}
  232. {*
  233. ** Color Macros
  234. *}
  235. AUX_BLACK = 0;
  236. AUX_RED = 13;
  237. AUX_GREEN = 14;
  238. AUX_YELLOW = 15;
  239. AUX_BLUE = 16;
  240. AUX_MAGENTA = 17;
  241. AUX_CYAN = 18;
  242. AUX_WHITE = 19;
  243. { this was a macro and is now a procedure }
  244. { PROCEDURE AUX_SETCOLOR(x, y); - TODO }
  245. {*
  246. ** RGB Image Structure
  247. *}
  248. type
  249. AUX_RGBImageRec = RECORD
  250. {BEGIN}
  251. sizeX, sizeY : GLint;
  252. data : ^BYTE;
  253. END;
  254. pAUX_RGBImageRec = ^AUX_RGBImageRec;
  255. {*
  256. ** Prototypes
  257. *}
  258. Procedure auxInitDisplayMode(mode:GLenum); glaux_dll;
  259. Procedure auxInitPosition(x,y,w,h:Integer); glaux_dll;
  260. {$ifndef WINNT}
  261. FUNCTION auxInitWindow(name:LPCSTR) : GLenum; glaux_dll;
  262. {$else}
  263. {$ifdef UNICODE }
  264. FUNCTION auxInitWindow (name:LPCWSTR) : GLenum; glaux_dll name 'auxInitWindowW';
  265. {$else}
  266. FUNCTION auxInitWindow (name:LPCSTR) : GLenum; glaux_dll name 'auxInitWindowA';
  267. {$endif}
  268. FUNCTION auxInitWindowA(name:LPCSTR) : GLenum; glaux_dll;
  269. FUNCTION auxInitWindowW(name:LPCWSTR) : GLenum; glaux_dll;
  270. {$endif}
  271. PROCEDURE auxCloseWindow; glaux_dll;
  272. PROCEDURE auxQuit; glaux_dll;
  273. PROCEDURE auxSwapBuffers; glaux_dll;
  274. { callbacks }
  275. type
  276. TAUXMAINPROC = PROCEDURE; glaux_callback;
  277. TAUXEXPOSEPROC = PROCEDURE(w, h : integer); glaux_callback;
  278. TAUXRESHAPEPROC = PROCEDURE(w, h : GLsizei); glaux_callback;
  279. TAUXIDLEPROC = PROCEDURE; glaux_callback;
  280. TAUXKEYPROC = PROCEDURE; glaux_callback;
  281. TAUXMOUSEPROC = PROCEDURE(VAR event : AUX_EVENTREC); glaux_callback;
  282. { callback setup routines }
  283. PROCEDURE auxMainLoop (func : TAUXMAINPROC); glaux_dll;
  284. PROCEDURE auxExposeFunc (func : TAUXEXPOSEPROC); glaux_dll;
  285. PROCEDURE auxReshapeFunc(func : TAUXRESHAPEPROC); glaux_dll;
  286. PROCEDURE auxIdleFunc (func : TAUXIDLEPROC); glaux_dll;
  287. PROCEDURE auxKeyFunc (val : integer; func : TAUXKEYPROC); glaux_dll;
  288. PROCEDURE auxMouseFunc (v1, v2 :integer; func : TAUXMOUSEPROC); glaux_dll;
  289. FUNCTION auxGetColorMapSize : integer; glaux_dll;
  290. PROCEDURE auxGetMouseLoc(var x, y : integer); glaux_dll;
  291. PROCEDURE auxSetOneColor(id : integer; r, g, b : GLfloat); glaux_dll;
  292. PROCEDURE auxSetFogRamp(v1, v2 : integer); glaux_dll;
  293. PROCEDURE auxSetGreyRamp; glaux_dll;
  294. PROCEDURE auxSetRGBMap(id : integer; var map : GLfloat); glaux_dll;
  295. {$ifndef WINNT}
  296. FUNCTION auxRGBImageLoad(name : LPCSTR) : pAUX_RGBImageRec; glaux_dll;
  297. {$else}
  298. {$ifndef GLAUXIMP}{ not present in GLauximp.dll }
  299. {$ifdef UNICODE}
  300. FUNCTION auxRGBImageLoad (name : LPCWSTR): pAUX_RGBImageRec; glaux_dll name 'auxRGBImageLoadW';
  301. {$else}
  302. FUNCTION auxRGBImageLoad (name : LPCSTR) : pAUX_RGBImageRec; glaux_dll name 'auxRGBImageLoadA';
  303. {$endif}
  304. FUNCTION auxRGBImageLoadA(name : LPCSTR) : pAUX_RGBImageRec; glaux_dll;
  305. FUNCTION auxRGBImageLoadW(name : LPCWSTR): pAUX_RGBImageRec; glaux_dll;
  306. {$endif}
  307. {$endif}
  308. {$ifndef WINNT}
  309. { this function is Windows specific! }
  310. FUNCTION auxDIBImageLoad(name : LPCSTR) : pAUX_RGBImageRec; glaux_dll;
  311. {$else}
  312. {$ifndef GLAUXIMP}{ not present in GLauximp.dll }
  313. {$ifdef UNICODE }
  314. FUNCTION auxDIBImageLoad (name : LPCWSTR): pAUX_RGBImageRec; glaux_dll name 'auxDIBImageLoadW';
  315. {$else}
  316. FUNCTION auxDIBImageLoad (name : LPCSTR) : pAUX_RGBImageRec; glaux_dll name 'auxDIBImageLoadA';
  317. {$endif}
  318. FUNCTION auxDIBImageLoadA(name : LPCSTR) : pAUX_RGBImageRec; glaux_dll;
  319. FUNCTION auxDIBImageLoadW(name : LPCWSTR): pAUX_RGBImageRec; glaux_dll;
  320. {$endif}
  321. {$endif}
  322. PROCEDURE auxCreateFont; glaux_dll;
  323. {$ifndef WINNT}
  324. PROCEDURE auxDrawStr (name : LPCSTR); glaux_dll;
  325. {$else}
  326. {$ifndef GLAUXIMP}{ not present in GLauximp.dll }
  327. {$ifdef UNICODE }
  328. PROCEDURE auxDrawStr (name : LPCWSTR); glaux_dll name 'auxDrawStrW';
  329. {$else}
  330. PROCEDURE auxDrawStr (name : LPCSTR); glaux_dll name 'auxDrawStrA';
  331. {$endif}
  332. PROCEDURE auxDrawStrA(name : LPCSTR); glaux_dll;
  333. PROCEDURE auxDrawStrW(name : LPCWSTR); glaux_dll;
  334. {$endif}
  335. {$endif}
  336. PROCEDURE auxWireSphere(v : GLdouble); glaux_dll;
  337. PROCEDURE auxSolidSphere(v : GLdouble); glaux_dll;
  338. PROCEDURE auxWireCube(v : GLdouble); glaux_dll;
  339. PROCEDURE auxSolidCube(v : GLdouble); glaux_dll;
  340. PROCEDURE auxWireBox(v1, v2, v3 : GLdouble); glaux_dll;
  341. PROCEDURE auxSolidBox(v1, v2, v3 : GLdouble); glaux_dll;
  342. PROCEDURE auxWireTorus(v1, v2 : GLdouble); glaux_dll;
  343. PROCEDURE auxSolidTorus(v1, v2 : GLdouble); glaux_dll;
  344. PROCEDURE auxWireCylinder(v1, v2 : GLdouble); glaux_dll;
  345. PROCEDURE auxSolidCylinder(v1, v2 : GLdouble); glaux_dll;
  346. PROCEDURE auxWireIcosahedron(v : GLdouble); glaux_dll;
  347. PROCEDURE auxSolidIcosahedron(v : GLdouble); glaux_dll;
  348. PROCEDURE auxWireOctahedron(v : GLdouble); glaux_dll;
  349. PROCEDURE auxSolidOctahedron(v : GLdouble); glaux_dll;
  350. PROCEDURE auxWireTetrahedron(v : GLdouble); glaux_dll;
  351. PROCEDURE auxSolidTetrahedron(v : GLdouble); glaux_dll;
  352. PROCEDURE auxWireDodecahedron(v : GLdouble); glaux_dll;
  353. PROCEDURE auxSolidDodecahedron(v : GLdouble); glaux_dll;
  354. PROCEDURE auxWireCone(v1, v2 : GLdouble); glaux_dll;
  355. PROCEDURE auxSolidCone(v1, v2 : GLdouble); glaux_dll;
  356. PROCEDURE auxWireTeapot(v : GLdouble); glaux_dll;
  357. PROCEDURE auxSolidTeapot(v: GLdouble); glaux_dll;
  358. {*
  359. ** Window specific functions
  360. ** hwnd, hdc, and hglrc valid after auxInitWindow()
  361. *}
  362. FUNCTION auxGetHWND : HWND; glaux_dll;
  363. FUNCTION auxGetHDC : HDC; glaux_dll;
  364. FUNCTION auxGetHGLRC : HGLRC; glaux_dll;
  365. {*
  366. ** Viewperf support functions and constants
  367. *}
  368. {* Display Mode Selection Criteria *}
  369. CONST { was an unnamed enum }
  370. AUX_USE_ID = 1;
  371. AUX_EXACT_MATCH = 2;
  372. AUX_MINIMUM_CRITERIA = 3;
  373. PROCEDURE auxInitDisplayModePolicy(val : GLenum); glaux_dll;
  374. FUNCTION auxInitDisplayModeID(val : GLint) : GLenum; glaux_dll;
  375. FUNCTION auxGetDisplayModePolicy : GLenum; glaux_dll;
  376. FUNCTION auxGetDisplayModeID : GLint; glaux_dll;
  377. FUNCTION auxGetDisplayMode : GLenum; glaux_dll;
  378. implementation
  379. { these functions are resolved macros -
  380. they should be "inline" if compile can do this }
  381. FUNCTION AUX_WIND_IS_RGB(x : DWORD) : BOOLEAN;
  382. BEGIN
  383. AUX_WIND_IS_RGB := ((x AND AUX_INDEX) = 0);
  384. END;
  385. FUNCTION AUX_WIND_IS_INDEX(x : DWORD) : BOOLEAN;
  386. BEGIN
  387. AUX_WIND_IS_INDEX := ((x AND AUX_INDEX) <> 0);
  388. END;
  389. FUNCTION AUX_WIND_IS_SINGLE(x : DWORD) : BOOLEAN;
  390. BEGIN
  391. AUX_WIND_IS_SINGLE := ((x AND AUX_DOUBLE) = 0);
  392. END;
  393. FUNCTION AUX_WIND_IS_DOUBLE(x : DWORD) : BOOLEAN;
  394. BEGIN
  395. AUX_WIND_IS_DOUBLE := ((x AND AUX_DOUBLE) <> 0);
  396. END;
  397. FUNCTION AUX_WIND_IS_INDIRECT(x : DWORD) : BOOLEAN;
  398. BEGIN
  399. AUX_WIND_IS_INDIRECT := ((x AND AUX_INDIRECT) <> 0);
  400. END;
  401. FUNCTION AUX_WIND_IS_DIRECT(x : DWORD) : BOOLEAN;
  402. BEGIN
  403. AUX_WIND_IS_DIRECT := ((x AND AUX_INDIRECT) = 0);
  404. END;
  405. FUNCTION AUX_WIND_HAS_ACCUM(x : DWORD) : BOOLEAN;
  406. BEGIN
  407. AUX_WIND_HAS_ACCUM := ((x AND AUX_ACCUM) <> 0);
  408. END;
  409. FUNCTION AUX_WIND_HAS_ALPHA(x : DWORD) : BOOLEAN;
  410. BEGIN
  411. AUX_WIND_HAS_ALPHA := ((x AND AUX_ALPHA) <> 0);
  412. END;
  413. FUNCTION AUX_WIND_HAS_DEPTH(x : DWORD) : BOOLEAN;
  414. BEGIN
  415. AUX_WIND_HAS_DEPTH := ((x AND (AUX_DEPTH24 OR AUX_DEPTH16)) <> 0);
  416. END;
  417. FUNCTION AUX_WIND_HAS_STENCIL(x : DWORD) : BOOLEAN;
  418. BEGIN
  419. AUX_WIND_HAS_STENCIL := ((x AND AUX_STENCIL) <> 0);
  420. END;
  421. FUNCTION AUX_WIND_USES_FIXED_332_PAL(x : DWORD) : BOOLEAN;
  422. BEGIN
  423. AUX_WIND_USES_FIXED_332_PAL := ((x AND AUX_FIXED_332_PAL) <> 0);
  424. END;
  425. {extern float auxRGBMap[20][3];
  426. PROCEDURE AUX_SETCOLOR(x, y);
  427. BEGIN
  428. IF (AUX_WIND_IS_RGB((x))
  429. THEN glColor3fv(auxRGBMap[y])
  430. ELSE glIndexf(y));
  431. END;
  432. - TODO}
  433. {begin{of init}
  434. end.