ray 0.0.1 → 0.1.0.pre1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (188) hide show
  1. data/.gemtest +0 -0
  2. data/.yardopts +4 -0
  3. data/README.md +17 -21
  4. data/Rakefile +18 -139
  5. data/VERSION +1 -1
  6. data/ext/audio.cpp +723 -0
  7. data/ext/{color.c → color.cpp} +25 -13
  8. data/ext/drawable.cpp +91 -0
  9. data/ext/event.cpp +460 -0
  10. data/ext/extconf.rb +5 -104
  11. data/ext/font.cpp +190 -0
  12. data/ext/image.cpp +733 -0
  13. data/ext/input.cpp +74 -0
  14. data/ext/ray.cpp +168 -0
  15. data/ext/ray.hpp +356 -0
  16. data/ext/{rect.c → rect.cpp} +51 -37
  17. data/ext/shader.cpp +169 -0
  18. data/ext/shape.cpp +409 -0
  19. data/ext/sprite.cpp +306 -0
  20. data/ext/text.cpp +181 -0
  21. data/ext/vector.cpp +215 -0
  22. data/guide.md +619 -0
  23. data/lib/ray/audio.rb +0 -41
  24. data/lib/ray/color.rb +32 -10
  25. data/lib/ray/drawable.rb +16 -0
  26. data/lib/ray/dsl/event_listener.rb +25 -2
  27. data/lib/ray/dsl/event_runner.rb +33 -5
  28. data/lib/ray/dsl/event_translator.rb +66 -30
  29. data/lib/ray/dsl/handler.rb +3 -2
  30. data/lib/ray/dsl/matcher.rb +58 -14
  31. data/lib/ray/font.rb +38 -96
  32. data/lib/ray/font_set.rb +8 -8
  33. data/lib/ray/game.rb +87 -66
  34. data/lib/ray/helper.rb +105 -10
  35. data/lib/ray/image.rb +150 -24
  36. data/lib/ray/image_set.rb +3 -1
  37. data/lib/ray/input.rb +10 -0
  38. data/lib/ray/music_set.rb +5 -3
  39. data/lib/ray/ray.rb +21 -9
  40. data/lib/ray/rect.rb +48 -7
  41. data/lib/ray/rmagick.rb +41 -0
  42. data/lib/ray/scene.rb +99 -43
  43. data/lib/ray/scene_list.rb +67 -0
  44. data/lib/ray/shape.rb +132 -0
  45. data/lib/ray/sound_set.rb +4 -2
  46. data/lib/ray/sprite.rb +49 -111
  47. data/lib/ray/text.rb +101 -0
  48. data/lib/ray/text_helper.rb +37 -0
  49. data/lib/ray/turtle.rb +215 -0
  50. data/lib/ray/vector.rb +226 -0
  51. data/samples/audio/spacial.rb +44 -0
  52. data/samples/hello_world/hello.rb +9 -13
  53. data/samples/hello_world/hello_dsl.rb +8 -12
  54. data/samples/hello_world/text.rb +15 -0
  55. data/samples/opengl/binding.rb +38 -0
  56. data/samples/opengl/image.rb +32 -0
  57. data/samples/opengl/opengl.rb +34 -0
  58. data/samples/opengl/shader.rb +42 -0
  59. data/samples/pong/pong.rb +14 -10
  60. data/samples/run_scene.rb +53 -0
  61. data/samples/shaders/scene.rb +40 -0
  62. data/samples/shaders/shaders.rb +42 -0
  63. data/samples/shaders/shape.rb +34 -0
  64. data/samples/sokoban/sokoban.rb +18 -18
  65. data/samples/test/actual_scene.rb +41 -0
  66. data/samples/test/scene_riot.rb +39 -0
  67. data/samples/test/scene_spec.rb +32 -0
  68. data/samples/test/scene_test_unit.rb +25 -0
  69. data/samples/turtle/byzantium.rb +45 -0
  70. data/samples/turtle/hilbert.rb +48 -0
  71. data/samples/turtle/koch.rb +55 -0
  72. data/samples/turtle/mandala.rb +61 -0
  73. data/samples/turtle/tree.rb +57 -0
  74. data/test/audio_test.rb +69 -0
  75. data/test/color_test.rb +77 -0
  76. data/test/drawable_test.rb +19 -0
  77. data/test/dsl_test.rb +93 -0
  78. data/test/font_test.rb +57 -0
  79. data/test/helpers.rb +94 -0
  80. data/test/image_test.rb +82 -0
  81. data/test/ray_test.rb +25 -0
  82. data/test/rect_test.rb +121 -0
  83. data/{spec → test}/res/VeraMono.ttf +0 -0
  84. data/{spec → test}/res/aqua.bmp +0 -0
  85. data/{spec → test}/res/aqua.png +0 -0
  86. data/{spec → test}/res/aqua2.bmp +0 -0
  87. data/{spec → test}/res/not_a_jpeg.jpeg +0 -0
  88. data/{spec → test}/res/pop.wav +0 -0
  89. data/test/resource_set_test.rb +99 -0
  90. data/test/run_all.rb +7 -0
  91. data/test/shape_test.rb +101 -0
  92. data/test/sprite_test.rb +89 -0
  93. data/test/text_test.rb +78 -0
  94. data/test/turtle_test.rb +176 -0
  95. data/test/vector_test.rb +111 -0
  96. data/yard_ext.rb +0 -28
  97. metadata +95 -139
  98. data/.gitignore +0 -23
  99. data/.gitmodules +0 -3
  100. data/.rspec +0 -3
  101. data/ext/audio.c +0 -473
  102. data/ext/event.c +0 -557
  103. data/ext/font.c +0 -287
  104. data/ext/image.c +0 -933
  105. data/ext/joystick.c +0 -145
  106. data/ext/ray.c +0 -489
  107. data/ext/ray.h +0 -245
  108. data/ext/ray_osx.m +0 -161
  109. data/lib/ray/joystick.rb +0 -30
  110. data/psp/SDL_psp_main.c +0 -84
  111. data/psp/bigdecimal/README +0 -60
  112. data/psp/bigdecimal/bigdecimal.c +0 -4697
  113. data/psp/bigdecimal/bigdecimal.h +0 -216
  114. data/psp/bigdecimal/lib/bigdecimal/jacobian.rb +0 -85
  115. data/psp/bigdecimal/lib/bigdecimal/ludcmp.rb +0 -84
  116. data/psp/bigdecimal/lib/bigdecimal/math.rb +0 -235
  117. data/psp/bigdecimal/lib/bigdecimal/newton.rb +0 -77
  118. data/psp/bigdecimal/lib/bigdecimal/util.rb +0 -65
  119. data/psp/digest/bubblebabble/bubblebabble.c +0 -142
  120. data/psp/digest/defs.h +0 -20
  121. data/psp/digest/digest.c +0 -643
  122. data/psp/digest/digest.h +0 -32
  123. data/psp/digest/lib/digest.rb +0 -50
  124. data/psp/digest/lib/md5.rb +0 -27
  125. data/psp/digest/lib/sha1.rb +0 -27
  126. data/psp/digest/md5/md5.c +0 -420
  127. data/psp/digest/md5/md5.h +0 -80
  128. data/psp/digest/md5/md5init.c +0 -40
  129. data/psp/digest/rmd160/rmd160.c +0 -457
  130. data/psp/digest/rmd160/rmd160.h +0 -56
  131. data/psp/digest/rmd160/rmd160init.c +0 -40
  132. data/psp/digest/sha1/sha1.c +0 -269
  133. data/psp/digest/sha1/sha1.h +0 -39
  134. data/psp/digest/sha1/sha1init.c +0 -40
  135. data/psp/digest/sha2/lib/sha2.rb +0 -73
  136. data/psp/digest/sha2/sha2.c +0 -919
  137. data/psp/digest/sha2/sha2.h +0 -109
  138. data/psp/digest/sha2/sha2init.c +0 -52
  139. data/psp/enumerator/enumerator.c +0 -298
  140. data/psp/etc/etc.c +0 -559
  141. data/psp/ext.c +0 -289
  142. data/psp/fcntl/fcntl.c +0 -187
  143. data/psp/lib/rbconfig.rb +0 -178
  144. data/psp/nkf/lib/kconv.rb +0 -367
  145. data/psp/nkf/nkf-utf8/config.h +0 -88
  146. data/psp/nkf/nkf-utf8/nkf.c +0 -6040
  147. data/psp/nkf/nkf-utf8/utf8tbl.c +0 -8500
  148. data/psp/nkf/nkf-utf8/utf8tbl.h +0 -34
  149. data/psp/nkf/nkf.c +0 -654
  150. data/psp/socket/addrinfo.h +0 -173
  151. data/psp/socket/getaddrinfo.c +0 -676
  152. data/psp/socket/getnameinfo.c +0 -270
  153. data/psp/socket/pspsocket.c +0 -71
  154. data/psp/socket/pspsocket.h +0 -28
  155. data/psp/socket/socket.c +0 -4662
  156. data/psp/socket/sockport.h +0 -76
  157. data/psp/stringio/stringio.c +0 -1306
  158. data/psp/strscan/strscan.c +0 -1320
  159. data/psp/syck/bytecode.c +0 -1166
  160. data/psp/syck/emitter.c +0 -1242
  161. data/psp/syck/gram.c +0 -1894
  162. data/psp/syck/gram.h +0 -79
  163. data/psp/syck/handler.c +0 -174
  164. data/psp/syck/implicit.c +0 -2990
  165. data/psp/syck/node.c +0 -408
  166. data/psp/syck/rubyext.c +0 -2367
  167. data/psp/syck/syck.c +0 -504
  168. data/psp/syck/syck.h +0 -456
  169. data/psp/syck/token.c +0 -2725
  170. data/psp/syck/yaml2byte.c +0 -257
  171. data/psp/syck/yamlbyte.h +0 -170
  172. data/psp/thread/thread.c +0 -1175
  173. data/psp/zlib/zlib.c +0 -3547
  174. data/script.rb +0 -10
  175. data/spec/ray/audio_spec.rb +0 -146
  176. data/spec/ray/color_spec.rb +0 -57
  177. data/spec/ray/event_spec.rb +0 -80
  178. data/spec/ray/font_spec.rb +0 -93
  179. data/spec/ray/image_set_spec.rb +0 -48
  180. data/spec/ray/image_spec.rb +0 -162
  181. data/spec/ray/joystick_spec.rb +0 -21
  182. data/spec/ray/matcher_spec.rb +0 -50
  183. data/spec/ray/ray_spec.rb +0 -88
  184. data/spec/ray/rect_spec.rb +0 -154
  185. data/spec/ray/resource_set_spec.rb +0 -105
  186. data/spec/ray/sprite_spec.rb +0 -163
  187. data/spec/spec.opts +0 -4
  188. data/spec/spec_helper.rb +0 -8
@@ -19,13 +19,7 @@ end
19
19
  class CustomCParser < YARD::Parser::CParser
20
20
  include YARD
21
21
 
22
- def parse
23
- super
24
- parse_constants
25
- end
26
-
27
22
  private
28
-
29
23
  def find_method_body(object, func_name, content = @content)
30
24
  case content
31
25
  when %r"((?>/\*.*?\*/\s*))(?:(?:static|SWIGINTERN)\s+)?(?:intern\s+)?VALUE\s+#{func_name}
@@ -63,28 +57,6 @@ class CustomCParser < YARD::Parser::CParser
63
57
  object.docstring = parse_comments(object, comment) if comment
64
58
  end
65
59
  end
66
-
67
- def handle_constants(type, var_name, const_name, definition)
68
- namespace = @namespaces[var_name]
69
- obj = CodeObjects::ConstantObject.new(namespace, const_name)
70
- obj.value = definition
71
- end
72
-
73
- def parse_constants
74
- @content.scan(%r{\Wrb_define_
75
- ( variable |
76
- readonly_variable |
77
- const |
78
- global_const | )
79
- \s*\(
80
- (?:\s*(\w+),)?
81
- \s*"(\w+)",
82
- \s*(.*?)\s*\)\s*;
83
- }xm) do |type, var_name, const_name, definition|
84
- var_name = "rb_cObject" if !var_name or var_name == "rb_mKernel"
85
- handle_constants type, var_name, const_name, definition
86
- end
87
- end
88
60
  end
89
61
 
90
62
  YARD::Parser::SourceParser.register_parser_type(:c, CustomCParser,
metadata CHANGED
@@ -1,12 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ray
3
3
  version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 0
7
- - 0
8
- - 1
9
- version: 0.0.1
4
+ prerelease: 6
5
+ version: 0.1.0.pre1
10
6
  platform: ruby
11
7
  authors:
12
8
  - "Mon ou\xC3\xAFe"
@@ -14,7 +10,7 @@ autorequire:
14
10
  bindir: bin
15
11
  cert_chain: []
16
12
 
17
- date: 2010-10-17 00:00:00 +02:00
13
+ date: 2011-02-19 00:00:00 +01:00
18
14
  default_executable:
19
15
  dependencies:
20
16
  - !ruby/object:Gem::Dependency
@@ -25,8 +21,6 @@ dependencies:
25
21
  requirements:
26
22
  - - ">="
27
23
  - !ruby/object:Gem::Version
28
- segments:
29
- - 0
30
24
  version: "0"
31
25
  type: :development
32
26
  version_requirements: *id001
@@ -38,34 +32,28 @@ dependencies:
38
32
  requirements:
39
33
  - - ">="
40
34
  - !ruby/object:Gem::Version
41
- segments:
42
- - 0
43
35
  version: "0"
44
36
  type: :development
45
37
  version_requirements: *id002
46
38
  - !ruby/object:Gem::Dependency
47
- name: rspec
39
+ name: riot
48
40
  prerelease: false
49
41
  requirement: &id003 !ruby/object:Gem::Requirement
50
42
  none: false
51
43
  requirements:
52
44
  - - ">="
53
45
  - !ruby/object:Gem::Version
54
- segments:
55
- - 0
56
46
  version: "0"
57
47
  type: :development
58
48
  version_requirements: *id003
59
49
  - !ruby/object:Gem::Dependency
60
- name: psp_task
50
+ name: rr
61
51
  prerelease: false
62
52
  requirement: &id004 !ruby/object:Gem::Requirement
63
53
  none: false
64
54
  requirements:
65
55
  - - ">="
66
56
  - !ruby/object:Gem::Version
67
- segments:
68
- - 0
69
57
  version: "0"
70
58
  type: :development
71
59
  version_requirements: *id004
@@ -78,26 +66,32 @@ extensions:
78
66
  extra_rdoc_files:
79
67
  - README.md
80
68
  files:
81
- - .gitignore
82
- - .gitmodules
83
- - .rspec
69
+ - .gemtest
70
+ - .yardopts
84
71
  - README.md
85
72
  - Rakefile
86
73
  - VERSION
87
- - ext/audio.c
88
- - ext/color.c
89
- - ext/event.c
74
+ - ext/audio.cpp
75
+ - ext/color.cpp
76
+ - ext/drawable.cpp
77
+ - ext/event.cpp
90
78
  - ext/extconf.rb
91
- - ext/font.c
92
- - ext/image.c
93
- - ext/joystick.c
94
- - ext/ray.c
95
- - ext/ray.h
96
- - ext/ray_osx.m
97
- - ext/rect.c
79
+ - ext/font.cpp
80
+ - ext/image.cpp
81
+ - ext/input.cpp
82
+ - ext/ray.cpp
83
+ - ext/ray.hpp
84
+ - ext/rect.cpp
85
+ - ext/shader.cpp
86
+ - ext/shape.cpp
87
+ - ext/sprite.cpp
88
+ - ext/text.cpp
89
+ - ext/vector.cpp
90
+ - guide.md
98
91
  - lib/ray.rb
99
92
  - lib/ray/audio.rb
100
93
  - lib/ray/color.rb
94
+ - lib/ray/drawable.rb
101
95
  - lib/ray/dsl.rb
102
96
  - lib/ray/dsl/event.rb
103
97
  - lib/ray/dsl/event_listener.rb
@@ -112,112 +106,75 @@ files:
112
106
  - lib/ray/helper.rb
113
107
  - lib/ray/image.rb
114
108
  - lib/ray/image_set.rb
115
- - lib/ray/joystick.rb
109
+ - lib/ray/input.rb
116
110
  - lib/ray/music_set.rb
117
111
  - lib/ray/ray.rb
118
112
  - lib/ray/rect.rb
119
113
  - lib/ray/resource_set.rb
114
+ - lib/ray/rmagick.rb
120
115
  - lib/ray/scene.rb
116
+ - lib/ray/scene_list.rb
117
+ - lib/ray/shape.rb
121
118
  - lib/ray/sound_set.rb
122
119
  - lib/ray/sprite.rb
123
- - psp/SDL_psp_main.c
124
- - psp/bigdecimal/README
125
- - psp/bigdecimal/bigdecimal.c
126
- - psp/bigdecimal/bigdecimal.h
127
- - psp/bigdecimal/lib/bigdecimal/jacobian.rb
128
- - psp/bigdecimal/lib/bigdecimal/ludcmp.rb
129
- - psp/bigdecimal/lib/bigdecimal/math.rb
130
- - psp/bigdecimal/lib/bigdecimal/newton.rb
131
- - psp/bigdecimal/lib/bigdecimal/util.rb
132
- - psp/digest/bubblebabble/bubblebabble.c
133
- - psp/digest/defs.h
134
- - psp/digest/digest.c
135
- - psp/digest/digest.h
136
- - psp/digest/lib/digest.rb
137
- - psp/digest/lib/md5.rb
138
- - psp/digest/lib/sha1.rb
139
- - psp/digest/md5/md5.c
140
- - psp/digest/md5/md5.h
141
- - psp/digest/md5/md5init.c
142
- - psp/digest/rmd160/rmd160.c
143
- - psp/digest/rmd160/rmd160.h
144
- - psp/digest/rmd160/rmd160init.c
145
- - psp/digest/sha1/sha1.c
146
- - psp/digest/sha1/sha1.h
147
- - psp/digest/sha1/sha1init.c
148
- - psp/digest/sha2/lib/sha2.rb
149
- - psp/digest/sha2/sha2.c
150
- - psp/digest/sha2/sha2.h
151
- - psp/digest/sha2/sha2init.c
152
- - psp/enumerator/enumerator.c
153
- - psp/etc/etc.c
154
- - psp/ext.c
155
- - psp/fcntl/fcntl.c
156
- - psp/lib/rbconfig.rb
157
- - psp/nkf/lib/kconv.rb
158
- - psp/nkf/nkf-utf8/config.h
159
- - psp/nkf/nkf-utf8/nkf.c
160
- - psp/nkf/nkf-utf8/utf8tbl.c
161
- - psp/nkf/nkf-utf8/utf8tbl.h
162
- - psp/nkf/nkf.c
163
- - psp/socket/addrinfo.h
164
- - psp/socket/getaddrinfo.c
165
- - psp/socket/getnameinfo.c
166
- - psp/socket/pspsocket.c
167
- - psp/socket/pspsocket.h
168
- - psp/socket/socket.c
169
- - psp/socket/sockport.h
170
- - psp/stringio/stringio.c
171
- - psp/strscan/strscan.c
172
- - psp/syck/bytecode.c
173
- - psp/syck/emitter.c
174
- - psp/syck/gram.c
175
- - psp/syck/gram.h
176
- - psp/syck/handler.c
177
- - psp/syck/implicit.c
178
- - psp/syck/node.c
179
- - psp/syck/rubyext.c
180
- - psp/syck/syck.c
181
- - psp/syck/syck.h
182
- - psp/syck/token.c
183
- - psp/syck/yaml2byte.c
184
- - psp/syck/yamlbyte.h
185
- - psp/thread/thread.c
186
- - psp/zlib/zlib.c
120
+ - lib/ray/text.rb
121
+ - lib/ray/text_helper.rb
122
+ - lib/ray/turtle.rb
123
+ - lib/ray/vector.rb
124
+ - samples/audio/spacial.rb
187
125
  - samples/hello_world/hello.rb
188
126
  - samples/hello_world/hello_dsl.rb
127
+ - samples/hello_world/text.rb
128
+ - samples/opengl/binding.rb
129
+ - samples/opengl/image.rb
130
+ - samples/opengl/opengl.rb
131
+ - samples/opengl/shader.rb
189
132
  - samples/pong/pong.rb
133
+ - samples/run_scene.rb
134
+ - samples/shaders/scene.rb
135
+ - samples/shaders/shaders.rb
136
+ - samples/shaders/shape.rb
190
137
  - samples/sokoban/level_1
191
138
  - samples/sokoban/sokoban.rb
192
- - script.rb
193
- - spec/ray/audio_spec.rb
194
- - spec/ray/color_spec.rb
195
- - spec/ray/event_spec.rb
196
- - spec/ray/font_spec.rb
197
- - spec/ray/image_set_spec.rb
198
- - spec/ray/image_spec.rb
199
- - spec/ray/joystick_spec.rb
200
- - spec/ray/matcher_spec.rb
201
- - spec/ray/ray_spec.rb
202
- - spec/ray/rect_spec.rb
203
- - spec/ray/resource_set_spec.rb
204
- - spec/ray/sprite_spec.rb
205
- - spec/res/VeraMono.ttf
206
- - spec/res/aqua.bmp
207
- - spec/res/aqua.png
208
- - spec/res/aqua2.bmp
209
- - spec/res/not_a_jpeg.jpeg
210
- - spec/res/pop.wav
211
- - spec/spec.opts
212
- - spec/spec_helper.rb
139
+ - samples/test/actual_scene.rb
140
+ - samples/test/scene_riot.rb
141
+ - samples/test/scene_spec.rb
142
+ - samples/test/scene_test_unit.rb
143
+ - samples/turtle/byzantium.rb
144
+ - samples/turtle/hilbert.rb
145
+ - samples/turtle/koch.rb
146
+ - samples/turtle/mandala.rb
147
+ - samples/turtle/tree.rb
148
+ - test/audio_test.rb
149
+ - test/color_test.rb
150
+ - test/drawable_test.rb
151
+ - test/dsl_test.rb
152
+ - test/font_test.rb
153
+ - test/helpers.rb
154
+ - test/image_test.rb
155
+ - test/ray_test.rb
156
+ - test/rect_test.rb
157
+ - test/res/VeraMono.ttf
158
+ - test/res/aqua.bmp
159
+ - test/res/aqua.png
160
+ - test/res/aqua2.bmp
161
+ - test/res/not_a_jpeg.jpeg
162
+ - test/res/pop.wav
163
+ - test/resource_set_test.rb
164
+ - test/run_all.rb
165
+ - test/shape_test.rb
166
+ - test/sprite_test.rb
167
+ - test/text_test.rb
168
+ - test/turtle_test.rb
169
+ - test/vector_test.rb
213
170
  - yard_ext.rb
214
- has_rdoc: yard
171
+ has_rdoc: true
215
172
  homepage: http://github.com/Mon-Ouie/ray
216
173
  licenses: []
217
174
 
218
175
  post_install_message:
219
- rdoc_options:
220
- - --charset=UTF-8
176
+ rdoc_options: []
177
+
221
178
  require_paths:
222
179
  - lib
223
180
  required_ruby_version: !ruby/object:Gem::Requirement
@@ -225,35 +182,34 @@ required_ruby_version: !ruby/object:Gem::Requirement
225
182
  requirements:
226
183
  - - ">="
227
184
  - !ruby/object:Gem::Version
228
- segments:
229
- - 0
230
185
  version: "0"
231
186
  required_rubygems_version: !ruby/object:Gem::Requirement
232
187
  none: false
233
188
  requirements:
234
- - - ">="
189
+ - - ">"
235
190
  - !ruby/object:Gem::Version
236
- segments:
237
- - 0
238
- version: "0"
191
+ version: 1.3.1
239
192
  requirements: []
240
193
 
241
194
  rubyforge_project:
242
- rubygems_version: 1.3.7
195
+ rubygems_version: 1.5.2
243
196
  signing_key:
244
197
  specification_version: 3
245
198
  summary: A library to write games (or to play with) in Ruby
246
199
  test_files:
247
- - spec/ray/audio_spec.rb
248
- - spec/ray/color_spec.rb
249
- - spec/ray/event_spec.rb
250
- - spec/ray/font_spec.rb
251
- - spec/ray/image_set_spec.rb
252
- - spec/ray/image_spec.rb
253
- - spec/ray/joystick_spec.rb
254
- - spec/ray/matcher_spec.rb
255
- - spec/ray/ray_spec.rb
256
- - spec/ray/rect_spec.rb
257
- - spec/ray/resource_set_spec.rb
258
- - spec/ray/sprite_spec.rb
259
- - spec/spec_helper.rb
200
+ - test/audio_test.rb
201
+ - test/color_test.rb
202
+ - test/drawable_test.rb
203
+ - test/dsl_test.rb
204
+ - test/font_test.rb
205
+ - test/helpers.rb
206
+ - test/image_test.rb
207
+ - test/ray_test.rb
208
+ - test/rect_test.rb
209
+ - test/resource_set_test.rb
210
+ - test/run_all.rb
211
+ - test/shape_test.rb
212
+ - test/sprite_test.rb
213
+ - test/text_test.rb
214
+ - test/turtle_test.rb
215
+ - test/vector_test.rb
data/.gitignore DELETED
@@ -1,23 +0,0 @@
1
- .yardoc/
2
- doc/
3
- pkg/
4
- *.rbc
5
- *.gems
6
- *.o
7
- *.gemspec
8
- *.elf
9
- *.tar.gz
10
- *.tar.bz2
11
- *.prx
12
- *.PBP
13
- *.log
14
- ext/Makefile
15
- *.so
16
- *.SFO
17
- *.bundle
18
- Makefile
19
- ext/ray
20
- /ext/mkmf.log
21
- ruby-1.8.*/
22
- ruby_stdlib/
23
- autotest/
@@ -1,3 +0,0 @@
1
- [submodule "rspec"]
2
- path = rspec
3
- url = git://github.com/dchelimsky/rspec.git
data/.rspec DELETED
@@ -1,3 +0,0 @@
1
- --format html:report.html
2
- --format p
3
- -c
@@ -1,473 +0,0 @@
1
- #include "ray.h"
2
-
3
- #ifdef HAVE_SDL_MIXER
4
-
5
- VALUE ray_mAudio = Qnil;
6
- VALUE ray_cSound = Qnil;
7
- VALUE ray_cMusic = Qnil;
8
-
9
- /* @return [Integer] The audio frequency */
10
- VALUE ray_audio_frequency() {
11
- int freq = 0, channels = 0;
12
- uint16_t format = 0;
13
- Mix_QuerySpec(&freq, &format, &channels);
14
-
15
- return INT2FIX(freq);
16
- }
17
-
18
- /* @return [Integer] The audio format */
19
- VALUE ray_audio_format() {
20
- int freq = 0, channels = 0;
21
- uint16_t format = 0;
22
- Mix_QuerySpec(&freq, &format, &channels);
23
-
24
- return INT2FIX(format);
25
- }
26
-
27
- /* @return [true, false] true if mono is used */
28
- VALUE ray_audio_mono() {
29
- int freq = 0, channels = 0;
30
- uint16_t format = 0;
31
- Mix_QuerySpec(&freq, &format, &channels);
32
-
33
- return channels == 1 ? Qtrue : Qfalse;
34
- }
35
-
36
- /* @return [true, false] true if stereo is used */
37
- VALUE ray_audio_stereo() {
38
- int freq = 0, channels = 0;
39
- uint16_t format = 0;
40
- Mix_QuerySpec(&freq, &format, &channels);
41
-
42
- return channels == 1 ? Qfalse : Qtrue;
43
- }
44
-
45
- /*
46
- @return [Float] The volume for the song which is currently being played.
47
- 0 is the minimum volume, whereas 100 is the maximum.
48
- */
49
- VALUE ray_audio_volume(VALUE self) {
50
- int volume = Mix_VolumeMusic(-1);
51
- return rb_float_new((volume / 128.0f) * 100.0f);
52
- }
53
-
54
- /* Sets the volume of the song which is currently being played */
55
- VALUE ray_audio_set_volume(VALUE self, VALUE value) {
56
- float volume = (float)NUM2DBL(value);
57
- Mix_VolumeMusic((int)((volume / 100.0f) * 128.0f));
58
-
59
- return value;
60
- }
61
-
62
- /*
63
- @overload playing?(channel = nil)
64
- @return [true, false] If channel is set, true if something is playing on
65
- that channel. If it isn't, true if a music is currently being played.
66
- */
67
- VALUE ray_audio_playing(int argc, VALUE *argv, VALUE self) {
68
- VALUE channel = Qnil;
69
- rb_scan_args(argc, argv, "01", &channel);
70
-
71
- if (NIL_P(channel))
72
- return Mix_PlayingMusic() ? Qtrue : Qfalse;
73
- return Mix_Playing(NUM2INT(channel)) ? Qtrue: Qfalse;
74
- }
75
-
76
- /*
77
- @overload stop(channel = nil)
78
- If channel is set, stops playback on a channel. Stops playing
79
- the current music otherwise.
80
- */
81
- VALUE ray_audio_stop(int argc, VALUE *argv, VALUE self) {
82
- VALUE channel;
83
- rb_scan_args(argc, argv, "01", &channel);
84
-
85
- if (!NIL_P(channel)) {
86
- Mix_HaltChannel(NUM2INT(channel));
87
- return channel;
88
- }
89
-
90
- Mix_HaltMusic();
91
- return Qnil;
92
- }
93
-
94
- /*
95
- @overload pause(channel = nil)
96
- If channel is set, pauses a channel. Pauses the current music otherwise.
97
- */
98
- VALUE ray_audio_pause(int argc, VALUE *argv, VALUE self) {
99
- VALUE channel;
100
- rb_scan_args(argc, argv, "01", &channel);
101
-
102
- if (!NIL_P(channel)) {
103
- Mix_Pause(NUM2INT(channel));
104
- return channel;
105
- }
106
-
107
- Mix_PauseMusic();
108
- return Qnil;
109
- }
110
-
111
- /*
112
- @overload resume(channel = nil)
113
- If channel is set, resumes a paused channel from pause. Resumes the music
114
- otherwise.
115
- */
116
- VALUE ray_audio_resume(int argc, VALUE *argv, VALUE self) {
117
- VALUE channel;
118
- rb_scan_args(argc, argv, "01", &channel);
119
-
120
- if (!NIL_P(channel)) {
121
- Mix_Resume(NUM2INT(channel));
122
- return channel;
123
- }
124
-
125
- Mix_ResumeMusic();
126
- return Qnil;
127
- }
128
-
129
- /*
130
- @overload paused?(channel = nil)
131
- @return [true, false] True if the channel is paused. If channel isn't set,
132
- returns true if the current music isn't paused.
133
- */
134
- VALUE ray_audio_paused(int argc, VALUE *argv, VALUE self) {
135
- VALUE channel;
136
- rb_scan_args(argc, argv, "01", &channel);
137
-
138
- if (!NIL_P(channel))
139
- return Mix_Paused(NUM2INT(channel)) ? Qtrue : Qfalse;
140
- return Mix_PausedMusic() ? Qtrue : Qfalse;
141
- }
142
-
143
- /*
144
- @overload music_pos=(val)
145
- Sets the position in the current music. May not be implemented for some
146
- formats.
147
- */
148
- VALUE ray_audio_set_music_pos(VALUE self, VALUE val) {
149
- Mix_SetMusicPosition(NUM2DBL(val));
150
- return val;
151
- }
152
-
153
- Mix_Chunk *ray_rb2chunk(VALUE object) {
154
- if (!RAY_IS_A(object, ray_cSound)) {
155
- rb_raise(rb_eTypeError, "Can't convert %s into Ray::Sound",
156
- RAY_OBJ_CLASSNAME(object));
157
- }
158
-
159
- ray_sound *ptr = NULL;
160
- Data_Get_Struct(object, ray_sound, ptr);
161
-
162
- return ptr->sound;
163
- }
164
-
165
- void ray_free_sound(ray_sound *sound) {
166
- if (sound->sound) Mix_FreeChunk(sound->sound);
167
- free(sound);
168
- }
169
-
170
- VALUE ray_alloc_sound(VALUE self) {
171
- ray_sound *ptr = malloc(sizeof(ray_sound));
172
- ptr->sound = NULL;
173
-
174
- VALUE ret = Data_Wrap_Struct(self, 0, ray_free_sound, ptr);
175
-
176
- return ret;
177
- }
178
-
179
- void ray_init_sound_with_filename(VALUE self, VALUE filename) {
180
- char *c_filename = StringValuePtr(filename);
181
- ray_sound *sound = NULL;
182
- Data_Get_Struct(self, ray_sound, sound);
183
-
184
- sound->sound = Mix_LoadWAV(c_filename);
185
- if (!sound->sound) {
186
- rb_raise(rb_eRuntimeError, "Could not load sound (%s)",
187
- Mix_GetError());
188
- }
189
- }
190
-
191
- void ray_init_sound_with_io(VALUE self, VALUE io) {
192
- ray_sound *sound = NULL;
193
- Data_Get_Struct(self, ray_sound, sound);
194
-
195
- VALUE string = rb_funcall2(io, RAY_METH("read"), 0, NULL);
196
- char *content = StringValuePtr(string);
197
- SDL_RWops *data = SDL_RWFromMem(content, (int)RSTRING_LEN(string));
198
-
199
- if (!data) {
200
- rb_raise(rb_eRuntimeError, "Could not create music data (%s)",
201
- SDL_GetError());
202
- }
203
-
204
- sound->sound = Mix_LoadWAV_RW(data, 1);
205
- if (!sound->sound) {
206
- rb_raise(rb_eRuntimeError, "Could not load sound (%s)",
207
- Mix_GetError());
208
- }
209
- }
210
-
211
- /*
212
- Creates a new sound from an IO object or a filename.
213
- */
214
- VALUE ray_init_sound(VALUE self, VALUE arg) {
215
- if (rb_respond_to(arg, RAY_METH("to_str")))
216
- ray_init_sound_with_filename(self, rb_String(arg));
217
- else if (rb_respond_to(arg, RAY_METH("read")))
218
- ray_init_sound_with_io(self, arg);
219
- else {
220
- rb_raise(rb_eTypeError, "Can't convert %s into String",
221
- RAY_OBJ_CLASSNAME(arg));
222
- }
223
-
224
- return Qnil;
225
- }
226
-
227
- /*
228
- @overload play(channel = 0, times = 1)
229
- Plays a sound on the given channel a given number of times.
230
- @param [Integer, :forever] times How many times the sound should be played.
231
- Can also be :forever or 0 to play it forever.
232
- */
233
- VALUE ray_sound_play(int argc, VALUE *argv, VALUE self) {
234
- VALUE channel, times;
235
- rb_scan_args(argc, argv, "02", &channel, &times);
236
-
237
- if (NIL_P(channel)) channel = INT2FIX(0);
238
- if (NIL_P(times)) times = INT2FIX(1);
239
-
240
- int c_channel = NUM2INT(channel), c_times = 0;
241
- if (times == RAY_SYM("forever"))
242
- c_times = 0;
243
- else
244
- c_times = NUM2INT(times);
245
-
246
- Mix_Chunk *chunk = ray_rb2chunk(self);
247
- Mix_PlayChannel(c_channel, chunk, c_times - 1);
248
-
249
- return self;
250
- }
251
-
252
- /*
253
- @overload fade(duration, channel = 0, times = 1)
254
- Same as play, but fades for a given number of a seconds.
255
- @param [Float] duration Duration of the fade, in seconds.
256
- @see Ray::Sound#play
257
- */
258
- VALUE ray_sound_fade(int argc, VALUE *argv, VALUE self) {
259
- VALUE duration, channel, times;
260
- rb_scan_args(argc, argv, "12", &duration, &channel, &times);
261
-
262
- if (NIL_P(channel)) channel = INT2FIX(0);
263
- if (NIL_P(times)) times = INT2FIX(1);
264
-
265
- int c_channel = NUM2INT(channel), c_times = 0;
266
- if (times == RAY_SYM("forever"))
267
- c_times = 0;
268
- else
269
- c_times = NUM2INT(times);
270
-
271
- Mix_Chunk *chunk = ray_rb2chunk(self);
272
- Mix_FadeInChannel(c_channel, chunk, c_times - 1,
273
- (int)(NUM2DBL(duration) * 1000));
274
-
275
- return self;
276
- }
277
-
278
- /* @return [Float] Volume of the sound, between 0 and 100. */
279
- VALUE ray_sound_volume(VALUE self) {
280
- Mix_Chunk *chunk = ray_rb2chunk(self);
281
- int volume = Mix_VolumeChunk(chunk, -1);
282
-
283
- return rb_float_new((volume / 128.0f) * 100.0f);
284
- }
285
-
286
- /* Sets the volume of the sound. */
287
- VALUE ray_sound_set_volume(VALUE self, VALUE value) {
288
- Mix_Chunk *chunk = ray_rb2chunk(self);
289
- float volume = (float)NUM2DBL(value);
290
- Mix_VolumeChunk(chunk, (int)((volume / 100.0f) * 128.0f));
291
-
292
- return value;
293
- }
294
-
295
- Mix_Music *ray_rb2music(VALUE object) {
296
- if (!RAY_IS_A(object, ray_cMusic)) {
297
- rb_raise(rb_eTypeError, "Can't convert %s into Ray::Music",
298
- RAY_OBJ_CLASSNAME(object));
299
- }
300
-
301
- ray_music *ptr = NULL;
302
- Data_Get_Struct(object, ray_music, ptr);
303
-
304
- return ptr->music;
305
- }
306
-
307
- void ray_free_music(ray_music *music) {
308
- if (music->music) Mix_FreeMusic(music->music);
309
- free(music);
310
- }
311
-
312
- VALUE ray_alloc_music(VALUE self) {
313
- ray_music *ptr = malloc(sizeof(ray_music));
314
- ptr->music = NULL;
315
-
316
- VALUE ret = Data_Wrap_Struct(self, 0, ray_free_music, ptr);
317
-
318
- return ret;
319
- }
320
-
321
- void ray_init_music_with_filename(VALUE self, VALUE filename) {
322
- char *c_filename = StringValuePtr(filename);
323
- ray_music *music = NULL;
324
- Data_Get_Struct(self, ray_music, music);
325
-
326
- music->music = Mix_LoadMUS(c_filename);
327
- if (!music->music) {
328
- rb_raise(rb_eRuntimeError, "Could not load music (%s)",
329
- Mix_GetError());
330
- }
331
- }
332
-
333
- void ray_init_music_with_io(VALUE self, VALUE io) {
334
- ray_music *music = NULL;
335
- Data_Get_Struct(self, ray_music, music);
336
-
337
- VALUE string = rb_funcall2(io, RAY_METH("read"), 0, NULL);
338
- char *content = StringValuePtr(string);
339
- SDL_RWops *data = SDL_RWFromMem(content, (int)RSTRING_LEN(string));
340
-
341
- if (!data) {
342
- rb_raise(rb_eRuntimeError, "Could not create music data (%s)",
343
- SDL_GetError());
344
- }
345
-
346
- music->music = Mix_LoadMUS_RW(data);
347
- if (!music->music) {
348
- rb_raise(rb_eRuntimeError, "Could not load music (%s)",
349
- Mix_GetError());
350
- }
351
-
352
- SDL_FreeRW(data);
353
- }
354
-
355
- /*
356
- Creates a new music from an IO object or a filename.
357
- */
358
- VALUE ray_init_music(VALUE self, VALUE arg) {
359
- if (rb_respond_to(arg, RAY_METH("to_str")))
360
- ray_init_music_with_filename(self, rb_String(arg));
361
- else if (rb_respond_to(arg, RAY_METH("read")))
362
- ray_init_music_with_io(self, arg);
363
- else {
364
- rb_raise(rb_eTypeError, "Can't convert %s into String",
365
- RAY_OBJ_CLASSNAME(arg));
366
- }
367
-
368
- return Qnil;
369
- }
370
-
371
- /* @return [Integer] The type of the music */
372
- VALUE ray_music_type(VALUE self) {
373
- Mix_Music *music = ray_rb2music(self);
374
- Mix_MusicType ret = Mix_GetMusicType(music);
375
-
376
- return INT2FIX(ret);
377
- }
378
-
379
- /*
380
- @overload play(times = 1)
381
- Plays the music a given number of times.
382
- @param [Integer, :forever] times How many times the music should be played.
383
- Can also be :forever or 0 to play it forever.
384
- */
385
- VALUE ray_music_play(int argc, VALUE *argv, VALUE self) {
386
- VALUE times;
387
- rb_scan_args(argc, argv, "01", &times);
388
-
389
- if (NIL_P(times)) times = INT2FIX(1);
390
-
391
- int c_times = 0;
392
- if (times == RAY_SYM("forever"))
393
- c_times = 0;
394
- else
395
- c_times = NUM2INT(times);
396
-
397
- Mix_Music *music = ray_rb2music(self);
398
- Mix_PlayMusic(music, c_times);
399
-
400
- return self;
401
- }
402
-
403
- /*
404
- Document-class: Ray::Music
405
-
406
- Class used to play music. Notice only one music can be played at the
407
- same time.
408
- */
409
-
410
- /*
411
- Document-class: Ray::Sound
412
-
413
- Class used to represent short sounds. You can play one sound per channel.
414
- */
415
-
416
- void Init_ray_audio() {
417
- ray_mAudio = rb_define_module_under(ray_mRay, "Audio");
418
-
419
- rb_define_const(ray_mAudio, "FORMAT_U8", INT2FIX(AUDIO_U8));
420
- rb_define_const(ray_mAudio, "FORMAT_S8", INT2FIX(AUDIO_S8));
421
- rb_define_const(ray_mAudio, "FORMAT_U16LSB", INT2FIX(AUDIO_U16LSB));
422
- rb_define_const(ray_mAudio, "FORMAT_S16LSB", INT2FIX(AUDIO_S16LSB));
423
- rb_define_const(ray_mAudio, "FORMAT_U16MSB", INT2FIX(AUDIO_U16MSB));
424
- rb_define_const(ray_mAudio, "FORMAT_S16MSB", INT2FIX(AUDIO_S16MSB));
425
- rb_define_const(ray_mAudio, "FORMAT_U16", INT2FIX(AUDIO_U16));
426
- rb_define_const(ray_mAudio, "FORMAT_S16", INT2FIX(AUDIO_S16));
427
- rb_define_const(ray_mAudio, "FORMAT_U16SYS", INT2FIX(AUDIO_U16SYS));
428
- rb_define_const(ray_mAudio, "FORMAT_S16SYS", INT2FIX(AUDIO_S16SYS));
429
-
430
- rb_define_module_function(ray_mAudio, "frequency", ray_audio_frequency, 0);
431
- rb_define_module_function(ray_mAudio, "format", ray_audio_format, 0);
432
- rb_define_module_function(ray_mAudio, "mono?", ray_audio_mono, 0);
433
- rb_define_module_function(ray_mAudio, "stereo?", ray_audio_stereo, 0);
434
-
435
- rb_define_module_function(ray_mAudio, "volume", ray_audio_volume, 0);
436
- rb_define_module_function(ray_mAudio, "volume=", ray_audio_set_volume, 1);
437
-
438
- rb_define_module_function(ray_mAudio, "stop", ray_audio_stop, -1);
439
- rb_define_module_function(ray_mAudio, "pause", ray_audio_pause, -1);
440
- rb_define_module_function(ray_mAudio, "resume", ray_audio_resume, -1);
441
- rb_define_module_function(ray_mAudio, "paused?", ray_audio_paused, -1);
442
- rb_define_module_function(ray_mAudio, "playing?", ray_audio_playing, -1);
443
-
444
- rb_define_module_function(ray_mAudio, "music_pos=", ray_audio_set_music_pos, 1);
445
-
446
- ray_cSound = rb_define_class_under(ray_mRay, "Sound", rb_cObject);
447
- rb_define_alloc_func(ray_cSound, ray_alloc_sound);
448
- rb_define_method(ray_cSound, "initialize", ray_init_sound, 1);
449
- rb_define_method(ray_cSound, "play", ray_sound_play, -1);
450
- rb_define_method(ray_cSound, "fade", ray_sound_fade, -1);
451
- rb_define_method(ray_cSound, "volume", ray_sound_volume, 0);
452
- rb_define_method(ray_cSound, "volume=", ray_sound_set_volume, 1);
453
-
454
- ray_cMusic = rb_define_class_under(ray_mRay, "Music", rb_cObject);
455
- rb_define_alloc_func(ray_cMusic, ray_alloc_music);
456
- rb_define_method(ray_cMusic, "initialize", ray_init_music, 1);
457
- rb_define_method(ray_cMusic, "type", ray_music_type, 0);
458
- rb_define_method(ray_cMusic, "play", ray_music_play, -1);
459
-
460
- rb_define_const(ray_cMusic, "TYPE_NONE", INT2FIX(MUS_NONE));
461
- rb_define_const(ray_cMusic, "TYPE_CMD", INT2FIX(MUS_CMD));
462
- rb_define_const(ray_cMusic, "TYPE_WAV", INT2FIX(MUS_WAV));
463
- rb_define_const(ray_cMusic, "TYPE_MOD", INT2FIX(MUS_MOD));
464
- rb_define_const(ray_cMusic, "TYPE_MID", INT2FIX(MUS_MID));
465
- rb_define_const(ray_cMusic, "TYPE_OGG", INT2FIX(MUS_OGG));
466
- rb_define_const(ray_cMusic, "TYPE_MP3", INT2FIX(MUS_MP3));
467
- #ifndef PSP
468
- rb_define_const(ray_cMusic, "TYPE_MP3_MAD", INT2FIX(MUS_MP3_MAD));
469
- rb_define_const(ray_cMusic, "TYPE_FLAC", INT2FIX(MUS_FLAC));
470
- #endif
471
- }
472
-
473
- #endif