rubygl 0.2.1 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (182) hide show
  1. checksums.yaml +8 -8
  2. data/Gemfile.lock +2 -0
  3. data/README.md +1 -1
  4. data/Rakefile +17 -9
  5. data/bin/ffi_code_gen.rb +11 -3
  6. data/ext/macosx/RubyGL.so +0 -0
  7. data/ext/macosx/SDL2.framework/Headers/SDL.h +163 -0
  8. data/ext/macosx/SDL2.framework/Headers/SDL_assert.h +284 -0
  9. data/ext/macosx/SDL2.framework/Headers/SDL_atomic.h +260 -0
  10. data/ext/macosx/SDL2.framework/Headers/SDL_audio.h +506 -0
  11. data/ext/macosx/SDL2.framework/Headers/SDL_bits.h +97 -0
  12. data/ext/macosx/SDL2.framework/Headers/SDL_blendmode.h +63 -0
  13. data/ext/macosx/SDL2.framework/Headers/SDL_clipboard.h +71 -0
  14. data/ext/macosx/SDL2.framework/Headers/SDL_config.h +55 -0
  15. data/ext/macosx/SDL2.framework/Headers/SDL_config_macosx.h +184 -0
  16. data/ext/macosx/SDL2.framework/Headers/SDL_copying.h +20 -0
  17. data/ext/macosx/SDL2.framework/Headers/SDL_cpuinfo.h +156 -0
  18. data/ext/macosx/SDL2.framework/Headers/SDL_endian.h +239 -0
  19. data/ext/macosx/SDL2.framework/Headers/SDL_error.h +76 -0
  20. data/ext/macosx/SDL2.framework/Headers/SDL_events.h +723 -0
  21. data/ext/macosx/SDL2.framework/Headers/SDL_filesystem.h +136 -0
  22. data/ext/macosx/SDL2.framework/Headers/SDL_gamecontroller.h +316 -0
  23. data/ext/macosx/SDL2.framework/Headers/SDL_gesture.h +87 -0
  24. data/ext/macosx/SDL2.framework/Headers/SDL_haptic.h +1225 -0
  25. data/ext/macosx/SDL2.framework/Headers/SDL_hints.h +517 -0
  26. data/ext/macosx/SDL2.framework/Headers/SDL_joystick.h +253 -0
  27. data/ext/macosx/SDL2.framework/Headers/SDL_keyboard.h +217 -0
  28. data/ext/macosx/SDL2.framework/Headers/SDL_keycode.h +341 -0
  29. data/ext/macosx/SDL2.framework/Headers/SDL_loadso.h +81 -0
  30. data/ext/macosx/SDL2.framework/Headers/SDL_log.h +211 -0
  31. data/ext/macosx/SDL2.framework/Headers/SDL_main.h +155 -0
  32. data/ext/macosx/SDL2.framework/Headers/SDL_messagebox.h +144 -0
  33. data/ext/macosx/SDL2.framework/Headers/SDL_mouse.h +224 -0
  34. data/ext/macosx/SDL2.framework/Headers/SDL_mutex.h +251 -0
  35. data/ext/macosx/SDL2.framework/Headers/SDL_name.h +33 -0
  36. data/ext/macosx/SDL2.framework/Headers/SDL_opengl.h +11126 -0
  37. data/ext/macosx/SDL2.framework/Headers/SDL_opengles.h +38 -0
  38. data/ext/macosx/SDL2.framework/Headers/SDL_opengles2.h +2790 -0
  39. data/ext/macosx/SDL2.framework/Headers/SDL_pixels.h +429 -0
  40. data/ext/macosx/SDL2.framework/Headers/SDL_platform.h +164 -0
  41. data/ext/macosx/SDL2.framework/Headers/SDL_power.h +75 -0
  42. data/ext/macosx/SDL2.framework/Headers/SDL_quit.h +58 -0
  43. data/ext/macosx/SDL2.framework/Headers/SDL_rect.h +138 -0
  44. data/ext/macosx/SDL2.framework/Headers/SDL_render.h +870 -0
  45. data/ext/macosx/SDL2.framework/Headers/SDL_revision.h +2 -0
  46. data/ext/macosx/SDL2.framework/Headers/SDL_rwops.h +232 -0
  47. data/ext/macosx/SDL2.framework/Headers/SDL_scancode.h +401 -0
  48. data/ext/macosx/SDL2.framework/Headers/SDL_shape.h +143 -0
  49. data/ext/macosx/SDL2.framework/Headers/SDL_stdinc.h +405 -0
  50. data/ext/macosx/SDL2.framework/Headers/SDL_surface.h +503 -0
  51. data/ext/macosx/SDL2.framework/Headers/SDL_system.h +191 -0
  52. data/ext/macosx/SDL2.framework/Headers/SDL_syswm.h +272 -0
  53. data/ext/macosx/SDL2.framework/Headers/SDL_thread.h +287 -0
  54. data/ext/macosx/SDL2.framework/Headers/SDL_timer.h +115 -0
  55. data/ext/macosx/SDL2.framework/Headers/SDL_touch.h +86 -0
  56. data/ext/macosx/SDL2.framework/Headers/SDL_types.h +29 -0
  57. data/ext/macosx/SDL2.framework/Headers/SDL_version.h +162 -0
  58. data/ext/macosx/SDL2.framework/Headers/SDL_video.h +979 -0
  59. data/ext/macosx/SDL2.framework/Headers/begin_code.h +140 -0
  60. data/ext/macosx/SDL2.framework/Headers/close_code.h +37 -0
  61. data/ext/macosx/SDL2.framework/Resources/Info.plist +42 -0
  62. data/ext/macosx/SDL2.framework/SDL2 +0 -0
  63. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL.h +163 -0
  64. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_assert.h +284 -0
  65. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_atomic.h +260 -0
  66. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_audio.h +506 -0
  67. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_bits.h +97 -0
  68. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_blendmode.h +63 -0
  69. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_clipboard.h +71 -0
  70. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_config.h +55 -0
  71. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_config_macosx.h +184 -0
  72. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_copying.h +20 -0
  73. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_cpuinfo.h +156 -0
  74. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_endian.h +239 -0
  75. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_error.h +76 -0
  76. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_events.h +723 -0
  77. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_filesystem.h +136 -0
  78. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_gamecontroller.h +316 -0
  79. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_gesture.h +87 -0
  80. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_haptic.h +1225 -0
  81. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_hints.h +517 -0
  82. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_joystick.h +253 -0
  83. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_keyboard.h +217 -0
  84. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_keycode.h +341 -0
  85. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_loadso.h +81 -0
  86. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_log.h +211 -0
  87. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_main.h +155 -0
  88. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_messagebox.h +144 -0
  89. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_mouse.h +224 -0
  90. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_mutex.h +251 -0
  91. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_name.h +33 -0
  92. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_opengl.h +11126 -0
  93. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_opengles.h +38 -0
  94. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_opengles2.h +2790 -0
  95. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_pixels.h +429 -0
  96. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_platform.h +164 -0
  97. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_power.h +75 -0
  98. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_quit.h +58 -0
  99. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_rect.h +138 -0
  100. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_render.h +870 -0
  101. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_revision.h +2 -0
  102. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_rwops.h +232 -0
  103. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_scancode.h +401 -0
  104. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_shape.h +143 -0
  105. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_stdinc.h +405 -0
  106. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_surface.h +503 -0
  107. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_system.h +191 -0
  108. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_syswm.h +272 -0
  109. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_thread.h +287 -0
  110. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_timer.h +115 -0
  111. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_touch.h +86 -0
  112. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_types.h +29 -0
  113. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_version.h +162 -0
  114. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_video.h +979 -0
  115. data/ext/macosx/SDL2.framework/Versions/A/Headers/begin_code.h +140 -0
  116. data/ext/macosx/SDL2.framework/Versions/A/Headers/close_code.h +37 -0
  117. data/ext/macosx/SDL2.framework/Versions/A/Resources/Info.plist +42 -0
  118. data/ext/macosx/SDL2.framework/Versions/A/SDL2 +0 -0
  119. data/ext/macosx/SDL2.framework/Versions/A/_CodeSignature/CodeResources +331 -0
  120. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL.h +163 -0
  121. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_assert.h +284 -0
  122. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_atomic.h +260 -0
  123. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_audio.h +506 -0
  124. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_bits.h +97 -0
  125. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_blendmode.h +63 -0
  126. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_clipboard.h +71 -0
  127. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_config.h +55 -0
  128. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_config_macosx.h +184 -0
  129. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_copying.h +20 -0
  130. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_cpuinfo.h +156 -0
  131. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_endian.h +239 -0
  132. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_error.h +76 -0
  133. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_events.h +723 -0
  134. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_filesystem.h +136 -0
  135. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_gamecontroller.h +316 -0
  136. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_gesture.h +87 -0
  137. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_haptic.h +1225 -0
  138. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_hints.h +517 -0
  139. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_joystick.h +253 -0
  140. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_keyboard.h +217 -0
  141. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_keycode.h +341 -0
  142. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_loadso.h +81 -0
  143. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_log.h +211 -0
  144. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_main.h +155 -0
  145. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_messagebox.h +144 -0
  146. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_mouse.h +224 -0
  147. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_mutex.h +251 -0
  148. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_name.h +33 -0
  149. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_opengl.h +11126 -0
  150. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_opengles.h +38 -0
  151. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_opengles2.h +2790 -0
  152. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_pixels.h +429 -0
  153. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_platform.h +164 -0
  154. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_power.h +75 -0
  155. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_quit.h +58 -0
  156. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_rect.h +138 -0
  157. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_render.h +870 -0
  158. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_revision.h +2 -0
  159. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_rwops.h +232 -0
  160. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_scancode.h +401 -0
  161. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_shape.h +143 -0
  162. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_stdinc.h +405 -0
  163. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_surface.h +503 -0
  164. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_system.h +191 -0
  165. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_syswm.h +272 -0
  166. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_thread.h +287 -0
  167. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_timer.h +115 -0
  168. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_touch.h +86 -0
  169. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_types.h +29 -0
  170. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_version.h +162 -0
  171. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_video.h +979 -0
  172. data/ext/macosx/SDL2.framework/Versions/Current/Headers/begin_code.h +140 -0
  173. data/ext/macosx/SDL2.framework/Versions/Current/Headers/close_code.h +37 -0
  174. data/ext/macosx/SDL2.framework/Versions/Current/Resources/Info.plist +42 -0
  175. data/ext/macosx/SDL2.framework/Versions/Current/SDL2 +0 -0
  176. data/ext/macosx/SDL2.framework/Versions/Current/_CodeSignature/CodeResources +331 -0
  177. data/ext/windows/RubyGL.so +0 -0
  178. data/lib/rubygl/native/opengl.rb +1052 -1044
  179. data/lib/rubygl/setup.rb +7 -4
  180. data/lib/rubygl.rb +12 -4
  181. data/rubygl.gemspec +3 -2
  182. metadata +174 -3
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- ZWE2NTJjYThmM2M2MGM0MmUwNmE5NTk1YmQxOTFiMTI5YTZkZjEzYg==
4
+ YjhjOWZmYTUyMDE3ZGRjYjdmYzU1MGQ5Yjk0MTcyMmIzYTY4MDgwZA==
5
5
  data.tar.gz: !binary |-
6
- ZDRmMDFhZmI3MjJkZDEwZTgwMDg2N2I4NGI2YmFmOGRjOTg5MjUxYQ==
6
+ NjhhZTFiY2I5ZjM5OWQ2ZjEzZjY5NGZmY2E3Zjg3YzlmOTI3NzYyYw==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- YjA1NWMzYzI1YTZiM2E2ZWEyYWI0NDUxYmM5ZmVlY2UyYThkOGU5M2RlN2Nk
10
- NDlhZjA3NGUwMWQ1ZTMzOTE4M2Q2MmI3OTg0NDM1ZWYyNTVmMzgyY2I2NjJk
11
- ODUzNGU0YTE5ZjFhYzY4OTFlYWJlYzgyYzI5YjQ0NWY0N2Q2OGI=
9
+ NzBiNmJlZWFmNmQ5OTc2ZTEyNTkwZjk5MWRkMDIyODA0MWI5ZWU0OWQ0YWU5
10
+ OGQ4MjVmMGQ1MWEwMDQzYmQ4ZjczMWY1ZjZjM2RhYTEyNmIzNTA3Mzg5ZmEz
11
+ OTAxNWVlMTVmYWYzZTQ4N2I2NDU0MTJjNGYxNzk3NTI0YzVhMDM=
12
12
  data.tar.gz: !binary |-
13
- ODNkNTRmZmUxMTVmODU4OWUxMmMwZGNiM2Q1YzBlNjE5NGJiZjc4MmRjODk1
14
- NjNlMTMxYTlhNzQ3OWZkZGEzOWNjZWE1ZjE0ZDFmODk0OWYyZTFhYmYyNDcx
15
- MDhmZGFhNWY1ODA5OTNhN2JkMTgyMmIyY2Y0MjMxZDllNmMzNzY=
13
+ MWI0YzY2ZWJlOWI2NDU2MDJiMGMyNjUxZGRiNzMwNDY3YzlkMDJkZDExNDIw
14
+ N2NjNmQwN2E1ZmNhNGQ5ZTYyYWJlNWE4YTI1Njc5MjMwZjQ3Y2UwODY0Nzll
15
+ YmIyMTI2N2QxYTNkMzJmMWFiY2U3MzM0NWY5MTVlNjVmZDY3YmM=
data/Gemfile.lock CHANGED
@@ -1,10 +1,12 @@
1
1
  GEM
2
2
  remote: https://rubygems.org/
3
3
  specs:
4
+ ffi (1.9.5)
4
5
  ffi (1.9.5-x86-mingw32)
5
6
  rake (0.9.6)
6
7
 
7
8
  PLATFORMS
9
+ ruby
8
10
  x86-mingw32
9
11
 
10
12
  DEPENDENCIES
data/README.md CHANGED
@@ -4,6 +4,7 @@ A Complete Solution For Graphics Programming In Ruby.
4
4
 
5
5
  Installing - [![Gem Version](https://badge.fury.io/rb/rubygl.svg)](http://badge.fury.io/rb/rubygl)
6
6
  ----------
7
+ Currently supports Windows and MacOSX out of the box.
7
8
  ```
8
9
  gem install rubygl
9
10
  ```
@@ -34,7 +35,6 @@ https://www.opengl.org/sdk/docs/man/ to see which functions are supported by eac
34
35
 
35
36
  Known Issues
36
37
  ------------
37
- - Only supports Windows at the moment (OSX support coming soon)
38
38
  - Not sure how to support Linux without requiring users to compile a shared library
39
39
  - Windows does not guarantee that OpenGL functions loaded during context creation will be valid for other contexts
40
40
  - Need to figure out how to efficiently swap these out if the user creates more than one context
data/Rakefile CHANGED
@@ -3,9 +3,8 @@ require 'rake/testtask'
3
3
  require 'tmpdir'
4
4
 
5
5
  # Dependency Locations
6
- SDL_INCLUDE = 'C:\Users\GG\Desktop\SDL2-2.0.3\i686-w64-mingw32\include\SDL2'
7
- SDL_LIB = 'C:\Users\GG\Desktop\SDL2-2.0.3\i686-w64-mingw32\lib'
8
- SDL_BIN = 'C:\Users\GG\Desktop\SDL2-2.0.3\i686-w64-mingw32\bin'
6
+ SDL_INCLUDE = 'ext/macosx/SDL2.framework/Headers'
7
+ SDL_LIB = 'ext/macosx'
9
8
 
10
9
  # C File Locations
11
10
  PROJ_INCLUDE = 'lib/rubygl/native/include/'
@@ -26,7 +25,7 @@ def os
26
25
  when /solaris|bsd/
27
26
  :unix
28
27
  else
29
- raise Error::WebDriverError, "unknown os: #{host_os.inspect}"
28
+ raise Error::WebDriverError, "Unknown OS: #{host_os.inspect}"
30
29
  end
31
30
  )
32
31
  end
@@ -37,19 +36,28 @@ task :default => [:bindings, :build, :clean]
37
36
 
38
37
  # Builds The RubyGL Shared Library From C Source Files And SDL Library
39
38
  task :build do
40
- files = ['Window', 'GLContext', 'Input', 'OpenGL']
39
+ files = ['Window', 'GLContext', 'Input']
40
+
41
+ # OpenGL Function On macosx Are Already Loaded
42
+ files << 'OpenGL' if os == :windows || os == :linux
41
43
 
42
44
  # Build Object Files
43
- obj = "gcc -I#{SDL_INCLUDE} -I#{PROJ_INCLUDE} -c -fPIC REPLACE.c -o REPLACE.o"
45
+ obj = "gcc -I#{SDL_INCLUDE} -I#{PROJ_INCLUDE} -c -fPIC REPLACE.c -o REPLACE.o"
44
46
  files.each { |file|
45
47
  sh (obj.gsub(/REPLACE/, PROJ_SRC + file))
46
48
  file = file.prepend PROJ_SRC
47
49
  }
48
50
 
49
51
  # Build Shared Object File
50
- bin = "gcc -L#{SDL_LIB} #{files.join('.o ') << '.o'} -lSDL2main -lSDL2 \
51
- -lopengl32 -shared -o ext/#{os.to_s}/RubyGL.so"
52
- sh bin
52
+ if os == :windows
53
+ sh "gcc -o ext/windows/RubyGL.so #{files.join('.o ') << '.o'} \
54
+ -shared -L#{SDL_LIB} -lSDL2main -lSDL2"
55
+ elsif os == :macosx
56
+ sh "gcc -o ext/macosx/RubyGL.so #{files.join('.o ') << '.o'} \
57
+ -shared -Fext/macosx -framework SDL2"
58
+ else
59
+ abort("No Library Build Command For Current OS")
60
+ end
53
61
  end
54
62
 
55
63
  # Created The Documentation For The Library
data/bin/ffi_code_gen.rb CHANGED
@@ -34,8 +34,8 @@ FFI_TYPES = { 'char' => 'char', 'signed char' => 'char',
34
34
  'uint16_t' => 'uint16', 'int' => 'int', 'unsigned int' => 'uint',
35
35
  'int32_t' => 'int32', 'uint32_t' => 'uint32', 'long int' => 'long',
36
36
  'unsigned long int' => 'ulong', 'int64_t' => 'int64', 'uint64_t' => 'uint64',
37
- 'long long int' => 'long_long', 'unsigned long long int' => 'ulong_long',
38
- 'float' => 'float', 'double' => 'double' }
37
+ 'long long int' => 'long_long', 'unsigned long long' => 'ulong_long',
38
+ 'unsigned long long int' => 'ulong_long', 'float' => 'float', 'double' => 'double' }
39
39
  FFI_PTR_TYPES = { /\Aconst +(?:unsigned +)?char *\*\Z/ => 'string', /\*/ => 'pointer' }
40
40
 
41
41
  # Open Pre-Processor(ed) Source File
@@ -80,6 +80,14 @@ gl_functions = source_code.scan(/^.+?gl.+?\(.*?\);$/)
80
80
  ffi_template = "require 'ffi'
81
81
 
82
82
  module RubyGL::Native
83
+ def self.unsafe_attach_function(func, args, returns, options = {})
84
+ begin
85
+ attach_function func, args, returns, options
86
+ rescue FFI::NotFoundError
87
+ # Ignore Functions Not Found
88
+ end
89
+ end
90
+
83
91
  FUNCTIONS_GO_HERE
84
92
 
85
93
  CONSTANTS_GO_HERE
@@ -89,7 +97,7 @@ end
89
97
  # Append Functions (Param Type -> Typedefs -> Ruby Type)
90
98
  buffer = ''
91
99
  gl_functions.each { |signature|
92
- buffer << ' ' * SOURCE_INDENTS + 'attach_function :' +
100
+ buffer << ' ' * SOURCE_INDENTS + 'unsafe_attach_function :' +
93
101
  signature[/(gl.*?)\(.*?\);/, 1] + ', ['
94
102
 
95
103
  # Get Type List
Binary file
@@ -0,0 +1,163 @@
1
+ /*
2
+ Simple DirectMedia Layer
3
+ Copyright (C) 1997-2014 Sam Lantinga <slouken@libsdl.org>
4
+
5
+ This software is provided 'as-is', without any express or implied
6
+ warranty. In no event will the authors be held liable for any damages
7
+ arising from the use of this software.
8
+
9
+ Permission is granted to anyone to use this software for any purpose,
10
+ including commercial applications, and to alter it and redistribute it
11
+ freely, subject to the following restrictions:
12
+
13
+ 1. The origin of this software must not be misrepresented; you must not
14
+ claim that you wrote the original software. If you use this software
15
+ in a product, an acknowledgment in the product documentation would be
16
+ appreciated but is not required.
17
+ 2. Altered source versions must be plainly marked as such, and must not be
18
+ misrepresented as being the original software.
19
+ 3. This notice may not be removed or altered from any source distribution.
20
+ */
21
+
22
+ /**
23
+ * \file SDL.h
24
+ *
25
+ * Main include header for the SDL library
26
+ */
27
+
28
+ /**
29
+ * \mainpage Simple DirectMedia Layer (SDL)
30
+ *
31
+ * http://www.libsdl.org/
32
+ *
33
+ * \section intro_sec Introduction
34
+ *
35
+ * Simple DirectMedia Layer is a cross-platform development library designed
36
+ * to provide low level access to audio, keyboard, mouse, joystick, and
37
+ * graphics hardware via OpenGL and Direct3D. It is used by video playback
38
+ * software, emulators, and popular games including Valve's award winning
39
+ * catalog and many Humble Bundle games.
40
+ *
41
+ * SDL officially supports Windows, Mac OS X, Linux, iOS, and Android.
42
+ * Support for other platforms may be found in the source code.
43
+ *
44
+ * SDL is written in C, works natively with C++, and there are bindings
45
+ * available for several other languages, including C# and Python.
46
+ *
47
+ * This library is distributed under the zlib license, which can be found
48
+ * in the file "COPYING.txt".
49
+ *
50
+ * The best way to learn how to use SDL is to check out the header files in
51
+ * the "include" subdirectory and the programs in the "test" subdirectory.
52
+ * The header files and test programs are well commented and always up to date.
53
+ * More documentation and FAQs are available online at:
54
+ * http://wiki.libsdl.org/
55
+ *
56
+ * If you need help with the library, or just want to discuss SDL related
57
+ * issues, you can join the developers mailing list:
58
+ * http://www.libsdl.org/mailing-list.php
59
+ *
60
+ * Enjoy!
61
+ * Sam Lantinga (slouken@libsdl.org)
62
+ */
63
+
64
+ #ifndef _SDL_H
65
+ #define _SDL_H
66
+
67
+ #include "SDL_main.h"
68
+ #include "SDL_stdinc.h"
69
+ #include "SDL_assert.h"
70
+ #include "SDL_atomic.h"
71
+ #include "SDL_audio.h"
72
+ #include "SDL_clipboard.h"
73
+ #include "SDL_cpuinfo.h"
74
+ #include "SDL_endian.h"
75
+ #include "SDL_error.h"
76
+ #include "SDL_events.h"
77
+ #include "SDL_filesystem.h"
78
+ #include "SDL_joystick.h"
79
+ #include "SDL_gamecontroller.h"
80
+ #include "SDL_haptic.h"
81
+ #include "SDL_hints.h"
82
+ #include "SDL_loadso.h"
83
+ #include "SDL_log.h"
84
+ #include "SDL_messagebox.h"
85
+ #include "SDL_mutex.h"
86
+ #include "SDL_power.h"
87
+ #include "SDL_render.h"
88
+ #include "SDL_rwops.h"
89
+ #include "SDL_system.h"
90
+ #include "SDL_thread.h"
91
+ #include "SDL_timer.h"
92
+ #include "SDL_version.h"
93
+ #include "SDL_video.h"
94
+
95
+ #include "begin_code.h"
96
+ /* Set up for C function definitions, even when using C++ */
97
+ #ifdef __cplusplus
98
+ extern "C" {
99
+ #endif
100
+
101
+ /* As of version 0.5, SDL is loaded dynamically into the application */
102
+
103
+ /**
104
+ * \name SDL_INIT_*
105
+ *
106
+ * These are the flags which may be passed to SDL_Init(). You should
107
+ * specify the subsystems which you will be using in your application.
108
+ */
109
+ /* @{ */
110
+ #define SDL_INIT_TIMER 0x00000001
111
+ #define SDL_INIT_AUDIO 0x00000010
112
+ #define SDL_INIT_VIDEO 0x00000020 /**< SDL_INIT_VIDEO implies SDL_INIT_EVENTS */
113
+ #define SDL_INIT_JOYSTICK 0x00000200 /**< SDL_INIT_JOYSTICK implies SDL_INIT_EVENTS */
114
+ #define SDL_INIT_HAPTIC 0x00001000
115
+ #define SDL_INIT_GAMECONTROLLER 0x00002000 /**< SDL_INIT_GAMECONTROLLER implies SDL_INIT_JOYSTICK */
116
+ #define SDL_INIT_EVENTS 0x00004000
117
+ #define SDL_INIT_NOPARACHUTE 0x00100000 /**< Don't catch fatal signals */
118
+ #define SDL_INIT_EVERYTHING ( \
119
+ SDL_INIT_TIMER | SDL_INIT_AUDIO | SDL_INIT_VIDEO | SDL_INIT_EVENTS | \
120
+ SDL_INIT_JOYSTICK | SDL_INIT_HAPTIC | SDL_INIT_GAMECONTROLLER \
121
+ )
122
+ /* @} */
123
+
124
+ /**
125
+ * This function initializes the subsystems specified by \c flags
126
+ * Unless the ::SDL_INIT_NOPARACHUTE flag is set, it will install cleanup
127
+ * signal handlers for some commonly ignored fatal signals (like SIGSEGV).
128
+ */
129
+ extern DECLSPEC int SDLCALL SDL_Init(Uint32 flags);
130
+
131
+ /**
132
+ * This function initializes specific SDL subsystems
133
+ */
134
+ extern DECLSPEC int SDLCALL SDL_InitSubSystem(Uint32 flags);
135
+
136
+ /**
137
+ * This function cleans up specific SDL subsystems
138
+ */
139
+ extern DECLSPEC void SDLCALL SDL_QuitSubSystem(Uint32 flags);
140
+
141
+ /**
142
+ * This function returns a mask of the specified subsystems which have
143
+ * previously been initialized.
144
+ *
145
+ * If \c flags is 0, it returns a mask of all initialized subsystems.
146
+ */
147
+ extern DECLSPEC Uint32 SDLCALL SDL_WasInit(Uint32 flags);
148
+
149
+ /**
150
+ * This function cleans up all initialized subsystems. You should
151
+ * call it upon all exit conditions.
152
+ */
153
+ extern DECLSPEC void SDLCALL SDL_Quit(void);
154
+
155
+ /* Ends C function definitions when using C++ */
156
+ #ifdef __cplusplus
157
+ }
158
+ #endif
159
+ #include "close_code.h"
160
+
161
+ #endif /* _SDL_H */
162
+
163
+ /* vi: set ts=4 sw=4 expandtab: */
@@ -0,0 +1,284 @@
1
+ /*
2
+ Simple DirectMedia Layer
3
+ Copyright (C) 1997-2014 Sam Lantinga <slouken@libsdl.org>
4
+
5
+ This software is provided 'as-is', without any express or implied
6
+ warranty. In no event will the authors be held liable for any damages
7
+ arising from the use of this software.
8
+
9
+ Permission is granted to anyone to use this software for any purpose,
10
+ including commercial applications, and to alter it and redistribute it
11
+ freely, subject to the following restrictions:
12
+
13
+ 1. The origin of this software must not be misrepresented; you must not
14
+ claim that you wrote the original software. If you use this software
15
+ in a product, an acknowledgment in the product documentation would be
16
+ appreciated but is not required.
17
+ 2. Altered source versions must be plainly marked as such, and must not be
18
+ misrepresented as being the original software.
19
+ 3. This notice may not be removed or altered from any source distribution.
20
+ */
21
+
22
+ #ifndef _SDL_assert_h
23
+ #define _SDL_assert_h
24
+
25
+ #include "SDL_config.h"
26
+
27
+ #include "begin_code.h"
28
+ /* Set up for C function definitions, even when using C++ */
29
+ #ifdef __cplusplus
30
+ extern "C" {
31
+ #endif
32
+
33
+ #ifndef SDL_ASSERT_LEVEL
34
+ #ifdef SDL_DEFAULT_ASSERT_LEVEL
35
+ #define SDL_ASSERT_LEVEL SDL_DEFAULT_ASSERT_LEVEL
36
+ #elif defined(_DEBUG) || defined(DEBUG) || \
37
+ (defined(__GNUC__) && !defined(__OPTIMIZE__))
38
+ #define SDL_ASSERT_LEVEL 2
39
+ #else
40
+ #define SDL_ASSERT_LEVEL 1
41
+ #endif
42
+ #endif /* SDL_ASSERT_LEVEL */
43
+
44
+ /*
45
+ These are macros and not first class functions so that the debugger breaks
46
+ on the assertion line and not in some random guts of SDL, and so each
47
+ assert can have unique static variables associated with it.
48
+ */
49
+
50
+ #if defined(_MSC_VER)
51
+ /* Don't include intrin.h here because it contains C++ code */
52
+ extern void __cdecl __debugbreak(void);
53
+ #define SDL_TriggerBreakpoint() __debugbreak()
54
+ #elif (defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__)))
55
+ #define SDL_TriggerBreakpoint() __asm__ __volatile__ ( "int $3\n\t" )
56
+ #elif defined(HAVE_SIGNAL_H)
57
+ #include <signal.h>
58
+ #define SDL_TriggerBreakpoint() raise(SIGTRAP)
59
+ #else
60
+ /* How do we trigger breakpoints on this platform? */
61
+ #define SDL_TriggerBreakpoint()
62
+ #endif
63
+
64
+ #if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 supports __func__ as a standard. */
65
+ # define SDL_FUNCTION __func__
66
+ #elif ((__GNUC__ >= 2) || defined(_MSC_VER))
67
+ # define SDL_FUNCTION __FUNCTION__
68
+ #else
69
+ # define SDL_FUNCTION "???"
70
+ #endif
71
+ #define SDL_FILE __FILE__
72
+ #define SDL_LINE __LINE__
73
+
74
+ /*
75
+ sizeof (x) makes the compiler still parse the expression even without
76
+ assertions enabled, so the code is always checked at compile time, but
77
+ doesn't actually generate code for it, so there are no side effects or
78
+ expensive checks at run time, just the constant size of what x WOULD be,
79
+ which presumably gets optimized out as unused.
80
+ This also solves the problem of...
81
+
82
+ int somevalue = blah();
83
+ SDL_assert(somevalue == 1);
84
+
85
+ ...which would cause compiles to complain that somevalue is unused if we
86
+ disable assertions.
87
+ */
88
+
89
+ #ifdef _MSC_VER /* stupid /W4 warnings. */
90
+ #define SDL_NULL_WHILE_LOOP_CONDITION (-1 == __LINE__)
91
+ #else
92
+ #define SDL_NULL_WHILE_LOOP_CONDITION (0)
93
+ #endif
94
+
95
+ #define SDL_disabled_assert(condition) \
96
+ do { (void) sizeof ((condition)); } while (SDL_NULL_WHILE_LOOP_CONDITION)
97
+
98
+ typedef enum
99
+ {
100
+ SDL_ASSERTION_RETRY, /**< Retry the assert immediately. */
101
+ SDL_ASSERTION_BREAK, /**< Make the debugger trigger a breakpoint. */
102
+ SDL_ASSERTION_ABORT, /**< Terminate the program. */
103
+ SDL_ASSERTION_IGNORE, /**< Ignore the assert. */
104
+ SDL_ASSERTION_ALWAYS_IGNORE /**< Ignore the assert from now on. */
105
+ } SDL_assert_state;
106
+
107
+ typedef struct SDL_assert_data
108
+ {
109
+ int always_ignore;
110
+ unsigned int trigger_count;
111
+ const char *condition;
112
+ const char *filename;
113
+ int linenum;
114
+ const char *function;
115
+ const struct SDL_assert_data *next;
116
+ } SDL_assert_data;
117
+
118
+ #if (SDL_ASSERT_LEVEL > 0)
119
+
120
+ /* Never call this directly. Use the SDL_assert* macros. */
121
+ extern DECLSPEC SDL_assert_state SDLCALL SDL_ReportAssertion(SDL_assert_data *,
122
+ const char *,
123
+ const char *, int)
124
+ #if defined(__clang__)
125
+ #if __has_feature(attribute_analyzer_noreturn)
126
+ /* this tells Clang's static analysis that we're a custom assert function,
127
+ and that the analyzer should assume the condition was always true past this
128
+ SDL_assert test. */
129
+ __attribute__((analyzer_noreturn))
130
+ #endif
131
+ #endif
132
+ ;
133
+
134
+ /* the do {} while(0) avoids dangling else problems:
135
+ if (x) SDL_assert(y); else blah();
136
+ ... without the do/while, the "else" could attach to this macro's "if".
137
+ We try to handle just the minimum we need here in a macro...the loop,
138
+ the static vars, and break points. The heavy lifting is handled in
139
+ SDL_ReportAssertion(), in SDL_assert.c.
140
+ */
141
+ #define SDL_enabled_assert(condition) \
142
+ do { \
143
+ while ( !(condition) ) { \
144
+ static struct SDL_assert_data assert_data = { \
145
+ 0, 0, #condition, 0, 0, 0, 0 \
146
+ }; \
147
+ const SDL_assert_state state = SDL_ReportAssertion(&assert_data, \
148
+ SDL_FUNCTION, \
149
+ SDL_FILE, \
150
+ SDL_LINE); \
151
+ if (state == SDL_ASSERTION_RETRY) { \
152
+ continue; /* go again. */ \
153
+ } else if (state == SDL_ASSERTION_BREAK) { \
154
+ SDL_TriggerBreakpoint(); \
155
+ } \
156
+ break; /* not retrying. */ \
157
+ } \
158
+ } while (SDL_NULL_WHILE_LOOP_CONDITION)
159
+
160
+ #endif /* enabled assertions support code */
161
+
162
+ /* Enable various levels of assertions. */
163
+ #if SDL_ASSERT_LEVEL == 0 /* assertions disabled */
164
+ # define SDL_assert(condition) SDL_disabled_assert(condition)
165
+ # define SDL_assert_release(condition) SDL_disabled_assert(condition)
166
+ # define SDL_assert_paranoid(condition) SDL_disabled_assert(condition)
167
+ #elif SDL_ASSERT_LEVEL == 1 /* release settings. */
168
+ # define SDL_assert(condition) SDL_disabled_assert(condition)
169
+ # define SDL_assert_release(condition) SDL_enabled_assert(condition)
170
+ # define SDL_assert_paranoid(condition) SDL_disabled_assert(condition)
171
+ #elif SDL_ASSERT_LEVEL == 2 /* normal settings. */
172
+ # define SDL_assert(condition) SDL_enabled_assert(condition)
173
+ # define SDL_assert_release(condition) SDL_enabled_assert(condition)
174
+ # define SDL_assert_paranoid(condition) SDL_disabled_assert(condition)
175
+ #elif SDL_ASSERT_LEVEL == 3 /* paranoid settings. */
176
+ # define SDL_assert(condition) SDL_enabled_assert(condition)
177
+ # define SDL_assert_release(condition) SDL_enabled_assert(condition)
178
+ # define SDL_assert_paranoid(condition) SDL_enabled_assert(condition)
179
+ #else
180
+ # error Unknown assertion level.
181
+ #endif
182
+
183
+ /* this assertion is never disabled at any level. */
184
+ #define SDL_assert_always(condition) SDL_enabled_assert(condition)
185
+
186
+
187
+ typedef SDL_assert_state (SDLCALL *SDL_AssertionHandler)(
188
+ const SDL_assert_data* data, void* userdata);
189
+
190
+ /**
191
+ * \brief Set an application-defined assertion handler.
192
+ *
193
+ * This allows an app to show its own assertion UI and/or force the
194
+ * response to an assertion failure. If the app doesn't provide this, SDL
195
+ * will try to do the right thing, popping up a system-specific GUI dialog,
196
+ * and probably minimizing any fullscreen windows.
197
+ *
198
+ * This callback may fire from any thread, but it runs wrapped in a mutex, so
199
+ * it will only fire from one thread at a time.
200
+ *
201
+ * Setting the callback to NULL restores SDL's original internal handler.
202
+ *
203
+ * This callback is NOT reset to SDL's internal handler upon SDL_Quit()!
204
+ *
205
+ * \return SDL_assert_state value of how to handle the assertion failure.
206
+ *
207
+ * \param handler Callback function, called when an assertion fails.
208
+ * \param userdata A pointer passed to the callback as-is.
209
+ */
210
+ extern DECLSPEC void SDLCALL SDL_SetAssertionHandler(
211
+ SDL_AssertionHandler handler,
212
+ void *userdata);
213
+
214
+ /**
215
+ * \brief Get the default assertion handler.
216
+ *
217
+ * This returns the function pointer that is called by default when an
218
+ * assertion is triggered. This is an internal function provided by SDL,
219
+ * that is used for assertions when SDL_SetAssertionHandler() hasn't been
220
+ * used to provide a different function.
221
+ *
222
+ * \return The default SDL_AssertionHandler that is called when an assert triggers.
223
+ */
224
+ extern DECLSPEC SDL_AssertionHandler SDLCALL SDL_GetDefaultAssertionHandler(void);
225
+
226
+ /**
227
+ * \brief Get the current assertion handler.
228
+ *
229
+ * This returns the function pointer that is called when an assertion is
230
+ * triggered. This is either the value last passed to
231
+ * SDL_SetAssertionHandler(), or if no application-specified function is
232
+ * set, is equivalent to calling SDL_GetDefaultAssertionHandler().
233
+ *
234
+ * \param puserdata Pointer to a void*, which will store the "userdata"
235
+ * pointer that was passed to SDL_SetAssertionHandler().
236
+ * This value will always be NULL for the default handler.
237
+ * If you don't care about this data, it is safe to pass
238
+ * a NULL pointer to this function to ignore it.
239
+ * \return The SDL_AssertionHandler that is called when an assert triggers.
240
+ */
241
+ extern DECLSPEC SDL_AssertionHandler SDLCALL SDL_GetAssertionHandler(void **puserdata);
242
+
243
+ /**
244
+ * \brief Get a list of all assertion failures.
245
+ *
246
+ * Get all assertions triggered since last call to SDL_ResetAssertionReport(),
247
+ * or the start of the program.
248
+ *
249
+ * The proper way to examine this data looks something like this:
250
+ *
251
+ * <code>
252
+ * const SDL_assert_data *item = SDL_GetAssertionReport();
253
+ * while (item) {
254
+ * printf("'%s', %s (%s:%d), triggered %u times, always ignore: %s.\n",
255
+ * item->condition, item->function, item->filename,
256
+ * item->linenum, item->trigger_count,
257
+ * item->always_ignore ? "yes" : "no");
258
+ * item = item->next;
259
+ * }
260
+ * </code>
261
+ *
262
+ * \return List of all assertions.
263
+ * \sa SDL_ResetAssertionReport
264
+ */
265
+ extern DECLSPEC const SDL_assert_data * SDLCALL SDL_GetAssertionReport(void);
266
+
267
+ /**
268
+ * \brief Reset the list of all assertion failures.
269
+ *
270
+ * Reset list of all assertions triggered.
271
+ *
272
+ * \sa SDL_GetAssertionReport
273
+ */
274
+ extern DECLSPEC void SDLCALL SDL_ResetAssertionReport(void);
275
+
276
+ /* Ends C function definitions when using C++ */
277
+ #ifdef __cplusplus
278
+ }
279
+ #endif
280
+ #include "close_code.h"
281
+
282
+ #endif /* _SDL_assert_h */
283
+
284
+ /* vi: set ts=4 sw=4 expandtab: */