~hwkrus/f03gl/trunk

1 by Henk Krus
Initial Launchpad setup
1
MODULE OpenGL_glut
2
USE OpenGL_kinds
3
IMPLICIT NONE
4
PRIVATE
5
6
!  Copyright (c) Mark J. Kilgard, 1994, 1995, 1996, 1998. 
7
8
!     provided without guarantee or warrantee expressed or  implied. This
9
10
!  Cut to provide just basic OpenGL interface by A. Donev 
11
12
13
!  Define GLUTAPIENTRY and GLUTCALLBACK to nothing if we aren't on Win32. 
14
15
!   GLUT API revision history:
16
!  
17
!   GLUT_API_VERSION is updated to reflect incompatible GLUT
18
!   API changes (interface changes, semantic changes, deletions,
19
!   or additions).
20
!  
21
!   GLUT_API_VERSION=1  First public release of GLUT.  11/29/94
22
!  
23
!   GLUT_API_VERSION=2  Added support for OpenGL/GLX multisampling,
24
!   extension.  Supports new input devices like tablet, dial and button
25
!   box, and Spaceball.  Easy to query OpenGL extensions.
26
!  
27
!   GLUT_API_VERSION=3  glutMenuStatus added.
28
!  
29
!   GLUT_API_VERSION=4  glutInitDisplayString, glutWarpPointer,
30
!   glutBitmapLength, glutStrokeLength, glutWindowStatusFunc, dynamic
31
!   video resize subAPI, glutPostWindowRedisplay, glutKeyboardUpFunc,
32
!   glutSpecialUpFunc, glutIgnoreKeyRepeat, glutSetKeyRepeat,
33
!   glutJoystickFunc, glutForceJoystickFunc (NOT FINALIZED!).
34
!  
35
!   GLUT_API_VERSION=5  glutGetProcAddress (added by BrianP)
36
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_API_VERSION = 5
37
38
!   GLUT implementation revision history:
39
!  
40
!   GLUT_XLIB_IMPLEMENTATION is updated to reflect both GLUT
41
!   API revisions and implementation revisions (ie, bug fixes).
42
!  
43
!   GLUT_XLIB_IMPLEMENTATION=1  mjk's first public release of
44
!   GLUT Xlib-based implementation.  11/29/94
45
!  
46
!   GLUT_XLIB_IMPLEMENTATION=2  mjk's second public release of
47
!   GLUT Xlib-based implementation providing GLUT version 2
48
!   interfaces.
49
!  
50
!   GLUT_XLIB_IMPLEMENTATION=3  mjk's GLUT 2.2 images. 4/17/95
51
!  
52
!   GLUT_XLIB_IMPLEMENTATION=4  mjk's GLUT 2.3 images. 6/?/95
53
!  
54
!   GLUT_XLIB_IMPLEMENTATION=5  mjk's GLUT 3.0 images. 10/?/95
55
!  
56
!   GLUT_XLIB_IMPLEMENTATION=7  mjk's GLUT 3.1+ with glutWarpPoitner.  7/24/96
57
!  
58
!   GLUT_XLIB_IMPLEMENTATION=8  mjk's GLUT 3.1+ with glutWarpPoitner
59
!   and video resize.  1/3/97
60
!  
61
!   GLUT_XLIB_IMPLEMENTATION=9 mjk's GLUT 3.4 release with early GLUT 4 routines.
62
!  
63
!   GLUT_XLIB_IMPLEMENTATION=11 Mesa 2.5's GLUT 3.6 release.
64
!  
65
!   GLUT_XLIB_IMPLEMENTATION=12 mjk's GLUT 3.6 release with early GLUT 4 routines + signal handling.
66
!  
67
!   GLUT_XLIB_IMPLEMENTATION=13 mjk's GLUT 3.7 beta with GameGLUT support.
68
!  
69
!   GLUT_XLIB_IMPLEMENTATION=14 mjk's GLUT 3.7 beta with f90gl friend interface.
70
!  
71
!   GLUT_XLIB_IMPLEMENTATION=15 mjk's GLUT 3.7 beta sync'ed with Mesa <GL/glut.h>
72
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_XLIB_IMPLEMENTATION = 15
73
74
!  Display mode bit masks. 
75
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_RGB = 0
76
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_RGBA = GLUT_RGB
77
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_INDEX = 1
78
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_SINGLE = 0
79
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_DOUBLE = 2
80
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_ACCUM = 4
81
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_ALPHA = 8
82
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_DEPTH = 16
83
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_STENCIL = 32
84
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_MULTISAMPLE = 128
85
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_STEREO = 256
86
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_LUMINANCE = 512
87
88
!  Mouse buttons. 
89
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_LEFT_BUTTON = 0
90
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_MIDDLE_BUTTON = 1
91
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_RIGHT_BUTTON = 2
92
93
!  Mouse button  state. 
94
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_DOWN = 0
95
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_UP = 1
96
97
!  function keys 
98
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_KEY_F1 = 1
99
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_KEY_F2 = 2
100
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_KEY_F3 = 3
101
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_KEY_F4 = 4
102
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_KEY_F5 = 5
103
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_KEY_F6 = 6
104
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_KEY_F7 = 7
105
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_KEY_F8 = 8
106
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_KEY_F9 = 9
107
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_KEY_F10 = 10
108
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_KEY_F11 = 11
109
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_KEY_F12 = 12
110
!  directional keys 
111
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_KEY_LEFT = 100
112
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_KEY_UP = 101
113
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_KEY_RIGHT = 102
114
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_KEY_DOWN = 103
115
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_KEY_PAGE_UP = 104
116
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_KEY_PAGE_DOWN = 105
117
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_KEY_HOME = 106
118
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_KEY_END = 107
119
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_KEY_INSERT = 108
120
121
!  Entry/exit  state. 
122
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_LEFT = 0
123
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_ENTERED = 1
124
125
!  Menu usage  state. 
126
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_MENU_NOT_IN_USE = 0
127
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_MENU_IN_USE = 1
128
129
!  Visibility  state. 
130
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_NOT_VISIBLE = 0
131
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_VISIBLE = 1
132
133
!  Window status  state. 
134
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_HIDDEN = 0
135
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_FULLY_RETAINED = 1
136
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_PARTIALLY_RETAINED = 2
137
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_FULLY_COVERED = 3
138
139
!  Color index component selection values. 
140
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_RED = 0
141
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_GREEN = 1
142
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_BLUE = 2
143
144
!  Layers for use. 
145
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_NORMAL = 0
146
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_OVERLAY = 1
147
148
!  Stroke font opaque addresses (use constants instead in source code). 
149
150
!  Stroke font constants (use these in GLUT program). 
151
! ???, , PUBLIC :: GLUT_STROKE_ROMAN=(&glutStrokeRoman)
152
! ???, , PUBLIC :: GLUT_STROKE_MONO_ROMAN=(&glutStrokeMonoRoman)
153
154
!  Bitmap font opaque addresses (use constants instead in source code). 
155
156
!  Bitmap font constants (use these in GLUT program). 
157
! ???, , PUBLIC :: GLUT_BITMAP_9_BY_15=(&glutBitmap9By15)
158
! ???, , PUBLIC :: GLUT_BITMAP_8_BY_13=(&glutBitmap8By13)
159
! ???, , PUBLIC :: GLUT_BITMAP_TIMES_ROMAN_10=(&glutBitmapTimesRoman10)
160
! ???, , PUBLIC :: GLUT_BITMAP_TIMES_ROMAN_24=(&glutBitmapTimesRoman24)
161
! ???, , PUBLIC :: GLUT_BITMAP_HELVETICA_10=(&glutBitmapHelvetica10)
162
! ???, , PUBLIC :: GLUT_BITMAP_HELVETICA_12=(&glutBitmapHelvetica12)
163
! ???, , PUBLIC :: GLUT_BITMAP_HELVETICA_18=(&glutBitmapHelvetica18)
164
165
!  glutGet parameters. 
166
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_WINDOW_X = 100
167
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_WINDOW_Y = 101
168
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_WINDOW_WIDTH = 102
169
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_WINDOW_HEIGHT = 103
170
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_WINDOW_BUFFER_SIZE = 104
171
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_WINDOW_STENCIL_SIZE = 105
172
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_WINDOW_DEPTH_SIZE = 106
173
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_WINDOW_RED_SIZE = 107
174
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_WINDOW_GREEN_SIZE = 108
175
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_WINDOW_BLUE_SIZE = 109
176
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_WINDOW_ALPHA_SIZE = 110
177
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_WINDOW_ACCUM_RED_SIZE = 111
178
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_WINDOW_ACCUM_GREEN_SIZE = 112
179
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_WINDOW_ACCUM_BLUE_SIZE = 113
180
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_WINDOW_ACCUM_ALPHA_SIZE = 114
181
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_WINDOW_DOUBLEBUFFER = 115
182
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_WINDOW_RGBA = 116
183
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_WINDOW_PARENT = 117
184
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_WINDOW_NUM_CHILDREN = 118
185
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_WINDOW_COLORMAP_SIZE = 119
186
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_WINDOW_NUM_SAMPLES = 120
187
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_WINDOW_STEREO = 121
188
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_WINDOW_CURSOR = 122
189
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_SCREEN_WIDTH = 200
190
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_SCREEN_HEIGHT = 201
191
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_SCREEN_WIDTH_MM = 202
192
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_SCREEN_HEIGHT_MM = 203
193
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_MENU_NUM_ITEMS = 300
194
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_DISPLAY_MODE_POSSIBLE = 400
195
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_INIT_WINDOW_X = 500
196
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_INIT_WINDOW_Y = 501
197
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_INIT_WINDOW_WIDTH = 502
198
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_INIT_WINDOW_HEIGHT = 503
199
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_INIT_DISPLAY_MODE = 504
200
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_ELAPSED_TIME = 700
201
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_WINDOW_FORMAT_ID = 123
202
203
!  glutDeviceGet parameters. 
204
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_HAS_KEYBOARD = 600
205
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_HAS_MOUSE = 601
206
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_HAS_SPACEBALL = 602
207
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_HAS_DIAL_AND_BUTTON_BOX = 603
208
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_HAS_TABLET = 604
209
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_NUM_MOUSE_BUTTONS = 605
210
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_NUM_SPACEBALL_BUTTONS = 606
211
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_NUM_BUTTON_BOX_BUTTONS = 607
212
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_NUM_DIALS = 608
213
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_NUM_TABLET_BUTTONS = 609
214
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_DEVICE_IGNORE_KEY_REPEAT = 610
215
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_DEVICE_KEY_REPEAT = 611
216
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_HAS_JOYSTICK = 612
217
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_OWNS_JOYSTICK = 613
218
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_JOYSTICK_BUTTONS = 614
219
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_JOYSTICK_AXES = 615
220
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_JOYSTICK_POLL_RATE = 616
221
222
!  glutLayerGet parameters. 
223
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_OVERLAY_POSSIBLE = 800
224
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_LAYER_IN_USE = 801
225
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_HAS_OVERLAY = 802
226
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_TRANSPARENT_INDEX = 803
227
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_NORMAL_DAMAGED = 804
228
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_OVERLAY_DAMAGED = 805
229
230
!  glutVideoResizeGet parameters. 
231
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_VIDEO_RESIZE_POSSIBLE = 900
232
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_VIDEO_RESIZE_IN_USE = 901
233
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_VIDEO_RESIZE_X_DELTA = 902
234
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_VIDEO_RESIZE_Y_DELTA = 903
235
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_VIDEO_RESIZE_WIDTH_DELTA = 904
236
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_VIDEO_RESIZE_HEIGHT_DELTA = 905
237
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_VIDEO_RESIZE_X = 906
238
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_VIDEO_RESIZE_Y = 907
239
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_VIDEO_RESIZE_WIDTH = 908
240
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_VIDEO_RESIZE_HEIGHT = 909
241
242
!  glutGetModifiers return mask. 
243
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_ACTIVE_SHIFT = 1
244
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_ACTIVE_CTRL = 2
245
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_ACTIVE_ALT = 4
246
247
!  glutSetCursor parameters. 
248
!  Basic arrows. 
249
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_CURSOR_RIGHT_ARROW = 0
250
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_CURSOR_LEFT_ARROW = 1
251
!  Symbolic cursor shapes. 
252
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_CURSOR_INFO = 2
253
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_CURSOR_DESTROY = 3
254
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_CURSOR_HELP = 4
255
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_CURSOR_CYCLE = 5
256
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_CURSOR_SPRAY = 6
257
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_CURSOR_WAIT = 7
258
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_CURSOR_TEXT = 8
259
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_CURSOR_CROSSHAIR = 9
260
!  Directional cursors. 
261
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_CURSOR_UP_DOWN = 10
262
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_CURSOR_LEFT_RIGHT = 11
263
!  Sizing cursors. 
264
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_CURSOR_TOP_SIDE = 12
265
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_CURSOR_BOTTOM_SIDE = 13
266
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_CURSOR_LEFT_SIDE = 14
267
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_CURSOR_RIGHT_SIDE = 15
268
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_CURSOR_TOP_LEFT_CORNER = 16
269
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_CURSOR_TOP_RIGHT_CORNER = 17
270
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_CURSOR_BOTTOM_RIGHT_CORNER = 18
271
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_CURSOR_BOTTOM_LEFT_CORNER = 19
272
!  Inherit from parent window. 
273
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_CURSOR_INHERIT = 100
274
!  Blank cursor. 
275
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_CURSOR_NONE = 101
276
!  Fullscreen crosshair (if available). 
277
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_CURSOR_FULL_CROSSHAIR = 102
278
279
!  GLUT initialization sub-API. 
280
!  void glutInit(int *argcp, char **argv)
281
PUBLIC glutInit
282
INTERFACE glutInit
283
MODULE PROCEDURE glutInit_f03
284
END INTERFACE glutInit
285
INTERFACE
286
SUBROUTINE glutInit_gl(argcp, argv) BIND(C,NAME="glutInit")
287
IMPORT
288
! INTEGER(GLint), DIMENSION(*) :: argcp
289
INTEGER(GLint) :: argcp
290
TYPE(C_PTR), INTENT(IN) :: argv
291
END SUBROUTINE glutInit_gl
292
END INTERFACE
293
294
!  void glutInitDisplayMode(unsigned int mode)
295
PUBLIC glutInitDisplayMode
296
INTERFACE
297
SUBROUTINE glutInitDisplayMode(mode) BIND(C,NAME="glutInitDisplayMode")
298
IMPORT
299
INTEGER(GLuint), VALUE :: mode
300
END SUBROUTINE glutInitDisplayMode
301
END INTERFACE
302
303
!  void glutInitDisplayString(const char *string)
304
PUBLIC glutInitDisplayString
305
INTERFACE
306
SUBROUTINE glutInitDisplayString(string) BIND(C,NAME="glutInitDisplayString")
307
IMPORT
308
! CHARACTER, INTENT(IN) :: string
309
CHARACTER, DIMENSION(*), INTENT(IN) :: string
310
END SUBROUTINE glutInitDisplayString
311
END INTERFACE
312
313
!  void glutInitWindowPosition(int x, int y)
314
PUBLIC glutInitWindowPosition
315
INTERFACE
316
SUBROUTINE glutInitWindowPosition(x, y) BIND(C,NAME="glutInitWindowPosition")
317
IMPORT
318
INTEGER(GLint), VALUE :: x, y
319
END SUBROUTINE glutInitWindowPosition
320
END INTERFACE
321
322
!  void glutInitWindowSize(int width, int height)
323
PUBLIC glutInitWindowSize
324
INTERFACE
325
SUBROUTINE glutInitWindowSize(width, height) BIND(C,NAME="glutInitWindowSize")
326
IMPORT
327
INTEGER(GLint), VALUE :: width, height
328
END SUBROUTINE glutInitWindowSize
329
END INTERFACE
330
331
!  void glutMainLoop(void)
332
PUBLIC glutMainLoop
333
INTERFACE
334
SUBROUTINE glutMainLoop() BIND(C,NAME="glutMainLoop")
335
IMPORT
336
END SUBROUTINE glutMainLoop
337
END INTERFACE
338
339
340
!  GLUT window sub-API. 
341
!  int glutCreateWindow(const char *title)
342
PUBLIC glutCreateWindow
343
INTERFACE
344
FUNCTION glutCreateWindow(title) BIND(C,NAME="glutCreateWindow")
345
IMPORT
346
INTEGER(GLint) :: glutCreateWindow
347
! CHARACTER, INTENT(IN) :: title
348
CHARACTER, DIMENSION(*), INTENT(IN) :: title
349
END FUNCTION glutCreateWindow
350
END INTERFACE
351
352
!  int glutCreateSubWindow(int win, int x, int y, int width, int height)
353
PUBLIC glutCreateSubWindow
354
INTERFACE
355
FUNCTION glutCreateSubWindow(win, x, y, width, height) BIND(C,NAME="glutCreateSubWindow")
356
IMPORT
357
INTEGER(GLint) :: glutCreateSubWindow
358
INTEGER(GLint), VALUE :: win, x, y, width, height
359
END FUNCTION glutCreateSubWindow
360
END INTERFACE
361
362
!  void glutDestroyWindow(int win)
363
PUBLIC glutDestroyWindow
364
INTERFACE
365
SUBROUTINE glutDestroyWindow(win) BIND(C,NAME="glutDestroyWindow")
366
IMPORT
367
INTEGER(GLint), VALUE :: win
368
END SUBROUTINE glutDestroyWindow
369
END INTERFACE
370
371
!  void glutPostRedisplay(void)
372
PUBLIC glutPostRedisplay
373
INTERFACE
374
SUBROUTINE glutPostRedisplay() BIND(C,NAME="glutPostRedisplay")
375
IMPORT
376
END SUBROUTINE glutPostRedisplay
377
END INTERFACE
378
379
!  void glutPostWindowRedisplay(int win)
380
PUBLIC glutPostWindowRedisplay
381
INTERFACE
382
SUBROUTINE glutPostWindowRedisplay(win) BIND(C,NAME="glutPostWindowRedisplay")
383
IMPORT
384
INTEGER(GLint), VALUE :: win
385
END SUBROUTINE glutPostWindowRedisplay
386
END INTERFACE
387
388
!  void glutSwapBuffers(void)
389
PUBLIC glutSwapBuffers
390
INTERFACE
391
SUBROUTINE glutSwapBuffers() BIND(C,NAME="glutSwapBuffers")
392
IMPORT
393
END SUBROUTINE glutSwapBuffers
394
END INTERFACE
395
396
!  int glutGetWindow(void)
397
PUBLIC glutGetWindow
398
INTERFACE
399
FUNCTION glutGetWindow() BIND(C,NAME="glutGetWindow")
400
IMPORT
401
INTEGER(GLint) :: glutGetWindow
402
END FUNCTION glutGetWindow
403
END INTERFACE
404
405
!  void glutSetWindow(int win)
406
PUBLIC glutSetWindow
407
INTERFACE
408
SUBROUTINE glutSetWindow(win) BIND(C,NAME="glutSetWindow")
409
IMPORT
410
INTEGER(GLint), VALUE :: win
411
END SUBROUTINE glutSetWindow
412
END INTERFACE
413
414
!  void glutSetWindowTitle(const char *title)
415
PUBLIC glutSetWindowTitle
416
INTERFACE
417
SUBROUTINE glutSetWindowTitle(title) BIND(C,NAME="glutSetWindowTitle")
418
IMPORT
419
! CHARACTER, INTENT(IN) :: title
420
CHARACTER, DIMENSION(*), INTENT(IN) :: title
421
END SUBROUTINE glutSetWindowTitle
422
END INTERFACE
423
424
!  void glutSetIconTitle(const char *title)
425
PUBLIC glutSetIconTitle
426
INTERFACE
427
SUBROUTINE glutSetIconTitle(title) BIND(C,NAME="glutSetIconTitle")
428
IMPORT
429
! CHARACTER, INTENT(IN) :: title
430
CHARACTER, DIMENSION(*), INTENT(IN) :: title
431
END SUBROUTINE glutSetIconTitle
432
END INTERFACE
433
434
!  void glutPositionWindow(int x, int y)
435
PUBLIC glutPositionWindow
436
INTERFACE
437
SUBROUTINE glutPositionWindow(x, y) BIND(C,NAME="glutPositionWindow")
438
IMPORT
439
INTEGER(GLint), VALUE :: x, y
440
END SUBROUTINE glutPositionWindow
441
END INTERFACE
442
443
!  void glutReshapeWindow(int width, int height)
444
PUBLIC glutReshapeWindow
445
INTERFACE
446
SUBROUTINE glutReshapeWindow(width, height) BIND(C,NAME="glutReshapeWindow")
447
IMPORT
448
INTEGER(GLint), VALUE :: width, height
449
END SUBROUTINE glutReshapeWindow
450
END INTERFACE
451
452
!  void glutPopWindow(void)
453
PUBLIC glutPopWindow
454
INTERFACE
455
SUBROUTINE glutPopWindow() BIND(C,NAME="glutPopWindow")
456
IMPORT
457
END SUBROUTINE glutPopWindow
458
END INTERFACE
459
460
!  void glutPushWindow(void)
461
PUBLIC glutPushWindow
462
INTERFACE
463
SUBROUTINE glutPushWindow() BIND(C,NAME="glutPushWindow")
464
IMPORT
465
END SUBROUTINE glutPushWindow
466
END INTERFACE
467
468
!  void glutIconifyWindow(void)
469
PUBLIC glutIconifyWindow
470
INTERFACE
471
SUBROUTINE glutIconifyWindow() BIND(C,NAME="glutIconifyWindow")
472
IMPORT
473
END SUBROUTINE glutIconifyWindow
474
END INTERFACE
475
476
!  void glutShowWindow(void)
477
PUBLIC glutShowWindow
478
INTERFACE
479
SUBROUTINE glutShowWindow() BIND(C,NAME="glutShowWindow")
480
IMPORT
481
END SUBROUTINE glutShowWindow
482
END INTERFACE
483
484
!  void glutHideWindow(void)
485
PUBLIC glutHideWindow
486
INTERFACE
487
SUBROUTINE glutHideWindow() BIND(C,NAME="glutHideWindow")
488
IMPORT
489
END SUBROUTINE glutHideWindow
490
END INTERFACE
491
492
!  void glutFullScreen(void)
493
PUBLIC glutFullScreen
494
INTERFACE
495
SUBROUTINE glutFullScreen() BIND(C,NAME="glutFullScreen")
496
IMPORT
497
END SUBROUTINE glutFullScreen
498
END INTERFACE
499
500
!  void glutSetCursor(int cursor)
501
PUBLIC glutSetCursor
502
INTERFACE
503
SUBROUTINE glutSetCursor(cursor) BIND(C,NAME="glutSetCursor")
504
IMPORT
505
INTEGER(GLint), VALUE :: cursor
506
END SUBROUTINE glutSetCursor
507
END INTERFACE
508
509
!  void glutWarpPointer(int x, int y)
510
PUBLIC glutWarpPointer
511
INTERFACE
512
SUBROUTINE glutWarpPointer(x, y) BIND(C,NAME="glutWarpPointer")
513
IMPORT
514
INTEGER(GLint), VALUE :: x, y
515
END SUBROUTINE glutWarpPointer
516
END INTERFACE
517
518
519
!  GLUT overlay sub-API. 
520
!  void glutEstablishOverlay(void)
521
PUBLIC glutEstablishOverlay
522
INTERFACE
523
SUBROUTINE glutEstablishOverlay() BIND(C,NAME="glutEstablishOverlay")
524
IMPORT
525
END SUBROUTINE glutEstablishOverlay
526
END INTERFACE
527
528
!  void glutRemoveOverlay(void)
529
PUBLIC glutRemoveOverlay
530
INTERFACE
531
SUBROUTINE glutRemoveOverlay() BIND(C,NAME="glutRemoveOverlay")
532
IMPORT
533
END SUBROUTINE glutRemoveOverlay
534
END INTERFACE
535
536
!  void glutUseLayer(GLenum layer)
537
PUBLIC glutUseLayer
538
INTERFACE
539
SUBROUTINE glutUseLayer(layer) BIND(C,NAME="glutUseLayer")
540
IMPORT
541
INTEGER(GLenum), VALUE :: layer
542
END SUBROUTINE glutUseLayer
543
END INTERFACE
544
545
!  void glutPostOverlayRedisplay(void)
546
PUBLIC glutPostOverlayRedisplay
547
INTERFACE
548
SUBROUTINE glutPostOverlayRedisplay() BIND(C,NAME="glutPostOverlayRedisplay")
549
IMPORT
550
END SUBROUTINE glutPostOverlayRedisplay
551
END INTERFACE
552
553
!  void glutPostWindowOverlayRedisplay(int win)
554
PUBLIC glutPostWindowOverlayRedisplay
555
INTERFACE
556
SUBROUTINE glutPostWindowOverlayRedisplay(win) BIND(C,NAME="glutPostWindowOverlayRedisplay")
557
IMPORT
558
INTEGER(GLint), VALUE :: win
559
END SUBROUTINE glutPostWindowOverlayRedisplay
560
END INTERFACE
561
562
!  void glutShowOverlay(void)
563
PUBLIC glutShowOverlay
564
INTERFACE
565
SUBROUTINE glutShowOverlay() BIND(C,NAME="glutShowOverlay")
566
IMPORT
567
END SUBROUTINE glutShowOverlay
568
END INTERFACE
569
570
!  void glutHideOverlay(void)
571
PUBLIC glutHideOverlay
572
INTERFACE
573
SUBROUTINE glutHideOverlay() BIND(C,NAME="glutHideOverlay")
574
IMPORT
575
END SUBROUTINE glutHideOverlay
576
END INTERFACE
577
578
579
!  GLUT menu sub-API. 
580
!  int glutCreateMenu(void (GLUTCALLBACK *func)(int item))
581
PUBLIC glutCreateMenu
582
INTERFACE
583
FUNCTION glutCreateMenu(func) BIND(C,NAME="glutCreateMenu")
584
IMPORT
585
INTEGER(GLint) :: glutCreateMenu
586
!  void func(int item)
587
INTERFACE
588
SUBROUTINE func(item) BIND(C)
589
IMPORT
590
INTEGER(GLint), VALUE :: item
591
END SUBROUTINE func
592
END INTERFACE
593
END FUNCTION glutCreateMenu
594
END INTERFACE
595
596
!  void glutDestroyMenu(int menu)
597
PUBLIC glutDestroyMenu
598
INTERFACE
599
SUBROUTINE glutDestroyMenu(menu) BIND(C,NAME="glutDestroyMenu")
600
IMPORT
601
INTEGER(GLint), VALUE :: menu
602
END SUBROUTINE glutDestroyMenu
603
END INTERFACE
604
605
!  int glutGetMenu(void)
606
PUBLIC glutGetMenu
607
INTERFACE
608
FUNCTION glutGetMenu() BIND(C,NAME="glutGetMenu")
609
IMPORT
610
INTEGER(GLint) :: glutGetMenu
611
END FUNCTION glutGetMenu
612
END INTERFACE
613
614
!  void glutSetMenu(int menu)
615
PUBLIC glutSetMenu
616
INTERFACE
617
SUBROUTINE glutSetMenu(menu) BIND(C,NAME="glutSetMenu")
618
IMPORT
619
INTEGER(GLint), VALUE :: menu
620
END SUBROUTINE glutSetMenu
621
END INTERFACE
622
623
!  void glutAddMenuEntry(const char *label, int value)
624
PUBLIC glutAddMenuEntry
625
INTERFACE
626
SUBROUTINE glutAddMenuEntry(label, value) BIND(C,NAME="glutAddMenuEntry")
627
IMPORT
628
! CHARACTER, INTENT(IN) :: label
629
CHARACTER, DIMENSION(*), INTENT(IN) :: label
630
INTEGER(GLint), VALUE :: value
631
END SUBROUTINE glutAddMenuEntry
632
END INTERFACE
633
634
!  void glutAddSubMenu(const char *label, int submenu)
635
PUBLIC glutAddSubMenu
636
INTERFACE
637
SUBROUTINE glutAddSubMenu(label, submenu) BIND(C,NAME="glutAddSubMenu")
638
IMPORT
639
! CHARACTER, INTENT(IN) :: label
640
CHARACTER, DIMENSION(*), INTENT(IN) :: label
641
INTEGER(GLint), VALUE :: submenu
642
END SUBROUTINE glutAddSubMenu
643
END INTERFACE
644
645
!  void glutChangeToMenuEntry(int item, const char *label, int value)
646
PUBLIC glutChangeToMenuEntry
647
INTERFACE
648
SUBROUTINE glutChangeToMenuEntry(item, label, value) BIND(C,NAME="glutChangeToMenuEntry")
649
IMPORT
650
! CHARACTER, INTENT(IN) :: label
651
CHARACTER, DIMENSION(*), INTENT(IN) :: label
652
INTEGER(GLint), VALUE :: item, value
653
END SUBROUTINE glutChangeToMenuEntry
654
END INTERFACE
655
656
!  void glutChangeToSubMenu(int item, const char *label, int submenu)
657
PUBLIC glutChangeToSubMenu
658
INTERFACE
659
SUBROUTINE glutChangeToSubMenu(item, label, submenu) BIND(C,NAME="glutChangeToSubMenu")
660
IMPORT
661
! CHARACTER, INTENT(IN) :: label
662
CHARACTER, DIMENSION(*), INTENT(IN) :: label
663
INTEGER(GLint), VALUE :: item, submenu
664
END SUBROUTINE glutChangeToSubMenu
665
END INTERFACE
666
667
!  void glutRemoveMenuItem(int item)
668
PUBLIC glutRemoveMenuItem
669
INTERFACE
670
SUBROUTINE glutRemoveMenuItem(item) BIND(C,NAME="glutRemoveMenuItem")
671
IMPORT
672
INTEGER(GLint), VALUE :: item
673
END SUBROUTINE glutRemoveMenuItem
674
END INTERFACE
675
676
!  void glutAttachMenu(int button)
677
PUBLIC glutAttachMenu
678
INTERFACE
679
SUBROUTINE glutAttachMenu(button) BIND(C,NAME="glutAttachMenu")
680
IMPORT
681
INTEGER(GLint), VALUE :: button
682
END SUBROUTINE glutAttachMenu
683
END INTERFACE
684
685
!  void glutDetachMenu(int button)
686
PUBLIC glutDetachMenu
687
INTERFACE
688
SUBROUTINE glutDetachMenu(button) BIND(C,NAME="glutDetachMenu")
689
IMPORT
690
INTEGER(GLint), VALUE :: button
691
END SUBROUTINE glutDetachMenu
692
END INTERFACE
693
694
695
!  GLUT window callback sub-API. 
696
!  void glutDisplayFunc(void (GLUTCALLBACK *func)(void))
697
PUBLIC glutDisplayFunc
698
INTERFACE glutDisplayFunc
699
MODULE PROCEDURE glutDisplayFunc_f03
700
END INTERFACE glutDisplayFunc
701
INTERFACE
702
SUBROUTINE glutDisplayFunc_gl(func) BIND(C,NAME="glutDisplayFunc")
703
IMPORT
704
!  void func(void)
705
TYPE(C_FUNPTR), VALUE :: func
706
END SUBROUTINE glutDisplayFunc_gl
707
END INTERFACE
708
709
!  void glutReshapeFunc(void (GLUTCALLBACK *func)(int width, int height))
710
PUBLIC glutReshapeFunc
711
INTERFACE glutReshapeFunc
712
MODULE PROCEDURE glutReshapeFunc_f03
713
END INTERFACE glutReshapeFunc
714
INTERFACE
715
SUBROUTINE glutReshapeFunc_gl(func) BIND(C,NAME="glutReshapeFunc")
716
IMPORT
717
!  void func(int width, int height)
718
TYPE(C_FUNPTR), VALUE :: func
719
END SUBROUTINE glutReshapeFunc_gl
720
END INTERFACE
721
722
!  void glutKeyboardFunc(void (GLUTCALLBACK *func)(unsigned char key, int x, int y))
723
PUBLIC glutKeyboardFunc
724
INTERFACE glutKeyboardFunc
725
MODULE PROCEDURE glutKeyboardFunc_f03
726
END INTERFACE glutKeyboardFunc
727
INTERFACE
728
SUBROUTINE glutKeyboardFunc_gl(func) BIND(C,NAME="glutKeyboardFunc")
729
IMPORT
730
!  void func(unsigned char key, int x, int y)
731
TYPE(C_FUNPTR), VALUE :: func
732
END SUBROUTINE glutKeyboardFunc_gl
733
END INTERFACE
734
735
!  void glutMouseFunc(void (GLUTCALLBACK *func)(int button, int state, int x, int y))
736
PUBLIC glutMouseFunc
737
INTERFACE glutMouseFunc
738
MODULE PROCEDURE glutMouseFunc_f03
739
END INTERFACE glutMouseFunc
740
INTERFACE
741
SUBROUTINE glutMouseFunc_gl(func) BIND(C,NAME="glutMouseFunc")
742
IMPORT
743
!  void func(int button, int state, int x, int y)
744
TYPE(C_FUNPTR), VALUE :: func
745
END SUBROUTINE glutMouseFunc_gl
746
END INTERFACE
747
748
!  void glutMotionFunc(void (GLUTCALLBACK *func)(int x, int y))
749
PUBLIC glutMotionFunc
750
INTERFACE glutMotionFunc
751
MODULE PROCEDURE glutMotionFunc_f03
752
END INTERFACE glutMotionFunc
753
INTERFACE
754
SUBROUTINE glutMotionFunc_gl(func) BIND(C,NAME="glutMotionFunc")
755
IMPORT
756
!  void func(int x, int y)
757
TYPE(C_FUNPTR), VALUE :: func
758
END SUBROUTINE glutMotionFunc_gl
759
END INTERFACE
760
761
!  void glutPassiveMotionFunc(void (GLUTCALLBACK *func)(int x, int y))
762
PUBLIC glutPassiveMotionFunc
763
INTERFACE glutPassiveMotionFunc
764
MODULE PROCEDURE glutPassiveMotionFunc_f03
765
END INTERFACE glutPassiveMotionFunc
766
INTERFACE
767
SUBROUTINE glutPassiveMotionFunc_gl(func) BIND(C,NAME="glutPassiveMotionFunc")
768
IMPORT
769
!  void func(int x, int y)
770
TYPE(C_FUNPTR), VALUE :: func
771
END SUBROUTINE glutPassiveMotionFunc_gl
772
END INTERFACE
773
774
!  void glutEntryFunc(void (GLUTCALLBACK *func)(int state))
775
PUBLIC glutEntryFunc
776
INTERFACE glutEntryFunc
777
MODULE PROCEDURE glutEntryFunc_f03
778
END INTERFACE glutEntryFunc
779
INTERFACE
780
SUBROUTINE glutEntryFunc_gl(func) BIND(C,NAME="glutEntryFunc")
781
IMPORT
782
!  void func(int state)
783
TYPE(C_FUNPTR), VALUE :: func
784
END SUBROUTINE glutEntryFunc_gl
785
END INTERFACE
786
787
!  void glutVisibilityFunc(void (GLUTCALLBACK *func)(int state))
788
PUBLIC glutVisibilityFunc
789
INTERFACE glutVisibilityFunc
790
MODULE PROCEDURE glutVisibilityFunc_f03
791
END INTERFACE glutVisibilityFunc
792
INTERFACE
793
SUBROUTINE glutVisibilityFunc_gl(func) BIND(C,NAME="glutVisibilityFunc")
794
IMPORT
795
!  void func(int state)
796
TYPE(C_FUNPTR), VALUE :: func
797
END SUBROUTINE glutVisibilityFunc_gl
798
END INTERFACE
799
800
!  void glutIdleFunc(void (GLUTCALLBACK *func)(void))
801
PUBLIC glutIdleFunc
802
INTERFACE glutIdleFunc
803
MODULE PROCEDURE glutIdleFunc_f03
804
END INTERFACE glutIdleFunc
805
INTERFACE
806
SUBROUTINE glutIdleFunc_gl(func) BIND(C,NAME="glutIdleFunc")
807
IMPORT
808
!  void func(void)
809
TYPE(C_FUNPTR), VALUE :: func
810
END SUBROUTINE glutIdleFunc_gl
811
END INTERFACE
812
813
!  void glutTimerFunc(unsigned int millis, void (GLUTCALLBACK *func)(int value), int value)
814
PUBLIC glutTimerFunc
815
INTERFACE glutTimerFunc
816
MODULE PROCEDURE glutTimerFunc_f03
817
END INTERFACE glutTimerFunc
818
INTERFACE
819
SUBROUTINE glutTimerFunc_gl(millis, func, value) BIND(C,NAME="glutTimerFunc")
820
IMPORT
821
INTEGER(GLint), VALUE :: value
822
INTEGER(GLuint), VALUE :: millis
823
!  void func(int value)
824
TYPE(C_FUNPTR), VALUE :: func
825
END SUBROUTINE glutTimerFunc_gl
826
END INTERFACE
827
828
!  void glutMenuStateFunc(void (GLUTCALLBACK *func)(int state))
829
PUBLIC glutMenuStateFunc
830
INTERFACE glutMenuStateFunc
831
MODULE PROCEDURE glutMenuStateFunc_f03
832
END INTERFACE glutMenuStateFunc
833
INTERFACE
834
SUBROUTINE glutMenuStateFunc_gl(func) BIND(C,NAME="glutMenuStateFunc")
835
IMPORT
836
!  void func(int state)
837
TYPE(C_FUNPTR), VALUE :: func
838
END SUBROUTINE glutMenuStateFunc_gl
839
END INTERFACE
840
841
!  void glutSpecialFunc(void (GLUTCALLBACK *func)(int key, int x, int y))
842
PUBLIC glutSpecialFunc
843
INTERFACE glutSpecialFunc
844
MODULE PROCEDURE glutSpecialFunc_f03
845
END INTERFACE glutSpecialFunc
846
INTERFACE
847
SUBROUTINE glutSpecialFunc_gl(func) BIND(C,NAME="glutSpecialFunc")
848
IMPORT
849
!  void func(int key, int x, int y)
850
TYPE(C_FUNPTR), VALUE :: func
851
END SUBROUTINE glutSpecialFunc_gl
852
END INTERFACE
853
854
!  void glutSpaceballMotionFunc(void (GLUTCALLBACK *func)(int x, int y, int z))
855
PUBLIC glutSpaceballMotionFunc
856
INTERFACE glutSpaceballMotionFunc
857
MODULE PROCEDURE glutSpaceballMotionFunc_f03
858
END INTERFACE glutSpaceballMotionFunc
859
INTERFACE
860
SUBROUTINE glutSpaceballMotionFunc_gl(func) BIND(C,NAME="glutSpaceballMotionFunc")
861
IMPORT
862
!  void func(int x, int y, int z)
863
TYPE(C_FUNPTR), VALUE :: func
864
END SUBROUTINE glutSpaceballMotionFunc_gl
865
END INTERFACE
866
867
!  void glutSpaceballRotateFunc(void (GLUTCALLBACK *func)(int x, int y, int z))
868
PUBLIC glutSpaceballRotateFunc
869
INTERFACE glutSpaceballRotateFunc
870
MODULE PROCEDURE glutSpaceballRotateFunc_f03
871
END INTERFACE glutSpaceballRotateFunc
872
INTERFACE
873
SUBROUTINE glutSpaceballRotateFunc_gl(func) BIND(C,NAME="glutSpaceballRotateFunc")
874
IMPORT
875
!  void func(int x, int y, int z)
876
TYPE(C_FUNPTR), VALUE :: func
877
END SUBROUTINE glutSpaceballRotateFunc_gl
878
END INTERFACE
879
880
!  void glutSpaceballButtonFunc(void (GLUTCALLBACK *func)(int button, int state))
881
PUBLIC glutSpaceballButtonFunc
882
INTERFACE glutSpaceballButtonFunc
883
MODULE PROCEDURE glutSpaceballButtonFunc_f03
884
END INTERFACE glutSpaceballButtonFunc
885
INTERFACE
886
SUBROUTINE glutSpaceballButtonFunc_gl(func) BIND(C,NAME="glutSpaceballButtonFunc")
887
IMPORT
888
!  void func(int button, int state)
889
TYPE(C_FUNPTR), VALUE :: func
890
END SUBROUTINE glutSpaceballButtonFunc_gl
891
END INTERFACE
892
893
!  void glutButtonBoxFunc(void (GLUTCALLBACK *func)(int button, int state))
894
PUBLIC glutButtonBoxFunc
895
INTERFACE glutButtonBoxFunc
896
MODULE PROCEDURE glutButtonBoxFunc_f03
897
END INTERFACE glutButtonBoxFunc
898
INTERFACE
899
SUBROUTINE glutButtonBoxFunc_gl(func) BIND(C,NAME="glutButtonBoxFunc")
900
IMPORT
901
!  void func(int button, int state)
902
TYPE(C_FUNPTR), VALUE :: func
903
END SUBROUTINE glutButtonBoxFunc_gl
904
END INTERFACE
905
906
!  void glutDialsFunc(void (GLUTCALLBACK *func)(int dial, int value))
907
PUBLIC glutDialsFunc
908
INTERFACE glutDialsFunc
909
MODULE PROCEDURE glutDialsFunc_f03
910
END INTERFACE glutDialsFunc
911
INTERFACE
912
SUBROUTINE glutDialsFunc_gl(func) BIND(C,NAME="glutDialsFunc")
913
IMPORT
914
!  void func(int dial, int value)
915
TYPE(C_FUNPTR), VALUE :: func
916
END SUBROUTINE glutDialsFunc_gl
917
END INTERFACE
918
919
!  void glutTabletMotionFunc(void (GLUTCALLBACK *func)(int x, int y))
920
PUBLIC glutTabletMotionFunc
921
INTERFACE glutTabletMotionFunc
922
MODULE PROCEDURE glutTabletMotionFunc_f03
923
END INTERFACE glutTabletMotionFunc
924
INTERFACE
925
SUBROUTINE glutTabletMotionFunc_gl(func) BIND(C,NAME="glutTabletMotionFunc")
926
IMPORT
927
!  void func(int x, int y)
928
TYPE(C_FUNPTR), VALUE :: func
929
END SUBROUTINE glutTabletMotionFunc_gl
930
END INTERFACE
931
932
!  void glutTabletButtonFunc(void (GLUTCALLBACK *func)(int button, int state, int x, int y))
933
PUBLIC glutTabletButtonFunc
934
INTERFACE glutTabletButtonFunc
935
MODULE PROCEDURE glutTabletButtonFunc_f03
936
END INTERFACE glutTabletButtonFunc
937
INTERFACE
938
SUBROUTINE glutTabletButtonFunc_gl(func) BIND(C,NAME="glutTabletButtonFunc")
939
IMPORT
940
!  void func(int button, int state, int x, int y)
941
TYPE(C_FUNPTR), VALUE :: func
942
END SUBROUTINE glutTabletButtonFunc_gl
943
END INTERFACE
944
945
!  void glutMenuStatusFunc(void (GLUTCALLBACK *func)(int status, int x, int y))
946
PUBLIC glutMenuStatusFunc
947
INTERFACE glutMenuStatusFunc
948
MODULE PROCEDURE glutMenuStatusFunc_f03
949
END INTERFACE glutMenuStatusFunc
950
INTERFACE
951
SUBROUTINE glutMenuStatusFunc_gl(func) BIND(C,NAME="glutMenuStatusFunc")
952
IMPORT
953
!  void func(int status, int x, int y)
954
TYPE(C_FUNPTR), VALUE :: func
955
END SUBROUTINE glutMenuStatusFunc_gl
956
END INTERFACE
957
958
!  void glutOverlayDisplayFunc(void (GLUTCALLBACK *func)(void))
959
PUBLIC glutOverlayDisplayFunc
960
INTERFACE glutOverlayDisplayFunc
961
MODULE PROCEDURE glutOverlayDisplayFunc_f03
962
END INTERFACE glutOverlayDisplayFunc
963
INTERFACE
964
SUBROUTINE glutOverlayDisplayFunc_gl(func) BIND(C,NAME="glutOverlayDisplayFunc")
965
IMPORT
966
!  void func(void)
967
TYPE(C_FUNPTR), VALUE :: func
968
END SUBROUTINE glutOverlayDisplayFunc_gl
969
END INTERFACE
970
971
!  void glutWindowStatusFunc(void (GLUTCALLBACK *func)(int state))
972
PUBLIC glutWindowStatusFunc
973
INTERFACE glutWindowStatusFunc
974
MODULE PROCEDURE glutWindowStatusFunc_f03
975
END INTERFACE glutWindowStatusFunc
976
INTERFACE
977
SUBROUTINE glutWindowStatusFunc_gl(func) BIND(C,NAME="glutWindowStatusFunc")
978
IMPORT
979
!  void func(int state)
980
TYPE(C_FUNPTR), VALUE :: func
981
END SUBROUTINE glutWindowStatusFunc_gl
982
END INTERFACE
983
984
!  void glutKeyboardUpFunc(void (GLUTCALLBACK *func)(unsigned char key, int x, int y))
985
PUBLIC glutKeyboardUpFunc
986
INTERFACE glutKeyboardUpFunc
987
MODULE PROCEDURE glutKeyboardUpFunc_f03
988
END INTERFACE glutKeyboardUpFunc
989
INTERFACE
990
SUBROUTINE glutKeyboardUpFunc_gl(func) BIND(C,NAME="glutKeyboardUpFunc")
991
IMPORT
992
!  void func(unsigned char key, int x, int y)
993
TYPE(C_FUNPTR), VALUE :: func
994
END SUBROUTINE glutKeyboardUpFunc_gl
995
END INTERFACE
996
997
!  void glutSpecialUpFunc(void (GLUTCALLBACK *func)(int key, int x, int y))
998
PUBLIC glutSpecialUpFunc
999
INTERFACE glutSpecialUpFunc
1000
MODULE PROCEDURE glutSpecialUpFunc_f03
1001
END INTERFACE glutSpecialUpFunc
1002
INTERFACE
1003
SUBROUTINE glutSpecialUpFunc_gl(func) BIND(C,NAME="glutSpecialUpFunc")
1004
IMPORT
1005
!  void func(int key, int x, int y)
1006
TYPE(C_FUNPTR), VALUE :: func
1007
END SUBROUTINE glutSpecialUpFunc_gl
1008
END INTERFACE
1009
1010
!  void glutJoystickFunc(void (GLUTCALLBACK *func)(unsigned int buttonMask, int x, int y, int z), int pollInterval)
1011
PUBLIC glutJoystickFunc
1012
INTERFACE glutJoystickFunc
1013
MODULE PROCEDURE glutJoystickFunc_f03
1014
END INTERFACE glutJoystickFunc
1015
INTERFACE
1016
SUBROUTINE glutJoystickFunc_gl(func, pollInterval) BIND(C,NAME="glutJoystickFunc")
1017
IMPORT
1018
INTEGER(GLint), VALUE :: pollInterval
1019
!  void func(unsigned int buttonMask, int x, int y, int z)
1020
TYPE(C_FUNPTR), VALUE :: func
1021
END SUBROUTINE glutJoystickFunc_gl
1022
END INTERFACE
1023
1024
1025
!  GLUT color index sub-API. 
1026
!  void glutSetColor(int ndx, GLfloat red, GLfloat green, GLfloat blue)
1027
PUBLIC glutSetColor
1028
INTERFACE
1029
SUBROUTINE glutSetColor(ndx, red, green, blue) BIND(C,NAME="glutSetColor")
1030
IMPORT
1031
INTEGER(GLint), VALUE :: ndx
1032
REAL(GLfloat), VALUE :: red, green, blue
1033
END SUBROUTINE glutSetColor
1034
END INTERFACE
1035
1036
!  GLfloat glutGetColor(int ndx, int component)
1037
PUBLIC glutGetColor
1038
INTERFACE
1039
FUNCTION glutGetColor(ndx, component) BIND(C,NAME="glutGetColor")
1040
IMPORT
1041
REAL(GLfloat) :: glutGetColor
1042
INTEGER(GLint), VALUE :: ndx, component
1043
END FUNCTION glutGetColor
1044
END INTERFACE
1045
1046
!  void glutCopyColormap(int win)
1047
PUBLIC glutCopyColormap
1048
INTERFACE
1049
SUBROUTINE glutCopyColormap(win) BIND(C,NAME="glutCopyColormap")
1050
IMPORT
1051
INTEGER(GLint), VALUE :: win
1052
END SUBROUTINE glutCopyColormap
1053
END INTERFACE
1054
1055
1056
!  GLUT state retrieval sub-API. 
1057
!  int glutGet(GLenum type)
1058
PUBLIC glutGet
1059
INTERFACE
1060
FUNCTION glutGet(type) BIND(C,NAME="glutGet")
1061
IMPORT
1062
INTEGER(GLint) :: glutGet
1063
INTEGER(GLenum), VALUE :: type
1064
END FUNCTION glutGet
1065
END INTERFACE
1066
1067
!  int glutDeviceGet(GLenum type)
1068
PUBLIC glutDeviceGet
1069
INTERFACE
1070
FUNCTION glutDeviceGet(type) BIND(C,NAME="glutDeviceGet")
1071
IMPORT
1072
INTEGER(GLint) :: glutDeviceGet
1073
INTEGER(GLenum), VALUE :: type
1074
END FUNCTION glutDeviceGet
1075
END INTERFACE
1076
1077
!  GLUT extension support sub-API 
1078
!  int glutExtensionSupported(const char *name)
1079
PUBLIC glutExtensionSupported
1080
INTERFACE
1081
FUNCTION glutExtensionSupported(name) BIND(C,NAME="glutExtensionSupported")
1082
IMPORT
1083
INTEGER(GLint) :: glutExtensionSupported
1084
! CHARACTER, INTENT(IN) :: name
1085
CHARACTER, DIMENSION(*), INTENT(IN) :: name
1086
END FUNCTION glutExtensionSupported
1087
END INTERFACE
1088
1089
!  int glutGetModifiers(void)
1090
PUBLIC glutGetModifiers
1091
INTERFACE
1092
FUNCTION glutGetModifiers() BIND(C,NAME="glutGetModifiers")
1093
IMPORT
1094
INTEGER(GLint) :: glutGetModifiers
1095
END FUNCTION glutGetModifiers
1096
END INTERFACE
1097
1098
!  int glutLayerGet(GLenum type)
1099
PUBLIC glutLayerGet
1100
INTERFACE
1101
FUNCTION glutLayerGet(type) BIND(C,NAME="glutLayerGet")
1102
IMPORT
1103
INTEGER(GLint) :: glutLayerGet
1104
INTEGER(GLenum), VALUE :: type
1105
END FUNCTION glutLayerGet
1106
END INTERFACE
1107
1108
!  void * glutGetProcAddress(const char *procName)
1109
PUBLIC glutGetProcAddress
1110
INTERFACE
1111
FUNCTION glutGetProcAddress(procName) BIND(C,NAME="glutGetProcAddress")
1112
IMPORT
1113
TYPE(C_PTR) :: glutGetProcAddress
1114
! CHARACTER, INTENT(IN) :: procName
1115
CHARACTER, DIMENSION(*), INTENT(IN) :: procName
1116
END FUNCTION glutGetProcAddress
1117
END INTERFACE
1118
1119
1120
!  GLUT font sub-API 
1121
!  void glutBitmapCharacter(void *font, int character)
1122
PUBLIC glutBitmapCharacter
1123
INTERFACE
1124
SUBROUTINE glutBitmapCharacter(font, character) BIND(C,NAME="glutBitmapCharacter")
1125
IMPORT
1126
INTEGER(GLint), VALUE :: character
1127
TYPE(C_PTR), VALUE :: font
1128
END SUBROUTINE glutBitmapCharacter
1129
END INTERFACE
1130
1131
!  int glutBitmapWidth(void *font, int character)
1132
PUBLIC glutBitmapWidth
1133
INTERFACE
1134
FUNCTION glutBitmapWidth(font, character) BIND(C,NAME="glutBitmapWidth")
1135
IMPORT
1136
INTEGER(GLint) :: glutBitmapWidth
1137
INTEGER(GLint), VALUE :: character
1138
TYPE(C_PTR), VALUE :: font
1139
END FUNCTION glutBitmapWidth
1140
END INTERFACE
1141
1142
!  void glutStrokeCharacter(void *font, int character)
1143
PUBLIC glutStrokeCharacter
1144
INTERFACE
1145
SUBROUTINE glutStrokeCharacter(font, character) BIND(C,NAME="glutStrokeCharacter")
1146
IMPORT
1147
INTEGER(GLint), VALUE :: character
1148
TYPE(C_PTR), VALUE :: font
1149
END SUBROUTINE glutStrokeCharacter
1150
END INTERFACE
1151
1152
!  int glutStrokeWidth(void *font, int character)
1153
PUBLIC glutStrokeWidth
1154
INTERFACE
1155
FUNCTION glutStrokeWidth(font, character) BIND(C,NAME="glutStrokeWidth")
1156
IMPORT
1157
INTEGER(GLint) :: glutStrokeWidth
1158
INTEGER(GLint), VALUE :: character
1159
TYPE(C_PTR), VALUE :: font
1160
END FUNCTION glutStrokeWidth
1161
END INTERFACE
1162
1163
!  int glutBitmapLength(void *font, const unsigned char *string)
1164
PUBLIC glutBitmapLength
1165
INTERFACE
1166
FUNCTION glutBitmapLength(font, string) BIND(C,NAME="glutBitmapLength")
1167
IMPORT
1168
INTEGER(GLint) :: glutBitmapLength
1169
! CHARACTER, INTENT(IN) :: string
1170
CHARACTER, DIMENSION(*), INTENT(IN) :: string
1171
TYPE(C_PTR), VALUE :: font
1172
END FUNCTION glutBitmapLength
1173
END INTERFACE
1174
1175
!  int glutStrokeLength(void *font, const unsigned char *string)
1176
PUBLIC glutStrokeLength
1177
INTERFACE
1178
FUNCTION glutStrokeLength(font, string) BIND(C,NAME="glutStrokeLength")
1179
IMPORT
1180
INTEGER(GLint) :: glutStrokeLength
1181
! CHARACTER, INTENT(IN) :: string
1182
CHARACTER, DIMENSION(*), INTENT(IN) :: string
1183
TYPE(C_PTR), VALUE :: font
1184
END FUNCTION glutStrokeLength
1185
END INTERFACE
1186
1187
1188
!  GLUT pre-built models sub-API 
1189
!  void glutWireSphere(GLdouble radius, GLint slices, GLint stacks)
1190
PUBLIC glutWireSphere
1191
INTERFACE
1192
SUBROUTINE glutWireSphere(radius, slices, stacks) BIND(C,NAME="glutWireSphere")
1193
IMPORT
1194
INTEGER(GLint), VALUE :: slices, stacks
1195
REAL(GLdouble), VALUE :: radius
1196
END SUBROUTINE glutWireSphere
1197
END INTERFACE
1198
1199
!  void glutSolidSphere(GLdouble radius, GLint slices, GLint stacks)
1200
PUBLIC glutSolidSphere
1201
INTERFACE
1202
SUBROUTINE glutSolidSphere(radius, slices, stacks) BIND(C,NAME="glutSolidSphere")
1203
IMPORT
1204
INTEGER(GLint), VALUE :: slices, stacks
1205
REAL(GLdouble), VALUE :: radius
1206
END SUBROUTINE glutSolidSphere
1207
END INTERFACE
1208
1209
!  void glutWireCone(GLdouble base, GLdouble height, GLint slices, GLint stacks)
1210
PUBLIC glutWireCone
1211
INTERFACE
1212
SUBROUTINE glutWireCone(base, height, slices, stacks) BIND(C,NAME="glutWireCone")
1213
IMPORT
1214
INTEGER(GLint), VALUE :: slices, stacks
1215
REAL(GLdouble), VALUE :: base, height
1216
END SUBROUTINE glutWireCone
1217
END INTERFACE
1218
1219
!  void glutSolidCone(GLdouble base, GLdouble height, GLint slices, GLint stacks)
1220
PUBLIC glutSolidCone
1221
INTERFACE
1222
SUBROUTINE glutSolidCone(base, height, slices, stacks) BIND(C,NAME="glutSolidCone")
1223
IMPORT
1224
INTEGER(GLint), VALUE :: slices, stacks
1225
REAL(GLdouble), VALUE :: base, height
1226
END SUBROUTINE glutSolidCone
1227
END INTERFACE
1228
1229
!  void glutWireCube(GLdouble size)
1230
PUBLIC glutWireCube
1231
INTERFACE
1232
SUBROUTINE glutWireCube(size) BIND(C,NAME="glutWireCube")
1233
IMPORT
1234
REAL(GLdouble), VALUE :: size
1235
END SUBROUTINE glutWireCube
1236
END INTERFACE
1237
1238
!  void glutSolidCube(GLdouble size)
1239
PUBLIC glutSolidCube
1240
INTERFACE
1241
SUBROUTINE glutSolidCube(size) BIND(C,NAME="glutSolidCube")
1242
IMPORT
1243
REAL(GLdouble), VALUE :: size
1244
END SUBROUTINE glutSolidCube
1245
END INTERFACE
1246
1247
!  void glutWireTorus(GLdouble innerRadius, GLdouble outerRadius, GLint sides, GLint rings)
1248
PUBLIC glutWireTorus
1249
INTERFACE
1250
SUBROUTINE glutWireTorus(innerRadius, outerRadius, sides, rings) BIND(C,NAME="glutWireTorus")
1251
IMPORT
1252
INTEGER(GLint), VALUE :: sides, rings
1253
REAL(GLdouble), VALUE :: innerRadius, outerRadius
1254
END SUBROUTINE glutWireTorus
1255
END INTERFACE
1256
1257
!  void glutSolidTorus(GLdouble innerRadius, GLdouble outerRadius, GLint sides, GLint rings)
1258
PUBLIC glutSolidTorus
1259
INTERFACE
1260
SUBROUTINE glutSolidTorus(innerRadius, outerRadius, sides, rings) BIND(C,NAME="glutSolidTorus")
1261
IMPORT
1262
INTEGER(GLint), VALUE :: sides, rings
1263
REAL(GLdouble), VALUE :: innerRadius, outerRadius
1264
END SUBROUTINE glutSolidTorus
1265
END INTERFACE
1266
1267
!  void glutWireDodecahedron(void)
1268
PUBLIC glutWireDodecahedron
1269
INTERFACE
1270
SUBROUTINE glutWireDodecahedron() BIND(C,NAME="glutWireDodecahedron")
1271
IMPORT
1272
END SUBROUTINE glutWireDodecahedron
1273
END INTERFACE
1274
1275
!  void glutSolidDodecahedron(void)
1276
PUBLIC glutSolidDodecahedron
1277
INTERFACE
1278
SUBROUTINE glutSolidDodecahedron() BIND(C,NAME="glutSolidDodecahedron")
1279
IMPORT
1280
END SUBROUTINE glutSolidDodecahedron
1281
END INTERFACE
1282
1283
!  void glutWireTeapot(GLdouble size)
1284
PUBLIC glutWireTeapot
1285
INTERFACE
1286
SUBROUTINE glutWireTeapot(size) BIND(C,NAME="glutWireTeapot")
1287
IMPORT
1288
REAL(GLdouble), VALUE :: size
1289
END SUBROUTINE glutWireTeapot
1290
END INTERFACE
1291
1292
!  void glutSolidTeapot(GLdouble size)
1293
PUBLIC glutSolidTeapot
1294
INTERFACE
1295
SUBROUTINE glutSolidTeapot(size) BIND(C,NAME="glutSolidTeapot")
1296
IMPORT
1297
REAL(GLdouble), VALUE :: size
1298
END SUBROUTINE glutSolidTeapot
1299
END INTERFACE
1300
1301
!  void glutWireOctahedron(void)
1302
PUBLIC glutWireOctahedron
1303
INTERFACE
1304
SUBROUTINE glutWireOctahedron() BIND(C,NAME="glutWireOctahedron")
1305
IMPORT
1306
END SUBROUTINE glutWireOctahedron
1307
END INTERFACE
1308
1309
!  void glutSolidOctahedron(void)
1310
PUBLIC glutSolidOctahedron
1311
INTERFACE
1312
SUBROUTINE glutSolidOctahedron() BIND(C,NAME="glutSolidOctahedron")
1313
IMPORT
1314
END SUBROUTINE glutSolidOctahedron
1315
END INTERFACE
1316
1317
!  void glutWireTetrahedron(void)
1318
PUBLIC glutWireTetrahedron
1319
INTERFACE
1320
SUBROUTINE glutWireTetrahedron() BIND(C,NAME="glutWireTetrahedron")
1321
IMPORT
1322
END SUBROUTINE glutWireTetrahedron
1323
END INTERFACE
1324
1325
!  void glutSolidTetrahedron(void)
1326
PUBLIC glutSolidTetrahedron
1327
INTERFACE
1328
SUBROUTINE glutSolidTetrahedron() BIND(C,NAME="glutSolidTetrahedron")
1329
IMPORT
1330
END SUBROUTINE glutSolidTetrahedron
1331
END INTERFACE
1332
1333
!  void glutWireIcosahedron(void)
1334
PUBLIC glutWireIcosahedron
1335
INTERFACE
1336
SUBROUTINE glutWireIcosahedron() BIND(C,NAME="glutWireIcosahedron")
1337
IMPORT
1338
END SUBROUTINE glutWireIcosahedron
1339
END INTERFACE
1340
1341
!  void glutSolidIcosahedron(void)
1342
PUBLIC glutSolidIcosahedron
1343
INTERFACE
1344
SUBROUTINE glutSolidIcosahedron() BIND(C,NAME="glutSolidIcosahedron")
1345
IMPORT
1346
END SUBROUTINE glutSolidIcosahedron
1347
END INTERFACE
1348
1349
1350
!  GLUT video resize sub-API. 
1351
!  int glutVideoResizeGet(GLenum param)
1352
PUBLIC glutVideoResizeGet
1353
INTERFACE
1354
FUNCTION glutVideoResizeGet(param) BIND(C,NAME="glutVideoResizeGet")
1355
IMPORT
1356
INTEGER(GLint) :: glutVideoResizeGet
1357
INTEGER(GLenum), VALUE :: param
1358
END FUNCTION glutVideoResizeGet
1359
END INTERFACE
1360
1361
!  void glutSetupVideoResizing(void)
1362
PUBLIC glutSetupVideoResizing
1363
INTERFACE
1364
SUBROUTINE glutSetupVideoResizing() BIND(C,NAME="glutSetupVideoResizing")
1365
IMPORT
1366
END SUBROUTINE glutSetupVideoResizing
1367
END INTERFACE
1368
1369
!  void glutStopVideoResizing(void)
1370
PUBLIC glutStopVideoResizing
1371
INTERFACE
1372
SUBROUTINE glutStopVideoResizing() BIND(C,NAME="glutStopVideoResizing")
1373
IMPORT
1374
END SUBROUTINE glutStopVideoResizing
1375
END INTERFACE
1376
1377
!  void glutVideoResize(int x, int y, int width, int height)
1378
PUBLIC glutVideoResize
1379
INTERFACE
1380
SUBROUTINE glutVideoResize(x, y, width, height) BIND(C,NAME="glutVideoResize")
1381
IMPORT
1382
INTEGER(GLint), VALUE :: x, y, width, height
1383
END SUBROUTINE glutVideoResize
1384
END INTERFACE
1385
1386
!  void glutVideoPan(int x, int y, int width, int height)
1387
PUBLIC glutVideoPan
1388
INTERFACE
1389
SUBROUTINE glutVideoPan(x, y, width, height) BIND(C,NAME="glutVideoPan")
1390
IMPORT
1391
INTEGER(GLint), VALUE :: x, y, width, height
1392
END SUBROUTINE glutVideoPan
1393
END INTERFACE
1394
1395
1396
!  GLUT debugging sub-API. 
1397
!  void glutReportErrors(void)
1398
PUBLIC glutReportErrors
1399
INTERFACE
1400
SUBROUTINE glutReportErrors() BIND(C,NAME="glutReportErrors")
1401
IMPORT
1402
END SUBROUTINE glutReportErrors
1403
END INTERFACE
1404
1405
1406
!  GLUT device control sub-API. 
1407
!  glutSetKeyRepeat modes. 
1408
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_KEY_REPEAT_OFF = 0
1409
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_KEY_REPEAT_ON = 1
1410
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_KEY_REPEAT_DEFAULT = 2
1411
1412
!  Joystick button masks. 
1413
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_JOYSTICK_BUTTON_A = 1
1414
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_JOYSTICK_BUTTON_B = 2
1415
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_JOYSTICK_BUTTON_C = 4
1416
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_JOYSTICK_BUTTON_D = 8
1417
1418
!  void glutIgnoreKeyRepeat(int ignore)
1419
PUBLIC glutIgnoreKeyRepeat
1420
INTERFACE
1421
SUBROUTINE glutIgnoreKeyRepeat(ignore) BIND(C,NAME="glutIgnoreKeyRepeat")
1422
IMPORT
1423
INTEGER(GLint), VALUE :: ignore
1424
END SUBROUTINE glutIgnoreKeyRepeat
1425
END INTERFACE
1426
1427
!  void glutSetKeyRepeat(int repeatMode)
1428
PUBLIC glutSetKeyRepeat
1429
INTERFACE
1430
SUBROUTINE glutSetKeyRepeat(repeatMode) BIND(C,NAME="glutSetKeyRepeat")
1431
IMPORT
1432
INTEGER(GLint), VALUE :: repeatMode
1433
END SUBROUTINE glutSetKeyRepeat
1434
END INTERFACE
1435
1436
!  void glutForceJoystickFunc(void)
1437
PUBLIC glutForceJoystickFunc
1438
INTERFACE
1439
SUBROUTINE glutForceJoystickFunc() BIND(C,NAME="glutForceJoystickFunc")
1440
IMPORT
1441
END SUBROUTINE glutForceJoystickFunc
1442
END INTERFACE
1443
1444
1445
!  GLUT game mode sub-API. 
1446
!  glutGameModeGet. 
1447
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_GAME_MODE_ACTIVE = 0
1448
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_GAME_MODE_POSSIBLE = 1
1449
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_GAME_MODE_WIDTH = 2
1450
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_GAME_MODE_HEIGHT = 3
1451
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_GAME_MODE_PIXEL_DEPTH = 4
1452
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_GAME_MODE_REFRESH_RATE = 5
1453
INTEGER(GLenum), PARAMETER, PUBLIC :: GLUT_GAME_MODE_DISPLAY_CHANGED = 6
1454
1455
!  void glutGameModeString(const char *string)
1456
PUBLIC glutGameModeString
1457
INTERFACE
1458
SUBROUTINE glutGameModeString(string) BIND(C,NAME="glutGameModeString")
1459
IMPORT
1460
! CHARACTER, INTENT(IN) :: string
1461
CHARACTER, DIMENSION(*), INTENT(IN) :: string
1462
END SUBROUTINE glutGameModeString
1463
END INTERFACE
1464
1465
!  int glutEnterGameMode(void)
1466
PUBLIC glutEnterGameMode
1467
INTERFACE
1468
FUNCTION glutEnterGameMode() BIND(C,NAME="glutEnterGameMode")
1469
IMPORT
1470
INTEGER(GLint) :: glutEnterGameMode
1471
END FUNCTION glutEnterGameMode
1472
END INTERFACE
1473
1474
!  void glutLeaveGameMode(void)
1475
PUBLIC glutLeaveGameMode
1476
INTERFACE
1477
SUBROUTINE glutLeaveGameMode() BIND(C,NAME="glutLeaveGameMode")
1478
IMPORT
1479
END SUBROUTINE glutLeaveGameMode
1480
END INTERFACE
1481
1482
!  int glutGameModeGet(GLenum mode)
1483
PUBLIC glutGameModeGet
1484
INTERFACE
1485
FUNCTION glutGameModeGet(mode) BIND(C,NAME="glutGameModeGet")
1486
IMPORT
1487
INTEGER(GLint) :: glutGameModeGet
1488
INTEGER(GLenum), VALUE :: mode
1489
END FUNCTION glutGameModeGet
1490
END INTERFACE
1491
1492
1493
1494
! Font variables in GLUT_fonts.c
1495
TYPE(C_PTR), BIND(C), PUBLIC, PROTECTED :: GLUT_STROKE_ROMAN,         &
1496
    GLUT_STROKE_MONO_ROMAN, GLUT_BITMAP_9_BY_15, GLUT_BITMAP_8_BY_13, &
1497
    GLUT_BITMAP_TIMES_ROMAN_10, GLUT_BITMAP_TIMES_ROMAN_24,           &
1498
    GLUT_BITMAP_HELVETICA_10, GLUT_BITMAP_HELVETICA_12,               &
1499
    GLUT_BITMAP_HELVETICA_18
1500
1501
! A special callback function for compatibility with f90gl
1502
TYPE(C_FUNPTR), PUBLIC, SAVE, BIND(C) :: GLUT_NULL_FUNC=C_NULL_FUNPTR
1503
EXTERNAL :: GLUTNULLFUNC
1504
PUBLIC :: GLUTNULLFUNC
1505
1506
CONTAINS
1507
1508
SUBROUTINE glutInit_f03()
1509
  INTEGER(C_INT) :: argcp=1
1510
  TYPE(C_PTR), DIMENSION(1), TARGET :: argv=C_NULL_PTR
1511
  CHARACTER(C_CHAR), DIMENSION(1), TARGET :: empty_string=C_NULL_CHAR
1512
1513
  ! A hack
1514
  INTERFACE
1515
   SUBROUTINE SetNullFunc() BIND(C,NAME='SetNullFunc')
1516
   END SUBROUTINE
1517
  END INTERFACE  
1518
1519
  argv(1)=C_LOC(empty_string)
1520
  CALL glutInit_gl(argcp, C_LOC(argv))
1521
  
1522
  ! A hack for now:
1523
  CALL SetNullFunc() ! GLUT_NULL_FUNC=C_FUNLOC(GLUTNULLFUNC)
1524
1525
END SUBROUTINE
1526
1527
SUBROUTINE glutDisplayFunc_f03(func)
1528
INTERFACE
1529
SUBROUTINE func() BIND(C)
1530
IMPORT
1531
END SUBROUTINE func
1532
END INTERFACE
1533
!OPTIONAL :: func
1534
!IF(PRESENT(func)) THEN
1535
IF(.NOT.C_ASSOCIATED(C_FUNLOC(func),GLUT_NULL_FUNC)) THEN
1536
   CALL glutDisplayFunc_gl(C_FUNLOC(func))
1537
ELSE
1538
   CALL glutDisplayFunc_gl(C_NULL_FUNPTR)
1539
END IF
1540
END SUBROUTINE glutDisplayFunc_f03
1541
SUBROUTINE glutReshapeFunc_f03(func)
1542
INTERFACE
1543
SUBROUTINE func(width, height) BIND(C)
1544
IMPORT
1545
INTEGER(GLint), VALUE :: width, height
1546
END SUBROUTINE func
1547
END INTERFACE
1548
!OPTIONAL :: func
1549
!IF(PRESENT(func)) THEN
1550
IF(.NOT.C_ASSOCIATED(C_FUNLOC(func),GLUT_NULL_FUNC)) THEN
1551
   CALL glutReshapeFunc_gl(C_FUNLOC(func))
1552
ELSE
1553
   CALL glutReshapeFunc_gl(C_NULL_FUNPTR)
1554
END IF
1555
END SUBROUTINE glutReshapeFunc_f03
1556
SUBROUTINE glutKeyboardFunc_f03(func)
1557
INTERFACE
1558
SUBROUTINE func(key, x, y) BIND(C)
1559
IMPORT
1560
INTEGER(GLbyte), VALUE :: key
1561
INTEGER(GLint), VALUE :: x, y
1562
END SUBROUTINE func
1563
END INTERFACE
1564
!OPTIONAL :: func
1565
!IF(PRESENT(func)) THEN
1566
IF(.NOT.C_ASSOCIATED(C_FUNLOC(func),GLUT_NULL_FUNC)) THEN
1567
   CALL glutKeyboardFunc_gl(C_FUNLOC(func))
1568
ELSE
1569
   CALL glutKeyboardFunc_gl(C_NULL_FUNPTR)
1570
END IF
1571
END SUBROUTINE glutKeyboardFunc_f03
1572
SUBROUTINE glutMouseFunc_f03(func)
1573
INTERFACE
1574
SUBROUTINE func(button, state, x, y) BIND(C)
1575
IMPORT
1576
INTEGER(GLint), VALUE :: button, state, x, y
1577
END SUBROUTINE func
1578
END INTERFACE
1579
!OPTIONAL :: func
1580
!IF(PRESENT(func)) THEN
1581
IF(.NOT.C_ASSOCIATED(C_FUNLOC(func),GLUT_NULL_FUNC)) THEN
1582
   CALL glutMouseFunc_gl(C_FUNLOC(func))
1583
ELSE
1584
   CALL glutMouseFunc_gl(C_NULL_FUNPTR)
1585
END IF
1586
END SUBROUTINE glutMouseFunc_f03
1587
SUBROUTINE glutMotionFunc_f03(func)
1588
INTERFACE
1589
SUBROUTINE func(x, y) BIND(C)
1590
IMPORT
1591
INTEGER(GLint), VALUE :: x, y
1592
END SUBROUTINE func
1593
END INTERFACE
1594
!OPTIONAL :: func
1595
!IF(PRESENT(func)) THEN
1596
IF(.NOT.C_ASSOCIATED(C_FUNLOC(func),GLUT_NULL_FUNC)) THEN
1597
   CALL glutMotionFunc_gl(C_FUNLOC(func))
1598
ELSE
1599
   CALL glutMotionFunc_gl(C_NULL_FUNPTR)
1600
END IF
1601
END SUBROUTINE glutMotionFunc_f03
1602
SUBROUTINE glutPassiveMotionFunc_f03(func)
1603
INTERFACE
1604
SUBROUTINE func(x, y) BIND(C)
1605
IMPORT
1606
INTEGER(GLint), VALUE :: x, y
1607
END SUBROUTINE func
1608
END INTERFACE
1609
!OPTIONAL :: func
1610
!IF(PRESENT(func)) THEN
1611
IF(.NOT.C_ASSOCIATED(C_FUNLOC(func),GLUT_NULL_FUNC)) THEN
1612
   CALL glutPassiveMotionFunc_gl(C_FUNLOC(func))
1613
ELSE
1614
   CALL glutPassiveMotionFunc_gl(C_NULL_FUNPTR)
1615
END IF
1616
END SUBROUTINE glutPassiveMotionFunc_f03
1617
SUBROUTINE glutEntryFunc_f03(func)
1618
INTERFACE
1619
SUBROUTINE func(state) BIND(C)
1620
IMPORT
1621
INTEGER(GLint), VALUE :: state
1622
END SUBROUTINE func
1623
END INTERFACE
1624
!OPTIONAL :: func
1625
!IF(PRESENT(func)) THEN
1626
IF(.NOT.C_ASSOCIATED(C_FUNLOC(func),GLUT_NULL_FUNC)) THEN
1627
   CALL glutEntryFunc_gl(C_FUNLOC(func))
1628
ELSE
1629
   CALL glutEntryFunc_gl(C_NULL_FUNPTR)
1630
END IF
1631
END SUBROUTINE glutEntryFunc_f03
1632
SUBROUTINE glutVisibilityFunc_f03(func)
1633
INTERFACE
1634
SUBROUTINE func(state) BIND(C)
1635
IMPORT
1636
INTEGER(GLint), VALUE :: state
1637
END SUBROUTINE func
1638
END INTERFACE
1639
!OPTIONAL :: func
1640
!IF(PRESENT(func)) THEN
1641
IF(.NOT.C_ASSOCIATED(C_FUNLOC(func),GLUT_NULL_FUNC)) THEN
1642
   CALL glutVisibilityFunc_gl(C_FUNLOC(func))
1643
ELSE
1644
   CALL glutVisibilityFunc_gl(C_NULL_FUNPTR)
1645
END IF
1646
END SUBROUTINE glutVisibilityFunc_f03
1647
SUBROUTINE glutIdleFunc_f03(func)
1648
INTERFACE
1649
SUBROUTINE func() BIND(C)
1650
IMPORT
1651
END SUBROUTINE func
1652
END INTERFACE
1653
!OPTIONAL :: func
1654
!IF(PRESENT(func)) THEN
1655
IF(.NOT.C_ASSOCIATED(C_FUNLOC(func),GLUT_NULL_FUNC)) THEN
1656
   CALL glutIdleFunc_gl(C_FUNLOC(func))
1657
ELSE
1658
   CALL glutIdleFunc_gl(C_NULL_FUNPTR)
1659
END IF
1660
END SUBROUTINE glutIdleFunc_f03
1661
SUBROUTINE glutTimerFunc_f03(millis, func, value)
1662
INTEGER(GLint), VALUE :: value
1663
INTEGER(GLuint), VALUE :: millis
1664
INTERFACE
1665
SUBROUTINE func(value) BIND(C)
1666
IMPORT
1667
INTEGER(GLint), VALUE :: value
1668
END SUBROUTINE func
1669
END INTERFACE
1670
!OPTIONAL :: func
1671
!IF(PRESENT(func)) THEN
1672
IF(.NOT.C_ASSOCIATED(C_FUNLOC(func),GLUT_NULL_FUNC)) THEN
1673
   CALL glutTimerFunc_gl(millis, C_FUNLOC(func), value)
1674
ELSE
1675
   CALL glutTimerFunc_gl(millis, C_NULL_FUNPTR, value)
1676
END IF
1677
END SUBROUTINE glutTimerFunc_f03
1678
SUBROUTINE glutMenuStateFunc_f03(func)
1679
INTERFACE
1680
SUBROUTINE func(state) BIND(C)
1681
IMPORT
1682
INTEGER(GLint), VALUE :: state
1683
END SUBROUTINE func
1684
END INTERFACE
1685
!OPTIONAL :: func
1686
!IF(PRESENT(func)) THEN
1687
IF(.NOT.C_ASSOCIATED(C_FUNLOC(func),GLUT_NULL_FUNC)) THEN
1688
   CALL glutMenuStateFunc_gl(C_FUNLOC(func))
1689
ELSE
1690
   CALL glutMenuStateFunc_gl(C_NULL_FUNPTR)
1691
END IF
1692
END SUBROUTINE glutMenuStateFunc_f03
1693
SUBROUTINE glutSpecialFunc_f03(func)
1694
INTERFACE
1695
SUBROUTINE func(key, x, y) BIND(C)
1696
IMPORT
1697
INTEGER(GLint), VALUE :: key, x, y
1698
END SUBROUTINE func
1699
END INTERFACE
1700
!OPTIONAL :: func
1701
!IF(PRESENT(func)) THEN
1702
IF(.NOT.C_ASSOCIATED(C_FUNLOC(func),GLUT_NULL_FUNC)) THEN
1703
   CALL glutSpecialFunc_gl(C_FUNLOC(func))
1704
ELSE
1705
   CALL glutSpecialFunc_gl(C_NULL_FUNPTR)
1706
END IF
1707
END SUBROUTINE glutSpecialFunc_f03
1708
SUBROUTINE glutSpaceballMotionFunc_f03(func)
1709
INTERFACE
1710
SUBROUTINE func(x, y, z) BIND(C)
1711
IMPORT
1712
INTEGER(GLint), VALUE :: x, y, z
1713
END SUBROUTINE func
1714
END INTERFACE
1715
!OPTIONAL :: func
1716
!IF(PRESENT(func)) THEN
1717
IF(.NOT.C_ASSOCIATED(C_FUNLOC(func),GLUT_NULL_FUNC)) THEN
1718
   CALL glutSpaceballMotionFunc_gl(C_FUNLOC(func))
1719
ELSE
1720
   CALL glutSpaceballMotionFunc_gl(C_NULL_FUNPTR)
1721
END IF
1722
END SUBROUTINE glutSpaceballMotionFunc_f03
1723
SUBROUTINE glutSpaceballRotateFunc_f03(func)
1724
INTERFACE
1725
SUBROUTINE func(x, y, z) BIND(C)
1726
IMPORT
1727
INTEGER(GLint), VALUE :: x, y, z
1728
END SUBROUTINE func
1729
END INTERFACE
1730
!OPTIONAL :: func
1731
!IF(PRESENT(func)) THEN
1732
IF(.NOT.C_ASSOCIATED(C_FUNLOC(func),GLUT_NULL_FUNC)) THEN
1733
   CALL glutSpaceballRotateFunc_gl(C_FUNLOC(func))
1734
ELSE
1735
   CALL glutSpaceballRotateFunc_gl(C_NULL_FUNPTR)
1736
END IF
1737
END SUBROUTINE glutSpaceballRotateFunc_f03
1738
SUBROUTINE glutSpaceballButtonFunc_f03(func)
1739
INTERFACE
1740
SUBROUTINE func(button, state) BIND(C)
1741
IMPORT
1742
INTEGER(GLint), VALUE :: button, state
1743
END SUBROUTINE func
1744
END INTERFACE
1745
!OPTIONAL :: func
1746
!IF(PRESENT(func)) THEN
1747
IF(.NOT.C_ASSOCIATED(C_FUNLOC(func),GLUT_NULL_FUNC)) THEN
1748
   CALL glutSpaceballButtonFunc_gl(C_FUNLOC(func))
1749
ELSE
1750
   CALL glutSpaceballButtonFunc_gl(C_NULL_FUNPTR)
1751
END IF
1752
END SUBROUTINE glutSpaceballButtonFunc_f03
1753
SUBROUTINE glutButtonBoxFunc_f03(func)
1754
INTERFACE
1755
SUBROUTINE func(button, state) BIND(C)
1756
IMPORT
1757
INTEGER(GLint), VALUE :: button, state
1758
END SUBROUTINE func
1759
END INTERFACE
1760
!OPTIONAL :: func
1761
!IF(PRESENT(func)) THEN
1762
IF(.NOT.C_ASSOCIATED(C_FUNLOC(func),GLUT_NULL_FUNC)) THEN
1763
   CALL glutButtonBoxFunc_gl(C_FUNLOC(func))
1764
ELSE
1765
   CALL glutButtonBoxFunc_gl(C_NULL_FUNPTR)
1766
END IF
1767
END SUBROUTINE glutButtonBoxFunc_f03
1768
SUBROUTINE glutDialsFunc_f03(func)
1769
INTERFACE
1770
SUBROUTINE func(dial, value) BIND(C)
1771
IMPORT
1772
INTEGER(GLint), VALUE :: dial, value
1773
END SUBROUTINE func
1774
END INTERFACE
1775
!OPTIONAL :: func
1776
!IF(PRESENT(func)) THEN
1777
IF(.NOT.C_ASSOCIATED(C_FUNLOC(func),GLUT_NULL_FUNC)) THEN
1778
   CALL glutDialsFunc_gl(C_FUNLOC(func))
1779
ELSE
1780
   CALL glutDialsFunc_gl(C_NULL_FUNPTR)
1781
END IF
1782
END SUBROUTINE glutDialsFunc_f03
1783
SUBROUTINE glutTabletMotionFunc_f03(func)
1784
INTERFACE
1785
SUBROUTINE func(x, y) BIND(C)
1786
IMPORT
1787
INTEGER(GLint), VALUE :: x, y
1788
END SUBROUTINE func
1789
END INTERFACE
1790
!OPTIONAL :: func
1791
!IF(PRESENT(func)) THEN
1792
IF(.NOT.C_ASSOCIATED(C_FUNLOC(func),GLUT_NULL_FUNC)) THEN
1793
   CALL glutTabletMotionFunc_gl(C_FUNLOC(func))
1794
ELSE
1795
   CALL glutTabletMotionFunc_gl(C_NULL_FUNPTR)
1796
END IF
1797
END SUBROUTINE glutTabletMotionFunc_f03
1798
SUBROUTINE glutTabletButtonFunc_f03(func)
1799
INTERFACE
1800
SUBROUTINE func(button, state, x, y) BIND(C)
1801
IMPORT
1802
INTEGER(GLint), VALUE :: button, state, x, y
1803
END SUBROUTINE func
1804
END INTERFACE
1805
!OPTIONAL :: func
1806
!IF(PRESENT(func)) THEN
1807
IF(.NOT.C_ASSOCIATED(C_FUNLOC(func),GLUT_NULL_FUNC)) THEN
1808
   CALL glutTabletButtonFunc_gl(C_FUNLOC(func))
1809
ELSE
1810
   CALL glutTabletButtonFunc_gl(C_NULL_FUNPTR)
1811
END IF
1812
END SUBROUTINE glutTabletButtonFunc_f03
1813
SUBROUTINE glutMenuStatusFunc_f03(func)
1814
INTERFACE
1815
SUBROUTINE func(status, x, y) BIND(C)
1816
IMPORT
1817
INTEGER(GLint), VALUE :: status, x, y
1818
END SUBROUTINE func
1819
END INTERFACE
1820
!OPTIONAL :: func
1821
!IF(PRESENT(func)) THEN
1822
IF(.NOT.C_ASSOCIATED(C_FUNLOC(func),GLUT_NULL_FUNC)) THEN
1823
   CALL glutMenuStatusFunc_gl(C_FUNLOC(func))
1824
ELSE
1825
   CALL glutMenuStatusFunc_gl(C_NULL_FUNPTR)
1826
END IF
1827
END SUBROUTINE glutMenuStatusFunc_f03
1828
SUBROUTINE glutOverlayDisplayFunc_f03(func)
1829
INTERFACE
1830
SUBROUTINE func() BIND(C)
1831
IMPORT
1832
END SUBROUTINE func
1833
END INTERFACE
1834
!OPTIONAL :: func
1835
!IF(PRESENT(func)) THEN
1836
IF(.NOT.C_ASSOCIATED(C_FUNLOC(func),GLUT_NULL_FUNC)) THEN
1837
   CALL glutOverlayDisplayFunc_gl(C_FUNLOC(func))
1838
ELSE
1839
   CALL glutOverlayDisplayFunc_gl(C_NULL_FUNPTR)
1840
END IF
1841
END SUBROUTINE glutOverlayDisplayFunc_f03
1842
SUBROUTINE glutWindowStatusFunc_f03(func)
1843
INTERFACE
1844
SUBROUTINE func(state) BIND(C)
1845
IMPORT
1846
INTEGER(GLint), VALUE :: state
1847
END SUBROUTINE func
1848
END INTERFACE
1849
!OPTIONAL :: func
1850
!IF(PRESENT(func)) THEN
1851
IF(.NOT.C_ASSOCIATED(C_FUNLOC(func),GLUT_NULL_FUNC)) THEN
1852
   CALL glutWindowStatusFunc_gl(C_FUNLOC(func))
1853
ELSE
1854
   CALL glutWindowStatusFunc_gl(C_NULL_FUNPTR)
1855
END IF
1856
END SUBROUTINE glutWindowStatusFunc_f03
1857
SUBROUTINE glutKeyboardUpFunc_f03(func)
1858
INTERFACE
1859
SUBROUTINE func(key, x, y) BIND(C)
1860
IMPORT
1861
INTEGER(GLbyte), VALUE :: key
1862
INTEGER(GLint), VALUE :: x, y
1863
END SUBROUTINE func
1864
END INTERFACE
1865
!OPTIONAL :: func
1866
!IF(PRESENT(func)) THEN
1867
IF(.NOT.C_ASSOCIATED(C_FUNLOC(func),GLUT_NULL_FUNC)) THEN
1868
   CALL glutKeyboardUpFunc_gl(C_FUNLOC(func))
1869
ELSE
1870
   CALL glutKeyboardUpFunc_gl(C_NULL_FUNPTR)
1871
END IF
1872
END SUBROUTINE glutKeyboardUpFunc_f03
1873
SUBROUTINE glutSpecialUpFunc_f03(func)
1874
INTERFACE
1875
SUBROUTINE func(key, x, y) BIND(C)
1876
IMPORT
1877
INTEGER(GLint), VALUE :: key, x, y
1878
END SUBROUTINE func
1879
END INTERFACE
1880
!OPTIONAL :: func
1881
!IF(PRESENT(func)) THEN
1882
IF(.NOT.C_ASSOCIATED(C_FUNLOC(func),GLUT_NULL_FUNC)) THEN
1883
   CALL glutSpecialUpFunc_gl(C_FUNLOC(func))
1884
ELSE
1885
   CALL glutSpecialUpFunc_gl(C_NULL_FUNPTR)
1886
END IF
1887
END SUBROUTINE glutSpecialUpFunc_f03
1888
SUBROUTINE glutJoystickFunc_f03(func, pollInterval)
1889
INTEGER(GLint), VALUE :: pollInterval
1890
INTERFACE
1891
SUBROUTINE func(buttonMask, x, y, z) BIND(C)
1892
IMPORT
1893
INTEGER(GLint), VALUE :: x, y, z
1894
INTEGER(GLuint), VALUE :: buttonMask
1895
END SUBROUTINE func
1896
END INTERFACE
1897
!OPTIONAL :: func
1898
!IF(PRESENT(func)) THEN
1899
IF(.NOT.C_ASSOCIATED(C_FUNLOC(func),GLUT_NULL_FUNC)) THEN
1900
   CALL glutJoystickFunc_gl(C_FUNLOC(func), pollInterval)
1901
ELSE
1902
   CALL glutJoystickFunc_gl(C_NULL_FUNPTR, pollInterval)
1903
END IF
1904
END SUBROUTINE glutJoystickFunc_f03
1905
1906
1907
END MODULE OpenGL_glut
1908
1909
SUBROUTINE GLUTNULLFUNC()
1910
WRITE(*,*) 'ERROR: Null callback called!'
1911
END SUBROUTINE
1912