2
$Id: glut.pp,v 1.1.2.1 2000/11/06 11:35:40 marco Exp $
4
Translation of the Mesa GLUT headers for FreePascal
5
Linux Version, Copyright (C) 1999 Sebastian Guenther
8
Mesa 3-D graphics library
10
Copyright (C) 1995-1998 Brian Paul
12
This library is free software; you can redistribute it and/or
13
modify it under the terms of the GNU Library General Public
14
License as published by the Free Software Foundation; either
15
version 2 of the License, or (at your option) any later version.
17
This library is distributed in the hope that it will be useful,
18
but WITHOUT ANY WARRANTY; without even the implied warranty of
19
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
20
Library General Public License for more details.
22
You should have received a copy of the GNU Library General Public
23
License along with this library; if not, write to the Free
24
Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
36
{$DEFINE gldecl := cdecl;}
37
{$DEFINE extdecl := cdecl;}
40
{$MESSAGE Unsupported platform.}
44
function InitGLUTFromLibrary(libname: PChar): Boolean;
46
// determines automatically which library to use:
47
function InitGLUT: Boolean;
51
GLUTDumpUnresolvedFunctions,
52
GLUTInitialized: Boolean;
56
// Display mode bit masks
66
GLUT_MULTISAMPLE = 128;
72
GLUT_MIDDLE_BUTTON = 1;
73
GLUT_RIGHT_BUTTON = 2;
86
GLUT_MENU_NOT_IN_USE = 0;
93
// Window status state
95
GLUT_FULLY_RETAINED = 1;
96
GLUT_PARTIALLY_RETAINED = 2;
97
GLUT_FULLY_COVERED = 3;
99
// Color index component selection values
111
// glutGet parameters
114
GLUT_WINDOW_WIDTH = 102;
115
GLUT_WINDOW_HEIGHT = 103;
116
GLUT_WINDOW_BUFFER_SIZE = 104;
117
GLUT_WINDOW_STENCIL_SIZE = 105;
118
GLUT_WINDOW_DEPTH_SIZE = 106;
119
GLUT_WINDOW_RED_SIZE = 107;
120
GLUT_WINDOW_GREEN_SIZE = 108;
121
GLUT_WINDOW_BLUE_SIZE = 109;
122
GLUT_WINDOW_ALPHA_SIZE = 110;
123
GLUT_WINDOW_ACCUM_RED_SIZE = 111;
124
GLUT_WINDOW_ACCUM_GREEN_SIZE = 112;
125
GLUT_WINDOW_ACCUM_BLUE_SIZE = 113;
126
GLUT_WINDOW_ACCUM_ALPHA_SIZE = 114;
127
GLUT_WINDOW_DOUBLEBUFFER = 115;
128
GLUT_WINDOW_RGBA = 116;
129
GLUT_WINDOW_PARENT = 117;
130
GLUT_WINDOW_NUM_CHILDREN = 118;
131
GLUT_WINDOW_COLORMAP_SIZE = 119;
132
GLUT_WINDOW_NUM_SAMPLES = 120;
133
GLUT_WINDOW_STEREO = 121;
134
GLUT_WINDOW_CURSOR = 122;
135
GLUT_SCREEN_WIDTH = 200;
136
GLUT_SCREEN_HEIGHT = 201;
137
GLUT_SCREEN_WIDTH_MM = 202;
138
GLUT_SCREEN_HEIGHT_MM = 203;
139
GLUT_MENU_NUM_ITEMS = 300;
140
GLUT_DISPLAY_MODE_POSSIBLE = 400;
141
GLUT_INIT_WINDOW_X = 500;
142
GLUT_INIT_WINDOW_Y = 501;
143
GLUT_INIT_WINDOW_WIDTH = 502;
144
GLUT_INIT_WINDOW_HEIGHT = 503;
145
GLUT_INIT_DISPLAY_MODE = 504;
146
GLUT_ELAPSED_TIME = 700;
147
GLUT_WINDOW_FORMAT_ID = 123;
149
// glutDeviceGet parameters
150
GLUT_HAS_KEYBOARD = 600;
151
GLUT_HAS_MOUSE = 601;
152
GLUT_HAS_SPACEBALL = 602;
153
GLUT_HAS_DIAL_AND_BUTTON_BOX = 603;
154
GLUT_HAS_TABLET = 604;
155
GLUT_NUM_MOUSE_BUTTONS = 605;
156
GLUT_NUM_SPACEBALL_BUTTONS = 606;
157
GLUT_NUM_BUTTON_BOX_BUTTONS = 607;
158
GLUT_NUM_DIALS = 608;
159
GLUT_NUM_TABLET_BUTTONS = 609;
160
GLUT_DEVICE_IGNORE_KEY_REPEAT = 610;
161
GLUT_DEVICE_KEY_REPEAT = 611;
162
GLUT_HAS_JOYSTICK = 612;
163
GLUT_OWNS_JOYSTICK = 613;
164
GLUT_JOYSTICK_BUTTONS = 614;
165
GLUT_JOYSTICK_AXES = 615;
166
GLUT_JOYSTICK_POLL_RATE = 616;
168
// glutLayerGet parameters
169
GLUT_OVERLAY_POSSIBLE = 800;
170
GLUT_LAYER_IN_USE = 801;
171
GLUT_HAS_OVERLAY = 802;
172
GLUT_TRANSPARENT_INDEX = 803;
173
GLUT_NORMAL_DAMAGED = 804;
174
GLUT_OVERLAY_DAMAGED = 805;
176
// glutVideoResizeGet parameters
177
GLUT_VIDEO_RESIZE_POSSIBLE = 900;
178
GLUT_VIDEO_RESIZE_IN_USE = 901;
179
GLUT_VIDEO_RESIZE_X_DELTA = 902;
180
GLUT_VIDEO_RESIZE_Y_DELTA = 903;
181
GLUT_VIDEO_RESIZE_WIDTH_DELTA = 904;
182
GLUT_VIDEO_RESIZE_HEIGHT_DELTA= 905;
183
GLUT_VIDEO_RESIZE_X = 906;
184
GLUT_VIDEO_RESIZE_Y = 907;
185
GLUT_VIDEO_RESIZE_WIDTH = 908;
186
GLUT_VIDEO_RESIZE_HEIGHT = 909;
188
// glutGetModifiers return mask
189
GLUT_ACTIVE_SHIFT = 1;
190
GLUT_ACTIVE_CTRL = 2;
195
// GLUT window callback sub-API
197
TGlutDisplayFunc = procedure; extdecl
198
TGlutReshapeFunc = procedure(width, height: Integer); extdecl
199
TGlutTimerFunc = procedure(value: Integer); extdecl
200
TGlutKeyboardFunc = procedure(key: char;x,y:Integer); extdecl
201
TGlutIdleFunc = procedure; extdecl
202
TGlutVisibilityFunc = procedure(state:Integer); extdecl
204
// GLUT game mode sub-API
208
GLUT_GAME_MODE_ACTIVE = 0;
209
GLUT_GAME_MODE_POSSIBLE = 1;
210
GLUT_GAME_MODE_WIDTH = 2;
211
GLUT_GAME_MODE_HEIGHT = 3;
212
GLUT_GAME_MODE_PIXEL_DEPTH = 4;
213
GLUT_GAME_MODE_REFRESH_RATE = 5;
214
GLUT_GAME_MODE_DISPLAY_CHANGED= 6;
218
// GLUT initialization sub-API
219
glutInit: procedure(argcp: PInteger; argv: PPChar); cdecl;
220
glutInitDisplayMode: procedure(mode: LongWord); cdecl;
221
glutInitDisplayString: procedure(AString: PChar); cdecl;
222
glutInitWindowPosition: procedure(x, y: Integer); cdecl;
223
glutInitWindowSize: procedure(width, height: Integer); cdecl;
224
glutMainLoop: procedure; cdecl;
226
// GLUT window sub-API
227
glutCreateWindow: function(title: PChar): Integer; cdecl;
228
glutCreateSubWindow: function(win, x, y, width, height: Integer): Integer; cdecl;
229
glutDestroyWindow: procedure(win: Integer); cdecl;
230
glutPostRedisplay: procedure; cdecl;
231
glutPostWindowRedisplay: procedure(win: Integer); cdecl;
232
glutSwapBuffers: procedure; cdecl;
233
glutGetWindow: function: Integer; cdecl;
234
glutSetWindow: procedure(win: Integer); cdecl;
235
glutSetWindowTitle: procedure(title: PChar); cdecl;
236
glutSetIconTitle: procedure(title: PChar); cdecl;
237
glutPositionWindow: procedure(x, y: Integer); cdecl;
238
glutReshapeWindow: procedure(width, height: Integer); cdecl;
239
glutPopWindow: procedure; cdecl;
240
glutPushWindow: procedure; cdecl;
241
glutIconifyWindow: procedure; cdecl;
242
glutShowWindow: procedure; cdecl;
243
glutHideWindow: procedure; cdecl;
244
glutFullScreen: procedure; cdecl;
245
glutSetCursor: procedure(cursor: Integer); cdecl;
246
glutWarpPointer: procedure(x, y: Integer); cdecl;
252
// GLUT window callback sub-API
253
glutDisplayFunc: procedure(func: TGlutDisplayFunc); cdecl;
254
glutReshapeFunc: procedure(func: TGlutReshapeFunc); cdecl;
256
glutTimerFunc: procedure(millis: LongWord; func: TGlutTimerFunc; value: longint); cdecl;
257
glutKeyboardFunc : procedure(func: TGlutKeyboardFunc); cdecl;
258
glutIdleFunc : procedure(func: TGlutIdleFunc); cdecl;
259
glutVisibilityFunc : procedure(func: TGlutVisibilityFunc); cdecl;
261
// GLUTAPI void APIENTRY glutDisplayFunc(void (GLUTCALLBACK * func)(void));
262
// GLUTAPI void APIENTRY glutReshapeFunc(void (GLUTCALLBACK * func)(int width, int height));
263
// GLUTAPI void APIENTRY glutKeyboardFunc(void (GLUTCALLBACK * func)(unsigned char key, int x, int y));
264
// GLUTAPI void APIENTRY glutMouseFunc(void (GLUTCALLBACK * func)(int button, int state, int x, int y));
265
// GLUTAPI void APIENTRY glutMotionFunc(void (GLUTCALLBACK * func)(int x, int y));
266
// GLUTAPI void APIENTRY glutPassiveMotionFunc(void (GLUTCALLBACK * func)(int x, int y));
267
// GLUTAPI void APIENTRY glutEntryFunc(void (GLUTCALLBACK * func)(int state));
268
// GLUTAPI void APIENTRY glutVisibilityFunc(void (GLUTCALLBACK * func)(int state));
269
// GLUTAPI void APIENTRY glutIdleFunc(void (GLUTCALLBACK * func)(void));
270
// GLUTAPI void APIENTRY glutTimerFunc(unsigned int millis, void (GLUTCALLBACK * func)(int value), int value);
271
// GLUTAPI void APIENTRY glutMenuStateFunc(void (GLUTCALLBACK * func)(int state));
272
// GLUTAPI void APIENTRY glutSpecialFunc(void (GLUTCALLBACK * func)(int key, int x, int y));
273
// GLUTAPI void APIENTRY glutSpaceballMotionFunc(void (GLUTCALLBACK * func)(int x, int y, int z));
274
// GLUTAPI void APIENTRY glutSpaceballRotateFunc(void (GLUTCALLBACK * func)(int x, int y, int z));
275
// GLUTAPI void APIENTRY glutSpaceballButtonFunc(void (GLUTCALLBACK * func)(int button, int state));
276
// GLUTAPI void APIENTRY glutButtonBoxFunc(void (GLUTCALLBACK * func)(int button, int state));
277
// GLUTAPI void APIENTRY glutDialsFunc(void (GLUTCALLBACK * func)(int dial, int value));
278
// GLUTAPI void APIENTRY glutTabletMotionFunc(void (GLUTCALLBACK * func)(int x, int y));
279
// GLUTAPI void APIENTRY glutTabletButtonFunc(void (GLUTCALLBACK * func)(int button, int state, int x, int y));
280
// GLUTAPI void APIENTRY glutMenuStatusFunc(void (GLUTCALLBACK * func)(int status, int x, int y));
281
// GLUTAPI void APIENTRY glutOverlayDisplayFunc(void (GLUTCALLBACK * func)(void));
282
// GLUTAPI void APIENTRY glutWindowStatusFunc(void (GLUTCALLBACK * func)(int state));
283
// GLUTAPI void APIENTRY glutKeyboardUpFunc(void (GLUTCALLBACK * func)(unsigned char key, int x, int y));
284
// GLUTAPI void APIENTRY glutSpecialUpFunc(void (GLUTCALLBACK * func)(int key, int x, int y));
285
// GLUTAPI void APIENTRY glutJoystickFunc(void (GLUTCALLBACK * func)(unsigned int buttonMask, int x, int y, int z), int pollInterval)
287
// GLUT color index sub-API
288
glutSetColor: procedure(index: Integer; red, green, blue: Single); cdecl;
289
glutGetColor: function(ndx, component: Integer): Single; cdecl;
290
glutCopyColormap: procedure(win: Integer); cdecl;
292
// GLUT state retrieval sub-API
293
glutGet: function(AType: GLEnum): Integer; cdecl;
294
glutDeviceGet: function(AType: GLEnum): Integer; cdecl;
295
glutExtensionSupported: function(name: PChar): Integer; cdecl;
296
glutGetModifiers: function: Integer; cdecl;
297
glutLayerGet: function(AType: GLEnum): Integer; cdecl;
301
// pre-built models ###
307
// device control ###
310
// GLUT game mode sub-API
312
glutGameModeString: procedure(AString: PChar); cdecl;
313
glutEnterGameMode: function: Integer; cdecl;
314
glutLeaveGameMode: procedure; cdecl;
315
glutGameModeGet: function(mode: GLEnum): Integer; cdecl;
323
function dlopen(AFile: PChar; mode: LongInt): Pointer; external 'dl';
324
function dlclose(handle: Pointer): LongInt; external 'dl';
325
function dlsym(handle: Pointer; name: PChar): Pointer; external 'dl';
327
function LoadLibrary(name: PChar): Pointer;
329
Result := dlopen(name, $101 {RTLD_GLOBAL or RTLD_LAZY});
332
function GetProc(handle: Pointer; name: PChar): Pointer;
334
Result := dlsym(handle, name);
335
if (Result = nil) and GLUTDumpUnresolvedFunctions then
336
WriteLn('Unresolved: ', name);
342
function InitGLUTFromLibrary(libname: PChar): Boolean;
345
libGLUT := LoadLibrary(libname);
346
if not Assigned(libGLUT) then exit;
348
// GLUT initialization sub-API
349
glutInit := GetProc(libglut, 'glutInit');
350
glutInitDisplayMode := GetProc(libglut, 'glutInitDisplayMode');
351
glutInitDisplayString := GetProc(libglut, 'glutInitDisplayString');
352
glutInitWindowPosition := GetProc(libglut, 'glutInitWindowPosition');
353
glutInitWindowSize := GetProc(libglut, 'glutInitWindowSize');
354
glutMainLoop := GetProc(libglut, 'glutMainLoop');
355
// GLUT window sub-API
356
glutCreateWindow := GetProc(libglut, 'glutCreateWindow');
357
glutCreateSubWindow := GetProc(libglut, 'glutCreateSubWindow');
358
glutDestroyWindow := GetProc(libglut, 'glutDestroyWindow');
359
glutPostRedisplay := GetProc(libglut, 'glutPostRedisplay');
360
glutPostWindowRedisplay := GetProc(libglut, 'glutPostWindowRedisplay');
361
glutSwapBuffers := GetProc(libglut, 'glutSwapBuffers');
362
glutGetWindow := GetProc(libglut, 'glutGetWindow');
363
glutSetWindow := GetProc(libglut, 'glutSetWindow');
364
glutSetWindowTitle := GetProc(libglut, 'glutSetWindowTitle');
365
glutSetIconTitle := GetProc(libglut, 'glutSetIconTitle');
366
glutPositionWindow := GetProc(libglut, 'glutPositionWindow');
367
glutReshapeWindow := GetProc(libglut, 'glutReshapeWindow');
368
glutPopWindow := GetProc(libglut, 'glutPopWindow');
369
glutPushWindow := GetProc(libglut, 'glutPushWindow');
370
glutIconifyWindow := GetProc(libglut, 'glutIconifyWindow');
371
glutShowWindow := GetProc(libglut, 'glutShowWindow');
372
glutHideWindow := GetProc(libglut, 'glutHideWindow');
373
glutFullScreen := GetProc(libglut, 'glutFullScreen');
374
glutSetCursor := GetProc(libglut, 'glutSetCursor');
375
glutWarpPointer := GetProc(libglut, 'glutWarpPointer');
378
// GLUT window callback sub-API
379
glutDisplayFunc := GetProc(libglut, 'glutDisplayFunc');
380
glutReshapeFunc := GetProc(libglut, 'glutReshapeFunc');
381
glutTimerFunc := GetProc(libglut, 'glutTimerFunc');
382
glutKeyboardFunc := GetProc(libglut, 'glutKeyboardFunc');
383
glutIdleFunc := GetProc(libglut, 'glutIdleFunc');
384
glutVisibilityFunc := GetProc(libglut, 'glutVisibilityFunc');
385
// GLUTAPI void APIENTRY glutDisplayFunc(void (GLUTCALLBACK * func)(void));
386
// GLUTAPI void APIENTRY glutReshapeFunc(void (GLUTCALLBACK * func)(int width, int height));
387
// GLUTAPI void APIENTRY glutKeyboardFunc(void (GLUTCALLBACK * func)(unsigned char key, int x, int y));
388
// GLUTAPI void APIENTRY glutMouseFunc(void (GLUTCALLBACK * func)(int button, int state, int x, int y));
389
// GLUTAPI void APIENTRY glutMotionFunc(void (GLUTCALLBACK * func)(int x, int y));
390
// GLUTAPI void APIENTRY glutPassiveMotionFunc(void (GLUTCALLBACK * func)(int x, int y));
391
// GLUTAPI void APIENTRY glutEntryFunc(void (GLUTCALLBACK * func)(int state));
392
// GLUTAPI void APIENTRY glutVisibilityFunc(void (GLUTCALLBACK * func)(int state));
393
// GLUTAPI void APIENTRY glutIdleFunc(void (GLUTCALLBACK * func)(void));
394
// GLUTAPI void APIENTRY glutTimerFunc(unsigned int millis, void (GLUTCALLBACK * func)(int value), int value);
395
// GLUTAPI void APIENTRY glutMenuStateFunc(void (GLUTCALLBACK * func)(int state));
396
// GLUTAPI void APIENTRY glutSpecialFunc(void (GLUTCALLBACK * func)(int key, int x, int y));
397
// GLUTAPI void APIENTRY glutSpaceballMotionFunc(void (GLUTCALLBACK * func)(int x, int y, int z));
398
// GLUTAPI void APIENTRY glutSpaceballRotateFunc(void (GLUTCALLBACK * func)(int x, int y, int z));
399
// GLUTAPI void APIENTRY glutSpaceballButtonFunc(void (GLUTCALLBACK * func)(int button, int state));
400
// GLUTAPI void APIENTRY glutButtonBoxFunc(void (GLUTCALLBACK * func)(int button, int state));
401
// GLUTAPI void APIENTRY glutDialsFunc(void (GLUTCALLBACK * func)(int dial, int value));
402
// GLUTAPI void APIENTRY glutTabletMotionFunc(void (GLUTCALLBACK * func)(int x, int y));
403
// GLUTAPI void APIENTRY glutTabletButtonFunc(void (GLUTCALLBACK * func)(int button, int state, int x, int y));
404
// GLUTAPI void APIENTRY glutMenuStatusFunc(void (GLUTCALLBACK * func)(int status, int x, int y));
405
// GLUTAPI void APIENTRY glutOverlayDisplayFunc(void (GLUTCALLBACK * func)(void));
406
// GLUTAPI void APIENTRY glutWindowStatusFunc(void (GLUTCALLBACK * func)(int state));
407
// GLUTAPI void APIENTRY glutKeyboardUpFunc(void (GLUTCALLBACK * func)(unsigned char key, int x, int y));
408
// GLUTAPI void APIENTRY glutSpecialUpFunc(void (GLUTCALLBACK * func)(int key, int x, int y));
409
// GLUTAPI void APIENTRY glutJoystickFunc(void (GLUTCALLBACK * func)(unsigned int buttonMask, int x, int y, int z), int pollInterval)
410
// GLUT color index sub-API
411
glutSetColor := GetProc(libglut, 'glutSetColor');
412
glutGetColor := GetProc(libglut, 'glutGetColor');
413
glutCopyColormap := GetProc(libglut, 'glutCopyColormap');
414
// GLUT state retrieval sub-API
415
glutGet := GetProc(libglut, 'glutGet');
416
glutDeviceGet := GetProc(libglut, 'glutDeviceGet');
417
glutExtensionSupported := GetProc(libglut, 'glutExtensionSupported');
418
glutGetModifiers := GetProc(libglut, 'glutGetModifiers');
419
glutLayerGet := GetProc(libglut, 'glutLayerGet');
421
// pre-built models ###
424
// device control ###
425
// GLUT game mode sub-API
427
glutGameModeString := GetProc(libglut, 'glutGameModeString');
428
glutEnterGameMode := GetProc(libglut, 'glutEnterGameMode');
429
glutLeaveGameMode := GetProc(libglut, 'glutLeaveGameMode');
430
glutGameModeGet := GetProc(libglut, 'glutGameModeGet');
433
GLUTInitialized := True;
438
function InitGLUT: Boolean;
440
Result := InitGLUTFromLibrary('libglut.so') or
441
InitGLUTFromLibrary('libglut.so.3');
448
if Assigned(libGLUT) then dlClose(libGLUT);
454
Revision 1.1.2.1 2000/11/06 11:35:40 marco
455
* Standard freebsd-unix-linux split
457
Revision 1.4.2.1 2000/10/01 22:12:28 peter