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.
- data/.gemtest +0 -0
- data/.yardopts +4 -0
- data/README.md +17 -21
- data/Rakefile +18 -139
- data/VERSION +1 -1
- data/ext/audio.cpp +723 -0
- data/ext/{color.c → color.cpp} +25 -13
- data/ext/drawable.cpp +91 -0
- data/ext/event.cpp +460 -0
- data/ext/extconf.rb +5 -104
- data/ext/font.cpp +190 -0
- data/ext/image.cpp +733 -0
- data/ext/input.cpp +74 -0
- data/ext/ray.cpp +168 -0
- data/ext/ray.hpp +356 -0
- data/ext/{rect.c → rect.cpp} +51 -37
- data/ext/shader.cpp +169 -0
- data/ext/shape.cpp +409 -0
- data/ext/sprite.cpp +306 -0
- data/ext/text.cpp +181 -0
- data/ext/vector.cpp +215 -0
- data/guide.md +619 -0
- data/lib/ray/audio.rb +0 -41
- data/lib/ray/color.rb +32 -10
- data/lib/ray/drawable.rb +16 -0
- data/lib/ray/dsl/event_listener.rb +25 -2
- data/lib/ray/dsl/event_runner.rb +33 -5
- data/lib/ray/dsl/event_translator.rb +66 -30
- data/lib/ray/dsl/handler.rb +3 -2
- data/lib/ray/dsl/matcher.rb +58 -14
- data/lib/ray/font.rb +38 -96
- data/lib/ray/font_set.rb +8 -8
- data/lib/ray/game.rb +87 -66
- data/lib/ray/helper.rb +105 -10
- data/lib/ray/image.rb +150 -24
- data/lib/ray/image_set.rb +3 -1
- data/lib/ray/input.rb +10 -0
- data/lib/ray/music_set.rb +5 -3
- data/lib/ray/ray.rb +21 -9
- data/lib/ray/rect.rb +48 -7
- data/lib/ray/rmagick.rb +41 -0
- data/lib/ray/scene.rb +99 -43
- data/lib/ray/scene_list.rb +67 -0
- data/lib/ray/shape.rb +132 -0
- data/lib/ray/sound_set.rb +4 -2
- data/lib/ray/sprite.rb +49 -111
- data/lib/ray/text.rb +101 -0
- data/lib/ray/text_helper.rb +37 -0
- data/lib/ray/turtle.rb +215 -0
- data/lib/ray/vector.rb +226 -0
- data/samples/audio/spacial.rb +44 -0
- data/samples/hello_world/hello.rb +9 -13
- data/samples/hello_world/hello_dsl.rb +8 -12
- data/samples/hello_world/text.rb +15 -0
- data/samples/opengl/binding.rb +38 -0
- data/samples/opengl/image.rb +32 -0
- data/samples/opengl/opengl.rb +34 -0
- data/samples/opengl/shader.rb +42 -0
- data/samples/pong/pong.rb +14 -10
- data/samples/run_scene.rb +53 -0
- data/samples/shaders/scene.rb +40 -0
- data/samples/shaders/shaders.rb +42 -0
- data/samples/shaders/shape.rb +34 -0
- data/samples/sokoban/sokoban.rb +18 -18
- data/samples/test/actual_scene.rb +41 -0
- data/samples/test/scene_riot.rb +39 -0
- data/samples/test/scene_spec.rb +32 -0
- data/samples/test/scene_test_unit.rb +25 -0
- data/samples/turtle/byzantium.rb +45 -0
- data/samples/turtle/hilbert.rb +48 -0
- data/samples/turtle/koch.rb +55 -0
- data/samples/turtle/mandala.rb +61 -0
- data/samples/turtle/tree.rb +57 -0
- data/test/audio_test.rb +69 -0
- data/test/color_test.rb +77 -0
- data/test/drawable_test.rb +19 -0
- data/test/dsl_test.rb +93 -0
- data/test/font_test.rb +57 -0
- data/test/helpers.rb +94 -0
- data/test/image_test.rb +82 -0
- data/test/ray_test.rb +25 -0
- data/test/rect_test.rb +121 -0
- data/{spec → test}/res/VeraMono.ttf +0 -0
- data/{spec → test}/res/aqua.bmp +0 -0
- data/{spec → test}/res/aqua.png +0 -0
- data/{spec → test}/res/aqua2.bmp +0 -0
- data/{spec → test}/res/not_a_jpeg.jpeg +0 -0
- data/{spec → test}/res/pop.wav +0 -0
- data/test/resource_set_test.rb +99 -0
- data/test/run_all.rb +7 -0
- data/test/shape_test.rb +101 -0
- data/test/sprite_test.rb +89 -0
- data/test/text_test.rb +78 -0
- data/test/turtle_test.rb +176 -0
- data/test/vector_test.rb +111 -0
- data/yard_ext.rb +0 -28
- metadata +95 -139
- data/.gitignore +0 -23
- data/.gitmodules +0 -3
- data/.rspec +0 -3
- data/ext/audio.c +0 -473
- data/ext/event.c +0 -557
- data/ext/font.c +0 -287
- data/ext/image.c +0 -933
- data/ext/joystick.c +0 -145
- data/ext/ray.c +0 -489
- data/ext/ray.h +0 -245
- data/ext/ray_osx.m +0 -161
- data/lib/ray/joystick.rb +0 -30
- data/psp/SDL_psp_main.c +0 -84
- data/psp/bigdecimal/README +0 -60
- data/psp/bigdecimal/bigdecimal.c +0 -4697
- data/psp/bigdecimal/bigdecimal.h +0 -216
- data/psp/bigdecimal/lib/bigdecimal/jacobian.rb +0 -85
- data/psp/bigdecimal/lib/bigdecimal/ludcmp.rb +0 -84
- data/psp/bigdecimal/lib/bigdecimal/math.rb +0 -235
- data/psp/bigdecimal/lib/bigdecimal/newton.rb +0 -77
- data/psp/bigdecimal/lib/bigdecimal/util.rb +0 -65
- data/psp/digest/bubblebabble/bubblebabble.c +0 -142
- data/psp/digest/defs.h +0 -20
- data/psp/digest/digest.c +0 -643
- data/psp/digest/digest.h +0 -32
- data/psp/digest/lib/digest.rb +0 -50
- data/psp/digest/lib/md5.rb +0 -27
- data/psp/digest/lib/sha1.rb +0 -27
- data/psp/digest/md5/md5.c +0 -420
- data/psp/digest/md5/md5.h +0 -80
- data/psp/digest/md5/md5init.c +0 -40
- data/psp/digest/rmd160/rmd160.c +0 -457
- data/psp/digest/rmd160/rmd160.h +0 -56
- data/psp/digest/rmd160/rmd160init.c +0 -40
- data/psp/digest/sha1/sha1.c +0 -269
- data/psp/digest/sha1/sha1.h +0 -39
- data/psp/digest/sha1/sha1init.c +0 -40
- data/psp/digest/sha2/lib/sha2.rb +0 -73
- data/psp/digest/sha2/sha2.c +0 -919
- data/psp/digest/sha2/sha2.h +0 -109
- data/psp/digest/sha2/sha2init.c +0 -52
- data/psp/enumerator/enumerator.c +0 -298
- data/psp/etc/etc.c +0 -559
- data/psp/ext.c +0 -289
- data/psp/fcntl/fcntl.c +0 -187
- data/psp/lib/rbconfig.rb +0 -178
- data/psp/nkf/lib/kconv.rb +0 -367
- data/psp/nkf/nkf-utf8/config.h +0 -88
- data/psp/nkf/nkf-utf8/nkf.c +0 -6040
- data/psp/nkf/nkf-utf8/utf8tbl.c +0 -8500
- data/psp/nkf/nkf-utf8/utf8tbl.h +0 -34
- data/psp/nkf/nkf.c +0 -654
- data/psp/socket/addrinfo.h +0 -173
- data/psp/socket/getaddrinfo.c +0 -676
- data/psp/socket/getnameinfo.c +0 -270
- data/psp/socket/pspsocket.c +0 -71
- data/psp/socket/pspsocket.h +0 -28
- data/psp/socket/socket.c +0 -4662
- data/psp/socket/sockport.h +0 -76
- data/psp/stringio/stringio.c +0 -1306
- data/psp/strscan/strscan.c +0 -1320
- data/psp/syck/bytecode.c +0 -1166
- data/psp/syck/emitter.c +0 -1242
- data/psp/syck/gram.c +0 -1894
- data/psp/syck/gram.h +0 -79
- data/psp/syck/handler.c +0 -174
- data/psp/syck/implicit.c +0 -2990
- data/psp/syck/node.c +0 -408
- data/psp/syck/rubyext.c +0 -2367
- data/psp/syck/syck.c +0 -504
- data/psp/syck/syck.h +0 -456
- data/psp/syck/token.c +0 -2725
- data/psp/syck/yaml2byte.c +0 -257
- data/psp/syck/yamlbyte.h +0 -170
- data/psp/thread/thread.c +0 -1175
- data/psp/zlib/zlib.c +0 -3547
- data/script.rb +0 -10
- data/spec/ray/audio_spec.rb +0 -146
- data/spec/ray/color_spec.rb +0 -57
- data/spec/ray/event_spec.rb +0 -80
- data/spec/ray/font_spec.rb +0 -93
- data/spec/ray/image_set_spec.rb +0 -48
- data/spec/ray/image_spec.rb +0 -162
- data/spec/ray/joystick_spec.rb +0 -21
- data/spec/ray/matcher_spec.rb +0 -50
- data/spec/ray/ray_spec.rb +0 -88
- data/spec/ray/rect_spec.rb +0 -154
- data/spec/ray/resource_set_spec.rb +0 -105
- data/spec/ray/sprite_spec.rb +0 -163
- data/spec/spec.opts +0 -4
- data/spec/spec_helper.rb +0 -8
data/lib/ray/image.rb
CHANGED
|
@@ -4,7 +4,6 @@ module Ray
|
|
|
4
4
|
"#<#{self.class} w=#{w} h=#{h}>"
|
|
5
5
|
end
|
|
6
6
|
|
|
7
|
-
alias :bits_per_pixel :bpp
|
|
8
7
|
alias :w :width
|
|
9
8
|
alias :h :height
|
|
10
9
|
|
|
@@ -14,13 +13,151 @@ module Ray
|
|
|
14
13
|
extend Ray::ResourceSet
|
|
15
14
|
add_set(/^(.*)$/) { |filename| new(filename) }
|
|
16
15
|
|
|
16
|
+
# @return [Ray::Vector2] Size of the image
|
|
17
|
+
def size
|
|
18
|
+
Ray::Vector2[w, h]
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
# Draws a point.
|
|
22
|
+
#
|
|
23
|
+
# @param [Ray::Vector2, #to_vector2] point The point which should be drawn.
|
|
24
|
+
# @param [Ray::Color] color Its new color.
|
|
25
|
+
def draw_pixel(point, color)
|
|
26
|
+
point = point.to_vector2
|
|
27
|
+
draw_filled_rect(Ray::Rect.new(point.x, point.y, 1, 1), color)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
# Draws a line.
|
|
31
|
+
#
|
|
32
|
+
# @param [Ray::Vector2, #to_vector2] p1 First point of the line.
|
|
33
|
+
# @param [Ray::Vector2, #to_vector2] p2 Second point of the line.
|
|
34
|
+
# @param [Ray::Color] color Color of the line.
|
|
35
|
+
# @param [Integer] size Thickness of the line.
|
|
36
|
+
def draw_line(p1, p2, color, size = 1)
|
|
37
|
+
draw_shape Ray::Shape.line(p1, p2, size, color)
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
# Draws a rect.
|
|
41
|
+
#
|
|
42
|
+
# @param [Ray::Rect, Array<Integer>] rect Rect to draw.
|
|
43
|
+
# @param [Ray::Color] color Color of the rect.
|
|
44
|
+
def draw_rect(rect, color)
|
|
45
|
+
shape = Ray::Shape.rectangle(rect, Ray::Color.none, 1, color)
|
|
46
|
+
shape.filled = false
|
|
47
|
+
|
|
48
|
+
draw_shape shape
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
# Draws a filled rect.
|
|
52
|
+
#
|
|
53
|
+
# @param [Ray::Rect, Array<Integer>] rect Rect to draw.
|
|
54
|
+
# @param [Ray::Color] color color of the rect.
|
|
55
|
+
def draw_filled_rect(rect, color)
|
|
56
|
+
draw_shape Ray::Shape.rectangle(rect, color)
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
# Draws a circle.
|
|
60
|
+
#
|
|
61
|
+
# @param [Ray::Vector2, #to_vector2] center Center of the circle.
|
|
62
|
+
# @param [Integer] radius Radius of the circle.
|
|
63
|
+
# @param [Ray::Color] color Color of the circle.
|
|
64
|
+
def draw_circle(center, radius, color)
|
|
65
|
+
shape = Ray::Shape.circle(center, radius, Ray::Color.none, 1, color)
|
|
66
|
+
shape.filled = false
|
|
67
|
+
|
|
68
|
+
draw_shape shape
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
# Draws a filled circle.
|
|
72
|
+
#
|
|
73
|
+
# @param [Ray::Vector2, #to_vector2] center Center of the circle.
|
|
74
|
+
# @param [Integer] radius Radius of the circle.
|
|
75
|
+
# @param [Ray::Color] color Color of the circle.
|
|
76
|
+
def draw_filled_circle(center, radius, color)
|
|
77
|
+
draw_shape Ray::Shape.circle(center, radius, color)
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
# Draws an ellipse.
|
|
81
|
+
#
|
|
82
|
+
# @param [Ray::Vector2, #to_vector2] center Center of the ellipse
|
|
83
|
+
# @param [Float] rx x radius (half of the width)
|
|
84
|
+
# @param [Float] ry y radius (half of the height)
|
|
85
|
+
# @param [Ray::Color] color Color in which the ellipse should be drawn.
|
|
86
|
+
def draw_ellipse(center, rx, ry, color)
|
|
87
|
+
ellipse = Ray::Shape.ellipse(center, rx, ry, Ray::Color.none, 1, color)
|
|
88
|
+
ellipse.filled = false
|
|
89
|
+
|
|
90
|
+
draw_shape ellipse
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
# Draws a filled ellipse.
|
|
94
|
+
#
|
|
95
|
+
# @param [Ray::Vector2, #to_vector2] center Center of the ellipse
|
|
96
|
+
# @param [Float] rx x radius (half of the width)
|
|
97
|
+
# @param [Float] ry y radius (half of the height)
|
|
98
|
+
# @param [Ray::Color] color Color in which the ellipse should be drawn.
|
|
99
|
+
def draw_filled_ellipse(center, rx, ry, color)
|
|
100
|
+
draw_shape Ray::Shape.ellipse(center, rx, ry, color)
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
# Draws a triangle.
|
|
104
|
+
def draw_triangle(p1, p2, p3, color)
|
|
105
|
+
shape = Ray::Shape.new
|
|
106
|
+
|
|
107
|
+
shape.add_point(p1, Ray::Color.none, color)
|
|
108
|
+
shape.add_point(p2, Ray::Color.none, color)
|
|
109
|
+
shape.add_point(p3, Ray::Color.none, color)
|
|
110
|
+
|
|
111
|
+
shape.filled = false
|
|
112
|
+
shape.outline_width = 1.0
|
|
113
|
+
|
|
114
|
+
draw_shape shape
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
# Draws a filled triangle.
|
|
118
|
+
def draw_filled_triangle(p1, p2, p3, color)
|
|
119
|
+
shape = Ray::Shape.new
|
|
120
|
+
|
|
121
|
+
shape.add_point(p1, color)
|
|
122
|
+
shape.add_point(p2, color)
|
|
123
|
+
shape.add_point(p3, color)
|
|
124
|
+
|
|
125
|
+
draw_shape shape
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
# Draws a polygon.
|
|
129
|
+
#
|
|
130
|
+
# @param [Array<Ray::Vector2, #to_vector2>] points Points which should be joined
|
|
131
|
+
# to draw the polygon.
|
|
132
|
+
# @param [Ray::Color] color The color in which the polygon should be drawn.
|
|
133
|
+
def draw_polygon(points, color)
|
|
134
|
+
shape = Ray::Shape.new
|
|
135
|
+
points.each { |p| shape.add_point(p, Ray::Color.none, color) }
|
|
136
|
+
|
|
137
|
+
shape.filled = false
|
|
138
|
+
shape.outline_width = 1.0
|
|
139
|
+
|
|
140
|
+
draw_shape shape
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
# Draws a filled polygon.
|
|
144
|
+
#
|
|
145
|
+
# @param [Array<Ray::Vector2, #to_vector2>] points Points which should be joined
|
|
146
|
+
# to draw the polygon.
|
|
147
|
+
# @param [Ray::Color] color The color in which the polygon should be drawn.
|
|
148
|
+
def draw_filled_polygon(points, color)
|
|
149
|
+
shape = Ray::Shape.new
|
|
150
|
+
points.each { |p| shape.add_point(p, color) }
|
|
151
|
+
draw_shape shape
|
|
152
|
+
end
|
|
153
|
+
|
|
17
154
|
# @yield [pixel]
|
|
18
155
|
# @yieldparam [Ray::Color] pixel Color of a point
|
|
19
156
|
def each
|
|
20
157
|
return Enumerator.new(self, :each) unless block_given?
|
|
21
158
|
|
|
22
|
-
(0...
|
|
23
|
-
(0...
|
|
159
|
+
(0...h).each do |y|
|
|
160
|
+
(0...w).each do |x|
|
|
24
161
|
yield self[x, y]
|
|
25
162
|
end
|
|
26
163
|
end
|
|
@@ -29,13 +166,13 @@ module Ray
|
|
|
29
166
|
end
|
|
30
167
|
|
|
31
168
|
# Same as each, but also yields the position of each point.
|
|
32
|
-
# @yield [x, y
|
|
169
|
+
# @yield [pixel, x, y]
|
|
33
170
|
def each_with_pos
|
|
34
171
|
return Enumerator.new(self, :each_with_pos) unless block_given?
|
|
35
172
|
|
|
36
|
-
(0...
|
|
37
|
-
(0...
|
|
38
|
-
yield x, y,
|
|
173
|
+
(0...h).each do |y|
|
|
174
|
+
(0...w).each do |x|
|
|
175
|
+
yield self[x, y], x, y
|
|
39
176
|
end
|
|
40
177
|
end
|
|
41
178
|
|
|
@@ -47,8 +184,8 @@ module Ray
|
|
|
47
184
|
return Enumerator.new(self, :map!) unless block_given?
|
|
48
185
|
|
|
49
186
|
lock do
|
|
50
|
-
(0...
|
|
51
|
-
(0...
|
|
187
|
+
(0...h).each do |y|
|
|
188
|
+
(0...w).each do |x|
|
|
52
189
|
self[x, y] = yield self[x, y]
|
|
53
190
|
end
|
|
54
191
|
end
|
|
@@ -57,14 +194,14 @@ module Ray
|
|
|
57
194
|
self
|
|
58
195
|
end
|
|
59
196
|
|
|
60
|
-
# @yield [x, y
|
|
197
|
+
# @yield [pixel, x, y] Block returning the new color of this pixel
|
|
61
198
|
def map_with_pos!
|
|
62
199
|
return Enumerator.new(self, :map_with_pos!) unless block_given?
|
|
63
200
|
|
|
64
201
|
lock do
|
|
65
|
-
(0...
|
|
66
|
-
(0...
|
|
67
|
-
self[x, y] = yield x, y,
|
|
202
|
+
(0...h).each do |y|
|
|
203
|
+
(0...w).each do |x|
|
|
204
|
+
self[x, y] = yield self[x, y], x, y
|
|
68
205
|
end
|
|
69
206
|
end
|
|
70
207
|
end
|
|
@@ -82,17 +219,6 @@ module Ray
|
|
|
82
219
|
dup.map_with_pos!(&block)
|
|
83
220
|
end
|
|
84
221
|
|
|
85
|
-
def to_image
|
|
86
|
-
self
|
|
87
|
-
end
|
|
88
|
-
|
|
89
222
|
include Enumerable
|
|
90
223
|
end
|
|
91
224
|
end
|
|
92
|
-
|
|
93
|
-
class String
|
|
94
|
-
# Converts the string to an image using Ray::ImageSet.[]
|
|
95
|
-
def to_image
|
|
96
|
-
Ray::ImageSet[self]
|
|
97
|
-
end
|
|
98
|
-
end
|
data/lib/ray/image_set.rb
CHANGED
|
@@ -19,9 +19,11 @@ module Ray
|
|
|
19
19
|
# @param [Regexp] regex Regular expression used to match file
|
|
20
20
|
# @yield [*args] Block returning the image
|
|
21
21
|
# @yieldparam args Regex captures
|
|
22
|
-
def
|
|
22
|
+
def image_set(regex, &block)
|
|
23
23
|
Ray::ImageSet.add_set(regex, &block)
|
|
24
24
|
end
|
|
25
|
+
|
|
26
|
+
module_function :image_set
|
|
25
27
|
end
|
|
26
28
|
|
|
27
29
|
begin
|
data/lib/ray/input.rb
ADDED
data/lib/ray/music_set.rb
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
module Ray
|
|
2
2
|
module MusicSet
|
|
3
3
|
extend Ray::ResourceSet
|
|
4
|
-
|
|
4
|
+
|
|
5
5
|
class << self
|
|
6
6
|
def missing_pattern(string)
|
|
7
|
-
Ray::Music[string
|
|
7
|
+
Ray::Music[string]
|
|
8
8
|
end
|
|
9
9
|
|
|
10
10
|
def select!(&block)
|
|
@@ -20,9 +20,11 @@ module Ray
|
|
|
20
20
|
# @yield [*args] Block returning the music
|
|
21
21
|
#
|
|
22
22
|
# @yieldparam args Regex captures
|
|
23
|
-
def
|
|
23
|
+
def music_set(regex, &block)
|
|
24
24
|
Ray::MusicSet.add_set(regex, &block)
|
|
25
25
|
end
|
|
26
|
+
|
|
27
|
+
module_function :music_set
|
|
26
28
|
end
|
|
27
29
|
|
|
28
30
|
begin
|
data/lib/ray/ray.rb
CHANGED
|
@@ -1,22 +1,33 @@
|
|
|
1
1
|
require 'enumerator'
|
|
2
|
+
require 'iconv'
|
|
2
3
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
require 'ray_ext'
|
|
5
|
+
|
|
6
|
+
module Ray
|
|
7
|
+
BIG_ENDIAN = ([1].pack("I") == [1].pack("N"))
|
|
8
|
+
INTERNAL_ENCODING = BIG_ENDIAN ? "UTF-32BE" : "UTF-32LE"
|
|
9
|
+
end
|
|
6
10
|
|
|
7
11
|
require 'ray/resource_set'
|
|
8
12
|
|
|
9
13
|
require 'ray/color'
|
|
10
14
|
require 'ray/rect'
|
|
15
|
+
require 'ray/vector'
|
|
11
16
|
require 'ray/image'
|
|
12
|
-
require 'ray/
|
|
13
|
-
require 'ray/
|
|
14
|
-
require 'ray/
|
|
17
|
+
require 'ray/shape'
|
|
18
|
+
require 'ray/drawable'
|
|
19
|
+
require 'ray/text_helper'
|
|
20
|
+
require 'ray/font'
|
|
21
|
+
require 'ray/text'
|
|
22
|
+
require 'ray/audio'
|
|
23
|
+
require 'ray/input'
|
|
15
24
|
|
|
16
25
|
require 'ray/image_set'
|
|
17
|
-
require 'ray/font_set'
|
|
18
|
-
require 'ray/sound_set'
|
|
19
|
-
require 'ray/music_set'
|
|
26
|
+
require 'ray/font_set'
|
|
27
|
+
require 'ray/sound_set'
|
|
28
|
+
require 'ray/music_set'
|
|
29
|
+
|
|
30
|
+
require 'ray/turtle'
|
|
20
31
|
|
|
21
32
|
require 'ray/dsl'
|
|
22
33
|
require 'ray/helper'
|
|
@@ -24,4 +35,5 @@ require 'ray/helper'
|
|
|
24
35
|
require 'ray/sprite'
|
|
25
36
|
|
|
26
37
|
require 'ray/scene'
|
|
38
|
+
require 'ray/scene_list'
|
|
27
39
|
require 'ray/game'
|
data/lib/ray/rect.rb
CHANGED
|
@@ -7,6 +7,7 @@ module Ray
|
|
|
7
7
|
# @return [true, false] True if the receiver is inside the rect.
|
|
8
8
|
# (false if they just collide)
|
|
9
9
|
def inside?(rect)
|
|
10
|
+
rect = rect.to_rect
|
|
10
11
|
(x >= rect.x) && (y >= rect.y) &&
|
|
11
12
|
(x + w) <= (rect.x + rect.w) &&
|
|
12
13
|
(y + h) <= (rect.y + rect.h)
|
|
@@ -14,10 +15,11 @@ module Ray
|
|
|
14
15
|
|
|
15
16
|
# @return [true, false] True if the receiver is outside the rect.
|
|
16
17
|
def outside?(rect)
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
!rect.contain?(
|
|
20
|
-
!rect.contain?(
|
|
18
|
+
rect = rect.to_rect
|
|
19
|
+
!rect.contain?(top_left) &&
|
|
20
|
+
!rect.contain?(bottom_left) &&
|
|
21
|
+
!rect.contain?(top_right) &&
|
|
22
|
+
!rect.contain?(bottom_right)
|
|
21
23
|
end
|
|
22
24
|
|
|
23
25
|
# @return [true, false] True if the receiver collides with the rect.
|
|
@@ -26,9 +28,30 @@ module Ray
|
|
|
26
28
|
end
|
|
27
29
|
|
|
28
30
|
# @return [true, false] True if the receiver contians this point
|
|
29
|
-
def contain?(
|
|
30
|
-
|
|
31
|
-
|
|
31
|
+
def contain?(p)
|
|
32
|
+
p = p.to_vector2
|
|
33
|
+
(p.x >= x) && (p.y >= y) &&
|
|
34
|
+
(p.x < x + w) && (p.y < y + h)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
# @return [Ray::Vector2] top left corner
|
|
38
|
+
def top_left
|
|
39
|
+
Ray::Vector2[x, y]
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
# @return [Ray::Vector2] top right corner
|
|
43
|
+
def top_right
|
|
44
|
+
Ray::Vector2[x + w, y]
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
# @return [Ray::Vector2] bottom left corner
|
|
48
|
+
def bottom_left
|
|
49
|
+
Ray::Vector2[x, y + h]
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
# @return [Ray::Vector2] bottom right corner
|
|
53
|
+
def bottom_right
|
|
54
|
+
Ray::Vector2[x + w, y + h]
|
|
32
55
|
end
|
|
33
56
|
|
|
34
57
|
# @return [true, false] True if the two rects are equal
|
|
@@ -37,10 +60,28 @@ module Ray
|
|
|
37
60
|
x == rect.x && y == rect.y && w == rect.w && h == rect.h
|
|
38
61
|
end
|
|
39
62
|
|
|
63
|
+
def eql?(obj)
|
|
64
|
+
self.class == obj.class && self == obj
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def hash
|
|
68
|
+
[x, y, w, h].hash
|
|
69
|
+
end
|
|
70
|
+
|
|
40
71
|
def to_rect
|
|
41
72
|
self
|
|
42
73
|
end
|
|
43
74
|
|
|
75
|
+
# @return [Ray::Vector2] The position of the rect
|
|
76
|
+
def pos
|
|
77
|
+
Vector2[x, y]
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
# @return [Ray::Vector2] The size of the rect
|
|
81
|
+
def size
|
|
82
|
+
Vector2[w, h]
|
|
83
|
+
end
|
|
84
|
+
|
|
44
85
|
alias :w :width
|
|
45
86
|
alias :h :height
|
|
46
87
|
|
data/lib/ray/rmagick.rb
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
require 'rmagick'
|
|
2
|
+
|
|
3
|
+
module Ray
|
|
4
|
+
class Color
|
|
5
|
+
# @return [Ray::Color] A color created from an Magick::Pixel
|
|
6
|
+
def self.from_rmagick(pix)
|
|
7
|
+
max = Magick::QuantumRange.to_f
|
|
8
|
+
new((pix.red * 255) / max, (pix.green * 255) / max, (pix.blue * 255) / max,
|
|
9
|
+
((max - pix.opacity) * 255) / max)
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
# @return [Magick::Pixel] An equivalent color for RMagick
|
|
13
|
+
def to_rmagick
|
|
14
|
+
max = Magick::QuantumRange.to_f
|
|
15
|
+
Magick::Pixel.new((r * max) / 255, (g * max) / 255, (b * max) / 255,
|
|
16
|
+
((255 - a) * max) / 255)
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
class Image
|
|
21
|
+
# @return [Ray::Image] An image created from a Magic::Image
|
|
22
|
+
def self.from_rmagick(input)
|
|
23
|
+
img = new(:w => input.columns, :h => input.rows)
|
|
24
|
+
|
|
25
|
+
img.map_with_pos! do |col, x, y|
|
|
26
|
+
Color.from_rmagick(input.pixel_color(x, y))
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
# @return [Magick::Image] An equivalant image for RMagick
|
|
31
|
+
def to_rmagick
|
|
32
|
+
img = Magick::Image.new(width, height)
|
|
33
|
+
|
|
34
|
+
each_with_pos do |col, x, y|
|
|
35
|
+
img.pixel_color(x, y, col.to_rmagick)
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
img
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|