remogatto-ffi-opengl 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore ADDED
@@ -0,0 +1,5 @@
1
+ *~
2
+ *.*~
3
+ generated/
4
+ announcement.txt
5
+
data/History.txt ADDED
@@ -0,0 +1,4 @@
1
+ == 0.1.0 / 2009-03-06
2
+
3
+ * 1 major enhancement
4
+ * Birthday!
data/README.rdoc ADDED
@@ -0,0 +1,67 @@
1
+ ffi-opengl
2
+ by Andrea Fazzi
3
+ http://github.com/remogatto/ffi-opengl/
4
+
5
+ == DESCRIPTION:
6
+
7
+ ffi-opengl is an autogenerated[1] ruby FFI interface towards OpenGL
8
+ libraries (GL, GLU, GLUT).
9
+
10
+ ffi-opengl API aims to be a 1:1 translation of the OpenGL C API: don't
11
+ expect idiomatic ruby inside!
12
+
13
+ == FEATURES/PROBLEMS:
14
+
15
+ * Full [auto-generated] wrap of the OpenGL libraries.
16
+ * No compilation needed.
17
+ * Not yet tested on windows/macosx platforms
18
+
19
+ == SYNOPSIS:
20
+
21
+ See the example in 'examples/' folder. For the API documentation
22
+ please refer to OpenGL reference pages.
23
+
24
+ == REQUIREMENTS:
25
+
26
+ * ffi >= 0.3.0 (development version)
27
+ * OpenGL libraries >= 1.2
28
+
29
+ == DOWNLOAD/INSTALL:
30
+
31
+ To download and install the gem from github:
32
+
33
+ [sudo] gem sources -a http://gems.github.com
34
+ [sudo] gem install remogatto-ffi-opengl
35
+
36
+ To download the develpment trunk:
37
+
38
+ git clone http://github.com/remogatto/ffi-opengl/tree/master
39
+
40
+ == LINKS:
41
+
42
+ 1. http://kenai.com/projects/ruby-ffi/sources/swig-generator/show
43
+
44
+ == LICENSE:
45
+
46
+ (The MIT License)
47
+
48
+ Copyright (c) 2009 Andrea Fazzi
49
+
50
+ Permission is hereby granted, free of charge, to any person obtaining
51
+ a copy of this software and associated documentation files (the
52
+ 'Software'), to deal in the Software without restriction, including
53
+ without limitation the rights to use, copy, modify, merge, publish,
54
+ distribute, sublicense, and/or sell copies of the Software, and to
55
+ permit persons to whom the Software is furnished to do so, subject to
56
+ the following conditions:
57
+
58
+ The above copyright notice and this permission notice shall be
59
+ included in all copies or substantial portions of the Software.
60
+
61
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
62
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
63
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
64
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
65
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
66
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
67
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/Rakefile ADDED
@@ -0,0 +1,39 @@
1
+ # Look in the tasks/setup.rb file for the various options that can be
2
+ # configured in this Rakefile. The .rake files in the tasks directory
3
+ # are where the options are used.
4
+
5
+ begin
6
+ require 'bones'
7
+ Bones.setup
8
+ rescue LoadError
9
+ begin
10
+ load 'tasks/setup.rb'
11
+ rescue LoadError
12
+ raise RuntimeError, '### please install the "bones" gem ###'
13
+ end
14
+ end
15
+
16
+ ensure_in_path 'lib'
17
+ require 'ffi-opengl'
18
+
19
+ task :default => 'spec:run'
20
+
21
+ PROJ.name = 'ffi-opengl'
22
+ PROJ.authors = 'Andrea Fazzi'
23
+ PROJ.email = 'andrea.fazzi@alcacoop.it'
24
+ PROJ.url = 'http://github.com/remogatto/ffi-opengl'
25
+ PROJ.version = FFIOpenGL::VERSION
26
+ PROJ.rubyforge.name = 'ffi-opengl'
27
+
28
+ PROJ.readme_file = 'README.rdoc'
29
+
30
+ PROJ.ann.paragraphs << 'FEATURES/PROBLEMS' << 'SYNOPSIS' << 'REQUIREMENTS' << 'DOWNLOAD/INSTALL' << 'LINKS'
31
+ PROJ.ann.email[:to] << 'dev@ruby-ffi.kenai.com' << 'users@ruby-ffi.kenai.com'
32
+ PROJ.ann.email[:server] = 'smtp.gmail.com'
33
+
34
+ PROJ.spec.opts << '--color'
35
+ PROJ.ruby_opts = []
36
+
37
+ depend_on 'ffi', '0.3.0'
38
+
39
+ # EOF
@@ -0,0 +1,59 @@
1
+ #
2
+ # Based on OpenGL CodeColòny tutorial
3
+ # http://www.codecolony.de/
4
+ #
5
+
6
+ require File.expand_path(File.join(File.dirname(__FILE__), %w[.. lib ffi-opengl]))
7
+
8
+ include GL, GLU, GLUT
9
+
10
+ @light_diffuse = MemoryPointer.new(:float, 4).put_array_of_float(0, [1.0, 0.0, 0.0, 1.0])
11
+ @light_position = MemoryPointer.new(:float, 4).put_array_of_float(0, [1.0, 1.0, 1.0, 0.0])
12
+ @x_rotated, @y_rotated, @z_rotated = 0.0, 0.0, 0.0
13
+
14
+ Display = Proc.new {
15
+ glClear(GL_COLOR_BUFFER_BIT)
16
+ glLoadIdentity()
17
+ glTranslatef(0.0, 0.0, -5.0)
18
+ glRotatef(@x_rotated, 1.0, 0.0, 0.0)
19
+ glRotatef(@y_rotated, 0.0, 1.0, 0.0)
20
+ glRotatef(@z_rotated, 0.0, 0.0, 1.0)
21
+ glScalef(2.0, 1.0, 1.0)
22
+ glutSolidCube(1.0)
23
+ glFlush
24
+ glutSwapBuffers
25
+ }
26
+
27
+ Reshape = Proc.new { |x, y|
28
+ exit if (y == 0 || x == 0)
29
+ glMatrixMode(GL_PROJECTION)
30
+ glLoadIdentity
31
+ gluPerspective(30.0, x / y, 0.5, 20.0)
32
+ glMatrixMode(GL_MODELVIEW)
33
+ glViewport(0, 0, x, y)
34
+ }
35
+
36
+ Idle = Proc.new {
37
+ @x_rotated += 0.3
38
+ @y_rotated += 0.1
39
+ @z_rotated += -0.4
40
+ Display.call
41
+ }
42
+
43
+ # argc, argv parameters
44
+ glutInit(MemoryPointer.new(:int, 1).put_int(0, 0),
45
+ MemoryPointer.new(:pointer, 1).put_pointer(0, nil))
46
+ glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB)
47
+ glutInitWindowSize(300, 300)
48
+ glutCreateWindow("Cube example")
49
+ glLightfv(GL_LIGHT0, GL_DIFFUSE, @light_diffuse)
50
+ glLightfv(GL_LIGHT0, GL_POSITION, @light_position)
51
+ glEnable(GL_LIGHT0)
52
+ glEnable(GL_LIGHTING)
53
+ glEnable(GL_CULL_FACE)
54
+ glShadeModel(GL_SMOOTH)
55
+ glClearColor(0.0, 0.0, 0.0, 0.0)
56
+ glutDisplayFunc(Display)
57
+ glutReshapeFunc(Reshape)
58
+ glutIdleFunc(Idle)
59
+ glutMainLoop
@@ -0,0 +1,577 @@
1
+ #ifndef __FREEGLUT_STD_H__
2
+ #define __FREEGLUT_STD_H__
3
+
4
+ /*
5
+ * freeglut_std.h
6
+ *
7
+ * The GLUT-compatible part of the freeglut library include file
8
+ *
9
+ * Copyright (c) 1999-2000 Pawel W. Olszta. All Rights Reserved.
10
+ * Written by Pawel W. Olszta, <olszta@sourceforge.net>
11
+ * Creation date: Thu Dec 2 1999
12
+ *
13
+ * Permission is hereby granted, free of charge, to any person obtaining a
14
+ * copy of this software and associated documentation files (the "Software"),
15
+ * to deal in the Software without restriction, including without limitation
16
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
17
+ * and/or sell copies of the Software, and to permit persons to whom the
18
+ * Software is furnished to do so, subject to the following conditions:
19
+ *
20
+ * The above copyright notice and this permission notice shall be included
21
+ * in all copies or substantial portions of the Software.
22
+ *
23
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
24
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
25
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
26
+ * PAWEL W. OLSZTA BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
27
+ * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
28
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
29
+ */
30
+
31
+ #ifdef __cplusplus
32
+ extern "C" {
33
+ #endif
34
+
35
+ /*
36
+ * Under windows, we have to differentiate between static and dynamic libraries
37
+ */
38
+ #if defined(_MSC_VER) || defined(__CYGWIN__) || defined(__MINGW32__)
39
+
40
+ /* #pragma may not be supported by some compilers.
41
+ * Discussion by FreeGLUT developers suggests that
42
+ * Visual C++ specific code involving pragmas may
43
+ * need to move to a separate header. 24th Dec 2003
44
+ */
45
+
46
+ # define WIN32_LEAN_AND_MEAN
47
+ # define NO_MIN_MAX
48
+ # include <windows.h>
49
+ # undef min
50
+ # undef max
51
+
52
+ /* Windows static library */
53
+ # ifdef FREEGLUT_STATIC
54
+
55
+ # define FGAPI
56
+ # define FGAPIENTRY
57
+
58
+ /* Link with Win32 static freeglut lib */
59
+ # if defined(_MSC_VER)
60
+ # pragma comment (lib, "freeglut_static.lib")
61
+ # endif
62
+
63
+ /* Windows shared library (DLL) */
64
+ # else
65
+
66
+ # if defined(FREEGLUT_EXPORTS)
67
+ # define FGAPI __declspec(dllexport)
68
+ # else
69
+ # define FGAPI __declspec(dllimport)
70
+
71
+ /* link with Win32 shared freeglut lib */
72
+ # if defined(_MSC_VER)
73
+ # ifndef _WIN32_WCE
74
+ # pragma comment (lib, "freeglut.lib")
75
+ # endif
76
+ # endif
77
+
78
+ # endif
79
+
80
+ # define FGAPIENTRY __stdcall
81
+
82
+ # endif
83
+
84
+ /* Drag in other Windows libraries as required by FreeGLUT */
85
+ # if defined(_MSC_VER)
86
+ # ifndef _WIN32_WCE
87
+ # pragma comment (lib, "winmm.lib") /* link Windows MultiMedia lib */
88
+ # pragma comment (lib, "user32.lib") /* link Windows user lib */
89
+ # pragma comment (lib, "gdi32.lib") /* link Windows GDI lib */
90
+ # pragma comment (lib, "opengl32.lib") /* link Microsoft OpenGL lib */
91
+ # pragma comment (lib, "glu32.lib") /* link OpenGL Utility lib */
92
+ # endif /* _WIN32_WCE */
93
+ # endif
94
+
95
+ #else
96
+
97
+ /* Non-Windows definition of FGAPI and FGAPIENTRY */
98
+ # define FGAPI
99
+ # define FGAPIENTRY
100
+
101
+ #endif
102
+
103
+ /*
104
+ * The freeglut and GLUT API versions
105
+ */
106
+ #define FREEGLUT 1
107
+ #define GLUT_API_VERSION 4
108
+ #define FREEGLUT_VERSION_2_0 1
109
+ #define GLUT_XLIB_IMPLEMENTATION 13
110
+
111
+ /*
112
+ * Always include OpenGL and GLU headers
113
+ */
114
+ #include <GL/gl.h>
115
+ #include <GL/glu.h>
116
+
117
+ /*
118
+ * GLUT API macro definitions -- the special key codes:
119
+ */
120
+ #define GLUT_KEY_F1 0x0001
121
+ #define GLUT_KEY_F2 0x0002
122
+ #define GLUT_KEY_F3 0x0003
123
+ #define GLUT_KEY_F4 0x0004
124
+ #define GLUT_KEY_F5 0x0005
125
+ #define GLUT_KEY_F6 0x0006
126
+ #define GLUT_KEY_F7 0x0007
127
+ #define GLUT_KEY_F8 0x0008
128
+ #define GLUT_KEY_F9 0x0009
129
+ #define GLUT_KEY_F10 0x000A
130
+ #define GLUT_KEY_F11 0x000B
131
+ #define GLUT_KEY_F12 0x000C
132
+ #define GLUT_KEY_LEFT 0x0064
133
+ #define GLUT_KEY_UP 0x0065
134
+ #define GLUT_KEY_RIGHT 0x0066
135
+ #define GLUT_KEY_DOWN 0x0067
136
+ #define GLUT_KEY_PAGE_UP 0x0068
137
+ #define GLUT_KEY_PAGE_DOWN 0x0069
138
+ #define GLUT_KEY_HOME 0x006A
139
+ #define GLUT_KEY_END 0x006B
140
+ #define GLUT_KEY_INSERT 0x006C
141
+
142
+ /*
143
+ * GLUT API macro definitions -- mouse state definitions
144
+ */
145
+ #define GLUT_LEFT_BUTTON 0x0000
146
+ #define GLUT_MIDDLE_BUTTON 0x0001
147
+ #define GLUT_RIGHT_BUTTON 0x0002
148
+ #define GLUT_DOWN 0x0000
149
+ #define GLUT_UP 0x0001
150
+ #define GLUT_LEFT 0x0000
151
+ #define GLUT_ENTERED 0x0001
152
+
153
+ /*
154
+ * GLUT API macro definitions -- the display mode definitions
155
+ */
156
+ #define GLUT_RGB 0x0000
157
+ #define GLUT_RGBA 0x0000
158
+ #define GLUT_INDEX 0x0001
159
+ #define GLUT_SINGLE 0x0000
160
+ #define GLUT_DOUBLE 0x0002
161
+ #define GLUT_ACCUM 0x0004
162
+ #define GLUT_ALPHA 0x0008
163
+ #define GLUT_DEPTH 0x0010
164
+ #define GLUT_STENCIL 0x0020
165
+ #define GLUT_MULTISAMPLE 0x0080
166
+ #define GLUT_STEREO 0x0100
167
+ #define GLUT_LUMINANCE 0x0200
168
+
169
+ /*
170
+ * GLUT API macro definitions -- windows and menu related definitions
171
+ */
172
+ #define GLUT_MENU_NOT_IN_USE 0x0000
173
+ #define GLUT_MENU_IN_USE 0x0001
174
+ #define GLUT_NOT_VISIBLE 0x0000
175
+ #define GLUT_VISIBLE 0x0001
176
+ #define GLUT_HIDDEN 0x0000
177
+ #define GLUT_FULLY_RETAINED 0x0001
178
+ #define GLUT_PARTIALLY_RETAINED 0x0002
179
+ #define GLUT_FULLY_COVERED 0x0003
180
+
181
+ /*
182
+ * GLUT API macro definitions -- fonts definitions
183
+ *
184
+ * Steve Baker suggested to make it binary compatible with GLUT:
185
+ */
186
+ #if defined(_MSC_VER) || defined(__CYGWIN__) || defined(__MINGW32__)
187
+ # define GLUT_STROKE_ROMAN ((void *)0x0000)
188
+ # define GLUT_STROKE_MONO_ROMAN ((void *)0x0001)
189
+ # define GLUT_BITMAP_9_BY_15 ((void *)0x0002)
190
+ # define GLUT_BITMAP_8_BY_13 ((void *)0x0003)
191
+ # define GLUT_BITMAP_TIMES_ROMAN_10 ((void *)0x0004)
192
+ # define GLUT_BITMAP_TIMES_ROMAN_24 ((void *)0x0005)
193
+ # define GLUT_BITMAP_HELVETICA_10 ((void *)0x0006)
194
+ # define GLUT_BITMAP_HELVETICA_12 ((void *)0x0007)
195
+ # define GLUT_BITMAP_HELVETICA_18 ((void *)0x0008)
196
+ #else
197
+ /*
198
+ * I don't really know if it's a good idea... But here it goes:
199
+ */
200
+ extern void* glutStrokeRoman;
201
+ extern void* glutStrokeMonoRoman;
202
+ extern void* glutBitmap9By15;
203
+ extern void* glutBitmap8By13;
204
+ extern void* glutBitmapTimesRoman10;
205
+ extern void* glutBitmapTimesRoman24;
206
+ extern void* glutBitmapHelvetica10;
207
+ extern void* glutBitmapHelvetica12;
208
+ extern void* glutBitmapHelvetica18;
209
+
210
+ /*
211
+ * Those pointers will be used by following definitions:
212
+ */
213
+ # define GLUT_STROKE_ROMAN ((void *) &glutStrokeRoman)
214
+ # define GLUT_STROKE_MONO_ROMAN ((void *) &glutStrokeMonoRoman)
215
+ # define GLUT_BITMAP_9_BY_15 ((void *) &glutBitmap9By15)
216
+ # define GLUT_BITMAP_8_BY_13 ((void *) &glutBitmap8By13)
217
+ # define GLUT_BITMAP_TIMES_ROMAN_10 ((void *) &glutBitmapTimesRoman10)
218
+ # define GLUT_BITMAP_TIMES_ROMAN_24 ((void *) &glutBitmapTimesRoman24)
219
+ # define GLUT_BITMAP_HELVETICA_10 ((void *) &glutBitmapHelvetica10)
220
+ # define GLUT_BITMAP_HELVETICA_12 ((void *) &glutBitmapHelvetica12)
221
+ # define GLUT_BITMAP_HELVETICA_18 ((void *) &glutBitmapHelvetica18)
222
+ #endif
223
+
224
+ /*
225
+ * GLUT API macro definitions -- the glutGet parameters
226
+ */
227
+ #define GLUT_WINDOW_X 0x0064
228
+ #define GLUT_WINDOW_Y 0x0065
229
+ #define GLUT_WINDOW_WIDTH 0x0066
230
+ #define GLUT_WINDOW_HEIGHT 0x0067
231
+ #define GLUT_WINDOW_BUFFER_SIZE 0x0068
232
+ #define GLUT_WINDOW_STENCIL_SIZE 0x0069
233
+ #define GLUT_WINDOW_DEPTH_SIZE 0x006A
234
+ #define GLUT_WINDOW_RED_SIZE 0x006B
235
+ #define GLUT_WINDOW_GREEN_SIZE 0x006C
236
+ #define GLUT_WINDOW_BLUE_SIZE 0x006D
237
+ #define GLUT_WINDOW_ALPHA_SIZE 0x006E
238
+ #define GLUT_WINDOW_ACCUM_RED_SIZE 0x006F
239
+ #define GLUT_WINDOW_ACCUM_GREEN_SIZE 0x0070
240
+ #define GLUT_WINDOW_ACCUM_BLUE_SIZE 0x0071
241
+ #define GLUT_WINDOW_ACCUM_ALPHA_SIZE 0x0072
242
+ #define GLUT_WINDOW_DOUBLEBUFFER 0x0073
243
+ #define GLUT_WINDOW_RGBA 0x0074
244
+ #define GLUT_WINDOW_PARENT 0x0075
245
+ #define GLUT_WINDOW_NUM_CHILDREN 0x0076
246
+ #define GLUT_WINDOW_COLORMAP_SIZE 0x0077
247
+ #define GLUT_WINDOW_NUM_SAMPLES 0x0078
248
+ #define GLUT_WINDOW_STEREO 0x0079
249
+ #define GLUT_WINDOW_CURSOR 0x007A
250
+
251
+ #define GLUT_SCREEN_WIDTH 0x00C8
252
+ #define GLUT_SCREEN_HEIGHT 0x00C9
253
+ #define GLUT_SCREEN_WIDTH_MM 0x00CA
254
+ #define GLUT_SCREEN_HEIGHT_MM 0x00CB
255
+ #define GLUT_MENU_NUM_ITEMS 0x012C
256
+ #define GLUT_DISPLAY_MODE_POSSIBLE 0x0190
257
+ #define GLUT_INIT_WINDOW_X 0x01F4
258
+ #define GLUT_INIT_WINDOW_Y 0x01F5
259
+ #define GLUT_INIT_WINDOW_WIDTH 0x01F6
260
+ #define GLUT_INIT_WINDOW_HEIGHT 0x01F7
261
+ #define GLUT_INIT_DISPLAY_MODE 0x01F8
262
+ #define GLUT_ELAPSED_TIME 0x02BC
263
+ #define GLUT_WINDOW_FORMAT_ID 0x007B
264
+ #define GLUT_INIT_STATE 0x007C
265
+
266
+ /*
267
+ * GLUT API macro definitions -- the glutDeviceGet parameters
268
+ */
269
+ #define GLUT_HAS_KEYBOARD 0x0258
270
+ #define GLUT_HAS_MOUSE 0x0259
271
+ #define GLUT_HAS_SPACEBALL 0x025A
272
+ #define GLUT_HAS_DIAL_AND_BUTTON_BOX 0x025B
273
+ #define GLUT_HAS_TABLET 0x025C
274
+ #define GLUT_NUM_MOUSE_BUTTONS 0x025D
275
+ #define GLUT_NUM_SPACEBALL_BUTTONS 0x025E
276
+ #define GLUT_NUM_BUTTON_BOX_BUTTONS 0x025F
277
+ #define GLUT_NUM_DIALS 0x0260
278
+ #define GLUT_NUM_TABLET_BUTTONS 0x0261
279
+ #define GLUT_DEVICE_IGNORE_KEY_REPEAT 0x0262
280
+ #define GLUT_DEVICE_KEY_REPEAT 0x0263
281
+ #define GLUT_HAS_JOYSTICK 0x0264
282
+ #define GLUT_OWNS_JOYSTICK 0x0265
283
+ #define GLUT_JOYSTICK_BUTTONS 0x0266
284
+ #define GLUT_JOYSTICK_AXES 0x0267
285
+ #define GLUT_JOYSTICK_POLL_RATE 0x0268
286
+
287
+ /*
288
+ * GLUT API macro definitions -- the glutLayerGet parameters
289
+ */
290
+ #define GLUT_OVERLAY_POSSIBLE 0x0320
291
+ #define GLUT_LAYER_IN_USE 0x0321
292
+ #define GLUT_HAS_OVERLAY 0x0322
293
+ #define GLUT_TRANSPARENT_INDEX 0x0323
294
+ #define GLUT_NORMAL_DAMAGED 0x0324
295
+ #define GLUT_OVERLAY_DAMAGED 0x0325
296
+
297
+ /*
298
+ * GLUT API macro definitions -- the glutVideoResizeGet parameters
299
+ */
300
+ #define GLUT_VIDEO_RESIZE_POSSIBLE 0x0384
301
+ #define GLUT_VIDEO_RESIZE_IN_USE 0x0385
302
+ #define GLUT_VIDEO_RESIZE_X_DELTA 0x0386
303
+ #define GLUT_VIDEO_RESIZE_Y_DELTA 0x0387
304
+ #define GLUT_VIDEO_RESIZE_WIDTH_DELTA 0x0388
305
+ #define GLUT_VIDEO_RESIZE_HEIGHT_DELTA 0x0389
306
+ #define GLUT_VIDEO_RESIZE_X 0x038A
307
+ #define GLUT_VIDEO_RESIZE_Y 0x038B
308
+ #define GLUT_VIDEO_RESIZE_WIDTH 0x038C
309
+ #define GLUT_VIDEO_RESIZE_HEIGHT 0x038D
310
+
311
+ /*
312
+ * GLUT API macro definitions -- the glutUseLayer parameters
313
+ */
314
+ #define GLUT_NORMAL 0x0000
315
+ #define GLUT_OVERLAY 0x0001
316
+
317
+ /*
318
+ * GLUT API macro definitions -- the glutGetModifiers parameters
319
+ */
320
+ #define GLUT_ACTIVE_SHIFT 0x0001
321
+ #define GLUT_ACTIVE_CTRL 0x0002
322
+ #define GLUT_ACTIVE_ALT 0x0004
323
+
324
+ /*
325
+ * GLUT API macro definitions -- the glutSetCursor parameters
326
+ */
327
+ #define GLUT_CURSOR_RIGHT_ARROW 0x0000
328
+ #define GLUT_CURSOR_LEFT_ARROW 0x0001
329
+ #define GLUT_CURSOR_INFO 0x0002
330
+ #define GLUT_CURSOR_DESTROY 0x0003
331
+ #define GLUT_CURSOR_HELP 0x0004
332
+ #define GLUT_CURSOR_CYCLE 0x0005
333
+ #define GLUT_CURSOR_SPRAY 0x0006
334
+ #define GLUT_CURSOR_WAIT 0x0007
335
+ #define GLUT_CURSOR_TEXT 0x0008
336
+ #define GLUT_CURSOR_CROSSHAIR 0x0009
337
+ #define GLUT_CURSOR_UP_DOWN 0x000A
338
+ #define GLUT_CURSOR_LEFT_RIGHT 0x000B
339
+ #define GLUT_CURSOR_TOP_SIDE 0x000C
340
+ #define GLUT_CURSOR_BOTTOM_SIDE 0x000D
341
+ #define GLUT_CURSOR_LEFT_SIDE 0x000E
342
+ #define GLUT_CURSOR_RIGHT_SIDE 0x000F
343
+ #define GLUT_CURSOR_TOP_LEFT_CORNER 0x0010
344
+ #define GLUT_CURSOR_TOP_RIGHT_CORNER 0x0011
345
+ #define GLUT_CURSOR_BOTTOM_RIGHT_CORNER 0x0012
346
+ #define GLUT_CURSOR_BOTTOM_LEFT_CORNER 0x0013
347
+ #define GLUT_CURSOR_INHERIT 0x0064
348
+ #define GLUT_CURSOR_NONE 0x0065
349
+ #define GLUT_CURSOR_FULL_CROSSHAIR 0x0066
350
+
351
+ /*
352
+ * GLUT API macro definitions -- RGB color component specification definitions
353
+ */
354
+ #define GLUT_RED 0x0000
355
+ #define GLUT_GREEN 0x0001
356
+ #define GLUT_BLUE 0x0002
357
+
358
+ /*
359
+ * GLUT API macro definitions -- additional keyboard and joystick definitions
360
+ */
361
+ #define GLUT_KEY_REPEAT_OFF 0x0000
362
+ #define GLUT_KEY_REPEAT_ON 0x0001
363
+ #define GLUT_KEY_REPEAT_DEFAULT 0x0002
364
+
365
+ #define GLUT_JOYSTICK_BUTTON_A 0x0001
366
+ #define GLUT_JOYSTICK_BUTTON_B 0x0002
367
+ #define GLUT_JOYSTICK_BUTTON_C 0x0004
368
+ #define GLUT_JOYSTICK_BUTTON_D 0x0008
369
+
370
+ /*
371
+ * GLUT API macro definitions -- game mode definitions
372
+ */
373
+ #define GLUT_GAME_MODE_ACTIVE 0x0000
374
+ #define GLUT_GAME_MODE_POSSIBLE 0x0001
375
+ #define GLUT_GAME_MODE_WIDTH 0x0002
376
+ #define GLUT_GAME_MODE_HEIGHT 0x0003
377
+ #define GLUT_GAME_MODE_PIXEL_DEPTH 0x0004
378
+ #define GLUT_GAME_MODE_REFRESH_RATE 0x0005
379
+ #define GLUT_GAME_MODE_DISPLAY_CHANGED 0x0006
380
+
381
+ /*
382
+ * Initialization functions, see fglut_init.c
383
+ */
384
+ FGAPI void FGAPIENTRY glutInit( int* pargc, char** argv );
385
+ FGAPI void FGAPIENTRY glutInitWindowPosition( int x, int y );
386
+ FGAPI void FGAPIENTRY glutInitWindowSize( int width, int height );
387
+ FGAPI void FGAPIENTRY glutInitDisplayMode( unsigned int displayMode );
388
+ FGAPI void FGAPIENTRY glutInitDisplayString( const char* displayMode );
389
+
390
+ /*
391
+ * Process loop function, see freeglut_main.c
392
+ */
393
+ FGAPI void FGAPIENTRY glutMainLoop( void );
394
+
395
+ /*
396
+ * Window management functions, see freeglut_window.c
397
+ */
398
+ FGAPI int FGAPIENTRY glutCreateWindow( const char* title );
399
+ FGAPI int FGAPIENTRY glutCreateSubWindow( int window, int x, int y, int width, int height );
400
+ FGAPI void FGAPIENTRY glutDestroyWindow( int window );
401
+ FGAPI void FGAPIENTRY glutSetWindow( int window );
402
+ FGAPI int FGAPIENTRY glutGetWindow( void );
403
+ FGAPI void FGAPIENTRY glutSetWindowTitle( const char* title );
404
+ FGAPI void FGAPIENTRY glutSetIconTitle( const char* title );
405
+ FGAPI void FGAPIENTRY glutReshapeWindow( int width, int height );
406
+ FGAPI void FGAPIENTRY glutPositionWindow( int x, int y );
407
+ FGAPI void FGAPIENTRY glutShowWindow( void );
408
+ FGAPI void FGAPIENTRY glutHideWindow( void );
409
+ FGAPI void FGAPIENTRY glutIconifyWindow( void );
410
+ FGAPI void FGAPIENTRY glutPushWindow( void );
411
+ FGAPI void FGAPIENTRY glutPopWindow( void );
412
+ FGAPI void FGAPIENTRY glutFullScreen( void );
413
+
414
+ /*
415
+ * Display-connected functions, see freeglut_display.c
416
+ */
417
+ FGAPI void FGAPIENTRY glutPostWindowRedisplay( int window );
418
+ FGAPI void FGAPIENTRY glutPostRedisplay( void );
419
+ FGAPI void FGAPIENTRY glutSwapBuffers( void );
420
+
421
+ /*
422
+ * Mouse cursor functions, see freeglut_cursor.c
423
+ */
424
+ FGAPI void FGAPIENTRY glutWarpPointer( int x, int y );
425
+ FGAPI void FGAPIENTRY glutSetCursor( int cursor );
426
+
427
+ /*
428
+ * Overlay stuff, see freeglut_overlay.c
429
+ */
430
+ FGAPI void FGAPIENTRY glutEstablishOverlay( void );
431
+ FGAPI void FGAPIENTRY glutRemoveOverlay( void );
432
+ FGAPI void FGAPIENTRY glutUseLayer( GLenum layer );
433
+ FGAPI void FGAPIENTRY glutPostOverlayRedisplay( void );
434
+ FGAPI void FGAPIENTRY glutPostWindowOverlayRedisplay( int window );
435
+ FGAPI void FGAPIENTRY glutShowOverlay( void );
436
+ FGAPI void FGAPIENTRY glutHideOverlay( void );
437
+
438
+ /*
439
+ * Menu stuff, see freeglut_menu.c
440
+ */
441
+ FGAPI int FGAPIENTRY glutCreateMenu( void (* callback)( int menu ) );
442
+ FGAPI void FGAPIENTRY glutDestroyMenu( int menu );
443
+ FGAPI int FGAPIENTRY glutGetMenu( void );
444
+ FGAPI void FGAPIENTRY glutSetMenu( int menu );
445
+ FGAPI void FGAPIENTRY glutAddMenuEntry( const char* label, int value );
446
+ FGAPI void FGAPIENTRY glutAddSubMenu( const char* label, int subMenu );
447
+ FGAPI void FGAPIENTRY glutChangeToMenuEntry( int item, const char* label, int value );
448
+ FGAPI void FGAPIENTRY glutChangeToSubMenu( int item, const char* label, int value );
449
+ FGAPI void FGAPIENTRY glutRemoveMenuItem( int item );
450
+ FGAPI void FGAPIENTRY glutAttachMenu( int button );
451
+ FGAPI void FGAPIENTRY glutDetachMenu( int button );
452
+
453
+ /*
454
+ * Global callback functions, see freeglut_callbacks.c
455
+ */
456
+ FGAPI void FGAPIENTRY glutTimerFunc( unsigned int time, void (* callback)( int ), int value );
457
+ FGAPI void FGAPIENTRY glutIdleFunc( void (* callback)( void ) );
458
+
459
+ /*
460
+ * Window-specific callback functions, see freeglut_callbacks.c
461
+ */
462
+ FGAPI void FGAPIENTRY glutKeyboardFunc( void (* callback)( unsigned char, int, int ) );
463
+ FGAPI void FGAPIENTRY glutSpecialFunc( void (* callback)( int, int, int ) );
464
+ FGAPI void FGAPIENTRY glutReshapeFunc( void (* callback)( int, int ) );
465
+ FGAPI void FGAPIENTRY glutVisibilityFunc( void (* callback)( int ) );
466
+ FGAPI void FGAPIENTRY glutDisplayFunc( void (* callback)( void ) );
467
+ FGAPI void FGAPIENTRY glutMouseFunc( void (* callback)( int, int, int, int ) );
468
+ FGAPI void FGAPIENTRY glutMotionFunc( void (* callback)( int, int ) );
469
+ FGAPI void FGAPIENTRY glutPassiveMotionFunc( void (* callback)( int, int ) );
470
+ FGAPI void FGAPIENTRY glutEntryFunc( void (* callback)( int ) );
471
+
472
+ FGAPI void FGAPIENTRY glutKeyboardUpFunc( void (* callback)( unsigned char, int, int ) );
473
+ FGAPI void FGAPIENTRY glutSpecialUpFunc( void (* callback)( int, int, int ) );
474
+ FGAPI void FGAPIENTRY glutJoystickFunc( void (* callback)( unsigned int, int, int, int ), int pollInterval );
475
+ FGAPI void FGAPIENTRY glutMenuStateFunc( void (* callback)( int ) );
476
+ FGAPI void FGAPIENTRY glutMenuStatusFunc( void (* callback)( int, int, int ) );
477
+ FGAPI void FGAPIENTRY glutOverlayDisplayFunc( void (* callback)( void ) );
478
+ FGAPI void FGAPIENTRY glutWindowStatusFunc( void (* callback)( int ) );
479
+
480
+ FGAPI void FGAPIENTRY glutSpaceballMotionFunc( void (* callback)( int, int, int ) );
481
+ FGAPI void FGAPIENTRY glutSpaceballRotateFunc( void (* callback)( int, int, int ) );
482
+ FGAPI void FGAPIENTRY glutSpaceballButtonFunc( void (* callback)( int, int ) );
483
+ FGAPI void FGAPIENTRY glutButtonBoxFunc( void (* callback)( int, int ) );
484
+ FGAPI void FGAPIENTRY glutDialsFunc( void (* callback)( int, int ) );
485
+ FGAPI void FGAPIENTRY glutTabletMotionFunc( void (* callback)( int, int ) );
486
+ FGAPI void FGAPIENTRY glutTabletButtonFunc( void (* callback)( int, int, int, int ) );
487
+
488
+ /*
489
+ * State setting and retrieval functions, see freeglut_state.c
490
+ */
491
+ FGAPI int FGAPIENTRY glutGet( GLenum query );
492
+ FGAPI int FGAPIENTRY glutDeviceGet( GLenum query );
493
+ FGAPI int FGAPIENTRY glutGetModifiers( void );
494
+ FGAPI int FGAPIENTRY glutLayerGet( GLenum query );
495
+
496
+ /*
497
+ * Font stuff, see freeglut_font.c
498
+ */
499
+ FGAPI void FGAPIENTRY glutBitmapCharacter( void* font, int character );
500
+ FGAPI int FGAPIENTRY glutBitmapWidth( void* font, int character );
501
+ FGAPI void FGAPIENTRY glutStrokeCharacter( void* font, int character );
502
+ FGAPI int FGAPIENTRY glutStrokeWidth( void* font, int character );
503
+ FGAPI int FGAPIENTRY glutBitmapLength( void* font, const unsigned char* string );
504
+ FGAPI int FGAPIENTRY glutStrokeLength( void* font, const unsigned char* string );
505
+
506
+ /*
507
+ * Geometry functions, see freeglut_geometry.c
508
+ */
509
+ FGAPI void FGAPIENTRY glutWireCube( GLdouble size );
510
+ FGAPI void FGAPIENTRY glutSolidCube( GLdouble size );
511
+ FGAPI void FGAPIENTRY glutWireSphere( GLdouble radius, GLint slices, GLint stacks );
512
+ FGAPI void FGAPIENTRY glutSolidSphere( GLdouble radius, GLint slices, GLint stacks );
513
+ FGAPI void FGAPIENTRY glutWireCone( GLdouble base, GLdouble height, GLint slices, GLint stacks );
514
+ FGAPI void FGAPIENTRY glutSolidCone( GLdouble base, GLdouble height, GLint slices, GLint stacks );
515
+
516
+ FGAPI void FGAPIENTRY glutWireTorus( GLdouble innerRadius, GLdouble outerRadius, GLint sides, GLint rings );
517
+ FGAPI void FGAPIENTRY glutSolidTorus( GLdouble innerRadius, GLdouble outerRadius, GLint sides, GLint rings );
518
+ FGAPI void FGAPIENTRY glutWireDodecahedron( void );
519
+ FGAPI void FGAPIENTRY glutSolidDodecahedron( void );
520
+ FGAPI void FGAPIENTRY glutWireOctahedron( void );
521
+ FGAPI void FGAPIENTRY glutSolidOctahedron( void );
522
+ FGAPI void FGAPIENTRY glutWireTetrahedron( void );
523
+ FGAPI void FGAPIENTRY glutSolidTetrahedron( void );
524
+ FGAPI void FGAPIENTRY glutWireIcosahedron( void );
525
+ FGAPI void FGAPIENTRY glutSolidIcosahedron( void );
526
+
527
+ /*
528
+ * Teapot rendering functions, found in freeglut_teapot.c
529
+ */
530
+ FGAPI void FGAPIENTRY glutWireTeapot( GLdouble size );
531
+ FGAPI void FGAPIENTRY glutSolidTeapot( GLdouble size );
532
+
533
+ /*
534
+ * Game mode functions, see freeglut_gamemode.c
535
+ */
536
+ FGAPI void FGAPIENTRY glutGameModeString( const char* string );
537
+ FGAPI int FGAPIENTRY glutEnterGameMode( void );
538
+ FGAPI void FGAPIENTRY glutLeaveGameMode( void );
539
+ FGAPI int FGAPIENTRY glutGameModeGet( GLenum query );
540
+
541
+ /*
542
+ * Video resize functions, see freeglut_videoresize.c
543
+ */
544
+ FGAPI int FGAPIENTRY glutVideoResizeGet( GLenum query );
545
+ FGAPI void FGAPIENTRY glutSetupVideoResizing( void );
546
+ FGAPI void FGAPIENTRY glutStopVideoResizing( void );
547
+ FGAPI void FGAPIENTRY glutVideoResize( int x, int y, int width, int height );
548
+ FGAPI void FGAPIENTRY glutVideoPan( int x, int y, int width, int height );
549
+
550
+ /*
551
+ * Colormap functions, see freeglut_misc.c
552
+ */
553
+ FGAPI void FGAPIENTRY glutSetColor( int color, GLfloat red, GLfloat green, GLfloat blue );
554
+ FGAPI GLfloat FGAPIENTRY glutGetColor( int color, int component );
555
+ FGAPI void FGAPIENTRY glutCopyColormap( int window );
556
+
557
+ /*
558
+ * Misc keyboard and joystick functions, see freeglut_misc.c
559
+ */
560
+ FGAPI void FGAPIENTRY glutIgnoreKeyRepeat( int ignore );
561
+ FGAPI void FGAPIENTRY glutSetKeyRepeat( int repeatMode );
562
+ FGAPI void FGAPIENTRY glutForceJoystickFunc( void );
563
+
564
+ /*
565
+ * Misc functions, see freeglut_misc.c
566
+ */
567
+ FGAPI int FGAPIENTRY glutExtensionSupported( const char* extension );
568
+ FGAPI void FGAPIENTRY glutReportErrors( void );
569
+
570
+ #ifdef __cplusplus
571
+ }
572
+ #endif
573
+
574
+ /*** END OF FILE ***/
575
+
576
+ #endif /* __FREEGLUT_STD_H__ */
577
+