glfw3 0.3.2 → 0.3.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/ext/glfw3/glfw3.c +123 -74
  3. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2fa3c81cf32a76569db80053ccc2422eac1d9f59
4
- data.tar.gz: f6383866824dbdf589c7567f613d8427e3ec4e51
3
+ metadata.gz: af1da580f8de9e21f650115855184766da438c18
4
+ data.tar.gz: 2c1f559d4044a53985c76c373fa38dcf62aa03b1
5
5
  SHA512:
6
- metadata.gz: cc3881835604728d4d632c0a443a443e5c2a599e8820c9c9bb01bcdb9fbdda5cde254d7740c3cb23e0e912839654df81c2a6646b2eb6f79b2ca007d17dba924e
7
- data.tar.gz: fc0df1b75de611329f2ff585ff6885171a3d369bbe97cae8b8c558908438dd47bb92dadbec47c5f711590a1efd886cb6b3196d1908e9518d468e687b389df30d
6
+ metadata.gz: d784dbdccdef6a614369f6e87145687a1caacfc1b7a6500d23378032a3b329ef7f5e700d2afbf67ea1b6fb15faef3b762b0c194b101e6affdf34a7914522cd39
7
+ data.tar.gz: 8c04f83251a478714379caa99d78fe86f7354482941918540d2ab233703704eb9d0aed3d64868933bbc8176ac2ceade5187f85a557a04dd6e2bd962292bc866e
@@ -9,23 +9,50 @@ typedef struct s_rb_glfw_error
9
9
  } rb_glfw_error_t;
10
10
 
11
11
 
12
- static const char *kRB_IVAR_WINDOW_INTERNAL = "@__internal_window";
13
- static const char *kRB_IVAR_WINDOW_KEY_CALLBACK = "@__key_callback";
14
- static const char *kRB_IVAR_WINDOW_CHAR_CALLBACK = "@__char_callback";
15
- static const char *kRB_IVAR_WINDOW_MOUSE_BUTTON_CALLBACK = "@__mouse_button_callback";
16
- static const char *kRB_IVAR_WINDOW_CURSOR_POSITION_CALLBACK = "@__cursor_position_callback";
17
- static const char *kRB_IVAR_WINDOW_CURSOR_ENTER_CALLBACK = "@__cursor_enter_callback";
18
- static const char *kRB_IVAR_WINDOW_SCROLL_CALLBACK = "@__scroll_callback";
19
- static const char *kRB_IVAR_WINDOW_POSITION_CALLBACK = "@__position_callback";
20
- static const char *kRB_IVAR_WINDOW_SIZE_CALLBACK = "@__size_callback";
21
- static const char *kRB_IVAR_WINDOW_CLOSE_CALLBACK = "@__close_callback";
22
- static const char *kRB_IVAR_WINDOW_REFRESH_CALLBACK = "@__refresh_callback";
23
- static const char *kRB_IVAR_WINDOW_FOCUS_CALLBACK = "@__focus_callback";
24
- static const char *kRB_IVAR_WINDOW_ICONIFY_CALLBACK = "@__iconify_callback";
25
- static const char *kRB_IVAR_WINDOW_FRAMEBUFFER_SIZE_CALLBACK = "@__framebuffer_size_callback";
26
- static const char *kRB_CVAR_WINDOW_WINDOWS = "@@__windows";
27
- static const char *kRB_CVAR_GLFW_ERROR_CALLBACK = "@@__error_callback";
28
- static const char *kRB_CVAR_GLFW_MONITOR_CALLBACK = "@@__monitor_callback";
12
+ static const char *kRB_IVAR_WINDOW_INTERNAL_NAME = "@__internal_window";
13
+ static const char *kRB_IVAR_WINDOW_KEY_CALLBACK_NAME = "@__key_callback";
14
+ static const char *kRB_IVAR_WINDOW_CHAR_CALLBACK_NAME = "@__char_callback";
15
+ static const char *kRB_IVAR_WINDOW_MOUSE_BUTTON_CALLBACK_NAME = "@__mouse_button_callback";
16
+ static const char *kRB_IVAR_WINDOW_CURSOR_POSITION_CALLBACK_NAME = "@__cursor_position_callback";
17
+ static const char *kRB_IVAR_WINDOW_CURSOR_ENTER_CALLBACK_NAME = "@__cursor_enter_callback";
18
+ static const char *kRB_IVAR_WINDOW_SCROLL_CALLBACK_NAME = "@__scroll_callback";
19
+ static const char *kRB_IVAR_WINDOW_POSITION_CALLBACK_NAME = "@__position_callback";
20
+ static const char *kRB_IVAR_WINDOW_SIZE_CALLBACK_NAME = "@__size_callback";
21
+ static const char *kRB_IVAR_WINDOW_CLOSE_CALLBACK_NAME = "@__close_callback";
22
+ static const char *kRB_IVAR_WINDOW_REFRESH_CALLBACK_NAME = "@__refresh_callback";
23
+ static const char *kRB_IVAR_WINDOW_FOCUS_CALLBACK_NAME = "@__focus_callback";
24
+ static const char *kRB_IVAR_WINDOW_ICONIFY_CALLBACK_NAME = "@__iconify_callback";
25
+ static const char *kRB_IVAR_WINDOW_FRAMEBUFFER_SIZE_CALLBACK_NAME = "@__framebuffer_size_callback";
26
+ static const char *kRB_CVAR_WINDOW_WINDOWS_NAME = "@@__windows";
27
+ static const char *kRB_CVAR_GLFW_ERROR_CALLBACK_NAME = "@@__error_callback";
28
+ static const char *kRB_CVAR_GLFW_MONITOR_CALLBACK_NAME = "@@__monitor_callback";
29
+ static const char *kRB_CALL_NAME = "call";
30
+ static const char *kRB_RED_NAME = "red";
31
+ static const char *kRB_GREEN_NAME = "green";
32
+ static const char *kRB_BLUE_NAME = "blue";
33
+
34
+
35
+ static ID kRB_IVAR_WINDOW_INTERNAL;
36
+ static ID kRB_IVAR_WINDOW_KEY_CALLBACK;
37
+ static ID kRB_IVAR_WINDOW_CHAR_CALLBACK;
38
+ static ID kRB_IVAR_WINDOW_MOUSE_BUTTON_CALLBACK;
39
+ static ID kRB_IVAR_WINDOW_CURSOR_POSITION_CALLBACK;
40
+ static ID kRB_IVAR_WINDOW_CURSOR_ENTER_CALLBACK;
41
+ static ID kRB_IVAR_WINDOW_SCROLL_CALLBACK;
42
+ static ID kRB_IVAR_WINDOW_POSITION_CALLBACK;
43
+ static ID kRB_IVAR_WINDOW_SIZE_CALLBACK;
44
+ static ID kRB_IVAR_WINDOW_CLOSE_CALLBACK;
45
+ static ID kRB_IVAR_WINDOW_REFRESH_CALLBACK;
46
+ static ID kRB_IVAR_WINDOW_FOCUS_CALLBACK;
47
+ static ID kRB_IVAR_WINDOW_ICONIFY_CALLBACK;
48
+ static ID kRB_IVAR_WINDOW_FRAMEBUFFER_SIZE_CALLBACK;
49
+ static ID kRB_CVAR_WINDOW_WINDOWS;
50
+ static ID kRB_CVAR_GLFW_ERROR_CALLBACK;
51
+ static ID kRB_CVAR_GLFW_MONITOR_CALLBACK;
52
+ static ID kRB_CALL;
53
+ static ID kRB_RED;
54
+ static ID kRB_GREEN;
55
+ static ID kRB_BLUE;
29
56
 
30
57
 
31
58
  static VALUE s_glfw_module = Qundef;
@@ -106,14 +133,14 @@ static VALUE rb_glfw_version(VALUE self)
106
133
 
107
134
  static void rb_glfw_error_callback(int error_code, const char *description)
108
135
  {
109
- VALUE lambda = rb_cvar_get(s_glfw_module, rb_intern(kRB_CVAR_GLFW_ERROR_CALLBACK));
136
+ VALUE lambda = rb_cvar_get(s_glfw_module, kRB_CVAR_GLFW_ERROR_CALLBACK);
110
137
 
111
138
  if (RTEST(lambda)) {
112
139
  VALUE rb_description = rb_str_new2(description);
113
140
  VALUE rb_error_code = INT2FIX(error_code);
114
141
  OBJ_FREEZE(rb_description);
115
142
  OBJ_FREEZE(rb_error_code);
116
- rb_funcall(lambda, rb_intern("call"), 2, rb_error_code, rb_description);
143
+ rb_funcall(lambda, kRB_CALL, 2, rb_error_code, rb_description);
117
144
  } else {
118
145
  rb_raise(rb_eRuntimeError, "GLFW Error 0x%X: %s", error_code, description);
119
146
  }
@@ -231,11 +258,11 @@ VALUE rb_monitor_name(VALUE self)
231
258
 
232
259
  static void rb_glfw_monitor_callback(GLFWmonitor *monitor, int message)
233
260
  {
234
- VALUE lambda = rb_cvar_get(s_glfw_module, rb_intern(kRB_CVAR_GLFW_MONITOR_CALLBACK));
261
+ VALUE lambda = rb_cvar_get(s_glfw_module, kRB_CVAR_GLFW_MONITOR_CALLBACK);
235
262
  if (RTEST(lambda)) {
236
263
  VALUE rb_monitor = Data_Wrap_Struct(s_glfw_monitor_klass, 0, 0, monitor);
237
264
  rb_obj_call_init(rb_monitor, 0, 0);
238
- rb_funcall(lambda, rb_intern("call"), 2, rb_monitor, INT2FIX(message));
265
+ rb_funcall(lambda, kRB_CALL, 2, rb_monitor, INT2FIX(message));
239
266
  }
240
267
  }
241
268
 
@@ -435,9 +462,9 @@ static VALUE rb_monitor_get_gamma_ramp(VALUE self)
435
462
  rb_ary_push(rb_blue, INT2NUM(ramp->blue[ramp_index]));
436
463
  }
437
464
 
438
- rb_hash_aset(rb_gamma_hash, ID2SYM(rb_intern("red")), rb_red);
439
- rb_hash_aset(rb_gamma_hash, ID2SYM(rb_intern("green")), rb_green);
440
- rb_hash_aset(rb_gamma_hash, ID2SYM(rb_intern("blue")), rb_blue);
465
+ rb_hash_aset(rb_gamma_hash, ID2SYM(kRB_RED), rb_red);
466
+ rb_hash_aset(rb_gamma_hash, ID2SYM(kRB_GREEN), rb_green);
467
+ rb_hash_aset(rb_gamma_hash, ID2SYM(kRB_BLUE), rb_blue);
441
468
 
442
469
  return rb_gamma_hash;
443
470
  }
@@ -475,9 +502,9 @@ static VALUE rb_monitor_set_gamma_ramp(VALUE self, VALUE ramp_hash)
475
502
 
476
503
  Data_Get_Struct(self, GLFWmonitor, monitor);
477
504
 
478
- rb_red = rb_hash_aref(ramp_hash, ID2SYM(rb_intern("red")));
479
- rb_green = rb_hash_aref(ramp_hash, ID2SYM(rb_intern("green")));
480
- rb_blue = rb_hash_aref(ramp_hash, ID2SYM(rb_intern("blue")));
505
+ rb_red = rb_hash_aref(ramp_hash, ID2SYM(kRB_RED));
506
+ rb_green = rb_hash_aref(ramp_hash, ID2SYM(kRB_GREEN));
507
+ rb_blue = rb_hash_aref(ramp_hash, ID2SYM(kRB_BLUE));
481
508
 
482
509
  if (!(RTEST(rb_red) && RTEST(rb_green) && RTEST(rb_blue))) {
483
510
  rb_raise(rb_eArgError, "Ramp Hash must contain :red, :green, and :blue arrays");
@@ -555,7 +582,7 @@ static GLFWwindow *rb_get_window(VALUE rb_window)
555
582
  {
556
583
  GLFWwindow *window = NULL;
557
584
  if (RTEST(rb_window)) {
558
- ID ivar_window = rb_intern(kRB_IVAR_WINDOW_INTERNAL);
585
+ ID ivar_window = kRB_IVAR_WINDOW_INTERNAL;
559
586
  VALUE rb_window_data = Qnil;
560
587
  if (RTEST((rb_window_data = rb_ivar_get(rb_window, ivar_window)))) {
561
588
  Data_Get_Struct(rb_window_data, GLFWwindow, window);
@@ -578,7 +605,7 @@ static GLFWwindow *rb_get_window(VALUE rb_window)
578
605
  */
579
606
  static VALUE rb_window_new(int argc, VALUE *argv, VALUE self)
580
607
  {
581
- ID ivar_window = rb_intern(kRB_IVAR_WINDOW_INTERNAL);
608
+ ID ivar_window = kRB_IVAR_WINDOW_INTERNAL;
582
609
  VALUE rb_width, rb_height, rb_title, rb_monitor, rb_share;
583
610
  VALUE rb_window;
584
611
  VALUE rb_window_data;
@@ -625,25 +652,25 @@ static VALUE rb_window_new(int argc, VALUE *argv, VALUE self)
625
652
  rb_window = rb_obj_alloc(s_glfw_window_klass);
626
653
 
627
654
  rb_ivar_set(rb_window, ivar_window, rb_window_data);
628
- rb_ivar_set(rb_window, rb_intern(kRB_IVAR_WINDOW_KEY_CALLBACK), Qnil);
629
- rb_ivar_set(rb_window, rb_intern(kRB_IVAR_WINDOW_CHAR_CALLBACK), Qnil);
630
- rb_ivar_set(rb_window, rb_intern(kRB_IVAR_WINDOW_MOUSE_BUTTON_CALLBACK), Qnil);
631
- rb_ivar_set(rb_window, rb_intern(kRB_IVAR_WINDOW_CURSOR_POSITION_CALLBACK), Qnil);
632
- rb_ivar_set(rb_window, rb_intern(kRB_IVAR_WINDOW_CURSOR_ENTER_CALLBACK), Qnil);
633
- rb_ivar_set(rb_window, rb_intern(kRB_IVAR_WINDOW_SCROLL_CALLBACK), Qnil);
634
- rb_ivar_set(rb_window, rb_intern(kRB_IVAR_WINDOW_POSITION_CALLBACK), Qnil);
635
- rb_ivar_set(rb_window, rb_intern(kRB_IVAR_WINDOW_SIZE_CALLBACK), Qnil);
636
- rb_ivar_set(rb_window, rb_intern(kRB_IVAR_WINDOW_CLOSE_CALLBACK), Qnil);
637
- rb_ivar_set(rb_window, rb_intern(kRB_IVAR_WINDOW_REFRESH_CALLBACK), Qnil);
638
- rb_ivar_set(rb_window, rb_intern(kRB_IVAR_WINDOW_FOCUS_CALLBACK), Qnil);
639
- rb_ivar_set(rb_window, rb_intern(kRB_IVAR_WINDOW_ICONIFY_CALLBACK), Qnil);
640
- rb_ivar_set(rb_window, rb_intern(kRB_IVAR_WINDOW_FRAMEBUFFER_SIZE_CALLBACK), Qnil);
655
+ rb_ivar_set(rb_window, kRB_IVAR_WINDOW_KEY_CALLBACK, Qnil);
656
+ rb_ivar_set(rb_window, kRB_IVAR_WINDOW_CHAR_CALLBACK, Qnil);
657
+ rb_ivar_set(rb_window, kRB_IVAR_WINDOW_MOUSE_BUTTON_CALLBACK, Qnil);
658
+ rb_ivar_set(rb_window, kRB_IVAR_WINDOW_CURSOR_POSITION_CALLBACK, Qnil);
659
+ rb_ivar_set(rb_window, kRB_IVAR_WINDOW_CURSOR_ENTER_CALLBACK, Qnil);
660
+ rb_ivar_set(rb_window, kRB_IVAR_WINDOW_SCROLL_CALLBACK, Qnil);
661
+ rb_ivar_set(rb_window, kRB_IVAR_WINDOW_POSITION_CALLBACK, Qnil);
662
+ rb_ivar_set(rb_window, kRB_IVAR_WINDOW_SIZE_CALLBACK, Qnil);
663
+ rb_ivar_set(rb_window, kRB_IVAR_WINDOW_CLOSE_CALLBACK, Qnil);
664
+ rb_ivar_set(rb_window, kRB_IVAR_WINDOW_REFRESH_CALLBACK, Qnil);
665
+ rb_ivar_set(rb_window, kRB_IVAR_WINDOW_FOCUS_CALLBACK, Qnil);
666
+ rb_ivar_set(rb_window, kRB_IVAR_WINDOW_ICONIFY_CALLBACK, Qnil);
667
+ rb_ivar_set(rb_window, kRB_IVAR_WINDOW_FRAMEBUFFER_SIZE_CALLBACK, Qnil);
641
668
 
642
669
  glfwSetWindowUserPointer(window, (void *)rb_window);
643
670
  rb_obj_call_init(rb_window, 0, 0);
644
671
 
645
672
  // Store the window so it can't go out of scope until explicitly destroyed.
646
- rb_windows = rb_cvar_get(self, rb_intern(kRB_CVAR_WINDOW_WINDOWS));
673
+ rb_windows = rb_cvar_get(self, kRB_CVAR_WINDOW_WINDOWS);
647
674
  rb_hash_aset(rb_windows, INT2FIX((int)window), rb_window);
648
675
 
649
676
  return rb_window;
@@ -661,8 +688,8 @@ static VALUE rb_window_destroy(VALUE self)
661
688
  GLFWwindow *window = rb_get_window(self);
662
689
  if (window) {
663
690
  glfwDestroyWindow(window);
664
- rb_ivar_set(self, rb_intern(kRB_IVAR_WINDOW_INTERNAL), Qnil);
665
- VALUE rb_windows = rb_cvar_get(s_glfw_window_klass, rb_intern(kRB_CVAR_WINDOW_WINDOWS));
691
+ rb_ivar_set(self, kRB_IVAR_WINDOW_INTERNAL, Qnil);
692
+ VALUE rb_windows = rb_cvar_get(s_glfw_window_klass, kRB_CVAR_WINDOW_WINDOWS);
666
693
  rb_hash_delete(rb_windows, INT2FIX((int)window));
667
694
  }
668
695
  return self;
@@ -888,8 +915,8 @@ static VALUE rb_window_get_monitor(VALUE self)
888
915
  static void rb_window_window_position_callback(GLFWwindow *window, int x, int y)
889
916
  {
890
917
  VALUE rb_window = rb_lookup_window(window);
891
- VALUE rb_func = rb_ivar_get(rb_window, rb_intern(kRB_IVAR_WINDOW_POSITION_CALLBACK));
892
- rb_funcall(rb_func, rb_intern("call"), 3, rb_window, INT2FIX(x), INT2FIX(y));
918
+ VALUE rb_func = rb_ivar_get(rb_window, kRB_IVAR_WINDOW_POSITION_CALLBACK);
919
+ rb_funcall(rb_func, kRB_CALL, 3, rb_window, INT2FIX(x), INT2FIX(y));
893
920
  }
894
921
 
895
922
  RB_ENABLE_CALLBACK_DEF(rb_window_set_window_position_callback, rb_window_window_position_callback, glfwSetWindowPosCallback);
@@ -899,8 +926,8 @@ RB_ENABLE_CALLBACK_DEF(rb_window_set_window_position_callback, rb_window_window_
899
926
  static void rb_window_window_size_callback(GLFWwindow *window, int width, int height)
900
927
  {
901
928
  VALUE rb_window = rb_lookup_window(window);
902
- VALUE rb_func = rb_ivar_get(rb_window, rb_intern(kRB_IVAR_WINDOW_SIZE_CALLBACK));
903
- rb_funcall(rb_func, rb_intern("call"), 3, rb_window, INT2FIX(width), INT2FIX(height));
929
+ VALUE rb_func = rb_ivar_get(rb_window, kRB_IVAR_WINDOW_SIZE_CALLBACK);
930
+ rb_funcall(rb_func, kRB_CALL, 3, rb_window, INT2FIX(width), INT2FIX(height));
904
931
  }
905
932
 
906
933
  RB_ENABLE_CALLBACK_DEF(rb_window_set_window_size_callback, rb_window_window_size_callback, glfwSetWindowSizeCallback);
@@ -910,8 +937,8 @@ RB_ENABLE_CALLBACK_DEF(rb_window_set_window_size_callback, rb_window_window_size
910
937
  static void rb_window_close_callback(GLFWwindow *window)
911
938
  {
912
939
  VALUE rb_window = rb_lookup_window(window);
913
- VALUE rb_func = rb_ivar_get(rb_window, rb_intern(kRB_IVAR_WINDOW_CLOSE_CALLBACK));
914
- rb_funcall(rb_func, rb_intern("call"), 1, rb_window);
940
+ VALUE rb_func = rb_ivar_get(rb_window, kRB_IVAR_WINDOW_CLOSE_CALLBACK);
941
+ rb_funcall(rb_func, kRB_CALL, 1, rb_window);
915
942
  }
916
943
 
917
944
  RB_ENABLE_CALLBACK_DEF(rb_window_set_close_callback, rb_window_close_callback, glfwSetWindowCloseCallback);
@@ -921,8 +948,8 @@ RB_ENABLE_CALLBACK_DEF(rb_window_set_close_callback, rb_window_close_callback, g
921
948
  static void rb_window_refresh_callback(GLFWwindow *window)
922
949
  {
923
950
  VALUE rb_window = rb_lookup_window(window);
924
- VALUE rb_func = rb_ivar_get(rb_window, rb_intern(kRB_IVAR_WINDOW_REFRESH_CALLBACK));
925
- rb_funcall(rb_func, rb_intern("call"), 1, rb_window);
951
+ VALUE rb_func = rb_ivar_get(rb_window, kRB_IVAR_WINDOW_REFRESH_CALLBACK);
952
+ rb_funcall(rb_func, kRB_CALL, 1, rb_window);
926
953
  }
927
954
 
928
955
  RB_ENABLE_CALLBACK_DEF(rb_window_set_refresh_callback, rb_window_refresh_callback, glfwSetWindowRefreshCallback);
@@ -932,8 +959,8 @@ RB_ENABLE_CALLBACK_DEF(rb_window_set_refresh_callback, rb_window_refresh_callbac
932
959
  static void rb_window_focus_callback(GLFWwindow *window, int focused)
933
960
  {
934
961
  VALUE rb_window = rb_lookup_window(window);
935
- VALUE rb_func = rb_ivar_get(rb_window, rb_intern(kRB_IVAR_WINDOW_FOCUS_CALLBACK));
936
- rb_funcall(rb_func, rb_intern("call"), 2, rb_window, focused ? Qtrue : Qfalse);
962
+ VALUE rb_func = rb_ivar_get(rb_window, kRB_IVAR_WINDOW_FOCUS_CALLBACK);
963
+ rb_funcall(rb_func, kRB_CALL, 2, rb_window, focused ? Qtrue : Qfalse);
937
964
  }
938
965
 
939
966
  RB_ENABLE_CALLBACK_DEF(rb_window_set_focus_callback, rb_window_focus_callback, glfwSetWindowFocusCallback);
@@ -943,8 +970,8 @@ RB_ENABLE_CALLBACK_DEF(rb_window_set_focus_callback, rb_window_focus_callback, g
943
970
  static void rb_window_iconify_callback(GLFWwindow *window, int iconified)
944
971
  {
945
972
  VALUE rb_window = rb_lookup_window(window);
946
- VALUE rb_func = rb_ivar_get(rb_window, rb_intern(kRB_IVAR_WINDOW_ICONIFY_CALLBACK));
947
- rb_funcall(rb_func, rb_intern("call"), 2, rb_window, iconified ? Qtrue : Qfalse);
973
+ VALUE rb_func = rb_ivar_get(rb_window, kRB_IVAR_WINDOW_ICONIFY_CALLBACK);
974
+ rb_funcall(rb_func, kRB_CALL, 2, rb_window, iconified ? Qtrue : Qfalse);
948
975
  }
949
976
 
950
977
  RB_ENABLE_CALLBACK_DEF(rb_window_set_iconify_callback, rb_window_iconify_callback, glfwSetWindowIconifyCallback);
@@ -954,8 +981,8 @@ RB_ENABLE_CALLBACK_DEF(rb_window_set_iconify_callback, rb_window_iconify_callbac
954
981
  static void rb_window_fbsize_callback(GLFWwindow *window, int width, int height)
955
982
  {
956
983
  VALUE rb_window = rb_lookup_window(window);
957
- VALUE rb_func = rb_ivar_get(rb_window, rb_intern(kRB_IVAR_WINDOW_FRAMEBUFFER_SIZE_CALLBACK));
958
- rb_funcall(rb_func, rb_intern("call"), 3, rb_window, INT2FIX(width), INT2FIX(height));
984
+ VALUE rb_func = rb_ivar_get(rb_window, kRB_IVAR_WINDOW_FRAMEBUFFER_SIZE_CALLBACK);
985
+ rb_funcall(rb_func, kRB_CALL, 3, rb_window, INT2FIX(width), INT2FIX(height));
959
986
  }
960
987
 
961
988
  RB_ENABLE_CALLBACK_DEF(rb_window_set_fbsize_callback, rb_window_fbsize_callback, glfwSetFramebufferSizeCallback);
@@ -1104,8 +1131,8 @@ static VALUE rb_window_set_cursor_pos(VALUE self, VALUE x, VALUE y)
1104
1131
  static void rb_window_key_callback(GLFWwindow *window, int key, int scancode, int action, int mods)
1105
1132
  {
1106
1133
  VALUE rb_window = rb_lookup_window(window);
1107
- VALUE rb_func = rb_ivar_get(rb_window, rb_intern(kRB_IVAR_WINDOW_KEY_CALLBACK));
1108
- rb_funcall(rb_func, rb_intern("call"), 5, rb_window, INT2FIX(key), INT2FIX(scancode), INT2FIX(action), INT2FIX(mods));
1134
+ VALUE rb_func = rb_ivar_get(rb_window, kRB_IVAR_WINDOW_KEY_CALLBACK);
1135
+ rb_funcall(rb_func, kRB_CALL, 5, rb_window, INT2FIX(key), INT2FIX(scancode), INT2FIX(action), INT2FIX(mods));
1109
1136
  }
1110
1137
 
1111
1138
  RB_ENABLE_CALLBACK_DEF(rb_window_set_key_callback, rb_window_key_callback, glfwSetKeyCallback);
@@ -1115,8 +1142,8 @@ RB_ENABLE_CALLBACK_DEF(rb_window_set_key_callback, rb_window_key_callback, glfwS
1115
1142
  static void rb_window_char_callback(GLFWwindow *window, unsigned int code)
1116
1143
  {
1117
1144
  VALUE rb_window = rb_lookup_window(window);
1118
- VALUE rb_func = rb_ivar_get(rb_window, rb_intern(kRB_IVAR_WINDOW_CHAR_CALLBACK));
1119
- rb_funcall(rb_func, rb_intern("call"), 2, rb_window, UINT2NUM(code));
1145
+ VALUE rb_func = rb_ivar_get(rb_window, kRB_IVAR_WINDOW_CHAR_CALLBACK);
1146
+ rb_funcall(rb_func, kRB_CALL, 2, rb_window, UINT2NUM(code));
1120
1147
  }
1121
1148
 
1122
1149
  RB_ENABLE_CALLBACK_DEF(rb_window_set_char_callback, rb_window_char_callback, glfwSetCharCallback);
@@ -1127,8 +1154,8 @@ RB_ENABLE_CALLBACK_DEF(rb_window_set_char_callback, rb_window_char_callback, glf
1127
1154
  static void rb_window_mouse_button_callback(GLFWwindow *window, int button, int action, int mods)
1128
1155
  {
1129
1156
  VALUE rb_window = rb_lookup_window(window);
1130
- VALUE rb_func = rb_ivar_get(rb_window, rb_intern(kRB_IVAR_WINDOW_MOUSE_BUTTON_CALLBACK));
1131
- rb_funcall(rb_func, rb_intern("call"), 4, rb_window, INT2FIX(button), INT2FIX(action), INT2FIX(mods));
1157
+ VALUE rb_func = rb_ivar_get(rb_window, kRB_IVAR_WINDOW_MOUSE_BUTTON_CALLBACK);
1158
+ rb_funcall(rb_func, kRB_CALL, 4, rb_window, INT2FIX(button), INT2FIX(action), INT2FIX(mods));
1132
1159
  }
1133
1160
 
1134
1161
  RB_ENABLE_CALLBACK_DEF(rb_window_set_mouse_button_callback, rb_window_mouse_button_callback, glfwSetMouseButtonCallback);
@@ -1138,8 +1165,8 @@ RB_ENABLE_CALLBACK_DEF(rb_window_set_mouse_button_callback, rb_window_mouse_butt
1138
1165
  static void rb_window_cursor_position_callback(GLFWwindow *window, double x, double y)
1139
1166
  {
1140
1167
  VALUE rb_window = rb_lookup_window(window);
1141
- VALUE rb_func = rb_ivar_get(rb_window, rb_intern(kRB_IVAR_WINDOW_CURSOR_POSITION_CALLBACK));
1142
- rb_funcall(rb_func, rb_intern("call"), 4, rb_window, rb_float_new(x), rb_float_new(y));
1168
+ VALUE rb_func = rb_ivar_get(rb_window, kRB_IVAR_WINDOW_CURSOR_POSITION_CALLBACK);
1169
+ rb_funcall(rb_func, kRB_CALL, 4, rb_window, rb_float_new(x), rb_float_new(y));
1143
1170
  }
1144
1171
 
1145
1172
  RB_ENABLE_CALLBACK_DEF(rb_window_set_cursor_position_callback, rb_window_cursor_position_callback, glfwSetCursorPosCallback);
@@ -1149,8 +1176,8 @@ RB_ENABLE_CALLBACK_DEF(rb_window_set_cursor_position_callback, rb_window_cursor_
1149
1176
  static void rb_window_cursor_enter_callback(GLFWwindow *window, int entered)
1150
1177
  {
1151
1178
  VALUE rb_window = rb_lookup_window(window);
1152
- VALUE rb_func = rb_ivar_get(rb_window, rb_intern(kRB_IVAR_WINDOW_CURSOR_ENTER_CALLBACK));
1153
- rb_funcall(rb_func, rb_intern("call"), 2, rb_window, entered ? Qtrue : Qfalse);
1179
+ VALUE rb_func = rb_ivar_get(rb_window, kRB_IVAR_WINDOW_CURSOR_ENTER_CALLBACK);
1180
+ rb_funcall(rb_func, kRB_CALL, 2, rb_window, entered ? Qtrue : Qfalse);
1154
1181
  }
1155
1182
 
1156
1183
  RB_ENABLE_CALLBACK_DEF(rb_window_set_cursor_enter_callback, rb_window_cursor_enter_callback, glfwSetCursorEnterCallback);
@@ -1160,8 +1187,8 @@ RB_ENABLE_CALLBACK_DEF(rb_window_set_cursor_enter_callback, rb_window_cursor_ent
1160
1187
  static void rb_window_scroll_callback(GLFWwindow *window, double x, double y)
1161
1188
  {
1162
1189
  VALUE rb_window = rb_lookup_window(window);
1163
- VALUE rb_func = rb_ivar_get(rb_window, rb_intern(kRB_IVAR_WINDOW_SCROLL_CALLBACK));
1164
- rb_funcall(rb_func, rb_intern("call"), 4, rb_window, rb_float_new(x), rb_float_new(y));
1190
+ VALUE rb_func = rb_ivar_get(rb_window, kRB_IVAR_WINDOW_SCROLL_CALLBACK);
1191
+ rb_funcall(rb_func, kRB_CALL, 4, rb_window, rb_float_new(x), rb_float_new(y));
1165
1192
  }
1166
1193
 
1167
1194
  RB_ENABLE_CALLBACK_DEF(rb_window_set_scroll_callback, rb_window_scroll_callback, glfwSetScrollCallback);
@@ -1444,6 +1471,28 @@ static VALUE rb_glfw_extension_supported(VALUE self, VALUE extension)
1444
1471
 
1445
1472
  void Init_glfw3(void)
1446
1473
  {
1474
+ kRB_IVAR_WINDOW_INTERNAL = rb_intern(kRB_IVAR_WINDOW_INTERNAL_NAME);
1475
+ kRB_IVAR_WINDOW_KEY_CALLBACK = rb_intern(kRB_IVAR_WINDOW_KEY_CALLBACK_NAME);
1476
+ kRB_IVAR_WINDOW_CHAR_CALLBACK = rb_intern(kRB_IVAR_WINDOW_CHAR_CALLBACK_NAME);
1477
+ kRB_IVAR_WINDOW_MOUSE_BUTTON_CALLBACK = rb_intern(kRB_IVAR_WINDOW_MOUSE_BUTTON_CALLBACK_NAME);
1478
+ kRB_IVAR_WINDOW_CURSOR_POSITION_CALLBACK = rb_intern(kRB_IVAR_WINDOW_CURSOR_POSITION_CALLBACK_NAME);
1479
+ kRB_IVAR_WINDOW_CURSOR_ENTER_CALLBACK = rb_intern(kRB_IVAR_WINDOW_CURSOR_ENTER_CALLBACK_NAME);
1480
+ kRB_IVAR_WINDOW_SCROLL_CALLBACK = rb_intern(kRB_IVAR_WINDOW_SCROLL_CALLBACK_NAME);
1481
+ kRB_IVAR_WINDOW_POSITION_CALLBACK = rb_intern(kRB_IVAR_WINDOW_POSITION_CALLBACK_NAME);
1482
+ kRB_IVAR_WINDOW_SIZE_CALLBACK = rb_intern(kRB_IVAR_WINDOW_SIZE_CALLBACK_NAME);
1483
+ kRB_IVAR_WINDOW_CLOSE_CALLBACK = rb_intern(kRB_IVAR_WINDOW_CLOSE_CALLBACK_NAME);
1484
+ kRB_IVAR_WINDOW_REFRESH_CALLBACK = rb_intern(kRB_IVAR_WINDOW_REFRESH_CALLBACK_NAME);
1485
+ kRB_IVAR_WINDOW_FOCUS_CALLBACK = rb_intern(kRB_IVAR_WINDOW_FOCUS_CALLBACK_NAME);
1486
+ kRB_IVAR_WINDOW_ICONIFY_CALLBACK = rb_intern(kRB_IVAR_WINDOW_ICONIFY_CALLBACK_NAME);
1487
+ kRB_IVAR_WINDOW_FRAMEBUFFER_SIZE_CALLBACK = rb_intern(kRB_IVAR_WINDOW_FRAMEBUFFER_SIZE_CALLBACK_NAME);
1488
+ kRB_CVAR_WINDOW_WINDOWS = rb_intern(kRB_CVAR_WINDOW_WINDOWS_NAME);
1489
+ kRB_CVAR_GLFW_ERROR_CALLBACK = rb_intern(kRB_CVAR_GLFW_ERROR_CALLBACK_NAME);
1490
+ kRB_CVAR_GLFW_MONITOR_CALLBACK = rb_intern(kRB_CVAR_GLFW_MONITOR_CALLBACK_NAME);
1491
+ kRB_CALL = rb_intern(kRB_CALL_NAME);
1492
+ kRB_RED = rb_intern(kRB_RED_NAME);
1493
+ kRB_GREEN = rb_intern(kRB_GREEN_NAME);
1494
+ kRB_BLUE = rb_intern(kRB_BLUE_NAME);
1495
+
1447
1496
  s_glfw_module = rb_define_module("Glfw");
1448
1497
  s_glfw_monitor_klass = rb_define_class_under(s_glfw_module, "Monitor", rb_cObject);
1449
1498
  s_glfw_window_klass = rb_define_class_under(s_glfw_module, "Window", rb_cObject);
@@ -1513,11 +1562,11 @@ void Init_glfw3(void)
1513
1562
  rb_define_method(s_glfw_window_klass, "set_scroll_callback__", rb_window_set_scroll_callback, 1);
1514
1563
  rb_define_method(s_glfw_window_klass, "clipboard_string=", rb_window_set_clipboard_string, 1);
1515
1564
  rb_define_method(s_glfw_window_klass, "clipboard_string", rb_window_get_clipboard_string, 0);
1516
- rb_cvar_set(s_glfw_window_klass, rb_intern(kRB_CVAR_WINDOW_WINDOWS), rb_hash_new());
1565
+ rb_cvar_set(s_glfw_window_klass, kRB_CVAR_WINDOW_WINDOWS, rb_hash_new());
1517
1566
 
1518
1567
  /* Glfw */
1519
- rb_cvar_set(s_glfw_module, rb_intern(kRB_CVAR_GLFW_ERROR_CALLBACK), Qnil);
1520
- rb_cvar_set(s_glfw_module, rb_intern(kRB_CVAR_GLFW_MONITOR_CALLBACK), Qnil);
1568
+ rb_cvar_set(s_glfw_module, kRB_CVAR_GLFW_ERROR_CALLBACK, Qnil);
1569
+ rb_cvar_set(s_glfw_module, kRB_CVAR_GLFW_MONITOR_CALLBACK, Qnil);
1521
1570
  rb_define_singleton_method(s_glfw_module, "version", rb_glfw_version, 0);
1522
1571
  rb_define_singleton_method(s_glfw_module, "terminate", rb_glfw_terminate, 0);
1523
1572
  rb_define_singleton_method(s_glfw_module, "init", rb_glfw_init, 0);
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: glfw3
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2
4
+ version: 0.3.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Noel Raymond Cower