Module: GLFW

Extended by:
Fiddle::Importer
Defined in:
lib/glfw.rb,
lib/glfw30.rb

Constant Summary collapse

GLFW_FUNCTIONS_MAP =

Fiddle’s default ‘extern’ stores all methods into local variable ‘@func_map’, that makes difficult to ‘include GLFW’. So I override it and replace ‘@func_map’ into ‘GLFW_FUNCTIONS_MAP’. Ref.: /lib/ruby/2.0.0/fiddle/import.rb

{}
GLFW_VERSION_MAJOR =

defines

3
GLFW_VERSION_MINOR =
0
GLFW_VERSION_REVISION =
1
GLFW_RELEASE =
0
GLFW_PRESS =
1
GLFW_REPEAT =
2
GLFW_KEY_UNKNOWN =
-1
GLFW_KEY_SPACE =
32
GLFW_KEY_APOSTROPHE =

39
GLFW_KEY_COMMA =

,

44
GLFW_KEY_MINUS =

-

45
GLFW_KEY_PERIOD =

.

46
GLFW_KEY_SLASH =

/

47
GLFW_KEY_0 =
48
GLFW_KEY_1 =
49
GLFW_KEY_2 =
50
GLFW_KEY_3 =
51
GLFW_KEY_4 =
52
GLFW_KEY_5 =
53
GLFW_KEY_6 =
54
GLFW_KEY_7 =
55
GLFW_KEY_8 =
56
GLFW_KEY_9 =
57
GLFW_KEY_SEMICOLON =

;

59
GLFW_KEY_EQUAL =

61
GLFW_KEY_A =
65
GLFW_KEY_B =
66
GLFW_KEY_C =
67
GLFW_KEY_D =
68
GLFW_KEY_E =
69
GLFW_KEY_F =
70
GLFW_KEY_G =
71
GLFW_KEY_H =
72
GLFW_KEY_I =
73
GLFW_KEY_J =
74
GLFW_KEY_K =
75
GLFW_KEY_L =
76
GLFW_KEY_M =
77
GLFW_KEY_N =
78
GLFW_KEY_O =
79
GLFW_KEY_P =
80
GLFW_KEY_Q =
81
GLFW_KEY_R =
82
GLFW_KEY_S =
83
GLFW_KEY_T =
84
GLFW_KEY_U =
85
GLFW_KEY_V =
86
GLFW_KEY_W =
87
GLFW_KEY_X =
88
GLFW_KEY_Y =
89
GLFW_KEY_Z =
90
GLFW_KEY_LEFT_BRACKET =

[

91
GLFW_KEY_BACKSLASH =

\

92
GLFW_KEY_RIGHT_BRACKET =

]

93
GLFW_KEY_GRAVE_ACCENT =

96
GLFW_KEY_WORLD_1 =

non-US #1

161
GLFW_KEY_WORLD_2 =

non-US #2

162
GLFW_KEY_ESCAPE =
256
GLFW_KEY_ENTER =
257
GLFW_KEY_TAB =
258
GLFW_KEY_BACKSPACE =
259
GLFW_KEY_INSERT =
260
GLFW_KEY_DELETE =
261
GLFW_KEY_RIGHT =
262
GLFW_KEY_LEFT =
263
GLFW_KEY_DOWN =
264
GLFW_KEY_UP =
265
GLFW_KEY_PAGE_UP =
266
GLFW_KEY_PAGE_DOWN =
267
GLFW_KEY_HOME =
268
GLFW_KEY_END =
269
GLFW_KEY_CAPS_LOCK =
280
GLFW_KEY_SCROLL_LOCK =
281
GLFW_KEY_NUM_LOCK =
282
GLFW_KEY_PRINT_SCREEN =
283
GLFW_KEY_PAUSE =
284
GLFW_KEY_F1 =
290
GLFW_KEY_F2 =
291
GLFW_KEY_F3 =
292
GLFW_KEY_F4 =
293
GLFW_KEY_F5 =
294
GLFW_KEY_F6 =
295
GLFW_KEY_F7 =
296
GLFW_KEY_F8 =
297
GLFW_KEY_F9 =
298
GLFW_KEY_F10 =
299
GLFW_KEY_F11 =
300
GLFW_KEY_F12 =
301
GLFW_KEY_F13 =
302
GLFW_KEY_F14 =
303
GLFW_KEY_F15 =
304
GLFW_KEY_F16 =
305
GLFW_KEY_F17 =
306
GLFW_KEY_F18 =
307
GLFW_KEY_F19 =
308
GLFW_KEY_F20 =
309
GLFW_KEY_F21 =
310
GLFW_KEY_F22 =
311
GLFW_KEY_F23 =
312
GLFW_KEY_F24 =
313
GLFW_KEY_F25 =
314
GLFW_KEY_KP_0 =
320
GLFW_KEY_KP_1 =
321
GLFW_KEY_KP_2 =
322
GLFW_KEY_KP_3 =
323
GLFW_KEY_KP_4 =
324
GLFW_KEY_KP_5 =
325
GLFW_KEY_KP_6 =
326
GLFW_KEY_KP_7 =
327
GLFW_KEY_KP_8 =
328
GLFW_KEY_KP_9 =
329
GLFW_KEY_KP_DECIMAL =
330
GLFW_KEY_KP_DIVIDE =
331
GLFW_KEY_KP_MULTIPLY =
332
GLFW_KEY_KP_SUBTRACT =
333
GLFW_KEY_KP_ADD =
334
GLFW_KEY_KP_ENTER =
335
GLFW_KEY_KP_EQUAL =
336
GLFW_KEY_LEFT_SHIFT =
340
GLFW_KEY_LEFT_CONTROL =
341
GLFW_KEY_LEFT_ALT =
342
GLFW_KEY_LEFT_SUPER =
343
GLFW_KEY_RIGHT_SHIFT =
344
GLFW_KEY_RIGHT_CONTROL =
345
GLFW_KEY_RIGHT_ALT =
346
GLFW_KEY_RIGHT_SUPER =
347
GLFW_KEY_MENU =
348
GLFW_KEY_LAST =
GLFW_KEY_MENU
GLFW_MOD_SHIFT =
0x0001
GLFW_MOD_CONTROL =
0x0002
GLFW_MOD_ALT =
0x0004
GLFW_MOD_SUPER =
0x0008
GLFW_MOUSE_BUTTON_1 =
0
GLFW_MOUSE_BUTTON_2 =
1
GLFW_MOUSE_BUTTON_3 =
2
GLFW_MOUSE_BUTTON_4 =
3
GLFW_MOUSE_BUTTON_5 =
4
GLFW_MOUSE_BUTTON_6 =
5
GLFW_MOUSE_BUTTON_7 =
6
GLFW_MOUSE_BUTTON_8 =
7
GLFW_MOUSE_BUTTON_LAST =
GLFW_MOUSE_BUTTON_8
GLFW_MOUSE_BUTTON_LEFT =
GLFW_MOUSE_BUTTON_1
GLFW_MOUSE_BUTTON_RIGHT =
GLFW_MOUSE_BUTTON_2
GLFW_MOUSE_BUTTON_MIDDLE =
GLFW_MOUSE_BUTTON_3
GLFW_JOYSTICK_1 =
0
GLFW_JOYSTICK_2 =
1
GLFW_JOYSTICK_3 =
2
GLFW_JOYSTICK_4 =
3
GLFW_JOYSTICK_5 =
4
GLFW_JOYSTICK_6 =
5
GLFW_JOYSTICK_7 =
6
GLFW_JOYSTICK_8 =
7
GLFW_JOYSTICK_9 =
8
GLFW_JOYSTICK_10 =
9
GLFW_JOYSTICK_11 =
10
GLFW_JOYSTICK_12 =
11
GLFW_JOYSTICK_13 =
12
GLFW_JOYSTICK_14 =
13
GLFW_JOYSTICK_15 =
14
GLFW_JOYSTICK_16 =
15
GLFW_JOYSTICK_LAST =
GLFW_JOYSTICK_16
GLFW_NOT_INITIALIZED =
0x00010001
GLFW_NO_CURRENT_CONTEXT =
0x00010002
GLFW_INVALID_ENUM =
0x00010003
GLFW_INVALID_VALUE =
0x00010004
GLFW_OUT_OF_MEMORY =
0x00010005
GLFW_API_UNAVAILABLE =
0x00010006
GLFW_VERSION_UNAVAILABLE =
0x00010007
GLFW_PLATFORM_ERROR =
0x00010008
GLFW_FORMAT_UNAVAILABLE =
0x00010009
GLFW_FOCUSED =
0x00020001
GLFW_ICONIFIED =
0x00020002
GLFW_RESIZABLE =
0x00020003
GLFW_VISIBLE =
0x00020004
GLFW_DECORATED =
0x00020005
GLFW_AUTO_ICONIFY =
0x00020006
GLFW_FLOATING =
0x00020007
GLFW_RED_BITS =
0x00021001
GLFW_GREEN_BITS =
0x00021002
GLFW_BLUE_BITS =
0x00021003
GLFW_ALPHA_BITS =
0x00021004
GLFW_DEPTH_BITS =
0x00021005
GLFW_STENCIL_BITS =
0x00021006
GLFW_ACCUM_RED_BITS =
0x00021007
GLFW_ACCUM_GREEN_BITS =
0x00021008
GLFW_ACCUM_BLUE_BITS =
0x00021009
GLFW_ACCUM_ALPHA_BITS =
0x0002100A
GLFW_AUX_BUFFERS =
0x0002100B
GLFW_STEREO =
0x0002100C
GLFW_SAMPLES =
0x0002100D
GLFW_SRGB_CAPABLE =
0x0002100E
GLFW_REFRESH_RATE =
0x0002100F
GLFW_DOUBLEBUFFER =
0x00021010
GLFW_CLIENT_API =
0x00022001
GLFW_CONTEXT_VERSION_MAJOR =
0x00022002
GLFW_CONTEXT_VERSION_MINOR =
0x00022003
GLFW_CONTEXT_REVISION =
0x00022004
GLFW_CONTEXT_ROBUSTNESS =
0x00022005
GLFW_OPENGL_FORWARD_COMPAT =
0x00022006
GLFW_OPENGL_DEBUG_CONTEXT =
0x00022007
GLFW_OPENGL_PROFILE =
0x00022008
GLFW_CONTEXT_RELEASE_BEHAVIOR =
0x00022009
GLFW_OPENGL_API =
0x00030001
GLFW_OPENGL_ES_API =
0x00030002
GLFW_NO_ROBUSTNESS =
0
GLFW_NO_RESET_NOTIFICATION =
0x00031001
GLFW_LOSE_CONTEXT_ON_RESET =
0x00031002
GLFW_OPENGL_ANY_PROFILE =
0
GLFW_OPENGL_CORE_PROFILE =
0x00032001
GLFW_OPENGL_COMPAT_PROFILE =
0x00032002
GLFW_CURSOR =
0x00033001
GLFW_STICKY_KEYS =
0x00033002
GLFW_STICKY_MOUSE_BUTTONS =
0x00033003
GLFW_CURSOR_NORMAL =
0x00034001
GLFW_CURSOR_HIDDEN =
0x00034002
GLFW_CURSOR_DISABLED =
0x00034003
GLFW_ANY_RELEASE_BEHAVIOR =
0
GLFW_RELEASE_BEHAVIOR_FLUSH =
0x00035001
GLFW_RELEASE_BEHAVIOR_NONE =
0x00035002
GLFW_ARROW_CURSOR =
0x00036001
GLFW_IBEAM_CURSOR =
0x00036002
GLFW_CROSSHAIR_CURSOR =
0x00036003
GLFW_HAND_CURSOR =
0x00036004
GLFW_HRESIZE_CURSOR =
0x00036005
GLFW_VRESIZE_CURSOR =
0x00036006
GLFW_CONNECTED =
0x00040001
GLFW_DISCONNECTED =
0x00040002
GLFW_DONT_CARE =
-1
GLFWvidmode =

struct

struct(["int width",
"int height",
"int redBits",
"int greenBits",
"int blueBits",
"int refreshRate"])
GLFWgammaramp =
struct(["unsigned short* red",
"unsigned short* green",
"unsigned short* blue",
"unsigned int size"])
GLFWimage =
struct(["int width",
"int height",
"unsigned char* pixels"])
@@glfw_cb_signature =

typedefs

{
  :GLFWglproc => "void GLFWglproc()",
  :GLFWerrorfun => "void GLFWerrorfun(int,const char*)",
  :GLFWwindowposfun => "void GLFWwindowposfun(void*,int,int)",
  :GLFWwindowsizefun => "void GLFWwindowsizefun(void*,int,int)",
  :GLFWwindowclosefun => "void GLFWwindowclosefun(void*)",
  :GLFWwindowrefreshfun => "void GLFWwindowrefreshfun(void*)",
  :GLFWwindowfocusfun => "void GLFWwindowfocusfun(void*,int)",
  :GLFWwindowiconifyfun => "void GLFWwindowiconifyfun(void*,int)",
  :GLFWframebuffersizefun => "void GLFWframebuffersizefun(void*,int,int)",
  :GLFWmousebuttonfun => "void GLFWmousebuttonfun(void*,int,int,int)",
  :GLFWcursorposfun => "void GLFWcursorposfun(void*,double,double)",
  :GLFWcursorenterfun => "void GLFWcursorenterfun(void*,int)",
  :GLFWscrollfun => "void GLFWscrollfun(void*,double,double)",
  :GLFWkeyfun => "void GLFWkeyfun(void*,int,int,int,int)",
  :GLFWcharfun => "void GLFWcharfun(void*,unsigned int)",
  :GLFWmonitorfun => "void GLFWmonitorfun(void*,int)",
}
@@glfw_import_done =
false

Class Method Summary collapse

Class Method Details

.create_callback(sym, proc = nil, &blk) ⇒ Object



308
309
310
311
312
313
314
# File 'lib/glfw.rb', line 308

def self.create_callback( sym, proc=nil, &blk )
  if block_given?
    return bind( @@glfw_cb_signature[sym], nil, &blk )
  else
    return bind( @@glfw_cb_signature[sym], nil, &proc )
  end
end

.extern(signature, *opts) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/glfw.rb', line 14

def self.extern(signature, *opts)
  symname, ctype, argtype = parse_signature(signature, @type_alias)
  opt = parse_bind_options(opts)
  f = import_function(symname, ctype, argtype, opt[:call_type])
  name = symname.gsub(/@.+/,'')
  GLFW_FUNCTIONS_MAP[name] = f
  begin
    /^(.+?):(\d+)/ =~ caller.first
    file, line = $1, $2.to_i
  rescue
    file, line = __FILE__, __LINE__+3
  end
  args_str="*args"
  module_eval(<<-EOS, file, line)
    def #{name}(*args, &block)
      GLFW_FUNCTIONS_MAP['#{name}'].call(*args,&block)
    end
  EOS
  module_function(name)
  f
end

.import_symbolsObject



361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
# File 'lib/glfw.rb', line 361

def self.import_symbols
  # function
  extern 'int glfwInit()'
  extern 'void glfwTerminate()'
  extern 'void glfwGetVersion(int*, int*, int*)'
  extern 'const char* glfwGetVersionString()'
  extern 'void* glfwSetErrorCallback(void*)'
  extern 'void** glfwGetMonitors(int*)'
  extern 'void* glfwGetPrimaryMonitor()'
  extern 'void glfwGetMonitorPos(void*, int*, int*)'
  extern 'void glfwGetMonitorPhysicalSize(void*, int*, int*)'
  extern 'const char* glfwGetMonitorName(void*)'
  extern 'void* glfwSetMonitorCallback(void*)'
  extern 'const void* glfwGetVideoModes(void*, int*)'
  extern 'const void* glfwGetVideoMode(void*)'
  extern 'void glfwSetGamma(void*, float)'
  extern 'const void* glfwGetGammaRamp(void*)'
  extern 'void glfwSetGammaRamp(void*, const void*)'
  extern 'void glfwDefaultWindowHints()'
  extern 'void glfwWindowHint(int, int)'
  extern 'void* glfwCreateWindow(int, int, const char*, void*, void*)'
  extern 'void glfwDestroyWindow(void*)'
  extern 'int glfwWindowShouldClose(void*)'
  extern 'void glfwSetWindowShouldClose(void* window, int)'
  extern 'void glfwSetWindowTitle(void*, const char*)'
  extern 'void glfwGetWindowPos(void*, int*, int*)'
  extern 'void glfwSetWindowPos(void*, int, int)'
  extern 'void glfwGetWindowSize(void*, int*, int*)'
  extern 'void glfwSetWindowSize(void*, int, int)'
  extern 'void glfwGetFramebufferSize(void*, int*, int*)'
  extern 'void glfwGetWindowFrameSize(void*, int*, int*, int*, int*)'
  extern 'void glfwIconifyWindow(void*)'
  extern 'void glfwRestoreWindow(void*)'
  extern 'void glfwShowWindow(void*)'
  extern 'void glfwHideWindow(void*)'
  extern 'void* glfwGetWindowMonitor(void*)'
  extern 'int glfwGetWindowAttrib(void*, int)'
  extern 'void glfwSetWindowUserPointer(void*, void*)'
  extern 'void* glfwGetWindowUserPointer(void*)'
  extern 'void* glfwSetWindowPosCallback(void*, void*)'
  extern 'void* glfwSetWindowSizeCallback(void*, void*)'
  extern 'void* glfwSetWindowCloseCallback(void*, void*)'
  extern 'void* glfwSetWindowRefreshCallback(void*, void*)'
  extern 'void* glfwSetWindowFocusCallback(void*, void*)'
  extern 'void* glfwSetWindowIconifyCallback(void*, void*)'
  extern 'void* glfwSetFramebufferSizeCallback(void*, void*)'
  extern 'void glfwPollEvents()'
  extern 'void glfwWaitEvents()'
  extern 'void glfwPostEmptyEvent()'
  extern 'int glfwGetInputMode(void*, int)'
  extern 'void glfwSetInputMode(void*, int, int)'
  extern 'int glfwGetKey(void*, int)'
  extern 'int glfwGetMouseButton(void*, int)'
  extern 'void glfwGetCursorPos(void*, double*, double*)'
  extern 'void glfwSetCursorPos(void*, double, double)'
  extern 'void* glfwCreateCursor(void*, int, int)'
  extern 'void* glfwCreateStandardCursor(int)'
  extern 'void glfwDestroyCursor(void*)'
  extern 'void glfwSetCursor(void*, void*)'
  extern 'void* glfwSetKeyCallback(void*, void*)'
  extern 'void* glfwSetCharCallback(void*, void*)'
  extern 'void* glfwSetCharModsCallback(void*, void*)'
  extern 'void* glfwSetMouseButtonCallback(void*, void*)'
  extern 'void* glfwSetCursorPosCallback(void*, void*)'
  extern 'void* glfwSetCursorEnterCallback(void*, void*)'
  extern 'void* glfwSetScrollCallback(void*, void*)'
  extern 'void* glfwSetDropCallback(void*, void*)'
  extern 'int glfwJoystickPresent(int)'
  extern 'const float* glfwGetJoystickAxes(int, int*)'
  extern 'const unsigned char* glfwGetJoystickButtons(int, int*)'
  extern 'const char* glfwGetJoystickName(int)'
  extern 'void glfwSetClipboardString(void*, const char*)'
  extern 'const char* glfwGetClipboardString(void*)'
  extern 'double glfwGetTime()'
  extern 'void glfwSetTime(double)'
  extern 'void glfwMakeContextCurrent(void*)'
  extern 'void* glfwGetCurrentContext()'
  extern 'void glfwSwapBuffers(void*)'
  extern 'void glfwSwapInterval(int)'
  extern 'int glfwExtensionSupported(const char*)'
  extern 'void* glfwGetProcAddress(const char*)'

  @@glfw_import_done = true
end

.load_dll(lib = nil, path = nil) ⇒ Object



356
357
358
359
# File 'lib/glfw.rb', line 356

def self.load_dll(lib = nil, path = nil)
  puts "Warning GLFW.load_dll is deprecated, use GLFW.load_lib instead"
  self.load_lib(lib, path)
end

.load_lib(lib = nil, path = nil) ⇒ Object

Load native library.



336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
# File 'lib/glfw.rb', line 336

def self.load_lib(lib = nil, path = nil)
  if lib == nil && path == nil
    case OpenGL.get_platform
    when :OPENGL_PLATFORM_WINDOWS
      lib, path = 'GLFW3.dll', Dir.pwd
    when :OPENGL_PLATFORM_MACOSX
      lib, path = 'libglfw.dylib', Dir.pwd
    else
      lib = 'libglfw.so'
    end
  end

  if path
    dlload (path + '/' + lib)
  else
    dlload (lib)
  end
  import_symbols() unless @@glfw_import_done
end