ruby-opengl 0.33.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Rakefile +129 -0
- data/doc/build_install.txt +53 -0
- data/doc/history.txt +48 -0
- data/doc/requirements_and_design.txt +131 -0
- data/doc/roadmap.txt +19 -0
- data/doc/scientific_use.txt +28 -0
- data/doc/supplies/page_template.html +63 -0
- data/doc/thanks.txt +23 -0
- data/doc/tutorial.txt +160 -0
- data/examples/README +36 -0
- data/examples/aaindex.rb +97 -0
- data/examples/all_tests.rb +24 -0
- data/examples/plane.rb +161 -0
- data/examples/smooth.rb +40 -0
- data/examples/smooth_prev.rb +40 -0
- data/examples/test.rb +64 -0
- data/ext/common/Rakefile +39 -0
- data/ext/common/gl-enums.h +10349 -0
- data/ext/common/rbogl.c +260 -0
- data/ext/common/rbogl.h +52 -0
- data/ext/gl/gl-1.0-1.1.c +5152 -0
- data/ext/gl/gl-1.2.c +166 -0
- data/ext/gl/gl-enums.c +2905 -0
- data/ext/gl/gl.c +31 -0
- data/ext/gl/mkrf_conf.rb +27 -0
- data/ext/glu/glu.c +1636 -0
- data/ext/glu/mkrf_conf.rb +28 -0
- data/ext/glut/glut.c +1776 -0
- data/ext/glut/mkrf_conf.rb +28 -0
- data/lib/gl_prev.rb +45 -0
- data/lib/glu_prev.rb +45 -0
- data/lib/glut_prev.rb +45 -0
- data/test/README +23 -0
- data/test/runtests.sh +7 -0
- data/test/tc_gl_vertex.rb +180 -0
- data/test/tc_include_gl.rb +35 -0
- data/test/tc_opengl_namespace.rb +40 -0
- data/test/tc_require_gl.rb +34 -0
- metadata +96 -0
data/ext/glut/glut.c
ADDED
@@ -0,0 +1,1776 @@
|
|
1
|
+
/*
|
2
|
+
* Last edit by previous maintainer:
|
3
|
+
* 2004/03/02 01:13:06, yoshi
|
4
|
+
*
|
5
|
+
* Copyright (C) 1999 - 2005 Yoshi <yoshi@giganet.net>
|
6
|
+
* Copyright (C) 2006 John M. Gabriele <jmg3000@gmail.com>
|
7
|
+
*
|
8
|
+
* This program is distributed under the terms of the MIT license.
|
9
|
+
* See the included COPYRIGHT file for the terms of this license.
|
10
|
+
*
|
11
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
12
|
+
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
13
|
+
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
14
|
+
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
15
|
+
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
16
|
+
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
17
|
+
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
18
|
+
*
|
19
|
+
*/
|
20
|
+
|
21
|
+
#ifdef __APPLE__
|
22
|
+
#include <OpenGL/gl.h>
|
23
|
+
#include <OpenGL/glu.h>
|
24
|
+
#include <GLUT/glut.h>
|
25
|
+
#elif defined WIN32
|
26
|
+
#include <windows.h>
|
27
|
+
#include <GL/gl.h>
|
28
|
+
#include <GL/glu.h>
|
29
|
+
#include <GL/glut.h>
|
30
|
+
#else
|
31
|
+
#include <GL/gl.h>
|
32
|
+
#include <GL/glu.h>
|
33
|
+
#include <GL/glut.h>
|
34
|
+
#endif
|
35
|
+
|
36
|
+
#include <ruby.h>
|
37
|
+
|
38
|
+
static int callId; /* 'call' method id */
|
39
|
+
|
40
|
+
/* callback define macro */
|
41
|
+
#define WINDOW_CALLBACK_SETUP(_funcname) \
|
42
|
+
static VALUE _funcname = Qnil; \
|
43
|
+
static void glut_ ## _funcname ## Callback(); \
|
44
|
+
static VALUE \
|
45
|
+
glut_ ## _funcname(obj,arg1) \
|
46
|
+
VALUE obj,arg1; \
|
47
|
+
{ \
|
48
|
+
int win; \
|
49
|
+
if (!rb_obj_is_kind_of(arg1,rb_cProc) && !NIL_P(arg1)) \
|
50
|
+
rb_raise(rb_eTypeError, "Glut.%s:%s",#_funcname, rb_class2name(CLASS_OF(arg1))); \
|
51
|
+
win = glutGetWindow(); \
|
52
|
+
if (win == 0) \
|
53
|
+
rb_raise(rb_eRuntimeError, "Glut.%s needs current window", #_funcname); \
|
54
|
+
rb_ary_store(_funcname, win, arg1); \
|
55
|
+
glut ## _funcname(glut_ ## _funcname ## Callback); \
|
56
|
+
return Qnil; \
|
57
|
+
}
|
58
|
+
|
59
|
+
#define WINDOW_CALLBACK_DEFINE(_funcname) \
|
60
|
+
rb_define_module_function(module, "glut" # _funcname, glut_ ## _funcname , 1); \
|
61
|
+
rb_global_variable(&_funcname); \
|
62
|
+
_funcname = rb_ary_new()
|
63
|
+
|
64
|
+
|
65
|
+
/*
|
66
|
+
* GLUT Implementation
|
67
|
+
*/
|
68
|
+
|
69
|
+
/* GLUT initialization sub-API. */
|
70
|
+
static VALUE g_arg_array;
|
71
|
+
|
72
|
+
static VALUE glut_Init( int argc, VALUE * argv, VALUE obj)
|
73
|
+
{
|
74
|
+
#if 0
|
75
|
+
int argcp = 1;
|
76
|
+
if (TYPE(arg1) != T_STRING)
|
77
|
+
rb_raise(rb_eTypeError, "Glut.Init:%s", rb_class2name(CLASS_OF(arg1)));
|
78
|
+
glutInit(&argcp, (char**)&(RSTRING(arg1)->ptr));
|
79
|
+
#endif
|
80
|
+
int largc;
|
81
|
+
char** largv;
|
82
|
+
int i, j;
|
83
|
+
int find;
|
84
|
+
VALUE new_argv;
|
85
|
+
VALUE arg1;
|
86
|
+
VALUE ptr;
|
87
|
+
if (rb_scan_args(argc, argv, "01", &arg1) == 0)
|
88
|
+
{
|
89
|
+
arg1 = rb_eval_string("ARGV");
|
90
|
+
}
|
91
|
+
Check_Type(arg1, T_ARRAY);
|
92
|
+
largc = RARRAY(arg1)->len+1;
|
93
|
+
largv = ALLOCA_N(char*, largc+2);
|
94
|
+
largv[0] = STR2CSTR(rb_eval_string("$0"));
|
95
|
+
for (i = 1; i < largc; i++)
|
96
|
+
{
|
97
|
+
largv[i] = STR2CSTR(RARRAY(arg1)->ptr[i-1]);
|
98
|
+
}
|
99
|
+
largv[i] = NULL;
|
100
|
+
glutInit(&largc, largv);
|
101
|
+
new_argv = rb_ary_new2(largc-1);
|
102
|
+
g_arg_array = rb_ary_new();
|
103
|
+
for (i = 0; i < RARRAY(arg1)->len; i++) {
|
104
|
+
ptr = RARRAY(arg1)->ptr[i];
|
105
|
+
find = 0;
|
106
|
+
for (j = 1; largv[j]; j++)
|
107
|
+
{
|
108
|
+
if (STR2CSTR(ptr) == largv[j])
|
109
|
+
{
|
110
|
+
rb_ary_push(new_argv, ptr);
|
111
|
+
find = 1;
|
112
|
+
break;
|
113
|
+
}
|
114
|
+
}
|
115
|
+
if (!find)
|
116
|
+
{
|
117
|
+
rb_ary_push(g_arg_array, ptr);
|
118
|
+
}
|
119
|
+
}
|
120
|
+
return new_argv;
|
121
|
+
}
|
122
|
+
|
123
|
+
|
124
|
+
static VALUE glut_InitDisplayMode(obj,arg1)
|
125
|
+
VALUE obj,arg1;
|
126
|
+
{
|
127
|
+
unsigned int mode;
|
128
|
+
mode = (unsigned int)NUM2INT(arg1);
|
129
|
+
glutInitDisplayMode(mode);
|
130
|
+
return Qnil;
|
131
|
+
}
|
132
|
+
|
133
|
+
|
134
|
+
#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9)
|
135
|
+
static VALUE
|
136
|
+
glut_InitDisplayString(obj,arg1)
|
137
|
+
VALUE obj,arg1;
|
138
|
+
{
|
139
|
+
if (TYPE(arg1) != T_STRING)
|
140
|
+
rb_raise(rb_eTypeError, "Glut.InitDisplay:%s",rb_class2name(CLASS_OF(arg1)));
|
141
|
+
glutInitDisplayString(RSTRING(arg1)->ptr);
|
142
|
+
return Qnil;
|
143
|
+
}
|
144
|
+
#endif
|
145
|
+
|
146
|
+
|
147
|
+
static VALUE
|
148
|
+
glut_InitWindowPosition(obj,arg1,arg2)
|
149
|
+
VALUE obj,arg1,arg2;
|
150
|
+
{
|
151
|
+
int x,y;
|
152
|
+
x = NUM2INT(arg1);
|
153
|
+
y = NUM2INT(arg2);
|
154
|
+
glutInitWindowPosition(x,y);
|
155
|
+
return Qnil;
|
156
|
+
}
|
157
|
+
|
158
|
+
|
159
|
+
static VALUE
|
160
|
+
glut_InitWindowSize(obj, arg1, arg2)
|
161
|
+
VALUE obj,arg1,arg2;
|
162
|
+
{
|
163
|
+
int width,height;
|
164
|
+
width = NUM2INT(arg1);
|
165
|
+
height = NUM2INT(arg2);
|
166
|
+
glutInitWindowSize(width,height);
|
167
|
+
return Qnil;
|
168
|
+
}
|
169
|
+
|
170
|
+
|
171
|
+
static VALUE
|
172
|
+
glut_MainLoop(obj)
|
173
|
+
VALUE obj;
|
174
|
+
{
|
175
|
+
glutMainLoop();
|
176
|
+
return Qnil;
|
177
|
+
}
|
178
|
+
|
179
|
+
/* Added by James to reflect MacOSX's CheckLoop. */
|
180
|
+
static VALUE
|
181
|
+
glut_CheckLoop(obj)
|
182
|
+
VALUE obj;
|
183
|
+
{
|
184
|
+
glutMainLoop();
|
185
|
+
return Qnil;
|
186
|
+
}
|
187
|
+
|
188
|
+
|
189
|
+
WINDOW_CALLBACK_SETUP(DisplayFunc);
|
190
|
+
WINDOW_CALLBACK_SETUP(ReshapeFunc);
|
191
|
+
WINDOW_CALLBACK_SETUP(KeyboardFunc);
|
192
|
+
WINDOW_CALLBACK_SETUP(MouseFunc);
|
193
|
+
WINDOW_CALLBACK_SETUP(MotionFunc);
|
194
|
+
WINDOW_CALLBACK_SETUP(PassiveMotionFunc);
|
195
|
+
WINDOW_CALLBACK_SETUP(EntryFunc);
|
196
|
+
WINDOW_CALLBACK_SETUP(VisibilityFunc);
|
197
|
+
/*
|
198
|
+
CALLBACK_DEFINE(IdleFunc);
|
199
|
+
CALLBACK_DEFINE(TimerFunc);
|
200
|
+
MENU_CALLBACK_DEFINE(MenuStateFunc);
|
201
|
+
*/
|
202
|
+
WINDOW_CALLBACK_SETUP(SpecialFunc);
|
203
|
+
WINDOW_CALLBACK_SETUP(SpaceballMotionFunc);
|
204
|
+
WINDOW_CALLBACK_SETUP(SpaceballRotateFunc);
|
205
|
+
WINDOW_CALLBACK_SETUP(SpaceballButtonFunc);
|
206
|
+
WINDOW_CALLBACK_SETUP(ButtonBoxFunc);
|
207
|
+
WINDOW_CALLBACK_SETUP(DialsFunc);
|
208
|
+
WINDOW_CALLBACK_SETUP(TabletMotionFunc);
|
209
|
+
WINDOW_CALLBACK_SETUP(TabletButtonFunc);
|
210
|
+
/*
|
211
|
+
MENU_CALLBACK_DEFINE(MenuStatusFunc);
|
212
|
+
*/
|
213
|
+
WINDOW_CALLBACK_SETUP(OverlayDisplayFunc);
|
214
|
+
WINDOW_CALLBACK_SETUP(WindowStatusFunc);
|
215
|
+
|
216
|
+
|
217
|
+
/* GLUT window sub-API. */
|
218
|
+
static VALUE glut_CreateWindow(argc, argv, obj)
|
219
|
+
int argc;
|
220
|
+
VALUE* argv;
|
221
|
+
VALUE obj;
|
222
|
+
{
|
223
|
+
int ret;
|
224
|
+
VALUE title;
|
225
|
+
rb_scan_args(argc, argv, "01", &title);
|
226
|
+
if (argc == 0)
|
227
|
+
title = rb_eval_string("$0");
|
228
|
+
if (TYPE(title) != T_STRING)
|
229
|
+
rb_raise(rb_eTypeError, "Glut.CreateWindow:%s", rb_class2name(CLASS_OF(title)));
|
230
|
+
ret = glutCreateWindow(RSTRING(title)->ptr);
|
231
|
+
|
232
|
+
/* setup callback */
|
233
|
+
/*
|
234
|
+
glutDisplayFunc(glut_DisplayFuncCallback);
|
235
|
+
glutReshapeFunc(glut_ReshapeFuncCallback);
|
236
|
+
glutKeyboardFunc(glut_KeyboardFuncCallback);
|
237
|
+
glutMouseFunc(glut_MouseFuncCallback);
|
238
|
+
glutMotionFunc(glut_MotionFuncCallback);
|
239
|
+
glutPassiveMotionFunc(glut_PassiveMotionFuncCallback);
|
240
|
+
glutEntryFunc(glut_EntryFuncCallback);
|
241
|
+
glutVisibilityFunc(glut_VisibilityFuncCallback);
|
242
|
+
glutSpecialFunc(glut_SpecialFuncCallback);
|
243
|
+
glutSpaceballMotionFunc(glut_SpaceballMotionFuncCallback);
|
244
|
+
glutSpaceballRotateFunc(glut_SpaceballRotateFuncCallback);
|
245
|
+
glutSpaceballButtonFunc(glut_SpaceballButtonFuncCallback);
|
246
|
+
glutButtonBoxFunc(glut_ButtonBoxFuncCallback);
|
247
|
+
glutDialsFunc(glut_DialsFuncCallback);
|
248
|
+
glutTabletMotionFunc(glut_TabletMotionFuncCallback);
|
249
|
+
glutTabletButtonFunc(glut_TabletButtonFuncCallback);
|
250
|
+
glutOverlayDisplayFunc(glut_OverlayDisplayFuncCallback);
|
251
|
+
glutWindowStatusFunc(glut_WindowStatusFuncCallback);
|
252
|
+
*/
|
253
|
+
return INT2NUM(ret);
|
254
|
+
}
|
255
|
+
|
256
|
+
|
257
|
+
static VALUE
|
258
|
+
glut_CreateSubWindow(obj,arg1,arg2,arg3,arg4,arg5)
|
259
|
+
VALUE obj,arg1,arg2,arg3,arg4,arg5;
|
260
|
+
{
|
261
|
+
int win, x, y, width, height;
|
262
|
+
int ret;
|
263
|
+
win = NUM2INT(arg1);
|
264
|
+
x = NUM2INT(arg2);
|
265
|
+
y = NUM2INT(arg3);
|
266
|
+
width = NUM2INT(arg4);
|
267
|
+
height = NUM2INT(arg5);
|
268
|
+
ret = glutCreateSubWindow(win, x, y, width, height);
|
269
|
+
return INT2NUM(ret);
|
270
|
+
}
|
271
|
+
|
272
|
+
static VALUE
|
273
|
+
glut_DestroyWindow(obj,arg1)
|
274
|
+
VALUE obj,arg1;
|
275
|
+
{
|
276
|
+
int win;
|
277
|
+
win = NUM2INT(arg1);
|
278
|
+
glutDestroyWindow(win);
|
279
|
+
return Qnil;
|
280
|
+
}
|
281
|
+
|
282
|
+
|
283
|
+
static VALUE
|
284
|
+
glut_PostRedisplay(obj)
|
285
|
+
VALUE obj;
|
286
|
+
{
|
287
|
+
glutPostRedisplay();
|
288
|
+
return Qnil;
|
289
|
+
}
|
290
|
+
|
291
|
+
|
292
|
+
static VALUE
|
293
|
+
glut_SwapBuffers(obj)
|
294
|
+
VALUE obj;
|
295
|
+
{
|
296
|
+
glutSwapBuffers();
|
297
|
+
return Qnil;
|
298
|
+
}
|
299
|
+
|
300
|
+
|
301
|
+
static VALUE
|
302
|
+
glut_GetWindow(obj)
|
303
|
+
VALUE obj;
|
304
|
+
{
|
305
|
+
int ret;
|
306
|
+
ret = glutGetWindow();
|
307
|
+
return INT2NUM(ret);
|
308
|
+
}
|
309
|
+
|
310
|
+
|
311
|
+
static VALUE
|
312
|
+
glut_SetWindow(obj,arg1)
|
313
|
+
VALUE obj,arg1;
|
314
|
+
{
|
315
|
+
int win;
|
316
|
+
win = NUM2INT(arg1);
|
317
|
+
glutSetWindow(win);
|
318
|
+
return Qnil;
|
319
|
+
}
|
320
|
+
|
321
|
+
|
322
|
+
static VALUE
|
323
|
+
glut_SetWindowTitle(obj,arg1)
|
324
|
+
VALUE obj,arg1;
|
325
|
+
{
|
326
|
+
if (TYPE(arg1) != T_STRING)
|
327
|
+
rb_raise(rb_eTypeError, "Glut.SetWindowTitle:%s", rb_class2name(CLASS_OF(arg1)));
|
328
|
+
glutSetWindowTitle(RSTRING(arg1)->ptr);
|
329
|
+
return Qnil;
|
330
|
+
}
|
331
|
+
|
332
|
+
|
333
|
+
static VALUE
|
334
|
+
glut_SetIconTitle(obj, arg1)
|
335
|
+
VALUE obj,arg1;
|
336
|
+
{
|
337
|
+
if (TYPE(arg1) != T_STRING)
|
338
|
+
rb_raise(rb_eTypeError, "Glut.IconTitle:%s", rb_class2name(CLASS_OF(arg1)));
|
339
|
+
glutSetIconTitle(RSTRING(arg1)->ptr);
|
340
|
+
return Qnil;
|
341
|
+
}
|
342
|
+
|
343
|
+
|
344
|
+
static VALUE
|
345
|
+
glut_PositionWindow(obj,arg1,arg2)
|
346
|
+
VALUE obj,arg1,arg2;
|
347
|
+
{
|
348
|
+
int x,y;
|
349
|
+
x = NUM2INT(arg1);
|
350
|
+
y = NUM2INT(arg2);
|
351
|
+
glutPositionWindow(x,y);
|
352
|
+
return Qnil;
|
353
|
+
}
|
354
|
+
|
355
|
+
|
356
|
+
static VALUE
|
357
|
+
glut_ReshapeWindow(obj,arg1,arg2)
|
358
|
+
VALUE obj,arg1,arg2;
|
359
|
+
{
|
360
|
+
int width,height;
|
361
|
+
width = NUM2INT(arg1);
|
362
|
+
height = NUM2INT(arg2);
|
363
|
+
glutReshapeWindow(width, height);
|
364
|
+
return Qnil;
|
365
|
+
}
|
366
|
+
|
367
|
+
|
368
|
+
static VALUE
|
369
|
+
glut_PopWindow(obj)
|
370
|
+
VALUE obj;
|
371
|
+
{
|
372
|
+
glutPopWindow();
|
373
|
+
return Qnil;
|
374
|
+
}
|
375
|
+
|
376
|
+
|
377
|
+
static VALUE
|
378
|
+
glut_PushWidow(obj)
|
379
|
+
VALUE obj;
|
380
|
+
{
|
381
|
+
glutPushWindow();
|
382
|
+
return Qnil;
|
383
|
+
}
|
384
|
+
|
385
|
+
|
386
|
+
static VALUE
|
387
|
+
glut_IconifyWindow(obj)
|
388
|
+
VALUE obj;
|
389
|
+
{
|
390
|
+
glutIconifyWindow();
|
391
|
+
return Qnil;
|
392
|
+
}
|
393
|
+
|
394
|
+
|
395
|
+
static VALUE
|
396
|
+
glut_ShowWindow(obj)
|
397
|
+
VALUE obj;
|
398
|
+
{
|
399
|
+
glutShowWindow();
|
400
|
+
return Qnil;
|
401
|
+
}
|
402
|
+
|
403
|
+
|
404
|
+
static VALUE
|
405
|
+
glut_HideWindow(obj)
|
406
|
+
VALUE obj;
|
407
|
+
{
|
408
|
+
glutHideWindow();
|
409
|
+
return Qnil;
|
410
|
+
}
|
411
|
+
|
412
|
+
|
413
|
+
#if (GLUT_API_VERSION >= 3)
|
414
|
+
static VALUE
|
415
|
+
glut_FullScreen(obj)
|
416
|
+
VALUE obj;
|
417
|
+
{
|
418
|
+
glutFullScreen();
|
419
|
+
return Qnil;
|
420
|
+
}
|
421
|
+
|
422
|
+
|
423
|
+
static VALUE
|
424
|
+
glut_SetCursor(obj,arg1)
|
425
|
+
VALUE obj,arg1;
|
426
|
+
{
|
427
|
+
int cursor;
|
428
|
+
cursor = NUM2INT(arg1);
|
429
|
+
glutSetCursor(cursor);
|
430
|
+
return Qnil;
|
431
|
+
}
|
432
|
+
|
433
|
+
|
434
|
+
#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9)
|
435
|
+
static VALUE
|
436
|
+
glut_WarpPointer(obj,arg1,arg2)
|
437
|
+
VALUE obj,arg1,arg2;
|
438
|
+
{
|
439
|
+
int x,y;
|
440
|
+
x = NUM2INT(arg1);
|
441
|
+
y = NUM2INT(arg2);
|
442
|
+
glutWarpPointer(x,y);
|
443
|
+
return Qnil;
|
444
|
+
}
|
445
|
+
#endif
|
446
|
+
|
447
|
+
|
448
|
+
/* GLUT overlay sub-API. */
|
449
|
+
static VALUE
|
450
|
+
glut_EstablishOverlay(obj)
|
451
|
+
VALUE obj;
|
452
|
+
{
|
453
|
+
glutEstablishOverlay();
|
454
|
+
return Qnil;
|
455
|
+
}
|
456
|
+
|
457
|
+
|
458
|
+
static VALUE
|
459
|
+
glut_RemoveOverlay(obj)
|
460
|
+
VALUE obj;
|
461
|
+
{
|
462
|
+
glutRemoveOverlay();
|
463
|
+
return Qnil;
|
464
|
+
}
|
465
|
+
|
466
|
+
|
467
|
+
static VALUE
|
468
|
+
glut_UseLayer(obj,arg1)
|
469
|
+
{
|
470
|
+
GLenum layer;
|
471
|
+
layer = (GLenum)NUM2INT(arg1);
|
472
|
+
glutUseLayer(layer);
|
473
|
+
return Qnil;
|
474
|
+
}
|
475
|
+
|
476
|
+
|
477
|
+
static VALUE
|
478
|
+
glut_PostOverlayRedisplay(obj)
|
479
|
+
VALUE obj;
|
480
|
+
{
|
481
|
+
glutPostOverlayRedisplay();
|
482
|
+
return Qnil;
|
483
|
+
}
|
484
|
+
|
485
|
+
|
486
|
+
static VALUE
|
487
|
+
glut_ShowOverlay(obj)
|
488
|
+
VALUE obj;
|
489
|
+
{
|
490
|
+
glutShowOverlay();
|
491
|
+
return Qnil;
|
492
|
+
}
|
493
|
+
|
494
|
+
|
495
|
+
static VALUE
|
496
|
+
glut_HideOverlay(obj)
|
497
|
+
VALUE obj;
|
498
|
+
{
|
499
|
+
glutHideOverlay();
|
500
|
+
return Qnil;
|
501
|
+
}
|
502
|
+
#endif
|
503
|
+
|
504
|
+
|
505
|
+
/* GLUT menu sub-API. */
|
506
|
+
static VALUE g_menucallback = Qnil;
|
507
|
+
static VALUE g_menuargs = Qnil;
|
508
|
+
static void
|
509
|
+
glut_CreateMenuCallback(value)
|
510
|
+
int value;
|
511
|
+
{
|
512
|
+
VALUE arg_pair;
|
513
|
+
VALUE func;
|
514
|
+
arg_pair = (VALUE)value;
|
515
|
+
func = rb_hash_aref(g_menucallback, rb_ary_entry(arg_pair, 0));
|
516
|
+
rb_funcall(func, callId, 1, rb_ary_entry(arg_pair, 1));
|
517
|
+
}
|
518
|
+
|
519
|
+
|
520
|
+
static VALUE
|
521
|
+
glut_CreateMenu(obj,arg1)
|
522
|
+
VALUE obj,arg1;
|
523
|
+
{
|
524
|
+
int menu;
|
525
|
+
VALUE ret;
|
526
|
+
if (!rb_obj_is_kind_of(arg1,rb_cProc) && !NIL_P(arg1))
|
527
|
+
rb_raise(rb_eTypeError, "Glut.CreateMenu:%s", rb_class2name(CLASS_OF(arg1)));
|
528
|
+
menu = glutCreateMenu(glut_CreateMenuCallback);
|
529
|
+
ret = INT2FIX(menu);
|
530
|
+
rb_hash_aset(g_menucallback, ret, arg1);
|
531
|
+
rb_hash_aset(g_menuargs, ret, rb_ary_new());
|
532
|
+
return ret;
|
533
|
+
}
|
534
|
+
|
535
|
+
|
536
|
+
static VALUE
|
537
|
+
glut_DestroyMenu(obj,arg1)
|
538
|
+
VALUE obj,arg1;
|
539
|
+
{
|
540
|
+
int menu;
|
541
|
+
menu = INT2FIX(arg1);
|
542
|
+
glutDestroyMenu(menu);
|
543
|
+
rb_hash_aset(g_menucallback, menu, Qnil);
|
544
|
+
rb_hash_aset(g_menuargs, menu, Qnil);
|
545
|
+
return Qnil;
|
546
|
+
}
|
547
|
+
|
548
|
+
|
549
|
+
static VALUE
|
550
|
+
glut_GetMenu(obj)
|
551
|
+
VALUE obj;
|
552
|
+
{
|
553
|
+
int ret;
|
554
|
+
ret = glutGetMenu();
|
555
|
+
return INT2NUM(ret);
|
556
|
+
}
|
557
|
+
|
558
|
+
|
559
|
+
static VALUE
|
560
|
+
glut_SetMenu(obj,arg1)
|
561
|
+
VALUE obj,arg1;
|
562
|
+
{
|
563
|
+
int menu;
|
564
|
+
menu = NUM2INT(arg1);
|
565
|
+
glutSetMenu(menu);
|
566
|
+
return Qnil;
|
567
|
+
}
|
568
|
+
|
569
|
+
|
570
|
+
static VALUE
|
571
|
+
glut_AddMenuEntry(obj,arg1,arg2)
|
572
|
+
VALUE obj,arg1,arg2;
|
573
|
+
{
|
574
|
+
int value;
|
575
|
+
int curmenuid;
|
576
|
+
VALUE arg_ary;
|
577
|
+
VALUE arg_pair;
|
578
|
+
if (TYPE(arg1) != T_STRING)
|
579
|
+
rb_raise(rb_eTypeError, "Glut.AddMenuEntry:%s", rb_class2name(CLASS_OF(arg1)));
|
580
|
+
curmenuid = glutGetMenu();
|
581
|
+
if (curmenuid == 0)
|
582
|
+
rb_raise(rb_eRuntimeError, "Glut.AddMenuEntry needs current menu");
|
583
|
+
arg_ary = rb_hash_aref(g_menuargs, INT2FIX(curmenuid));
|
584
|
+
arg_pair = rb_ary_new2(2);
|
585
|
+
rb_ary_store(arg_pair, 0, INT2FIX(curmenuid));
|
586
|
+
rb_ary_store(arg_pair, 1, arg2);
|
587
|
+
rb_ary_push(arg_ary, arg_pair);
|
588
|
+
glutAddMenuEntry(RSTRING(arg1)->ptr, arg_pair);
|
589
|
+
return Qnil;
|
590
|
+
}
|
591
|
+
|
592
|
+
|
593
|
+
static VALUE
|
594
|
+
glut_AddSubMenu(obj,arg1,arg2)
|
595
|
+
VALUE obj,arg1,arg2;
|
596
|
+
{
|
597
|
+
int value;
|
598
|
+
if (TYPE(arg1) != T_STRING)
|
599
|
+
rb_raise(rb_eTypeError, "Glut.AddSubMenu:%s", rb_class2name(CLASS_OF(arg1)));
|
600
|
+
value = NUM2INT(arg2);
|
601
|
+
glutAddSubMenu(RSTRING(arg1)->ptr, value);
|
602
|
+
return Qnil;
|
603
|
+
}
|
604
|
+
|
605
|
+
|
606
|
+
static VALUE glut_ChangeToMenuEntry(obj,arg1,arg2,arg3)
|
607
|
+
VALUE obj,arg1,arg2,arg3;
|
608
|
+
{
|
609
|
+
VALUE arg_ary;
|
610
|
+
VALUE arg_pair;
|
611
|
+
int item,value;
|
612
|
+
int curmenuid;
|
613
|
+
item = NUM2INT(arg1);
|
614
|
+
if (TYPE(arg2) != T_STRING)
|
615
|
+
rb_raise(rb_eTypeError, "Glut.ChangeToMenuEntry:%s", rb_class2name(CLASS_OF(arg1)));
|
616
|
+
curmenuid = glutGetMenu();
|
617
|
+
if (curmenuid == 0)
|
618
|
+
rb_raise(rb_eRuntimeError, "Glut.ChangeToMenuEntry needs current menu");
|
619
|
+
arg_ary = rb_hash_aref(g_menuargs, INT2FIX(curmenuid));
|
620
|
+
arg_pair = rb_ary_new2(2);
|
621
|
+
rb_ary_store(arg_pair, 0, INT2FIX(curmenuid));
|
622
|
+
rb_ary_store(arg_pair, 1, arg2);
|
623
|
+
rb_ary_store(arg_ary, item, arg_pair);
|
624
|
+
glutChangeToMenuEntry(item, RSTRING(arg2)->ptr, arg_pair);
|
625
|
+
return Qnil;
|
626
|
+
}
|
627
|
+
|
628
|
+
|
629
|
+
static VALUE glut_ChangeToSubMenu(obj,arg1,arg2,arg3)
|
630
|
+
VALUE obj,arg1,arg2,arg3;
|
631
|
+
{
|
632
|
+
int item,submenu;
|
633
|
+
item = NUM2INT(arg1);
|
634
|
+
submenu = NUM2INT(arg3);
|
635
|
+
if (TYPE(arg2) != T_STRING)
|
636
|
+
rb_raise(rb_eTypeError, "Glut.ChangeToSubMenu:%s",
|
637
|
+
rb_class2name(CLASS_OF(arg1)));
|
638
|
+
glutChangeToSubMenu(item, RSTRING(arg2)->ptr, submenu);
|
639
|
+
return Qnil;
|
640
|
+
}
|
641
|
+
|
642
|
+
|
643
|
+
static VALUE glut_RemoveMenuItem( VALUE obj, VALUE arg1 )
|
644
|
+
{
|
645
|
+
int item;
|
646
|
+
int curmenuid;
|
647
|
+
VALUE arg_ary;
|
648
|
+
item = NUM2INT(arg1);
|
649
|
+
glutRemoveMenuItem(item);
|
650
|
+
curmenuid = glutGetMenu();
|
651
|
+
if (curmenuid == 0)
|
652
|
+
rb_raise(rb_eRuntimeError, "Glut.RemoveMenuItem needs current menu");
|
653
|
+
arg_ary = rb_hash_aref(g_menuargs, INT2FIX(curmenuid));
|
654
|
+
rb_ary_delete(arg_ary, item);
|
655
|
+
return Qnil;
|
656
|
+
}
|
657
|
+
|
658
|
+
|
659
|
+
static VALUE
|
660
|
+
glut_AttachMenu(obj,arg1)
|
661
|
+
VALUE obj, arg1;
|
662
|
+
{
|
663
|
+
int button;
|
664
|
+
button = NUM2INT(arg1);
|
665
|
+
glutAttachMenu(button);
|
666
|
+
return Qnil;
|
667
|
+
}
|
668
|
+
|
669
|
+
|
670
|
+
static VALUE
|
671
|
+
glut_DetachMenu(obj,arg1)
|
672
|
+
VALUE obj, arg1;
|
673
|
+
{
|
674
|
+
int button;
|
675
|
+
button = NUM2INT(arg1);
|
676
|
+
glutDetachMenu(button);
|
677
|
+
return Qnil;
|
678
|
+
}
|
679
|
+
|
680
|
+
|
681
|
+
/* GLUT sub-API. */
|
682
|
+
static void glut_DisplayFuncCallback(void)
|
683
|
+
{
|
684
|
+
VALUE func;
|
685
|
+
func = rb_ary_entry(DisplayFunc, glutGetWindow());
|
686
|
+
if (!NIL_P(func))
|
687
|
+
rb_funcall(func, callId, 0);
|
688
|
+
}
|
689
|
+
|
690
|
+
|
691
|
+
static void
|
692
|
+
glut_ReshapeFuncCallback(width, height)
|
693
|
+
int width, height;
|
694
|
+
{
|
695
|
+
VALUE func;
|
696
|
+
func = rb_ary_entry( ReshapeFunc, glutGetWindow());
|
697
|
+
if (!NIL_P(func))
|
698
|
+
rb_funcall(func, callId, 2, INT2FIX(width), INT2FIX(height));
|
699
|
+
}
|
700
|
+
|
701
|
+
|
702
|
+
static void
|
703
|
+
glut_KeyboardFuncCallback(key, x, y)
|
704
|
+
unsigned char key;
|
705
|
+
int x,y;
|
706
|
+
{
|
707
|
+
VALUE func;
|
708
|
+
func = rb_ary_entry(KeyboardFunc, glutGetWindow());
|
709
|
+
if (!NIL_P(func))
|
710
|
+
rb_funcall(func, callId, 3, INT2FIX(key), INT2FIX(x), INT2FIX(y));
|
711
|
+
}
|
712
|
+
|
713
|
+
|
714
|
+
static void
|
715
|
+
glut_MouseFuncCallback(button, state, x, y)
|
716
|
+
int button, state, x, y;
|
717
|
+
{
|
718
|
+
VALUE func;
|
719
|
+
func = rb_ary_entry(MouseFunc, glutGetWindow());
|
720
|
+
if (!NIL_P(func))
|
721
|
+
rb_funcall(func, callId, 4, INT2FIX(button), INT2FIX(state), INT2FIX(x), INT2FIX(y));
|
722
|
+
}
|
723
|
+
|
724
|
+
|
725
|
+
static void
|
726
|
+
glut_MotionFuncCallback(x, y)
|
727
|
+
int x, y;
|
728
|
+
{
|
729
|
+
VALUE func;
|
730
|
+
func = rb_ary_entry(MotionFunc, glutGetWindow());
|
731
|
+
if (!NIL_P(func))
|
732
|
+
rb_funcall(func, callId, 2,INT2FIX(x), INT2FIX(y));
|
733
|
+
}
|
734
|
+
|
735
|
+
|
736
|
+
static void
|
737
|
+
glut_PassiveMotionFuncCallback(x, y)
|
738
|
+
int x, y;
|
739
|
+
{
|
740
|
+
VALUE func;
|
741
|
+
func = rb_ary_entry(PassiveMotionFunc, glutGetWindow());
|
742
|
+
if (!NIL_P(func))
|
743
|
+
rb_funcall(func, callId, 2,INT2FIX(x), INT2FIX(y));
|
744
|
+
}
|
745
|
+
|
746
|
+
|
747
|
+
static void
|
748
|
+
glut_EntryFuncCallback(state)
|
749
|
+
int state;
|
750
|
+
{
|
751
|
+
VALUE func;
|
752
|
+
func = rb_ary_entry(EntryFunc,glutGetWindow());
|
753
|
+
if (!NIL_P(func))
|
754
|
+
rb_funcall(func, callId, 1, INT2NUM(state));
|
755
|
+
}
|
756
|
+
|
757
|
+
|
758
|
+
static void
|
759
|
+
glut_VisibilityFuncCallback(state)
|
760
|
+
int state;
|
761
|
+
{
|
762
|
+
VALUE func;
|
763
|
+
func = rb_ary_entry(VisibilityFunc, glutGetWindow());
|
764
|
+
if (!NIL_P(func))
|
765
|
+
rb_funcall(func, callId, 1, INT2NUM(state));
|
766
|
+
}
|
767
|
+
|
768
|
+
|
769
|
+
static VALUE idle_func = Qnil;
|
770
|
+
static void
|
771
|
+
glut_IdleFuncCallback()
|
772
|
+
{
|
773
|
+
if (!NIL_P(idle_func))
|
774
|
+
rb_funcall(idle_func, callId, 0);
|
775
|
+
}
|
776
|
+
|
777
|
+
|
778
|
+
static VALUE
|
779
|
+
glut_IdleFunc(obj, arg1)
|
780
|
+
VALUE obj,arg1;
|
781
|
+
{
|
782
|
+
if (!rb_obj_is_kind_of(arg1,rb_cProc) && !NIL_P(arg1))
|
783
|
+
rb_raise(rb_eTypeError, "glutIdleFunc:%s", rb_class2name(CLASS_OF(arg1)));
|
784
|
+
idle_func = arg1;
|
785
|
+
glutIdleFunc(glut_IdleFuncCallback);
|
786
|
+
return Qnil;
|
787
|
+
}
|
788
|
+
|
789
|
+
|
790
|
+
static VALUE timer_func = Qnil;
|
791
|
+
static void
|
792
|
+
glut_TimerFuncCallback(value)
|
793
|
+
int value;
|
794
|
+
{
|
795
|
+
if (!NIL_P(timer_func))
|
796
|
+
rb_funcall(timer_func, callId, 1, INT2NUM(value));
|
797
|
+
}
|
798
|
+
|
799
|
+
|
800
|
+
static VALUE
|
801
|
+
glut_TimerFunc(obj, arg1, arg2, arg3)
|
802
|
+
VALUE obj,arg1,arg2,arg3;
|
803
|
+
{
|
804
|
+
unsigned int millis;
|
805
|
+
int value;
|
806
|
+
millis = (unsigned int)NUM2INT(arg1);
|
807
|
+
value = NUM2INT(arg3);
|
808
|
+
if (!rb_obj_is_kind_of(arg2,rb_cProc))
|
809
|
+
rb_raise(rb_eTypeError, "glutTimerFunc:%s", rb_class2name(CLASS_OF(arg2)));
|
810
|
+
timer_func = arg2;
|
811
|
+
glutTimerFunc(millis, glut_TimerFuncCallback, value);
|
812
|
+
return Qnil;
|
813
|
+
}
|
814
|
+
|
815
|
+
|
816
|
+
static VALUE menustate_func = Qnil;
|
817
|
+
static void
|
818
|
+
glut_MenuStateFuncCallback(state)
|
819
|
+
int state;
|
820
|
+
{
|
821
|
+
if (!NIL_P(menustate_func))
|
822
|
+
rb_funcall(menustate_func, callId, 1, INT2NUM(state));
|
823
|
+
}
|
824
|
+
|
825
|
+
|
826
|
+
static VALUE
|
827
|
+
glut_MenuStateFunc(obj, arg1)
|
828
|
+
VALUE obj,arg1;
|
829
|
+
{
|
830
|
+
if (!rb_obj_is_kind_of(arg1,rb_cProc))
|
831
|
+
rb_raise(rb_eTypeError, "glutMenuStateFunc:%s",
|
832
|
+
rb_class2name(CLASS_OF(arg1)));
|
833
|
+
menustate_func = arg1;
|
834
|
+
glutMenuStateFunc(glut_MenuStateFuncCallback);
|
835
|
+
return Qnil;
|
836
|
+
}
|
837
|
+
|
838
|
+
|
839
|
+
#if (GLUT_API_VERSION >= 2)
|
840
|
+
static void
|
841
|
+
glut_SpecialFuncCallback(key, x, y)
|
842
|
+
int key, x, y;
|
843
|
+
{
|
844
|
+
VALUE func;
|
845
|
+
func = rb_ary_entry(SpecialFunc, glutGetWindow());
|
846
|
+
if (!NIL_P(func))
|
847
|
+
rb_funcall(func, callId, 3,INT2NUM(key), INT2FIX(x), INT2FIX(y));
|
848
|
+
}
|
849
|
+
|
850
|
+
|
851
|
+
static void
|
852
|
+
glut_SpaceballMotionFuncCallback(x, y, z)
|
853
|
+
int x,y,z;
|
854
|
+
{
|
855
|
+
VALUE func;
|
856
|
+
func = rb_ary_entry(SpaceballMotionFunc, glutGetWindow());
|
857
|
+
if (!NIL_P(func))
|
858
|
+
rb_funcall(func, callId, 3,INT2NUM(x), INT2FIX(y), INT2FIX(z));
|
859
|
+
}
|
860
|
+
|
861
|
+
|
862
|
+
static void
|
863
|
+
glut_SpaceballRotateFuncCallback(x, y, z)
|
864
|
+
int x,y,z;
|
865
|
+
{
|
866
|
+
VALUE func;
|
867
|
+
func = rb_ary_entry(SpaceballRotateFunc, glutGetWindow());
|
868
|
+
if (!NIL_P(func))
|
869
|
+
rb_funcall(func, callId, 3,INT2NUM(x), INT2FIX(y), INT2FIX(z));
|
870
|
+
}
|
871
|
+
|
872
|
+
|
873
|
+
static void
|
874
|
+
glut_SpaceballButtonFuncCallback(button, state)
|
875
|
+
int button, state;
|
876
|
+
{
|
877
|
+
VALUE func;
|
878
|
+
func = rb_ary_entry(SpaceballButtonFunc, glutGetWindow());
|
879
|
+
if (!NIL_P(func))
|
880
|
+
rb_funcall(func, callId, 2,INT2NUM(button), INT2NUM(state));
|
881
|
+
}
|
882
|
+
|
883
|
+
|
884
|
+
static void
|
885
|
+
glut_ButtonBoxFuncCallback(button, state)
|
886
|
+
int button, state;
|
887
|
+
{
|
888
|
+
VALUE func;
|
889
|
+
func = rb_ary_entry(ButtonBoxFunc, glutGetWindow());
|
890
|
+
if (!NIL_P(func))
|
891
|
+
rb_funcall(func, callId, 2,INT2NUM(button), INT2NUM(state));
|
892
|
+
}
|
893
|
+
|
894
|
+
|
895
|
+
static void
|
896
|
+
glut_DialsFuncCallback(dial, value)
|
897
|
+
int dial, value;
|
898
|
+
{
|
899
|
+
VALUE func;
|
900
|
+
func = rb_ary_entry(DialsFunc, glutGetWindow());
|
901
|
+
if (!NIL_P(func))
|
902
|
+
rb_funcall(func, callId, 2,INT2NUM(dial), INT2NUM(value));
|
903
|
+
}
|
904
|
+
|
905
|
+
|
906
|
+
static void
|
907
|
+
glut_TabletMotionFuncCallback(x, y)
|
908
|
+
int x, y;
|
909
|
+
{
|
910
|
+
VALUE func;
|
911
|
+
func = rb_ary_entry(TabletMotionFunc, glutGetWindow());
|
912
|
+
if (!NIL_P(func))
|
913
|
+
rb_funcall(func, callId, 2,INT2NUM(x), INT2NUM(y));
|
914
|
+
}
|
915
|
+
|
916
|
+
|
917
|
+
static void
|
918
|
+
glut_TabletButtonFuncCallback(button, state, x, y)
|
919
|
+
int button, state, x, y;
|
920
|
+
{
|
921
|
+
VALUE func;
|
922
|
+
func = rb_ary_entry(TabletButtonFunc, glutGetWindow());
|
923
|
+
if (!NIL_P(func))
|
924
|
+
rb_funcall(func, 4, INT2NUM(button), INT2NUM(state), INT2NUM(x), INT2NUM(y));
|
925
|
+
}
|
926
|
+
|
927
|
+
|
928
|
+
#if (GLUT_API_VERSION >= 3)
|
929
|
+
/*
|
930
|
+
extern void APIENTRY glutMenuStatusFunc(void (*)(int status, int x, int y));
|
931
|
+
*/
|
932
|
+
static void
|
933
|
+
glut_OverlayDisplayFuncCallback()
|
934
|
+
{
|
935
|
+
VALUE func;
|
936
|
+
func = rb_ary_entry(OverlayDisplayFunc, glutGetWindow());
|
937
|
+
if (!NIL_P(func))
|
938
|
+
rb_funcall(func, callId, 0);
|
939
|
+
}
|
940
|
+
|
941
|
+
|
942
|
+
#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9)
|
943
|
+
static void
|
944
|
+
glut_WindowStatusFuncCallback(state)
|
945
|
+
int state;
|
946
|
+
{
|
947
|
+
VALUE func;
|
948
|
+
func = rb_ary_entry(OverlayDisplayFunc, glutGetWindow());
|
949
|
+
if (!NIL_P(func))
|
950
|
+
rb_funcall(func, callId, 1, INT2NUM(state));
|
951
|
+
}
|
952
|
+
#endif
|
953
|
+
#endif
|
954
|
+
#endif
|
955
|
+
|
956
|
+
|
957
|
+
/* GLUT color index sub-API. */
|
958
|
+
static VALUE
|
959
|
+
glut_SetColor(obj,arg1,arg2,arg3,arg4)
|
960
|
+
VALUE obj,arg1,arg2,arg3,arg4;
|
961
|
+
{
|
962
|
+
int set;
|
963
|
+
GLfloat red;
|
964
|
+
GLfloat green;
|
965
|
+
GLfloat blue;
|
966
|
+
set = NUM2INT(arg1);
|
967
|
+
red = (GLfloat)NUM2DBL(arg2);
|
968
|
+
green = (GLfloat)NUM2DBL(arg3);
|
969
|
+
blue = (GLfloat)NUM2DBL(arg4);
|
970
|
+
glutSetColor(set, red, green, blue);
|
971
|
+
return Qnil;
|
972
|
+
}
|
973
|
+
|
974
|
+
|
975
|
+
static VALUE
|
976
|
+
glut_GetColor(obj,arg1,arg2)
|
977
|
+
VALUE obj,arg1,arg2;
|
978
|
+
{
|
979
|
+
int ndx;
|
980
|
+
int component;
|
981
|
+
GLfloat ret;
|
982
|
+
ndx = NUM2INT(arg1);
|
983
|
+
component = NUM2INT(arg2);
|
984
|
+
ret = (GLfloat)glutGetColor(ndx, component);
|
985
|
+
return rb_float_new(ret);
|
986
|
+
}
|
987
|
+
|
988
|
+
|
989
|
+
static VALUE
|
990
|
+
glut_CopyColormap(obj,arg1)
|
991
|
+
VALUE obj,arg1;
|
992
|
+
{
|
993
|
+
int win;
|
994
|
+
win = NUM2INT(arg1);
|
995
|
+
glutCopyColormap(win);
|
996
|
+
return Qnil;
|
997
|
+
}
|
998
|
+
|
999
|
+
|
1000
|
+
/* GLUT state retrieval sub-API. */
|
1001
|
+
static VALUE
|
1002
|
+
glut_Get(obj,arg1)
|
1003
|
+
VALUE obj,arg1;
|
1004
|
+
{
|
1005
|
+
GLenum type;
|
1006
|
+
int ret;
|
1007
|
+
type = (GLenum)NUM2INT(arg1);
|
1008
|
+
ret = glutGet(type);
|
1009
|
+
return INT2NUM(ret);
|
1010
|
+
}
|
1011
|
+
|
1012
|
+
|
1013
|
+
static VALUE
|
1014
|
+
glut_DeviceGet(obj,arg1)
|
1015
|
+
VALUE obj,arg1;
|
1016
|
+
{
|
1017
|
+
GLenum type;
|
1018
|
+
int ret;
|
1019
|
+
type = (GLenum)NUM2INT(arg1);
|
1020
|
+
ret = glutDeviceGet(type);
|
1021
|
+
return INT2NUM(ret);
|
1022
|
+
}
|
1023
|
+
|
1024
|
+
|
1025
|
+
#if (GLUT_API_VERSION >= 2)
|
1026
|
+
/* GLUT extension support sub-API */
|
1027
|
+
static VALUE
|
1028
|
+
glut_ExtensionSupported(obj,arg1)
|
1029
|
+
VALUE obj,arg1;
|
1030
|
+
{
|
1031
|
+
int ret;
|
1032
|
+
if (TYPE(arg1) != T_STRING)
|
1033
|
+
rb_raise(rb_eTypeError, "glutExtensionSupported:%s",
|
1034
|
+
rb_class2name(CLASS_OF(arg1)));
|
1035
|
+
ret = glutExtensionSupported(RSTRING(arg1)->ptr);
|
1036
|
+
return INT2NUM(ret);
|
1037
|
+
}
|
1038
|
+
#endif
|
1039
|
+
|
1040
|
+
|
1041
|
+
#if (GLUT_API_VERSION >= 3)
|
1042
|
+
static VALUE
|
1043
|
+
glut_GetModifiers(obj)
|
1044
|
+
VALUE obj;
|
1045
|
+
{
|
1046
|
+
int ret;
|
1047
|
+
ret = glutGetModifiers();
|
1048
|
+
return INT2NUM(ret);
|
1049
|
+
}
|
1050
|
+
|
1051
|
+
|
1052
|
+
static VALUE
|
1053
|
+
glut_LayerGet(obj,arg1)
|
1054
|
+
VALUE obj,arg1;
|
1055
|
+
{
|
1056
|
+
GLenum type;
|
1057
|
+
int ret;
|
1058
|
+
type = (GLenum)NUM2INT(arg1);
|
1059
|
+
ret = glutLayerGet(type);
|
1060
|
+
return INT2NUM(ret);
|
1061
|
+
}
|
1062
|
+
#endif
|
1063
|
+
|
1064
|
+
|
1065
|
+
|
1066
|
+
/* GLUT font sub-API */
|
1067
|
+
static VALUE
|
1068
|
+
glut_BitmapCharacter(obj,arg1,arg2)
|
1069
|
+
VALUE obj,arg1,arg2;
|
1070
|
+
{
|
1071
|
+
int font;
|
1072
|
+
int character;
|
1073
|
+
font = NUM2INT(arg1);
|
1074
|
+
character = NUM2INT(arg2);
|
1075
|
+
glutBitmapCharacter((void*)font, character);
|
1076
|
+
return Qnil;
|
1077
|
+
}
|
1078
|
+
|
1079
|
+
/* Added by James since the normal function is messed up. His comment:
|
1080
|
+
* > BitmapCharacterX is my own ugly, lazy hack to avoid bus errors when
|
1081
|
+
* > trying to display text via GLUT. What really needs to happen is for
|
1082
|
+
* > someone more experienced with Ruby extensions to figure out why we
|
1083
|
+
* > can't pass the font values as arguments to this function without it
|
1084
|
+
* > falling over!
|
1085
|
+
*/
|
1086
|
+
static VALUE
|
1087
|
+
glut_BitmapCharacterX(obj,arg2)
|
1088
|
+
VALUE obj,arg2;
|
1089
|
+
{
|
1090
|
+
int font;
|
1091
|
+
int character;
|
1092
|
+
/* font = NUM2INT(arg1); */
|
1093
|
+
character = NUM2INT(arg2);
|
1094
|
+
glutBitmapCharacter(GLUT_BITMAP_8_BY_13, character);
|
1095
|
+
return Qnil;
|
1096
|
+
}
|
1097
|
+
|
1098
|
+
|
1099
|
+
static VALUE
|
1100
|
+
glut_BitmapWidth(obj,arg1,arg2)
|
1101
|
+
VALUE obj,arg1,arg2;
|
1102
|
+
{
|
1103
|
+
int font;
|
1104
|
+
int character;
|
1105
|
+
int ret;
|
1106
|
+
font = NUM2INT(arg1);
|
1107
|
+
character = NUM2INT(arg2);
|
1108
|
+
ret = glutBitmapWidth((void*)font, character);
|
1109
|
+
return INT2NUM(ret);
|
1110
|
+
}
|
1111
|
+
|
1112
|
+
|
1113
|
+
static VALUE
|
1114
|
+
glut_StrokeCharacter(obj,arg1,arg2)
|
1115
|
+
VALUE obj,arg1,arg2;
|
1116
|
+
{
|
1117
|
+
int font;
|
1118
|
+
int character;
|
1119
|
+
font = NUM2INT(arg1);
|
1120
|
+
character = NUM2INT(arg2);
|
1121
|
+
glutStrokeCharacter((void*)font, character);
|
1122
|
+
return Qnil;
|
1123
|
+
}
|
1124
|
+
|
1125
|
+
|
1126
|
+
static VALUE
|
1127
|
+
glut_StrokeWidth(obj,arg1,arg2)
|
1128
|
+
VALUE obj,arg1,arg2;
|
1129
|
+
{
|
1130
|
+
int font;
|
1131
|
+
int character;
|
1132
|
+
int ret;
|
1133
|
+
font = NUM2INT(arg1);
|
1134
|
+
character = NUM2INT(arg2);
|
1135
|
+
ret = glutStrokeWidth((void*)font, character);
|
1136
|
+
return INT2NUM(ret);
|
1137
|
+
}
|
1138
|
+
|
1139
|
+
|
1140
|
+
#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9)
|
1141
|
+
static VALUE
|
1142
|
+
glut_BitmapLength(obj,arg1,arg2)
|
1143
|
+
VALUE obj,arg1,arg2;
|
1144
|
+
{
|
1145
|
+
int font;
|
1146
|
+
int ret;
|
1147
|
+
if (TYPE(arg2) != T_STRING) rb_raise(rb_eTypeError, "glutBitmapLength:%s",
|
1148
|
+
rb_class2name(CLASS_OF(arg2)));
|
1149
|
+
font = NUM2INT(arg1);
|
1150
|
+
ret = glutBitmapLength((void *)font, (const unsigned char*)RSTRING(arg2)->ptr);
|
1151
|
+
return INT2NUM(ret);
|
1152
|
+
}
|
1153
|
+
|
1154
|
+
|
1155
|
+
static VALUE
|
1156
|
+
glut_StrokeLength(obj,arg1,arg2)
|
1157
|
+
VALUE obj,arg1,arg2;
|
1158
|
+
{
|
1159
|
+
int font;
|
1160
|
+
int ret;
|
1161
|
+
if (TYPE(arg2) != T_STRING) rb_raise(rb_eTypeError, "glutStrokeLength:%s",
|
1162
|
+
rb_class2name(CLASS_OF(arg2)));
|
1163
|
+
font = NUM2INT(arg1);
|
1164
|
+
ret = glutStrokeLength((void *)font, (const unsigned char*)RSTRING(arg2)->ptr);
|
1165
|
+
return INT2NUM(ret);
|
1166
|
+
}
|
1167
|
+
#endif
|
1168
|
+
|
1169
|
+
|
1170
|
+
/* GLUT pre-built models sub-API */
|
1171
|
+
static VALUE
|
1172
|
+
glut_WireSphere(obj,arg1,arg2,arg3)
|
1173
|
+
VALUE obj,arg1,arg2,arg3;
|
1174
|
+
{
|
1175
|
+
GLdouble radius;
|
1176
|
+
GLint slices;
|
1177
|
+
GLint stacks;
|
1178
|
+
radius = (GLdouble)NUM2DBL(arg1);
|
1179
|
+
slices = (GLint)NUM2INT(arg2);
|
1180
|
+
stacks = (GLint)NUM2INT(arg3);
|
1181
|
+
glutWireSphere(radius, slices, stacks);
|
1182
|
+
return Qnil;
|
1183
|
+
}
|
1184
|
+
|
1185
|
+
|
1186
|
+
static VALUE
|
1187
|
+
glut_SolidSphere(obj,arg1,arg2,arg3)
|
1188
|
+
VALUE obj,arg1,arg2,arg3;
|
1189
|
+
{
|
1190
|
+
GLdouble radius;
|
1191
|
+
GLint slices;
|
1192
|
+
GLint stacks;
|
1193
|
+
radius = (GLdouble)NUM2DBL(arg1);
|
1194
|
+
slices = (GLint)NUM2INT(arg2);
|
1195
|
+
stacks = (GLint)NUM2INT(arg3);
|
1196
|
+
glutSolidSphere(radius, slices, stacks);
|
1197
|
+
return Qnil;
|
1198
|
+
}
|
1199
|
+
|
1200
|
+
|
1201
|
+
static VALUE
|
1202
|
+
glut_WireCone(obj,arg1,arg2,arg3,arg4)
|
1203
|
+
VALUE obj,arg1,arg2,arg3,arg4;
|
1204
|
+
{
|
1205
|
+
GLdouble base;
|
1206
|
+
GLdouble height;
|
1207
|
+
GLint slices;
|
1208
|
+
GLint stacks;
|
1209
|
+
base = (GLdouble)NUM2DBL(arg1);
|
1210
|
+
height = (GLdouble)NUM2DBL(arg2);
|
1211
|
+
slices = (GLint)NUM2INT(arg3);
|
1212
|
+
stacks = (GLint)NUM2INT(arg4);
|
1213
|
+
glutWireCone(base, height, slices, stacks);
|
1214
|
+
return Qnil;
|
1215
|
+
}
|
1216
|
+
|
1217
|
+
|
1218
|
+
static VALUE
|
1219
|
+
glut_SolidCone(obj,arg1,arg2,arg3,arg4)
|
1220
|
+
VALUE obj,arg1,arg2,arg3,arg4;
|
1221
|
+
{
|
1222
|
+
GLdouble base;
|
1223
|
+
GLdouble height;
|
1224
|
+
GLint slices;
|
1225
|
+
GLint stacks;
|
1226
|
+
base = (GLdouble)NUM2DBL(arg1);
|
1227
|
+
height = (GLdouble)NUM2DBL(arg2);
|
1228
|
+
slices = (GLint)NUM2INT(arg3);
|
1229
|
+
stacks = (GLint)NUM2INT(arg4);
|
1230
|
+
glutSolidCone(base, height, slices, stacks);
|
1231
|
+
return Qnil;
|
1232
|
+
}
|
1233
|
+
|
1234
|
+
|
1235
|
+
static VALUE
|
1236
|
+
glut_WireCube(obj,arg1)
|
1237
|
+
VALUE obj,arg1;
|
1238
|
+
{
|
1239
|
+
GLdouble size;
|
1240
|
+
size = (GLdouble)NUM2DBL(arg1);
|
1241
|
+
glutWireCube(size);
|
1242
|
+
return Qnil;
|
1243
|
+
}
|
1244
|
+
|
1245
|
+
|
1246
|
+
static VALUE
|
1247
|
+
glut_SolidCube(obj,arg1)
|
1248
|
+
VALUE obj,arg1;
|
1249
|
+
{
|
1250
|
+
GLdouble size;
|
1251
|
+
size = (GLdouble)NUM2DBL(arg1);
|
1252
|
+
glutSolidCube(size);
|
1253
|
+
return Qnil;
|
1254
|
+
}
|
1255
|
+
|
1256
|
+
|
1257
|
+
static VALUE
|
1258
|
+
glut_WireTorus(obj,arg1,arg2,arg3,arg4)
|
1259
|
+
VALUE obj,arg1,arg2,arg3,arg4;
|
1260
|
+
{
|
1261
|
+
GLdouble innerRadius;
|
1262
|
+
GLdouble outerRadius;
|
1263
|
+
GLint sides;
|
1264
|
+
GLint rings;
|
1265
|
+
innerRadius = (GLdouble)NUM2DBL(arg1);
|
1266
|
+
outerRadius = (GLdouble)NUM2DBL(arg2);
|
1267
|
+
sides = (GLint)NUM2INT(arg3);
|
1268
|
+
rings = (GLint)NUM2INT(arg4);
|
1269
|
+
glutWireTorus(innerRadius, outerRadius, sides, rings);
|
1270
|
+
return Qnil;
|
1271
|
+
}
|
1272
|
+
|
1273
|
+
|
1274
|
+
static VALUE
|
1275
|
+
glut_SolidTorus(obj,arg1,arg2,arg3,arg4)
|
1276
|
+
VALUE obj,arg1,arg2,arg3,arg4;
|
1277
|
+
{
|
1278
|
+
GLdouble innerRadius;
|
1279
|
+
GLdouble outerRadius;
|
1280
|
+
GLint sides;
|
1281
|
+
GLint rings;
|
1282
|
+
innerRadius = (GLdouble)NUM2DBL(arg1);
|
1283
|
+
outerRadius = (GLdouble)NUM2DBL(arg2);
|
1284
|
+
sides = (GLint)NUM2INT(arg3);
|
1285
|
+
rings = (GLint)NUM2INT(arg4);
|
1286
|
+
glutSolidTorus(innerRadius, outerRadius, sides, rings);
|
1287
|
+
return Qnil;
|
1288
|
+
}
|
1289
|
+
|
1290
|
+
|
1291
|
+
static VALUE
|
1292
|
+
glut_WireDodecahedron(obj)
|
1293
|
+
VALUE obj;
|
1294
|
+
{
|
1295
|
+
glutWireDodecahedron();
|
1296
|
+
return Qnil;
|
1297
|
+
}
|
1298
|
+
|
1299
|
+
|
1300
|
+
static VALUE
|
1301
|
+
glut_SolidDodecahedron(obj)
|
1302
|
+
VALUE obj;
|
1303
|
+
{
|
1304
|
+
glutSolidDodecahedron();
|
1305
|
+
return Qnil;
|
1306
|
+
}
|
1307
|
+
|
1308
|
+
|
1309
|
+
static VALUE
|
1310
|
+
glut_WireTeapot(obj,arg1)
|
1311
|
+
VALUE obj,arg1;
|
1312
|
+
{
|
1313
|
+
GLdouble size;
|
1314
|
+
size = (GLdouble)NUM2DBL(arg1);
|
1315
|
+
glutWireTeapot(size);
|
1316
|
+
return Qnil;
|
1317
|
+
}
|
1318
|
+
|
1319
|
+
|
1320
|
+
static VALUE
|
1321
|
+
glut_SolidTeapot(obj,arg1)
|
1322
|
+
VALUE obj,arg1;
|
1323
|
+
{
|
1324
|
+
GLdouble size;
|
1325
|
+
size = (GLdouble)NUM2DBL(arg1);
|
1326
|
+
glutSolidTeapot(size);
|
1327
|
+
return Qnil;
|
1328
|
+
}
|
1329
|
+
|
1330
|
+
|
1331
|
+
static VALUE
|
1332
|
+
glut_WireOctahedron(obj)
|
1333
|
+
VALUE obj;
|
1334
|
+
{
|
1335
|
+
glutWireOctahedron();
|
1336
|
+
return Qnil;
|
1337
|
+
}
|
1338
|
+
|
1339
|
+
|
1340
|
+
static VALUE
|
1341
|
+
glut_SolidOctahedron(obj)
|
1342
|
+
VALUE obj;
|
1343
|
+
{
|
1344
|
+
glutSolidOctahedron();
|
1345
|
+
return Qnil;
|
1346
|
+
}
|
1347
|
+
|
1348
|
+
|
1349
|
+
static VALUE
|
1350
|
+
glut_WireTetrahedron(obj)
|
1351
|
+
VALUE obj;
|
1352
|
+
{
|
1353
|
+
glutWireTetrahedron();
|
1354
|
+
return Qnil;
|
1355
|
+
}
|
1356
|
+
|
1357
|
+
|
1358
|
+
static VALUE
|
1359
|
+
glut_SolidTetrahedron(obj)
|
1360
|
+
VALUE obj;
|
1361
|
+
{
|
1362
|
+
glutSolidTetrahedron();
|
1363
|
+
return Qnil;
|
1364
|
+
}
|
1365
|
+
|
1366
|
+
|
1367
|
+
static VALUE
|
1368
|
+
glut_WireIcosahedron(obj)
|
1369
|
+
VALUE obj;
|
1370
|
+
{
|
1371
|
+
glutWireIcosahedron();
|
1372
|
+
return Qnil;
|
1373
|
+
}
|
1374
|
+
|
1375
|
+
|
1376
|
+
static VALUE
|
1377
|
+
glut_SolidIcosahedron(obj)
|
1378
|
+
VALUE obj;
|
1379
|
+
{
|
1380
|
+
glutSolidIcosahedron();
|
1381
|
+
return Qnil;
|
1382
|
+
}
|
1383
|
+
|
1384
|
+
|
1385
|
+
#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9)
|
1386
|
+
/* GLUT video resize sub-API. */
|
1387
|
+
static VALUE
|
1388
|
+
glut_VideoResizeGet(obj,arg1)
|
1389
|
+
VALUE obj,arg1;
|
1390
|
+
{
|
1391
|
+
GLenum param;
|
1392
|
+
int ret;
|
1393
|
+
param = (GLenum)NUM2INT(arg1);
|
1394
|
+
ret = glutVideoResizeGet(param);
|
1395
|
+
return INT2NUM(ret);
|
1396
|
+
}
|
1397
|
+
|
1398
|
+
|
1399
|
+
static VALUE
|
1400
|
+
glut_SetupVideoResizing(obj)
|
1401
|
+
VALUE obj;
|
1402
|
+
{
|
1403
|
+
glutSetupVideoResizing();
|
1404
|
+
return Qnil;
|
1405
|
+
}
|
1406
|
+
|
1407
|
+
|
1408
|
+
static VALUE
|
1409
|
+
glut_StopVideoResizing(obj)
|
1410
|
+
VALUE obj;
|
1411
|
+
{
|
1412
|
+
glutStopVideoResizing();
|
1413
|
+
return Qnil;
|
1414
|
+
}
|
1415
|
+
|
1416
|
+
|
1417
|
+
static VALUE
|
1418
|
+
glut_VideoResize(obj,arg1,arg2,arg3,arg4)
|
1419
|
+
VALUE obj,arg1,arg2,arg3,arg4;
|
1420
|
+
{
|
1421
|
+
int x;
|
1422
|
+
int y;
|
1423
|
+
int width;
|
1424
|
+
int height;
|
1425
|
+
x = NUM2INT(arg1);
|
1426
|
+
y = NUM2INT(arg2);
|
1427
|
+
width = NUM2INT(arg3);
|
1428
|
+
height = NUM2INT(arg4);
|
1429
|
+
glutVideoResize(x,y, width, height);
|
1430
|
+
return Qnil;
|
1431
|
+
}
|
1432
|
+
|
1433
|
+
|
1434
|
+
static VALUE
|
1435
|
+
glut_VideoPan(obj,arg1,arg2,arg3,arg4)
|
1436
|
+
VALUE obj,arg1,arg2,arg3,arg4;
|
1437
|
+
{
|
1438
|
+
int x;
|
1439
|
+
int y;
|
1440
|
+
int width;
|
1441
|
+
int height;
|
1442
|
+
x = NUM2INT(arg1);
|
1443
|
+
y = NUM2INT(arg2);
|
1444
|
+
width = NUM2INT(arg3);
|
1445
|
+
height = NUM2INT(arg4);
|
1446
|
+
glutVideoPan(x,y, width, height);
|
1447
|
+
return Qnil;
|
1448
|
+
}
|
1449
|
+
|
1450
|
+
|
1451
|
+
/* GLUT debugging sub-API. */
|
1452
|
+
static VALUE
|
1453
|
+
glut_ReportErrors(obj)
|
1454
|
+
VALUE obj;
|
1455
|
+
{
|
1456
|
+
glutReportErrors();
|
1457
|
+
return Qnil;
|
1458
|
+
}
|
1459
|
+
#endif
|
1460
|
+
|
1461
|
+
|
1462
|
+
/* Added by James. */
|
1463
|
+
static VALUE
|
1464
|
+
glut_GameModeString(obj,arg1)
|
1465
|
+
VALUE obj,arg1;
|
1466
|
+
{
|
1467
|
+
if (TYPE(arg1) != T_STRING)
|
1468
|
+
rb_raise(rb_eTypeError, "glutGameModeString:%s",
|
1469
|
+
rb_class2name(CLASS_OF(arg1)));
|
1470
|
+
glutGameModeString((const char*)RSTRING(arg1)->ptr);
|
1471
|
+
return Qnil;
|
1472
|
+
}
|
1473
|
+
|
1474
|
+
|
1475
|
+
static VALUE
|
1476
|
+
glut_EnterGameMode(obj)
|
1477
|
+
VALUE obj;
|
1478
|
+
{
|
1479
|
+
glutEnterGameMode();
|
1480
|
+
return Qnil;
|
1481
|
+
}
|
1482
|
+
/* end "Added by James." */
|
1483
|
+
|
1484
|
+
|
1485
|
+
static VALUE module;
|
1486
|
+
|
1487
|
+
void Init_glut()
|
1488
|
+
{
|
1489
|
+
module = rb_define_module("Glut");
|
1490
|
+
|
1491
|
+
rb_global_variable( &g_arg_array );
|
1492
|
+
rb_global_variable( &g_menucallback );
|
1493
|
+
rb_global_variable( &g_menuargs );
|
1494
|
+
g_menucallback = rb_hash_new();
|
1495
|
+
g_menuargs = rb_hash_new();
|
1496
|
+
|
1497
|
+
rb_define_module_function(module, "glutInit", glut_Init, -1);
|
1498
|
+
rb_define_module_function(module, "glutInitDisplayMode", glut_InitDisplayMode, 1);
|
1499
|
+
rb_define_module_function(module, "glutInitDisplayString", glut_InitDisplayString, 1);
|
1500
|
+
rb_define_module_function(module, "glutInitWindowPosition", glut_InitWindowPosition, 2);
|
1501
|
+
rb_define_module_function(module, "glutInitWindowSize", glut_InitWindowSize, 2);
|
1502
|
+
rb_define_module_function(module, "glutMainLoop", glut_MainLoop, 0);
|
1503
|
+
|
1504
|
+
/* Added by James. */
|
1505
|
+
rb_define_module_function(module, "glutCheckLoop", glut_CheckLoop, 0);
|
1506
|
+
rb_define_module_function(module, "glutGameModeString", glut_GameModeString, 1);
|
1507
|
+
rb_define_module_function(module, "glutEnterGameMode", glut_EnterGameMode, 0);
|
1508
|
+
|
1509
|
+
rb_define_module_function(module, "glutCreateWindow", glut_CreateWindow, -1);
|
1510
|
+
rb_define_module_function(module, "glutCreateSubWindow", glut_CreateSubWindow, 5);
|
1511
|
+
rb_define_module_function(module, "glutDestroyWindow", glut_DestroyWindow, 1);
|
1512
|
+
rb_define_module_function(module, "glutPostRedisplay", glut_PostRedisplay, 0);
|
1513
|
+
rb_define_module_function(module, "glutSwapBuffers", glut_SwapBuffers, 0);
|
1514
|
+
rb_define_module_function(module, "glutGetWindow", glut_GetWindow, 0);
|
1515
|
+
rb_define_module_function(module, "glutSetWindow", glut_SetWindow, 1);
|
1516
|
+
rb_define_module_function(module, "glutSetWindowTitle", glut_SetWindowTitle, 1);
|
1517
|
+
rb_define_module_function(module, "glutSetIconTitle", glut_SetIconTitle, 1);
|
1518
|
+
rb_define_module_function(module, "glutPositionWindow", glut_PositionWindow, 2);
|
1519
|
+
rb_define_module_function(module, "glutReshapeWindow", glut_ReshapeWindow, 2);
|
1520
|
+
rb_define_module_function(module, "glutPopWindow", glut_PopWindow, 0);
|
1521
|
+
rb_define_module_function(module, "glutPushWidow", glut_PushWidow, 0);
|
1522
|
+
rb_define_module_function(module, "glutIconifyWindow", glut_IconifyWindow, 0);
|
1523
|
+
rb_define_module_function(module, "glutShowWindow", glut_ShowWindow, 0);
|
1524
|
+
rb_define_module_function(module, "glutHideWindow", glut_HideWindow, 0);
|
1525
|
+
rb_define_module_function(module, "glutFullScreen", glut_FullScreen, 0);
|
1526
|
+
rb_define_module_function(module, "glutSetCursor", glut_SetCursor, 1);
|
1527
|
+
rb_define_module_function(module, "glutWarpPointer", glut_WarpPointer, 2);
|
1528
|
+
rb_define_module_function(module, "glutEstablishOverlay", glut_EstablishOverlay, 0);
|
1529
|
+
rb_define_module_function(module, "glutRemoveOverlay", glut_RemoveOverlay, 0);
|
1530
|
+
rb_define_module_function(module, "glutUseLayer", glut_UseLayer, 1);
|
1531
|
+
rb_define_module_function(module, "glutPostOverlayRedisplay", glut_PostOverlayRedisplay, 0);
|
1532
|
+
rb_define_module_function(module, "glutShowOverlay", glut_ShowOverlay, 0);
|
1533
|
+
rb_define_module_function(module, "glutHideOverlay", glut_HideOverlay, 0);
|
1534
|
+
rb_define_module_function(module, "glutCreateMenu", glut_CreateMenu, 1);
|
1535
|
+
rb_define_module_function(module, "glutDestroyMenu", glut_DestroyMenu, 1);
|
1536
|
+
rb_define_module_function(module, "glutGetMenu", glut_GetMenu, 0);
|
1537
|
+
rb_define_module_function(module, "glutSetMenu", glut_SetMenu, 1);
|
1538
|
+
rb_define_module_function(module, "glutAddMenuEntry", glut_AddMenuEntry, 2);
|
1539
|
+
rb_define_module_function(module, "glutAddSubMenu", glut_AddSubMenu, 2);
|
1540
|
+
rb_define_module_function(module, "glutChangeToMenuEntry", glut_ChangeToMenuEntry, 3);
|
1541
|
+
rb_define_module_function(module, "glutChangeToSubMenu", glut_ChangeToSubMenu, 3);
|
1542
|
+
rb_define_module_function(module, "glutRemoveMenuItem", glut_RemoveMenuItem, 1);
|
1543
|
+
rb_define_module_function(module, "glutAttachMenu", glut_AttachMenu, 1);
|
1544
|
+
rb_define_module_function(module, "glutDetachMenu", glut_DetachMenu, 1);
|
1545
|
+
|
1546
|
+
rb_define_module_function(module, "glutSetColor", glut_SetColor, 4);
|
1547
|
+
rb_define_module_function(module, "glutGetColor", glut_GetColor, 2);
|
1548
|
+
rb_define_module_function(module, "glutCopyColormap", glut_CopyColormap, 1);
|
1549
|
+
rb_define_module_function(module, "glutGet", glut_Get, 1);
|
1550
|
+
rb_define_module_function(module, "glutDeviceGet", glut_DeviceGet, 1);
|
1551
|
+
rb_define_module_function(module, "glutExtensionSupported", glut_ExtensionSupported, 1);
|
1552
|
+
rb_define_module_function(module, "glutGetModifiers", glut_GetModifiers, 0);
|
1553
|
+
rb_define_module_function(module, "glutLayerGet", glut_LayerGet, 1);
|
1554
|
+
rb_define_module_function(module, "glutBitmapCharacter", glut_BitmapCharacter, 2);
|
1555
|
+
|
1556
|
+
/* Added by James. */
|
1557
|
+
rb_define_module_function(module, "glutBitmapCharacterX", glut_BitmapCharacterX, 1);
|
1558
|
+
|
1559
|
+
rb_define_module_function(module, "glutBitmapWidth", glut_BitmapWidth, 2);
|
1560
|
+
rb_define_module_function(module, "glutStrokeCharacter", glut_StrokeCharacter, 2);
|
1561
|
+
rb_define_module_function(module, "glutStrokeWidth", glut_StrokeWidth, 2);
|
1562
|
+
rb_define_module_function(module, "glutBitmapLength", glut_BitmapLength, 2);
|
1563
|
+
rb_define_module_function(module, "glutStrokeLength", glut_StrokeLength, 2);
|
1564
|
+
rb_define_module_function(module, "glutWireSphere", glut_WireSphere, 3);
|
1565
|
+
rb_define_module_function(module, "glutSolidSphere", glut_SolidSphere, 3);
|
1566
|
+
rb_define_module_function(module, "glutWireCone", glut_WireCone, 4);
|
1567
|
+
rb_define_module_function(module, "glutSolidCone", glut_SolidCone, 4);
|
1568
|
+
rb_define_module_function(module, "glutWireCube", glut_WireCube, 1);
|
1569
|
+
rb_define_module_function(module, "glutSolidCube", glut_SolidCube, 1);
|
1570
|
+
rb_define_module_function(module, "glutWireTorus", glut_WireTorus, 4);
|
1571
|
+
rb_define_module_function(module, "glutSolidTorus", glut_SolidTorus, 4);
|
1572
|
+
rb_define_module_function(module, "glutWireDodecahedron", glut_WireDodecahedron, 0);
|
1573
|
+
rb_define_module_function(module, "glutSolidDodecahedron", glut_SolidDodecahedron, 0);
|
1574
|
+
rb_define_module_function(module, "glutWireTeapot", glut_WireTeapot, 1);
|
1575
|
+
rb_define_module_function(module, "glutSolidTeapot", glut_SolidTeapot, 1);
|
1576
|
+
rb_define_module_function(module, "glutWireOctahedron", glut_WireOctahedron, 0);
|
1577
|
+
rb_define_module_function(module, "glutSolidOctahedron", glut_SolidOctahedron, 0);
|
1578
|
+
rb_define_module_function(module, "glutWireTetrahedron", glut_WireTetrahedron, 0);
|
1579
|
+
rb_define_module_function(module, "glutSolidTetrahedron", glut_SolidTetrahedron, 0);
|
1580
|
+
rb_define_module_function(module, "glutWireIcosahedron", glut_WireIcosahedron, 0);
|
1581
|
+
rb_define_module_function(module, "glutSolidIcosahedron", glut_SolidIcosahedron, 0);
|
1582
|
+
rb_define_module_function(module, "glutVideoResizeGet", glut_VideoResizeGet, 1);
|
1583
|
+
rb_define_module_function(module, "glutSetupVideoResizing", glut_SetupVideoResizing, 0);
|
1584
|
+
rb_define_module_function(module, "glutStopVideoResizing", glut_StopVideoResizing, 0);
|
1585
|
+
rb_define_module_function(module, "glutVideoResize", glut_VideoResize, 4);
|
1586
|
+
rb_define_module_function(module, "glutVideoPan", glut_VideoPan, 4);
|
1587
|
+
rb_define_module_function(module, "glutReportErrors", glut_ReportErrors, 0);
|
1588
|
+
rb_define_module_function(module, "glutIdleFunc", glut_IdleFunc, 1);
|
1589
|
+
rb_define_module_function(module, "glutTimerFunc", glut_TimerFunc, 3);
|
1590
|
+
|
1591
|
+
rb_define_const(module, "GLUT_API_VERSION", INT2NUM(GLUT_API_VERSION));
|
1592
|
+
rb_define_const(module, "GLUT_XLIB_IMPLEMENTATION", INT2NUM(GLUT_XLIB_IMPLEMENTATION));
|
1593
|
+
rb_define_const(module, "GLUT_RGB", INT2NUM(GLUT_RGB));
|
1594
|
+
rb_define_const(module, "GLUT_RGBA", INT2NUM(GLUT_RGBA));
|
1595
|
+
rb_define_const(module, "GLUT_INDEX", INT2NUM(GLUT_INDEX));
|
1596
|
+
rb_define_const(module, "GLUT_SINGLE", INT2NUM(GLUT_SINGLE));
|
1597
|
+
rb_define_const(module, "GLUT_DOUBLE", INT2NUM(GLUT_DOUBLE));
|
1598
|
+
rb_define_const(module, "GLUT_ACCUM", INT2NUM(GLUT_ACCUM));
|
1599
|
+
rb_define_const(module, "GLUT_ALPHA", INT2NUM(GLUT_ALPHA));
|
1600
|
+
rb_define_const(module, "GLUT_DEPTH", INT2NUM(GLUT_DEPTH));
|
1601
|
+
rb_define_const(module, "GLUT_STENCIL", INT2NUM(GLUT_STENCIL));
|
1602
|
+
rb_define_const(module, "GLUT_MULTISAMPLE", INT2NUM(GLUT_MULTISAMPLE));
|
1603
|
+
rb_define_const(module, "GLUT_STEREO", INT2NUM(GLUT_STEREO));
|
1604
|
+
rb_define_const(module, "GLUT_LUMINANCE", INT2NUM(GLUT_LUMINANCE));
|
1605
|
+
rb_define_const(module, "GLUT_LEFT_BUTTON", INT2NUM(GLUT_LEFT_BUTTON));
|
1606
|
+
rb_define_const(module, "GLUT_MIDDLE_BUTTON", INT2NUM(GLUT_MIDDLE_BUTTON));
|
1607
|
+
rb_define_const(module, "GLUT_RIGHT_BUTTON", INT2NUM(GLUT_RIGHT_BUTTON));
|
1608
|
+
rb_define_const(module, "GLUT_DOWN", INT2NUM(GLUT_DOWN));
|
1609
|
+
rb_define_const(module, "GLUT_UP", INT2NUM(GLUT_UP));
|
1610
|
+
rb_define_const(module, "GLUT_KEY_F1", INT2NUM(GLUT_KEY_F1));
|
1611
|
+
rb_define_const(module, "GLUT_KEY_F2", INT2NUM(GLUT_KEY_F2));
|
1612
|
+
rb_define_const(module, "GLUT_KEY_F3", INT2NUM(GLUT_KEY_F3));
|
1613
|
+
rb_define_const(module, "GLUT_KEY_F4", INT2NUM(GLUT_KEY_F4));
|
1614
|
+
rb_define_const(module, "GLUT_KEY_F5", INT2NUM(GLUT_KEY_F5));
|
1615
|
+
rb_define_const(module, "GLUT_KEY_F6", INT2NUM(GLUT_KEY_F6));
|
1616
|
+
rb_define_const(module, "GLUT_KEY_F7", INT2NUM(GLUT_KEY_F7));
|
1617
|
+
rb_define_const(module, "GLUT_KEY_F8", INT2NUM(GLUT_KEY_F8));
|
1618
|
+
rb_define_const(module, "GLUT_KEY_F9", INT2NUM(GLUT_KEY_F9));
|
1619
|
+
rb_define_const(module, "GLUT_KEY_F10", INT2NUM(GLUT_KEY_F10));
|
1620
|
+
rb_define_const(module, "GLUT_KEY_F11", INT2NUM(GLUT_KEY_F11));
|
1621
|
+
rb_define_const(module, "GLUT_KEY_F12", INT2NUM(GLUT_KEY_F12));
|
1622
|
+
rb_define_const(module, "GLUT_KEY_LEFT", INT2NUM(GLUT_KEY_LEFT));
|
1623
|
+
rb_define_const(module, "GLUT_KEY_UP", INT2NUM(GLUT_KEY_UP));
|
1624
|
+
rb_define_const(module, "GLUT_KEY_RIGHT", INT2NUM(GLUT_KEY_RIGHT));
|
1625
|
+
rb_define_const(module, "GLUT_KEY_DOWN", INT2NUM(GLUT_KEY_DOWN));
|
1626
|
+
rb_define_const(module, "GLUT_KEY_PAGE_UP", INT2NUM(GLUT_KEY_PAGE_UP));
|
1627
|
+
rb_define_const(module, "GLUT_KEY_PAGE_DOWN", INT2NUM(GLUT_KEY_PAGE_DOWN));
|
1628
|
+
rb_define_const(module, "GLUT_KEY_HOME", INT2NUM(GLUT_KEY_HOME));
|
1629
|
+
rb_define_const(module, "GLUT_KEY_END", INT2NUM(GLUT_KEY_END));
|
1630
|
+
rb_define_const(module, "GLUT_KEY_INSERT", INT2NUM(GLUT_KEY_INSERT));
|
1631
|
+
rb_define_const(module, "GLUT_LEFT", INT2NUM(GLUT_LEFT));
|
1632
|
+
rb_define_const(module, "GLUT_ENTERED", INT2NUM(GLUT_ENTERED));
|
1633
|
+
rb_define_const(module, "GLUT_MENU_NOT_IN_USE", INT2NUM(GLUT_MENU_NOT_IN_USE));
|
1634
|
+
rb_define_const(module, "GLUT_MENU_IN_USE", INT2NUM(GLUT_MENU_IN_USE));
|
1635
|
+
rb_define_const(module, "GLUT_NOT_VISIBLE", INT2NUM(GLUT_NOT_VISIBLE));
|
1636
|
+
rb_define_const(module, "GLUT_VISIBLE", INT2NUM(GLUT_VISIBLE));
|
1637
|
+
rb_define_const(module, "GLUT_HIDDEN", INT2NUM(GLUT_HIDDEN));
|
1638
|
+
rb_define_const(module, "GLUT_FULLY_RETAINED", INT2NUM(GLUT_FULLY_RETAINED));
|
1639
|
+
rb_define_const(module, "GLUT_PARTIALLY_RETAINED", INT2NUM(GLUT_PARTIALLY_RETAINED));
|
1640
|
+
rb_define_const(module, "GLUT_FULLY_COVERED", INT2NUM(GLUT_FULLY_COVERED));
|
1641
|
+
rb_define_const(module, "GLUT_RED", INT2NUM(GLUT_RED));
|
1642
|
+
rb_define_const(module, "GLUT_GREEN", INT2NUM(GLUT_GREEN));
|
1643
|
+
rb_define_const(module, "GLUT_BLUE", INT2NUM(GLUT_BLUE));
|
1644
|
+
rb_define_const(module, "GLUT_WINDOW_X", INT2NUM(GLUT_WINDOW_X));
|
1645
|
+
rb_define_const(module, "GLUT_WINDOW_Y", INT2NUM(GLUT_WINDOW_Y));
|
1646
|
+
rb_define_const(module, "GLUT_WINDOW_WIDTH", INT2NUM(GLUT_WINDOW_WIDTH));
|
1647
|
+
rb_define_const(module, "GLUT_WINDOW_HEIGHT", INT2NUM(GLUT_WINDOW_HEIGHT));
|
1648
|
+
rb_define_const(module, "GLUT_WINDOW_BUFFER_SIZE", INT2NUM(GLUT_WINDOW_BUFFER_SIZE));
|
1649
|
+
rb_define_const(module, "GLUT_WINDOW_STENCIL_SIZE", INT2NUM(GLUT_WINDOW_STENCIL_SIZE));
|
1650
|
+
rb_define_const(module, "GLUT_WINDOW_DEPTH_SIZE", INT2NUM(GLUT_WINDOW_DEPTH_SIZE));
|
1651
|
+
rb_define_const(module, "GLUT_WINDOW_RED_SIZE", INT2NUM(GLUT_WINDOW_RED_SIZE));
|
1652
|
+
rb_define_const(module, "GLUT_WINDOW_GREEN_SIZE", INT2NUM(GLUT_WINDOW_GREEN_SIZE));
|
1653
|
+
rb_define_const(module, "GLUT_WINDOW_BLUE_SIZE", INT2NUM(GLUT_WINDOW_BLUE_SIZE));
|
1654
|
+
rb_define_const(module, "GLUT_WINDOW_ALPHA_SIZE", INT2NUM(GLUT_WINDOW_ALPHA_SIZE));
|
1655
|
+
rb_define_const(module, "GLUT_WINDOW_ACCUM_RED_SIZE", INT2NUM(GLUT_WINDOW_ACCUM_RED_SIZE));
|
1656
|
+
rb_define_const(module, "GLUT_WINDOW_ACCUM_GREEN_SIZE", INT2NUM(GLUT_WINDOW_ACCUM_GREEN_SIZE));
|
1657
|
+
rb_define_const(module, "GLUT_WINDOW_ACCUM_BLUE_SIZE", INT2NUM(GLUT_WINDOW_ACCUM_BLUE_SIZE));
|
1658
|
+
rb_define_const(module, "GLUT_WINDOW_ACCUM_ALPHA_SIZE", INT2NUM(GLUT_WINDOW_ACCUM_ALPHA_SIZE));
|
1659
|
+
rb_define_const(module, "GLUT_WINDOW_DOUBLEBUFFER", INT2NUM(GLUT_WINDOW_DOUBLEBUFFER));
|
1660
|
+
rb_define_const(module, "GLUT_WINDOW_RGBA", INT2NUM(GLUT_WINDOW_RGBA));
|
1661
|
+
rb_define_const(module, "GLUT_WINDOW_PARENT", INT2NUM(GLUT_WINDOW_PARENT));
|
1662
|
+
rb_define_const(module, "GLUT_WINDOW_NUM_CHILDREN", INT2NUM(GLUT_WINDOW_NUM_CHILDREN));
|
1663
|
+
rb_define_const(module, "GLUT_WINDOW_COLORMAP_SIZE", INT2NUM(GLUT_WINDOW_COLORMAP_SIZE));
|
1664
|
+
rb_define_const(module, "GLUT_WINDOW_NUM_SAMPLES", INT2NUM(GLUT_WINDOW_NUM_SAMPLES));
|
1665
|
+
rb_define_const(module, "GLUT_WINDOW_STEREO", INT2NUM(GLUT_WINDOW_STEREO));
|
1666
|
+
rb_define_const(module, "GLUT_WINDOW_CURSOR", INT2NUM(GLUT_WINDOW_CURSOR));
|
1667
|
+
rb_define_const(module, "GLUT_SCREEN_WIDTH", INT2NUM(GLUT_SCREEN_WIDTH));
|
1668
|
+
rb_define_const(module, "GLUT_SCREEN_HEIGHT", INT2NUM(GLUT_SCREEN_HEIGHT));
|
1669
|
+
rb_define_const(module, "GLUT_SCREEN_WIDTH_MM", INT2NUM(GLUT_SCREEN_WIDTH_MM));
|
1670
|
+
rb_define_const(module, "GLUT_SCREEN_HEIGHT_MM", INT2NUM(GLUT_SCREEN_HEIGHT_MM));
|
1671
|
+
rb_define_const(module, "GLUT_MENU_NUM_ITEMS", INT2NUM(GLUT_MENU_NUM_ITEMS));
|
1672
|
+
rb_define_const(module, "GLUT_DISPLAY_MODE_POSSIBLE", INT2NUM(GLUT_DISPLAY_MODE_POSSIBLE));
|
1673
|
+
rb_define_const(module, "GLUT_INIT_WINDOW_X", INT2NUM(GLUT_INIT_WINDOW_X));
|
1674
|
+
rb_define_const(module, "GLUT_INIT_WINDOW_Y", INT2NUM(GLUT_INIT_WINDOW_Y));
|
1675
|
+
rb_define_const(module, "GLUT_INIT_WINDOW_WIDTH", INT2NUM(GLUT_INIT_WINDOW_WIDTH));
|
1676
|
+
rb_define_const(module, "GLUT_INIT_WINDOW_HEIGHT", INT2NUM(GLUT_INIT_WINDOW_HEIGHT));
|
1677
|
+
rb_define_const(module, "GLUT_INIT_DISPLAY_MODE", INT2NUM(GLUT_INIT_DISPLAY_MODE));
|
1678
|
+
rb_define_const(module, "GLUT_ELAPSED_TIME", INT2NUM(GLUT_ELAPSED_TIME));
|
1679
|
+
rb_define_const(module, "GLUT_HAS_KEYBOARD", INT2NUM(GLUT_HAS_KEYBOARD));
|
1680
|
+
rb_define_const(module, "GLUT_HAS_MOUSE", INT2NUM(GLUT_HAS_MOUSE));
|
1681
|
+
rb_define_const(module, "GLUT_HAS_SPACEBALL", INT2NUM(GLUT_HAS_SPACEBALL));
|
1682
|
+
rb_define_const(module, "GLUT_HAS_DIAL_AND_BUTTON_BOX", INT2NUM(GLUT_HAS_DIAL_AND_BUTTON_BOX));
|
1683
|
+
rb_define_const(module, "GLUT_HAS_TABLET", INT2NUM(GLUT_HAS_TABLET));
|
1684
|
+
rb_define_const(module, "GLUT_NUM_MOUSE_BUTTONS", INT2NUM(GLUT_NUM_MOUSE_BUTTONS));
|
1685
|
+
rb_define_const(module, "GLUT_NUM_SPACEBALL_BUTTONS", INT2NUM(GLUT_NUM_SPACEBALL_BUTTONS));
|
1686
|
+
rb_define_const(module, "GLUT_NUM_BUTTON_BOX_BUTTONS", INT2NUM(GLUT_NUM_BUTTON_BOX_BUTTONS));
|
1687
|
+
rb_define_const(module, "GLUT_NUM_DIALS", INT2NUM(GLUT_NUM_DIALS));
|
1688
|
+
rb_define_const(module, "GLUT_NUM_TABLET_BUTTONS", INT2NUM(GLUT_NUM_TABLET_BUTTONS));
|
1689
|
+
rb_define_const(module, "GLUT_OVERLAY_POSSIBLE", INT2NUM(GLUT_OVERLAY_POSSIBLE));
|
1690
|
+
rb_define_const(module, "GLUT_LAYER_IN_USE", INT2NUM(GLUT_LAYER_IN_USE));
|
1691
|
+
rb_define_const(module, "GLUT_HAS_OVERLAY", INT2NUM(GLUT_HAS_OVERLAY));
|
1692
|
+
rb_define_const(module, "GLUT_TRANSPARENT_INDEX", INT2NUM(GLUT_TRANSPARENT_INDEX));
|
1693
|
+
rb_define_const(module, "GLUT_NORMAL_DAMAGED", INT2NUM(GLUT_NORMAL_DAMAGED));
|
1694
|
+
rb_define_const(module, "GLUT_OVERLAY_DAMAGED", INT2NUM(GLUT_OVERLAY_DAMAGED));
|
1695
|
+
rb_define_const(module, "GLUT_VIDEO_RESIZE_POSSIBLE", INT2NUM(GLUT_VIDEO_RESIZE_POSSIBLE));
|
1696
|
+
rb_define_const(module, "GLUT_VIDEO_RESIZE_IN_USE", INT2NUM(GLUT_VIDEO_RESIZE_IN_USE));
|
1697
|
+
rb_define_const(module, "GLUT_VIDEO_RESIZE_X_DELTA", INT2NUM(GLUT_VIDEO_RESIZE_X_DELTA));
|
1698
|
+
rb_define_const(module, "GLUT_VIDEO_RESIZE_Y_DELTA", INT2NUM(GLUT_VIDEO_RESIZE_Y_DELTA));
|
1699
|
+
rb_define_const(module, "GLUT_VIDEO_RESIZE_WIDTH_DELTA", INT2NUM(GLUT_VIDEO_RESIZE_WIDTH_DELTA));
|
1700
|
+
rb_define_const(module, "GLUT_VIDEO_RESIZE_HEIGHT_DELTA", INT2NUM(GLUT_VIDEO_RESIZE_HEIGHT_DELTA));
|
1701
|
+
rb_define_const(module, "GLUT_VIDEO_RESIZE_X", INT2NUM(GLUT_VIDEO_RESIZE_X));
|
1702
|
+
rb_define_const(module, "GLUT_VIDEO_RESIZE_Y", INT2NUM(GLUT_VIDEO_RESIZE_Y));
|
1703
|
+
rb_define_const(module, "GLUT_VIDEO_RESIZE_WIDTH", INT2NUM(GLUT_VIDEO_RESIZE_WIDTH));
|
1704
|
+
rb_define_const(module, "GLUT_VIDEO_RESIZE_HEIGHT", INT2NUM(GLUT_VIDEO_RESIZE_HEIGHT));
|
1705
|
+
rb_define_const(module, "GLUT_NORMAL", INT2NUM(GLUT_NORMAL));
|
1706
|
+
rb_define_const(module, "GLUT_OVERLAY", INT2NUM(GLUT_OVERLAY));
|
1707
|
+
rb_define_const(module, "GLUT_ACTIVE_SHIFT", INT2NUM(GLUT_ACTIVE_SHIFT));
|
1708
|
+
rb_define_const(module, "GLUT_ACTIVE_CTRL", INT2NUM(GLUT_ACTIVE_CTRL));
|
1709
|
+
rb_define_const(module, "GLUT_ACTIVE_ALT", INT2NUM(GLUT_ACTIVE_ALT));
|
1710
|
+
rb_define_const(module, "GLUT_CURSOR_RIGHT_ARROW", INT2NUM(GLUT_CURSOR_RIGHT_ARROW));
|
1711
|
+
rb_define_const(module, "GLUT_CURSOR_LEFT_ARROW", INT2NUM(GLUT_CURSOR_LEFT_ARROW));
|
1712
|
+
rb_define_const(module, "GLUT_CURSOR_INFO", INT2NUM(GLUT_CURSOR_INFO));
|
1713
|
+
rb_define_const(module, "GLUT_CURSOR_DESTROY", INT2NUM(GLUT_CURSOR_DESTROY));
|
1714
|
+
rb_define_const(module, "GLUT_CURSOR_HELP", INT2NUM(GLUT_CURSOR_HELP));
|
1715
|
+
rb_define_const(module, "GLUT_CURSOR_CYCLE", INT2NUM(GLUT_CURSOR_CYCLE));
|
1716
|
+
rb_define_const(module, "GLUT_CURSOR_SPRAY", INT2NUM(GLUT_CURSOR_SPRAY));
|
1717
|
+
rb_define_const(module, "GLUT_CURSOR_WAIT", INT2NUM(GLUT_CURSOR_WAIT));
|
1718
|
+
rb_define_const(module, "GLUT_CURSOR_TEXT", INT2NUM(GLUT_CURSOR_TEXT));
|
1719
|
+
rb_define_const(module, "GLUT_CURSOR_CROSSHAIR", INT2NUM(GLUT_CURSOR_CROSSHAIR));
|
1720
|
+
rb_define_const(module, "GLUT_CURSOR_UP_DOWN", INT2NUM(GLUT_CURSOR_UP_DOWN));
|
1721
|
+
rb_define_const(module, "GLUT_CURSOR_LEFT_RIGHT", INT2NUM(GLUT_CURSOR_LEFT_RIGHT));
|
1722
|
+
rb_define_const(module, "GLUT_CURSOR_TOP_SIDE", INT2NUM(GLUT_CURSOR_TOP_SIDE));
|
1723
|
+
rb_define_const(module, "GLUT_CURSOR_BOTTOM_SIDE", INT2NUM(GLUT_CURSOR_BOTTOM_SIDE));
|
1724
|
+
rb_define_const(module, "GLUT_CURSOR_LEFT_SIDE", INT2NUM(GLUT_CURSOR_LEFT_SIDE));
|
1725
|
+
rb_define_const(module, "GLUT_CURSOR_RIGHT_SIDE", INT2NUM(GLUT_CURSOR_RIGHT_SIDE));
|
1726
|
+
rb_define_const(module, "GLUT_CURSOR_TOP_LEFT_CORNER", INT2NUM(GLUT_CURSOR_TOP_LEFT_CORNER));
|
1727
|
+
rb_define_const(module, "GLUT_CURSOR_TOP_RIGHT_CORNER", INT2NUM(GLUT_CURSOR_TOP_RIGHT_CORNER));
|
1728
|
+
rb_define_const(module, "GLUT_CURSOR_BOTTOM_RIGHT_CORNER", INT2NUM(GLUT_CURSOR_BOTTOM_RIGHT_CORNER));
|
1729
|
+
rb_define_const(module, "GLUT_CURSOR_BOTTOM_LEFT_CORNER", INT2NUM(GLUT_CURSOR_BOTTOM_LEFT_CORNER));
|
1730
|
+
rb_define_const(module, "GLUT_CURSOR_INHERIT", INT2NUM(GLUT_CURSOR_INHERIT));
|
1731
|
+
rb_define_const(module, "GLUT_CURSOR_NONE", INT2NUM(GLUT_CURSOR_NONE));
|
1732
|
+
rb_define_const(module, "GLUT_CURSOR_FULL_CROSSHAIR", INT2NUM(GLUT_CURSOR_FULL_CROSSHAIR));
|
1733
|
+
rb_define_const(module, "GLUT_BITMAP_9_BY_15", INT2NUM((VALUE)GLUT_BITMAP_9_BY_15));
|
1734
|
+
rb_define_const(module, "GLUT_BITMAP_8_BY_13", INT2NUM((VALUE)GLUT_BITMAP_8_BY_13));
|
1735
|
+
rb_define_const(module, "GLUT_BITMAP_TIMES_ROMAN_10", INT2NUM((VALUE)GLUT_BITMAP_TIMES_ROMAN_10));
|
1736
|
+
rb_define_const(module, "GLUT_BITMAP_TIMES_ROMAN_24", INT2NUM((VALUE)GLUT_BITMAP_TIMES_ROMAN_24));
|
1737
|
+
rb_define_const(module, "GLUT_BITMAP_HELVETICA_10", INT2NUM((VALUE)GLUT_BITMAP_HELVETICA_10));
|
1738
|
+
rb_define_const(module, "GLUT_BITMAP_HELVETICA_12", INT2NUM((VALUE)GLUT_BITMAP_HELVETICA_12));
|
1739
|
+
rb_define_const(module, "GLUT_BITMAP_HELVETICA_18", INT2NUM((VALUE)GLUT_BITMAP_HELVETICA_18));
|
1740
|
+
rb_define_const(module, "GLUT_STROKE_ROMAN", INT2NUM((VALUE)GLUT_STROKE_ROMAN));
|
1741
|
+
rb_define_const(module, "GLUT_STROKE_MONO_ROMAN", INT2NUM((VALUE)GLUT_STROKE_MONO_ROMAN));
|
1742
|
+
|
1743
|
+
callId = rb_intern("call");
|
1744
|
+
|
1745
|
+
WINDOW_CALLBACK_DEFINE(DisplayFunc);
|
1746
|
+
WINDOW_CALLBACK_DEFINE(ReshapeFunc);
|
1747
|
+
WINDOW_CALLBACK_DEFINE(KeyboardFunc);
|
1748
|
+
WINDOW_CALLBACK_DEFINE(MouseFunc);
|
1749
|
+
WINDOW_CALLBACK_DEFINE(MotionFunc);
|
1750
|
+
WINDOW_CALLBACK_DEFINE(PassiveMotionFunc);
|
1751
|
+
WINDOW_CALLBACK_DEFINE(EntryFunc);
|
1752
|
+
WINDOW_CALLBACK_DEFINE(VisibilityFunc);
|
1753
|
+
/*
|
1754
|
+
GENERAL_CALLBACK_DEFINE(IdleFunc);
|
1755
|
+
GENERAL_CALLBACK_DEFINE(TimerFunc);
|
1756
|
+
MENU_CALLBACK_DEFINE(MenuStateFunc);
|
1757
|
+
*/
|
1758
|
+
WINDOW_CALLBACK_DEFINE(SpecialFunc);
|
1759
|
+
WINDOW_CALLBACK_DEFINE(SpaceballMotionFunc);
|
1760
|
+
WINDOW_CALLBACK_DEFINE(SpaceballRotateFunc);
|
1761
|
+
WINDOW_CALLBACK_DEFINE(SpaceballButtonFunc);
|
1762
|
+
WINDOW_CALLBACK_DEFINE(ButtonBoxFunc);
|
1763
|
+
WINDOW_CALLBACK_DEFINE(DialsFunc);
|
1764
|
+
WINDOW_CALLBACK_DEFINE(TabletMotionFunc);
|
1765
|
+
WINDOW_CALLBACK_DEFINE(TabletButtonFunc);
|
1766
|
+
/*
|
1767
|
+
WINDOW_GLOBAL_VAR_DEFINE(MenuStatusFunc);
|
1768
|
+
*/
|
1769
|
+
WINDOW_CALLBACK_DEFINE(OverlayDisplayFunc);
|
1770
|
+
WINDOW_CALLBACK_DEFINE(WindowStatusFunc);
|
1771
|
+
|
1772
|
+
rb_gc_register_address(&idle_func);
|
1773
|
+
rb_gc_register_address(&timer_func);
|
1774
|
+
rb_gc_register_address(&menustate_func);
|
1775
|
+
}
|
1776
|
+
|