glfw 1.0.3 → 3.3.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +161 -0
- data/.yardopts +6 -0
- data/Gemfile +2 -4
- data/README.md +29 -33
- data/Rakefile +6 -4
- data/ext/glfw/common.c +159 -0
- data/ext/glfw/cursor.c +34 -30
- data/ext/glfw/extconf.rb +7 -17
- data/ext/glfw/glfw.c +122 -377
- data/ext/glfw/glfw.h +46 -41
- data/ext/glfw/image.c +96 -64
- data/ext/glfw/joystick.c +169 -0
- data/ext/glfw/monitor.c +231 -155
- data/ext/glfw/stb_image.h +7656 -0
- data/ext/glfw/window.c +708 -576
- data/glfw.gemspec +10 -9
- data/lib/glfw.rb +4 -14
- data/lib/glfw/constants.rb +365 -0
- data/lib/glfw/stubs.rb +234 -0
- data/lib/glfw/stubs/cursor.rb +21 -0
- data/lib/glfw/stubs/gamepad_state.rb +30 -0
- data/lib/glfw/stubs/image.rb +39 -0
- data/lib/glfw/stubs/joystick.rb +125 -0
- data/lib/glfw/stubs/monitor.rb +115 -0
- data/lib/glfw/stubs/video_mode.rb +32 -0
- data/lib/glfw/stubs/window.rb +626 -0
- data/lib/glfw/version.rb +8 -1
- metadata +31 -35
- data/.travis.yml +0 -5
- data/Makefile +0 -267
- data/ext/glfw/common.h +0 -46
- data/ext/glfw/cursor.h +0 -14
- data/ext/glfw/glfw3.h +0 -4248
- data/ext/glfw/glfw3native.h +0 -456
- data/ext/glfw/image.h +0 -14
- data/ext/glfw/ming32/WINDOWS USERS PLACE libglf3.a HERE.txt b/data/ext/glfw/ming32/WINDOWS USERS PLACE libglf3.a → HERE.txt +0 -0
- data/ext/glfw/ming64/WINDOWS USERS PLACE libglf3.a HERE.txt b/data/ext/glfw/ming64/WINDOWS USERS PLACE libglf3.a → HERE.txt +0 -0
- data/ext/glfw/monitor.h +0 -29
- data/ext/glfw/video_mode.c +0 -60
- data/ext/glfw/video_mode.h +0 -21
- data/ext/glfw/vulkan.c +0 -48
- data/ext/glfw/vulkan.h +0 -16
- data/ext/glfw/window.h +0 -87
data/ext/glfw/cursor.c
CHANGED
@@ -1,42 +1,46 @@
|
|
1
1
|
|
2
|
-
#include "
|
2
|
+
#include "glfw.h"
|
3
3
|
|
4
|
-
VALUE
|
4
|
+
VALUE cCursor;
|
5
5
|
|
6
|
-
void
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
rb_define_method(rb_cGLFWcursor, "initialize", rb_glfw_cursor_initialize, 3);
|
11
|
-
rb_define_method(rb_cGLFWcursor, "destroy", rb_glfw_cursor_destroy, 0);
|
12
|
-
|
13
|
-
rb_define_alias(rb_cGLFWcursor, "dispose", "destroy");
|
14
|
-
|
15
|
-
rb_define_singleton_method(rb_cGLFWcursor, "create", rb_glfw_cursor_standard, 1);
|
16
|
-
}
|
17
|
-
|
18
|
-
static VALUE rb_glfw_cursor_alloc(VALUE klass) {
|
19
|
-
GLFWcursor *c = ruby_xmalloc(SIZEOF_INTPTR_T);
|
20
|
-
memset(c, 0, SIZEOF_INTPTR_T);
|
21
|
-
return Data_Wrap_Struct(klass, NULL, RUBY_DEFAULT_FREE, c);
|
6
|
+
static void rb_glfw_cursor_free(void *cursor)
|
7
|
+
{
|
8
|
+
if (cursor)
|
9
|
+
glfwDestroyCursor(cursor);
|
22
10
|
}
|
23
11
|
|
24
|
-
VALUE
|
25
|
-
|
26
|
-
|
27
|
-
RDATA(self)->data = glfwCreateCursor(img, NUM2INT(xhot), NUM2INT(yhot));
|
28
|
-
return Qnil;
|
12
|
+
static VALUE rb_glfw_cursor_alloc(VALUE klass)
|
13
|
+
{
|
14
|
+
return Data_Wrap_Struct(klass, NULL, rb_glfw_cursor_free, NULL);
|
29
15
|
}
|
30
16
|
|
31
|
-
VALUE
|
32
|
-
|
33
|
-
|
34
|
-
|
17
|
+
static VALUE rb_glfw_cursor_initialize(int argc, VALUE *argv, VALUE self)
|
18
|
+
{
|
19
|
+
VALUE img, x, y;
|
20
|
+
rb_scan_args(argc, argv, "12", &img, &x, &y);
|
35
21
|
|
36
|
-
VALUE rb_glfw_cursor_destroy(VALUE self) {
|
37
22
|
GLFWcursor *cursor;
|
38
|
-
Data_Get_Struct(self, GLFWcursor, cursor);
|
39
23
|
|
40
|
-
|
24
|
+
if (RB_TYPE_P(img, T_DATA))
|
25
|
+
{
|
26
|
+
GLFWimage *image = DATA_PTR(img);
|
27
|
+
int xhot = RTEST(x) ? NUM2INT(x) : 0;
|
28
|
+
int yhot = RTEST(y) ? NUM2INT(y) : 0;
|
29
|
+
cursor = glfwCreateCursor(image, xhot, yhot);
|
30
|
+
}
|
31
|
+
else
|
32
|
+
{
|
33
|
+
int shape = NUM2INT(img);
|
34
|
+
cursor = glfwCreateStandardCursor(shape);
|
35
|
+
}
|
36
|
+
|
37
|
+
RDATA(self)->data = cursor;
|
41
38
|
return Qnil;
|
42
39
|
}
|
40
|
+
|
41
|
+
void rb_glfw_cursor_init(void) {
|
42
|
+
cCursor = rb_define_class_under(mGLFW, "Cursor", rb_cObject);
|
43
|
+
|
44
|
+
rb_define_method(cCursor, "initialize", rb_glfw_cursor_initialize, -1);
|
45
|
+
rb_define_alloc_func(cCursor, rb_glfw_cursor_alloc);
|
46
|
+
}
|
data/ext/glfw/extconf.rb
CHANGED
@@ -1,21 +1,11 @@
|
|
1
1
|
require "mkmf"
|
2
|
+
require 'rbconfig'
|
2
3
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
dir = 0.size == 4 ? 'ming32' : 'ming64'
|
8
|
-
libdirs << File.expand_path(File.join(File.dirname(__FILE__), dir))
|
9
|
-
|
10
|
-
case RbConfig::CONFIG['host_os']
|
11
|
-
when /mingw/
|
12
|
-
$LOCAL_LIBS << '-lglfw3 -lgdi32 -lopengl32'
|
13
|
-
when /darwin/
|
14
|
-
find_library("glfw", "glfwInit")
|
15
|
-
when /linux/
|
16
|
-
find_library("glfw", "glfwInit")
|
4
|
+
def libname
|
5
|
+
host = RbConfig::CONFIG['host_os']
|
6
|
+
return 'glfw3' if /mswin|msys|mingw|cygwin|bccwin|wince|emc/.match?(host)
|
7
|
+
'glfw'
|
17
8
|
end
|
18
9
|
|
19
|
-
|
20
|
-
|
21
|
-
create_makefile("glfw/glfw")
|
10
|
+
abort('Unable to locate GLFW library') unless find_library(libname, 'glfwInit')
|
11
|
+
create_makefile("glfw/glfw")
|
data/ext/glfw/glfw.c
CHANGED
@@ -1,438 +1,183 @@
|
|
1
1
|
#include "glfw.h"
|
2
2
|
|
3
|
-
VALUE
|
4
|
-
VALUE
|
3
|
+
VALUE mGLFW;
|
4
|
+
VALUE eGLFWError;
|
5
5
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
glfwSetErrorCallback(rb_glfw_error_callback);
|
11
|
-
rb_mGLFW = rb_define_module("GLFW");
|
12
|
-
rb_eGLFWError = rb_define_class_under(rb_mGLFW, "GLFWError", rb_eStandardError);
|
13
|
-
|
14
|
-
Init_glfw_window(rb_mGLFW);
|
15
|
-
Init_glfw_monitor(rb_mGLFW);
|
16
|
-
Init_glfw_vidmode(rb_mGLFW);
|
17
|
-
Init_glfw_image(rb_mGLFW);
|
18
|
-
Init_glfw_cursor(rb_mGLFW);
|
19
|
-
Init_glfw_vulkan(rb_mGLFW);
|
20
|
-
|
21
|
-
// GLFW Module Functions
|
22
|
-
rb_define_singleton_method(rb_mGLFW, "init", rb_glfw_init, 0);
|
23
|
-
rb_define_singleton_method(rb_mGLFW, "terminate", rb_glfw_terminate, 0);
|
24
|
-
rb_define_singleton_method(rb_mGLFW, "poll_events", rb_glfw_poll_events, 0);
|
25
|
-
rb_define_singleton_method(rb_mGLFW, "wait_events", rb_glfw_wait_events, 0);
|
26
|
-
rb_define_singleton_method(rb_mGLFW, "post_empty_event", rb_glfw_post_empty, 0);
|
27
|
-
rb_define_singleton_method(rb_mGLFW, "swap_interval", rb_glfw_swap_interval, 1);
|
28
|
-
rb_define_singleton_method(rb_mGLFW, "current_context", rb_glfw_current_context, 0);
|
29
|
-
rb_define_singleton_method(rb_mGLFW, "supported?", rb_glfw_supported_p, 1);
|
30
|
-
rb_define_singleton_method(rb_mGLFW, "time", rb_glfw_get_time, 0);
|
31
|
-
rb_define_singleton_method(rb_mGLFW, "time=", rb_glfw_set_time, 1);
|
32
|
-
rb_define_singleton_method(rb_mGLFW, "monitors", rb_glfw_monitors, 0);
|
33
|
-
rb_define_singleton_method(rb_mGLFW, "load_default_hints", rb_glfw_load_default_hints, 0);
|
34
|
-
rb_define_singleton_method(rb_mGLFW, "hint", rb_glfw_window_hint, 2);
|
35
|
-
rb_define_singleton_method(rb_mGLFW, "key_name", rb_glfw_key_name, 2);
|
36
|
-
rb_define_singleton_method(rb_mGLFW, "timer_frequency", rb_glfw_timer_frequency, 0);
|
37
|
-
rb_define_singleton_method(rb_mGLFW, "timer_value", rb_glfw_timer_value, 0);
|
38
|
-
rb_define_singleton_method(rb_mGLFW, "monitor_changed", rb_glfw_monitor_changed, 2);
|
39
|
-
rb_define_singleton_method(rb_mGLFW, "joystick_changed", rb_glfw_joystick_changed, 2);
|
40
|
-
rb_define_singleton_method(rb_mGLFW, "proc_address", rb_glfw_proc_address, 1);
|
41
|
-
|
42
|
-
// API Version
|
43
|
-
rb_define_const(rb_mGLFW, "API_VERSION", rb_sprintf("%d.%d.%d",
|
44
|
-
GLFW_VERSION_MAJOR, GLFW_VERSION_MINOR, GLFW_VERSION_REVISION));
|
45
|
-
rb_define_const(rb_mGLFW, "API_VERSION_MAJOR", INT2NUM(GLFW_VERSION_MAJOR));
|
46
|
-
rb_define_const(rb_mGLFW, "API_VERSION_MINOR", INT2NUM(GLFW_VERSION_MINOR));
|
47
|
-
rb_define_const(rb_mGLFW, "API_VERSION_REVISION", INT2NUM(GLFW_VERSION_REVISION));
|
48
|
-
rb_define_const(rb_mGLFW, "API_DESCRIPTION", rb_str_new_cstr(glfwGetVersionString()));
|
49
|
-
// Callback Types
|
50
|
-
rb_define_const(rb_mGLFW, "CB_MOVED", INT2NUM(GLFW_RB_MOVED));
|
51
|
-
rb_define_const(rb_mGLFW, "CB_RESIZED", INT2NUM(GLFW_RB_RESIZED));
|
52
|
-
rb_define_const(rb_mGLFW, "CB_FRAMEBUFFER_RESIZED", INT2NUM(GLFW_RB_FRAMEBUFFER_RESIZED));
|
53
|
-
rb_define_const(rb_mGLFW, "CB_CLOSING", INT2NUM(GLFW_RB_CLOSING));
|
54
|
-
rb_define_const(rb_mGLFW, "CB_REFRESHED", INT2NUM(GLFW_RB_REFRESHED));
|
55
|
-
rb_define_const(rb_mGLFW, "CB_FOCUS_CHANGED", INT2NUM(GLFW_RB_FOCUS_CHANGED));
|
56
|
-
rb_define_const(rb_mGLFW, "CB_MINIMIZE_CHANGED", INT2NUM(GLFW_RB_MINIMIZE_CHANGED));
|
57
|
-
rb_define_const(rb_mGLFW, "CB_MOUSE_MOVE", INT2NUM(GLFW_RB_MOUSE_MOVE));
|
58
|
-
rb_define_const(rb_mGLFW, "CB_MOUSE_SCROLL", INT2NUM(GLFW_RB_MOUSE_SCROLL));
|
59
|
-
rb_define_const(rb_mGLFW, "CB_MOUSE_BUTTON", INT2NUM(GLFW_RB_MOUSE_BUTTON));
|
60
|
-
rb_define_const(rb_mGLFW, "CB_MOUSE_ENTER", INT2NUM(GLFW_RB_MOUSE_ENTER));
|
61
|
-
rb_define_const(rb_mGLFW, "CB_KEY", INT2NUM(GLFW_RB_KEY));
|
62
|
-
rb_define_const(rb_mGLFW, "CB_CHAR", INT2NUM(GLFW_RB_CHAR));
|
63
|
-
rb_define_const(rb_mGLFW, "CB_CHAR_MODS", INT2NUM(GLFW_RB_CHAR_MODS));
|
64
|
-
rb_define_const(rb_mGLFW, "CB_FILE_DROP", INT2NUM(GLFW_RB_FILE_DROP));
|
65
|
-
rb_define_const(rb_mGLFW, "CB_MONITOR", INT2NUM(GLFW_RB_MONITOR));
|
66
|
-
rb_define_const(rb_mGLFW, "CB_JOYSTICK", INT2NUM(GLFW_RB_JOYSTICK));
|
67
|
-
// Input Modes
|
68
|
-
rb_define_const(rb_mGLFW, "INPUT_PRESS", INT2NUM(GLFW_PRESS));
|
69
|
-
rb_define_const(rb_mGLFW, "INPUT_RELEASE", INT2NUM(GLFW_RELEASE));
|
70
|
-
rb_define_const(rb_mGLFW, "INPUT_REPEAT", INT2NUM(GLFW_REPEAT));
|
71
|
-
// Hints
|
72
|
-
rb_define_const(rb_mGLFW, "HINT_RESIZABLE", INT2NUM(GLFW_RESIZABLE));
|
73
|
-
rb_define_const(rb_mGLFW, "HINT_VISIBLE", INT2NUM(GLFW_VISIBLE));
|
74
|
-
rb_define_const(rb_mGLFW, "HINT_DECORATED", INT2NUM(GLFW_DECORATED));
|
75
|
-
rb_define_const(rb_mGLFW, "HINT_FOCUSED", INT2NUM(GLFW_FOCUSED));
|
76
|
-
rb_define_const(rb_mGLFW, "HINT_AUTO_ICONIFY", INT2NUM(GLFW_AUTO_ICONIFY));
|
77
|
-
rb_define_const(rb_mGLFW, "HINT_FLOATING", INT2NUM(GLFW_FLOATING));
|
78
|
-
rb_define_const(rb_mGLFW, "HINT_MAXIMIZED", INT2NUM(GLFW_MAXIMIZED));
|
79
|
-
rb_define_const(rb_mGLFW, "HINT_RED_BITS", INT2NUM(GLFW_RED_BITS));
|
80
|
-
rb_define_const(rb_mGLFW, "HINT_GREEN_BITS", INT2NUM(GLFW_GREEN_BITS));
|
81
|
-
rb_define_const(rb_mGLFW, "HINT_BLUE_BITS", INT2NUM(GLFW_BLUE_BITS));
|
82
|
-
rb_define_const(rb_mGLFW, "HINT_ALPHA_BITS", INT2NUM(GLFW_ALPHA_BITS));
|
83
|
-
rb_define_const(rb_mGLFW, "HINT_DEPTH_BITS", INT2NUM(GLFW_DEPTH_BITS));
|
84
|
-
rb_define_const(rb_mGLFW, "HINT_STENCIL_BITS", INT2NUM(GLFW_STENCIL_BITS));
|
85
|
-
rb_define_const(rb_mGLFW, "HINT_ACCUM_RED_BITS", INT2NUM(GLFW_ACCUM_RED_BITS));
|
86
|
-
rb_define_const(rb_mGLFW, "HINT_ACCUM_GREEN_BITS", INT2NUM(GLFW_ACCUM_GREEN_BITS));
|
87
|
-
rb_define_const(rb_mGLFW, "HINT_ACCUM_BLUE_BITS", INT2NUM(GLFW_ACCUM_BLUE_BITS));
|
88
|
-
rb_define_const(rb_mGLFW, "HINT_ACCUM_ALPHA_BITS", INT2NUM(GLFW_ACCUM_ALPHA_BITS));
|
89
|
-
rb_define_const(rb_mGLFW, "HINT_AUX_BUFFERS", INT2NUM(GLFW_AUX_BUFFERS));
|
90
|
-
rb_define_const(rb_mGLFW, "HINT_SAMPLES", INT2NUM(GLFW_SAMPLES));
|
91
|
-
rb_define_const(rb_mGLFW, "HINT_REFRESH_RATE", INT2NUM(GLFW_REFRESH_RATE));
|
92
|
-
rb_define_const(rb_mGLFW, "HINT_STEREO", INT2NUM(GLFW_STEREO));
|
93
|
-
rb_define_const(rb_mGLFW, "HINT_SRGB_CAPABLE", INT2NUM(GLFW_SRGB_CAPABLE));
|
94
|
-
rb_define_const(rb_mGLFW, "HINT_DOUBLEBUFFER", INT2NUM(GLFW_DOUBLEBUFFER));
|
95
|
-
rb_define_const(rb_mGLFW, "HINT_CLIENT_API", INT2NUM(GLFW_CLIENT_API));
|
96
|
-
rb_define_const(rb_mGLFW, "HINT_CONTEXT_CREATION_API", INT2NUM(GLFW_CONTEXT_CREATION_API));
|
97
|
-
rb_define_const(rb_mGLFW, "HINT_CONTEXT_VERSION_MAJOR", INT2NUM(GLFW_CONTEXT_VERSION_MAJOR));
|
98
|
-
rb_define_const(rb_mGLFW, "HINT_CONTEXT_VERSION_MINOR", INT2NUM(GLFW_CONTEXT_VERSION_MINOR));
|
99
|
-
rb_define_const(rb_mGLFW, "HINT_CONTEXT_ROBUSTNESS", INT2NUM(GLFW_CONTEXT_ROBUSTNESS));
|
100
|
-
rb_define_const(rb_mGLFW, "HINT_CONTEXT_RELEASE_BEHAVIOR", INT2NUM(GLFW_CONTEXT_RELEASE_BEHAVIOR));
|
101
|
-
rb_define_const(rb_mGLFW, "HINT_OPENGL_FORWARD_COMPAT", INT2NUM(GLFW_OPENGL_FORWARD_COMPAT));
|
102
|
-
rb_define_const(rb_mGLFW, "HINT_OPENGL_DEBUG_CONTEXT", INT2NUM(GLFW_OPENGL_DEBUG_CONTEXT));
|
103
|
-
rb_define_const(rb_mGLFW, "HINT_OPENGL_PROFILE", INT2NUM(GLFW_OPENGL_PROFILE));
|
104
|
-
// API
|
105
|
-
rb_define_const(rb_mGLFW, "API_OPENGL", INT2NUM(GLFW_OPENGL_API));
|
106
|
-
rb_define_const(rb_mGLFW, "API_OPENGL_ES", INT2NUM(GLFW_OPENGL_ES_API));
|
107
|
-
rb_define_const(rb_mGLFW, "API_NONE", INT2NUM(GLFW_NO_API));
|
108
|
-
// Context
|
109
|
-
rb_define_const(rb_mGLFW, "CONTEXT_NATIVE", INT2NUM(GLFW_NATIVE_CONTEXT_API));
|
110
|
-
rb_define_const(rb_mGLFW, "CONTEXT_EGL", INT2NUM(GLFW_EGL_CONTEXT_API));
|
111
|
-
// Robustness
|
112
|
-
rb_define_const(rb_mGLFW, "ROBUSTNESS_NONE", INT2NUM(GLFW_NO_ROBUSTNESS));
|
113
|
-
rb_define_const(rb_mGLFW, "ROBUSTNESS_NO_NOTIFICATION", INT2NUM(GLFW_NO_RESET_NOTIFICATION));
|
114
|
-
rb_define_const(rb_mGLFW, "ROBUSTNESS_LOSE_CONTEXT", INT2NUM(GLFW_LOSE_CONTEXT_ON_RESET));
|
115
|
-
// Release Behavior
|
116
|
-
rb_define_const(rb_mGLFW, "RELEASE_BEHAVIOR_ANY", INT2NUM(GLFW_ANY_RELEASE_BEHAVIOR));
|
117
|
-
rb_define_const(rb_mGLFW, "RELEASE_BEHAVIOR_FLUSH", INT2NUM(GLFW_RELEASE_BEHAVIOR_FLUSH));
|
118
|
-
rb_define_const(rb_mGLFW, "RELEASE_BEHAVIOR_NONE", INT2NUM(GLFW_RELEASE_BEHAVIOR_NONE));
|
119
|
-
// OpenGL Profile
|
120
|
-
rb_define_const(rb_mGLFW, "PROFILE_ANY", INT2NUM(GLFW_OPENGL_ANY_PROFILE));
|
121
|
-
rb_define_const(rb_mGLFW, "PROFILE_COMPAT", INT2NUM(GLFW_OPENGL_COMPAT_PROFILE));
|
122
|
-
rb_define_const(rb_mGLFW, "PROFILE_CORE", INT2NUM(GLFW_OPENGL_CORE_PROFILE));
|
123
|
-
|
124
|
-
// Keys
|
125
|
-
rb_define_const(rb_mGLFW, "KEY_UNKNOWN", INT2NUM(GLFW_KEY_UNKNOWN));
|
126
|
-
rb_define_const(rb_mGLFW, "KEY_SPACE", INT2NUM(GLFW_KEY_SPACE));
|
127
|
-
rb_define_const(rb_mGLFW, "KEY_APOSTROPHE", INT2NUM(GLFW_KEY_APOSTROPHE));
|
128
|
-
rb_define_const(rb_mGLFW, "KEY_COMMA", INT2NUM(GLFW_KEY_COMMA));
|
129
|
-
rb_define_const(rb_mGLFW, "KEY_MINUS", INT2NUM(GLFW_KEY_MINUS));
|
130
|
-
rb_define_const(rb_mGLFW, "KEY_PERIOD", INT2NUM(GLFW_KEY_PERIOD));
|
131
|
-
rb_define_const(rb_mGLFW, "KEY_SLASH", INT2NUM(GLFW_KEY_SLASH));
|
132
|
-
rb_define_const(rb_mGLFW, "KEY_0", INT2NUM(GLFW_KEY_0));
|
133
|
-
rb_define_const(rb_mGLFW, "KEY_1", INT2NUM(GLFW_KEY_1));
|
134
|
-
rb_define_const(rb_mGLFW, "KEY_2", INT2NUM(GLFW_KEY_2));
|
135
|
-
rb_define_const(rb_mGLFW, "KEY_3", INT2NUM(GLFW_KEY_3));
|
136
|
-
rb_define_const(rb_mGLFW, "KEY_4", INT2NUM(GLFW_KEY_4));
|
137
|
-
rb_define_const(rb_mGLFW, "KEY_5", INT2NUM(GLFW_KEY_5));
|
138
|
-
rb_define_const(rb_mGLFW, "KEY_6", INT2NUM(GLFW_KEY_6));
|
139
|
-
rb_define_const(rb_mGLFW, "KEY_7", INT2NUM(GLFW_KEY_7));
|
140
|
-
rb_define_const(rb_mGLFW, "KEY_8", INT2NUM(GLFW_KEY_8));
|
141
|
-
rb_define_const(rb_mGLFW, "KEY_9", INT2NUM(GLFW_KEY_9));
|
142
|
-
rb_define_const(rb_mGLFW, "KEY_SEMICOLON", INT2NUM(GLFW_KEY_SEMICOLON));
|
143
|
-
rb_define_const(rb_mGLFW, "KEY_EQUAL", INT2NUM(GLFW_KEY_EQUAL));
|
144
|
-
rb_define_const(rb_mGLFW, "KEY_A", INT2NUM(GLFW_KEY_A));
|
145
|
-
rb_define_const(rb_mGLFW, "KEY_B", INT2NUM(GLFW_KEY_B));
|
146
|
-
rb_define_const(rb_mGLFW, "KEY_C", INT2NUM(GLFW_KEY_C));
|
147
|
-
rb_define_const(rb_mGLFW, "KEY_D", INT2NUM(GLFW_KEY_D));
|
148
|
-
rb_define_const(rb_mGLFW, "KEY_E", INT2NUM(GLFW_KEY_E));
|
149
|
-
rb_define_const(rb_mGLFW, "KEY_F", INT2NUM(GLFW_KEY_F));
|
150
|
-
rb_define_const(rb_mGLFW, "KEY_G", INT2NUM(GLFW_KEY_G));
|
151
|
-
rb_define_const(rb_mGLFW, "KEY_H", INT2NUM(GLFW_KEY_H));
|
152
|
-
rb_define_const(rb_mGLFW, "KEY_I", INT2NUM(GLFW_KEY_I));
|
153
|
-
rb_define_const(rb_mGLFW, "KEY_J", INT2NUM(GLFW_KEY_J));
|
154
|
-
rb_define_const(rb_mGLFW, "KEY_K", INT2NUM(GLFW_KEY_K));
|
155
|
-
rb_define_const(rb_mGLFW, "KEY_L", INT2NUM(GLFW_KEY_L));
|
156
|
-
rb_define_const(rb_mGLFW, "KEY_M", INT2NUM(GLFW_KEY_M));
|
157
|
-
rb_define_const(rb_mGLFW, "KEY_N", INT2NUM(GLFW_KEY_N));
|
158
|
-
rb_define_const(rb_mGLFW, "KEY_O", INT2NUM(GLFW_KEY_O));
|
159
|
-
rb_define_const(rb_mGLFW, "KEY_P", INT2NUM(GLFW_KEY_P));
|
160
|
-
rb_define_const(rb_mGLFW, "KEY_Q", INT2NUM(GLFW_KEY_Q));
|
161
|
-
rb_define_const(rb_mGLFW, "KEY_R", INT2NUM(GLFW_KEY_R));
|
162
|
-
rb_define_const(rb_mGLFW, "KEY_S", INT2NUM(GLFW_KEY_S));
|
163
|
-
rb_define_const(rb_mGLFW, "KEY_T", INT2NUM(GLFW_KEY_T));
|
164
|
-
rb_define_const(rb_mGLFW, "KEY_U", INT2NUM(GLFW_KEY_U));
|
165
|
-
rb_define_const(rb_mGLFW, "KEY_V", INT2NUM(GLFW_KEY_V));
|
166
|
-
rb_define_const(rb_mGLFW, "KEY_W", INT2NUM(GLFW_KEY_W));
|
167
|
-
rb_define_const(rb_mGLFW, "KEY_X", INT2NUM(GLFW_KEY_X));
|
168
|
-
rb_define_const(rb_mGLFW, "KEY_Y", INT2NUM(GLFW_KEY_Y));
|
169
|
-
rb_define_const(rb_mGLFW, "KEY_Z", INT2NUM(GLFW_KEY_Z));
|
170
|
-
rb_define_const(rb_mGLFW, "KEY_LEFT_BRACKET", INT2NUM(GLFW_KEY_LEFT_BRACKET));
|
171
|
-
rb_define_const(rb_mGLFW, "KEY_BACKSLASH", INT2NUM(GLFW_KEY_BACKSLASH));
|
172
|
-
rb_define_const(rb_mGLFW, "KEY_RIGHT_BRACKET", INT2NUM(GLFW_KEY_RIGHT_BRACKET));
|
173
|
-
rb_define_const(rb_mGLFW, "KEY_GRAVE_ACCENT", INT2NUM(GLFW_KEY_GRAVE_ACCENT));
|
174
|
-
rb_define_const(rb_mGLFW, "KEY_WORLD_1", INT2NUM(GLFW_KEY_WORLD_1));
|
175
|
-
rb_define_const(rb_mGLFW, "KEY_WORLD_2", INT2NUM(GLFW_KEY_WORLD_2));
|
176
|
-
rb_define_const(rb_mGLFW, "KEY_ESCAPE", INT2NUM(GLFW_KEY_ESCAPE));
|
177
|
-
rb_define_const(rb_mGLFW, "KEY_ENTER", INT2NUM(GLFW_KEY_ENTER));
|
178
|
-
rb_define_const(rb_mGLFW, "KEY_TAB", INT2NUM(GLFW_KEY_TAB));
|
179
|
-
rb_define_const(rb_mGLFW, "KEY_BACKSPACE", INT2NUM(GLFW_KEY_BACKSPACE));
|
180
|
-
rb_define_const(rb_mGLFW, "KEY_INSERT", INT2NUM(GLFW_KEY_INSERT));
|
181
|
-
rb_define_const(rb_mGLFW, "KEY_DELETE", INT2NUM(GLFW_KEY_DELETE));
|
182
|
-
rb_define_const(rb_mGLFW, "KEY_RIGHT", INT2NUM(GLFW_KEY_RIGHT));
|
183
|
-
rb_define_const(rb_mGLFW, "KEY_LEFT", INT2NUM(GLFW_KEY_LEFT));
|
184
|
-
rb_define_const(rb_mGLFW, "KEY_DOWN", INT2NUM(GLFW_KEY_DOWN));
|
185
|
-
rb_define_const(rb_mGLFW, "KEY_UP", INT2NUM(GLFW_KEY_UP));
|
186
|
-
rb_define_const(rb_mGLFW, "KEY_PAGE_UP", INT2NUM(GLFW_KEY_PAGE_UP));
|
187
|
-
rb_define_const(rb_mGLFW, "KEY_PAGE_DOWN", INT2NUM(GLFW_KEY_PAGE_DOWN));
|
188
|
-
rb_define_const(rb_mGLFW, "KEY_HOME", INT2NUM(GLFW_KEY_HOME));
|
189
|
-
rb_define_const(rb_mGLFW, "KEY_END", INT2NUM(GLFW_KEY_END));
|
190
|
-
rb_define_const(rb_mGLFW, "KEY_CAPS_LOCK", INT2NUM(GLFW_KEY_CAPS_LOCK));
|
191
|
-
rb_define_const(rb_mGLFW, "KEY_SCROLL_LOCK", INT2NUM(GLFW_KEY_SCROLL_LOCK));
|
192
|
-
rb_define_const(rb_mGLFW, "KEY_NUM_LOCK", INT2NUM(GLFW_KEY_NUM_LOCK));
|
193
|
-
rb_define_const(rb_mGLFW, "KEY_PRINT_SCREEN", INT2NUM(GLFW_KEY_PRINT_SCREEN));
|
194
|
-
rb_define_const(rb_mGLFW, "KEY_PAUSE", INT2NUM(GLFW_KEY_PAUSE));
|
195
|
-
rb_define_const(rb_mGLFW, "KEY_F1", INT2NUM(GLFW_KEY_F1));
|
196
|
-
rb_define_const(rb_mGLFW, "KEY_F2", INT2NUM(GLFW_KEY_F2));
|
197
|
-
rb_define_const(rb_mGLFW, "KEY_F3", INT2NUM(GLFW_KEY_F3));
|
198
|
-
rb_define_const(rb_mGLFW, "KEY_F4", INT2NUM(GLFW_KEY_F4));
|
199
|
-
rb_define_const(rb_mGLFW, "KEY_F5", INT2NUM(GLFW_KEY_F5));
|
200
|
-
rb_define_const(rb_mGLFW, "KEY_F6", INT2NUM(GLFW_KEY_F6));
|
201
|
-
rb_define_const(rb_mGLFW, "KEY_F7", INT2NUM(GLFW_KEY_F7));
|
202
|
-
rb_define_const(rb_mGLFW, "KEY_F8", INT2NUM(GLFW_KEY_F8));
|
203
|
-
rb_define_const(rb_mGLFW, "KEY_F9", INT2NUM(GLFW_KEY_F9));
|
204
|
-
rb_define_const(rb_mGLFW, "KEY_F10", INT2NUM(GLFW_KEY_F10));
|
205
|
-
rb_define_const(rb_mGLFW, "KEY_F11", INT2NUM(GLFW_KEY_F11));
|
206
|
-
rb_define_const(rb_mGLFW, "KEY_F12", INT2NUM(GLFW_KEY_F12));
|
207
|
-
rb_define_const(rb_mGLFW, "KEY_F13", INT2NUM(GLFW_KEY_F13));
|
208
|
-
rb_define_const(rb_mGLFW, "KEY_F14", INT2NUM(GLFW_KEY_F14));
|
209
|
-
rb_define_const(rb_mGLFW, "KEY_F15", INT2NUM(GLFW_KEY_F15));
|
210
|
-
rb_define_const(rb_mGLFW, "KEY_F16", INT2NUM(GLFW_KEY_F16));
|
211
|
-
rb_define_const(rb_mGLFW, "KEY_F17", INT2NUM(GLFW_KEY_F17));
|
212
|
-
rb_define_const(rb_mGLFW, "KEY_F18", INT2NUM(GLFW_KEY_F18));
|
213
|
-
rb_define_const(rb_mGLFW, "KEY_F19", INT2NUM(GLFW_KEY_F19));
|
214
|
-
rb_define_const(rb_mGLFW, "KEY_F20", INT2NUM(GLFW_KEY_F20));
|
215
|
-
rb_define_const(rb_mGLFW, "KEY_F21", INT2NUM(GLFW_KEY_F21));
|
216
|
-
rb_define_const(rb_mGLFW, "KEY_F22", INT2NUM(GLFW_KEY_F22));
|
217
|
-
rb_define_const(rb_mGLFW, "KEY_F23", INT2NUM(GLFW_KEY_F23));
|
218
|
-
rb_define_const(rb_mGLFW, "KEY_F24", INT2NUM(GLFW_KEY_F24));
|
219
|
-
rb_define_const(rb_mGLFW, "KEY_F25", INT2NUM(GLFW_KEY_F25));
|
220
|
-
rb_define_const(rb_mGLFW, "KEY_KP_0", INT2NUM(GLFW_KEY_KP_0));
|
221
|
-
rb_define_const(rb_mGLFW, "KEY_KP_1", INT2NUM(GLFW_KEY_KP_1));
|
222
|
-
rb_define_const(rb_mGLFW, "KEY_KP_2", INT2NUM(GLFW_KEY_KP_2));
|
223
|
-
rb_define_const(rb_mGLFW, "KEY_KP_3", INT2NUM(GLFW_KEY_KP_3));
|
224
|
-
rb_define_const(rb_mGLFW, "KEY_KP_4", INT2NUM(GLFW_KEY_KP_4));
|
225
|
-
rb_define_const(rb_mGLFW, "KEY_KP_5", INT2NUM(GLFW_KEY_KP_5));
|
226
|
-
rb_define_const(rb_mGLFW, "KEY_KP_6", INT2NUM(GLFW_KEY_KP_6));
|
227
|
-
rb_define_const(rb_mGLFW, "KEY_KP_7", INT2NUM(GLFW_KEY_KP_7));
|
228
|
-
rb_define_const(rb_mGLFW, "KEY_KP_8", INT2NUM(GLFW_KEY_KP_8));
|
229
|
-
rb_define_const(rb_mGLFW, "KEY_KP_9", INT2NUM(GLFW_KEY_KP_9));
|
230
|
-
rb_define_const(rb_mGLFW, "KEY_KP_DECIMAL", INT2NUM(GLFW_KEY_KP_DECIMAL));
|
231
|
-
rb_define_const(rb_mGLFW, "KEY_KP_DIVIDE", INT2NUM(GLFW_KEY_KP_DIVIDE));
|
232
|
-
rb_define_const(rb_mGLFW, "KEY_KP_MULTIPLY", INT2NUM(GLFW_KEY_KP_MULTIPLY));
|
233
|
-
rb_define_const(rb_mGLFW, "KEY_KP_SUBTRACT", INT2NUM(GLFW_KEY_KP_SUBTRACT));
|
234
|
-
rb_define_const(rb_mGLFW, "KEY_KP_ADD", INT2NUM(GLFW_KEY_KP_ADD));
|
235
|
-
rb_define_const(rb_mGLFW, "KEY_KP_ENTER", INT2NUM(GLFW_KEY_KP_ENTER));
|
236
|
-
rb_define_const(rb_mGLFW, "KEY_KP_EQUAL", INT2NUM(GLFW_KEY_KP_EQUAL));
|
237
|
-
rb_define_const(rb_mGLFW, "KEY_LEFT_SHIFT", INT2NUM(GLFW_KEY_LEFT_SHIFT));
|
238
|
-
rb_define_const(rb_mGLFW, "KEY_LEFT_CONTROL", INT2NUM(GLFW_KEY_LEFT_CONTROL));
|
239
|
-
rb_define_const(rb_mGLFW, "KEY_LEFT_ALT", INT2NUM(GLFW_KEY_LEFT_ALT));
|
240
|
-
rb_define_const(rb_mGLFW, "KEY_LEFT_SUPER", INT2NUM(GLFW_KEY_LEFT_SUPER));
|
241
|
-
rb_define_const(rb_mGLFW, "KEY_RIGHT_SHIFT", INT2NUM(GLFW_KEY_RIGHT_SHIFT));
|
242
|
-
rb_define_const(rb_mGLFW, "KEY_RIGHT_CONTROL", INT2NUM(GLFW_KEY_RIGHT_CONTROL));
|
243
|
-
rb_define_const(rb_mGLFW, "KEY_RIGHT_ALT", INT2NUM(GLFW_KEY_RIGHT_ALT));
|
244
|
-
rb_define_const(rb_mGLFW, "KEY_RIGHT_SUPER", INT2NUM(GLFW_KEY_RIGHT_SUPER));
|
245
|
-
rb_define_const(rb_mGLFW, "KEY_MENU", INT2NUM(GLFW_KEY_MENU));
|
246
|
-
// Modifier Keys
|
247
|
-
rb_define_const(rb_mGLFW, "MOD_CONTROL", INT2NUM(GLFW_MOD_CONTROL));
|
248
|
-
rb_define_const(rb_mGLFW, "MOD_SHIFT", INT2NUM(GLFW_MOD_SHIFT));
|
249
|
-
rb_define_const(rb_mGLFW, "MOD_ALT", INT2NUM(GLFW_MOD_ALT));
|
250
|
-
rb_define_const(rb_mGLFW, "MOD_SUPER", INT2NUM(GLFW_MOD_SUPER));
|
251
|
-
// Mouse Buttons
|
252
|
-
rb_define_const(rb_mGLFW, "MOUSE_BUTTON_1", INT2NUM(GLFW_MOUSE_BUTTON_1));
|
253
|
-
rb_define_const(rb_mGLFW, "MOUSE_BUTTON_2", INT2NUM(GLFW_MOUSE_BUTTON_2));
|
254
|
-
rb_define_const(rb_mGLFW, "MOUSE_BUTTON_3", INT2NUM(GLFW_MOUSE_BUTTON_3));
|
255
|
-
rb_define_const(rb_mGLFW, "MOUSE_BUTTON_4", INT2NUM(GLFW_MOUSE_BUTTON_4));
|
256
|
-
rb_define_const(rb_mGLFW, "MOUSE_BUTTON_5", INT2NUM(GLFW_MOUSE_BUTTON_5));
|
257
|
-
rb_define_const(rb_mGLFW, "MOUSE_BUTTON_6", INT2NUM(GLFW_MOUSE_BUTTON_6));
|
258
|
-
rb_define_const(rb_mGLFW, "MOUSE_BUTTON_7", INT2NUM(GLFW_MOUSE_BUTTON_7));
|
259
|
-
rb_define_const(rb_mGLFW, "MOUSE_BUTTON_8", INT2NUM(GLFW_MOUSE_BUTTON_8));
|
260
|
-
rb_define_const(rb_mGLFW, "MOUSE_BUTTON_LAST", INT2NUM(GLFW_MOUSE_BUTTON_LAST));
|
261
|
-
rb_define_const(rb_mGLFW, "MOUSE_BUTTON_LEFT", INT2NUM(GLFW_MOUSE_BUTTON_LEFT));
|
262
|
-
rb_define_const(rb_mGLFW, "MOUSE_BUTTON_RIGHT", INT2NUM(GLFW_MOUSE_BUTTON_RIGHT));
|
263
|
-
rb_define_const(rb_mGLFW, "MOUSE_BUTTON_MIDDLE", INT2NUM(GLFW_MOUSE_BUTTON_MIDDLE));
|
264
|
-
// Cursor Shapes
|
265
|
-
rb_define_const(rb_mGLFW, "CURSOR_ARROW", INT2NUM(GLFW_ARROW_CURSOR));
|
266
|
-
rb_define_const(rb_mGLFW, "CURSOR_IBEAM", INT2NUM(GLFW_IBEAM_CURSOR));
|
267
|
-
rb_define_const(rb_mGLFW, "CURSOR_CROSSHAIR", INT2NUM(GLFW_CROSSHAIR_CURSOR));
|
268
|
-
rb_define_const(rb_mGLFW, "CURSOR_HAND", INT2NUM(GLFW_HAND_CURSOR));
|
269
|
-
rb_define_const(rb_mGLFW, "CURSOR_HRESIZE", INT2NUM(GLFW_HRESIZE_CURSOR));
|
270
|
-
rb_define_const(rb_mGLFW, "CURSOR_VRESIZE", INT2NUM(GLFW_VRESIZE_CURSOR));
|
6
|
+
VALUE pointer_class;
|
7
|
+
VALUE function_class;
|
8
|
+
VALUE id_new;
|
271
9
|
|
10
|
+
#if SIZEOF_VOIDP == SIZEOF_LONG
|
11
|
+
# define PTR2NUM(x) (LONG2NUM((long)(x)))
|
12
|
+
# define NUM2PTR(x) ((void*)(NUM2ULONG(x)))
|
13
|
+
#else
|
14
|
+
/* # error --->> Ruby/DL2 requires sizeof(void*) == sizeof(long) to be compiled. <<--- */
|
15
|
+
# define PTR2NUM(x) (LL2NUM((LONG_LONG)(x)))
|
16
|
+
# define NUM2PTR(x) ((void*)(NUM2ULL(x)))
|
17
|
+
#endif
|
272
18
|
|
19
|
+
static void rb_glfw_error_cb(int code, const char *message)
|
20
|
+
{
|
21
|
+
rb_raise(eGLFWError, "%s (error code: 0x%08x)", message, code);
|
273
22
|
}
|
274
23
|
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
VALUE m = Data_Wrap_Struct(rb_cGLFWmonitor, NULL, RUBY_DEFAULT_FREE, monitor);
|
281
|
-
rb_funcall(rb_mGLFW, rb_intern("monitor_changed"), 2, m, INT2BOOL(connected));
|
24
|
+
static VALUE rb_glfw_version(VALUE glfw)
|
25
|
+
{
|
26
|
+
int major, minor, revision;
|
27
|
+
glfwGetVersion(&major, &minor, &revision);
|
28
|
+
return rb_sprintf("%d.%d.%d", major, minor, revision);
|
282
29
|
}
|
283
30
|
|
284
|
-
|
285
|
-
|
31
|
+
static VALUE rb_glfw_version_str(VALUE glfw)
|
32
|
+
{
|
33
|
+
return rb_str_new_cstr(glfwGetVersionString());
|
286
34
|
}
|
287
35
|
|
288
|
-
VALUE rb_glfw_init(VALUE
|
289
|
-
|
36
|
+
static VALUE rb_glfw_init(VALUE glfw)
|
37
|
+
{
|
38
|
+
VALUE result = RB_BOOL(glfwInit());
|
39
|
+
if (rb_block_given_p())
|
290
40
|
{
|
291
|
-
|
292
|
-
|
293
|
-
return Qtrue;
|
41
|
+
rb_yield(Qnil);
|
42
|
+
return Qnil;
|
294
43
|
}
|
295
|
-
return
|
44
|
+
return result;
|
296
45
|
}
|
297
46
|
|
298
|
-
VALUE rb_glfw_terminate(VALUE
|
47
|
+
static VALUE rb_glfw_terminate(VALUE glfw)
|
48
|
+
{
|
299
49
|
glfwTerminate();
|
300
50
|
return Qnil;
|
301
51
|
}
|
302
52
|
|
303
|
-
VALUE
|
304
|
-
|
53
|
+
static VALUE rb_glfw_init_hint(VALUE glfw, VALUE hint, VALUE value)
|
54
|
+
{
|
55
|
+
glfwInitHint(NUM2INT(hint), FIXNUM_P(value) ? NUM2INT(value) : RTEST(value));
|
305
56
|
return Qnil;
|
306
57
|
}
|
307
58
|
|
308
|
-
VALUE
|
309
|
-
|
59
|
+
static VALUE rb_glfw_swap_interval(VALUE glfw, VALUE value)
|
60
|
+
{
|
61
|
+
glfwSwapInterval(NUM2INT(value));
|
310
62
|
return Qnil;
|
311
63
|
}
|
312
64
|
|
313
|
-
VALUE
|
314
|
-
|
65
|
+
static VALUE rb_glfw_poll_events(VALUE glfw)
|
66
|
+
{
|
67
|
+
glfwPollEvents();
|
315
68
|
return Qnil;
|
316
69
|
}
|
317
70
|
|
318
|
-
VALUE
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
VALUE rb_glfw_set_time(VALUE klass, VALUE t) {
|
323
|
-
glfwSetTime(NUM2DBL(t));
|
324
|
-
return t;
|
71
|
+
static VALUE rb_glfw_wait_events(VALUE glfw)
|
72
|
+
{
|
73
|
+
glfwWaitEvents();
|
74
|
+
return Qnil;
|
325
75
|
}
|
326
76
|
|
327
|
-
VALUE
|
328
|
-
|
329
|
-
return
|
77
|
+
static VALUE rb_glfw_get_time(VALUE glfw)
|
78
|
+
{
|
79
|
+
return DBL2NUM(glfwGetTime());
|
330
80
|
}
|
331
81
|
|
332
|
-
VALUE
|
333
|
-
|
334
|
-
|
82
|
+
static VALUE rb_glfw_set_time(VALUE glfw, VALUE value)
|
83
|
+
{
|
84
|
+
glfwSetTime(NUM2DBL(value));
|
85
|
+
return value;
|
335
86
|
}
|
336
87
|
|
337
|
-
VALUE
|
338
|
-
|
339
|
-
return
|
88
|
+
static VALUE rb_glfw_timer_value(VALUE glfw)
|
89
|
+
{
|
90
|
+
return ULL2NUM(glfwGetTimerValue());
|
340
91
|
}
|
341
92
|
|
342
|
-
VALUE
|
343
|
-
|
344
|
-
|
345
|
-
VALUE ary = rb_ary_new_capa(count);
|
346
|
-
for (int i = 0; i < count; i++)
|
347
|
-
rb_ary_store(ary, i, Data_Wrap_Struct(rb_cGLFWmonitor, NULL, RUBY_DEFAULT_FREE, monitors[i]));
|
348
|
-
return ary;
|
93
|
+
static VALUE rb_glfw_timer_frequency(VALUE glfw)
|
94
|
+
{
|
95
|
+
return ULL2NUM(glfwGetTimerFrequency());
|
349
96
|
}
|
350
97
|
|
351
|
-
VALUE
|
352
|
-
|
98
|
+
static VALUE rb_glfw_post_empty_event(VALUE glfw)
|
99
|
+
{
|
100
|
+
glfwPostEmptyEvent();
|
353
101
|
return Qnil;
|
354
102
|
}
|
355
103
|
|
356
|
-
VALUE
|
357
|
-
|
358
|
-
|
359
|
-
hintvalue = GLFW_DONT_CARE;
|
360
|
-
else if (FIXNUM_P(value))
|
361
|
-
hintvalue = NUM2INT(value);
|
362
|
-
else
|
363
|
-
hintvalue = RTEST(value);
|
364
|
-
glfwWindowHint(NUM2INT(hint), hintvalue);
|
365
|
-
|
104
|
+
static VALUE rb_glfw_event_timeout(VALUE glfw, VALUE timeout)
|
105
|
+
{
|
106
|
+
glfwWaitEventsTimeout(NUM2DBL(timeout));
|
366
107
|
return Qnil;
|
367
108
|
}
|
368
109
|
|
369
|
-
VALUE
|
370
|
-
|
371
|
-
return
|
110
|
+
static VALUE rb_glfw_scancode(VALUE glfw, VALUE key)
|
111
|
+
{
|
112
|
+
return INT2NUM(glfwGetKeyScancode(NUM2INT(key)));
|
372
113
|
}
|
373
114
|
|
374
|
-
VALUE
|
375
|
-
|
376
|
-
|
377
|
-
|
115
|
+
static VALUE rb_glfw_key_name(int argc, VALUE *argv, VALUE glfw)
|
116
|
+
{
|
117
|
+
VALUE key, scancode;
|
118
|
+
rb_scan_args(argc, argv, "11", &key, &scancode);
|
378
119
|
|
379
|
-
|
380
|
-
return
|
120
|
+
int sc = RTEST(scancode) ? NUM2INT(scancode) : 0;
|
121
|
+
return rb_str_new_cstr(glfwGetKeyName(NUM2INT(key), sc));
|
381
122
|
}
|
382
123
|
|
383
|
-
VALUE
|
384
|
-
|
124
|
+
static VALUE rb_glfw_get_proc_address(VALUE glfw, VALUE name)
|
125
|
+
{
|
126
|
+
void *proc = glfwGetProcAddress(StringValueCStr(name));
|
127
|
+
return rb_funcall(pointer_class, id_new, 1, PTR2NUM(proc));
|
385
128
|
}
|
386
129
|
|
387
|
-
VALUE
|
388
|
-
|
130
|
+
static VALUE rb_glfw_import_function(VALUE glfw, VALUE name, VALUE args, VALUE return_type)
|
131
|
+
{
|
132
|
+
void *proc = glfwGetProcAddress(StringValueCStr(name));
|
133
|
+
VALUE handle = rb_funcall(pointer_class, id_new, 1, PTR2NUM(proc));
|
134
|
+
return rb_funcall(function_class, id_new, 3, handle, args, return_type);
|
389
135
|
}
|
390
136
|
|
391
|
-
VALUE
|
392
|
-
|
393
|
-
const
|
394
|
-
|
395
|
-
for (int i = 0; i < count; i++)
|
396
|
-
rb_ary_store(ary, i, INT2NUM(buttons[i]));
|
397
|
-
return ary;
|
137
|
+
static VALUE rb_glfw_is_extension_supported(VALUE glfw, VALUE name)
|
138
|
+
{
|
139
|
+
const char *ext = StringValueCStr(name);
|
140
|
+
return ext ? RB_BOOL(glfwExtensionSupported(ext)) : Qfalse;
|
398
141
|
}
|
399
142
|
|
400
|
-
|
401
|
-
|
402
|
-
|
403
|
-
|
404
|
-
for (int i = 0; i < count; i++)
|
405
|
-
rb_ary_store(ary, i, DBL2NUM(axes[i]));
|
406
|
-
return ary;
|
407
|
-
}
|
143
|
+
void Init_glfw(void)
|
144
|
+
{
|
145
|
+
mGLFW = rb_define_module("GLFW");
|
146
|
+
eGLFWError = rb_define_class_under(mGLFW, "Error", rb_eStandardError);
|
408
147
|
|
409
|
-
|
410
|
-
const char *name = glfwGetJoystickName(NUM2INT(joystick));
|
411
|
-
return rb_utf8_str_new_cstr(name);
|
412
|
-
}
|
148
|
+
glfwSetErrorCallback(rb_glfw_error_cb);
|
413
149
|
|
414
|
-
|
415
|
-
|
416
|
-
|
150
|
+
rb_define_module_function(mGLFW, "init", rb_glfw_init, 0);
|
151
|
+
rb_define_module_function(mGLFW, "terminate", rb_glfw_terminate, 0);
|
152
|
+
rb_define_module_function(mGLFW, "version", rb_glfw_version, 0);
|
153
|
+
rb_define_module_function(mGLFW, "version_str", rb_glfw_version_str, 0);
|
154
|
+
rb_define_module_function(mGLFW, "init_hint", rb_glfw_init_hint, 2);
|
155
|
+
rb_define_module_function(mGLFW, "supported?", rb_glfw_is_extension_supported, 1);
|
156
|
+
rb_define_module_function(mGLFW, "swap_interval", rb_glfw_swap_interval, 1);
|
157
|
+
rb_define_module_function(mGLFW, "poll_events", rb_glfw_poll_events, 0);
|
158
|
+
rb_define_module_function(mGLFW, "wait_events", rb_glfw_wait_events, 0);
|
159
|
+
rb_define_module_function(mGLFW, "post_empty_event", rb_glfw_post_empty_event, 0);
|
160
|
+
rb_define_module_function(mGLFW, "event_timeout", rb_glfw_event_timeout, 1);
|
161
|
+
rb_define_module_function(mGLFW, "proc_address", rb_glfw_get_proc_address, 1);
|
162
|
+
rb_define_module_function(mGLFW, "import", rb_glfw_import_function, 3);
|
163
|
+
rb_define_module_function(mGLFW, "time", rb_glfw_get_time, 0);
|
164
|
+
rb_define_module_function(mGLFW, "time=", rb_glfw_set_time, 1);
|
165
|
+
rb_define_module_function(mGLFW, "timer_value", rb_glfw_timer_value, 0);
|
166
|
+
rb_define_module_function(mGLFW, "timer_frequency", rb_glfw_timer_frequency, 0);
|
167
|
+
rb_define_module_function(mGLFW, "key_name", rb_glfw_key_name, -1);
|
168
|
+
rb_define_module_function(mGLFW, "scancode", rb_glfw_scancode, 1);
|
417
169
|
|
418
|
-
|
419
|
-
|
420
|
-
|
170
|
+
rb_glfw_window_init();
|
171
|
+
rb_glfw_monitor_init();
|
172
|
+
rb_glfw_cursor_init();
|
173
|
+
rb_glfw_image_init();
|
174
|
+
rb_glfw_common_init();
|
175
|
+
rb_glfw_joystick_init();;
|
421
176
|
|
422
|
-
|
423
|
-
|
424
|
-
|
425
|
-
|
177
|
+
rb_require("fiddle");
|
178
|
+
VALUE fiddle = rb_const_get(rb_mKernel, rb_intern("Fiddle"));
|
179
|
+
pointer_class = rb_const_get(fiddle, rb_intern("Pointer"));
|
180
|
+
function_class = rb_const_get(fiddle, rb_intern("Function"));
|
181
|
+
id_new = rb_intern("new");
|
426
182
|
}
|
427
183
|
|
428
|
-
/*
|
429
|
-
glfwGetWGLContext
|
430
|
-
glfwGetWin32Adapter
|
431
|
-
glfwGetWin32Monitor
|
432
|
-
glfwGetWin32Window
|
433
|
-
glfwGetEGLContext
|
434
|
-
glfwGetEGLDisplay
|
435
|
-
glfwGetEGLSurface
|
436
|
-
*/
|
437
|
-
|
438
|
-
|