ray 0.1.0.pre1 → 0.1.0
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/README.md +235 -32
- data/Rakefile +20 -49
- data/ext/audio.c +68 -0
- data/ext/audio_source.c +197 -0
- data/ext/buffer_renderer.c +130 -0
- data/ext/color.c +179 -0
- data/ext/drawable.c +446 -0
- data/ext/event.c +337 -0
- data/ext/extconf.rb +80 -6
- data/ext/font.c +97 -0
- data/ext/gl.c +114 -0
- data/ext/gl_buffer.c +224 -0
- data/ext/gl_index_buffer.c +202 -0
- data/ext/gl_int_array.c +139 -0
- data/ext/gl_vertex.c +157 -0
- data/ext/image.c +263 -0
- data/ext/image_target.c +84 -0
- data/ext/input.c +53 -0
- data/ext/matrix.c +374 -0
- data/ext/music.c +113 -0
- data/ext/polygon.c +426 -0
- data/ext/ray.c +59 -0
- data/ext/ray.h +168 -0
- data/ext/rect.c +255 -0
- data/ext/say.h +31 -0
- data/ext/say_all.h +77 -0
- data/ext/say_arial.h +14689 -0
- data/ext/say_array.c +124 -0
- data/ext/say_array.h +34 -0
- data/ext/say_audio.c +64 -0
- data/ext/say_audio.h +170 -0
- data/ext/say_audio_context.c +40 -0
- data/ext/say_audio_source.c +96 -0
- data/ext/say_basic_type.c +17 -0
- data/ext/say_basic_type.h +47 -0
- data/ext/say_buffer.c +277 -0
- data/ext/say_buffer.h +37 -0
- data/ext/say_buffer_renderer.c +121 -0
- data/ext/say_buffer_renderer.h +33 -0
- data/ext/say_buffer_slice.c +247 -0
- data/ext/say_buffer_slice.h +29 -0
- data/ext/say_clean_up.c +14 -0
- data/ext/say_context.c +163 -0
- data/ext/say_context.h +26 -0
- data/ext/say_drawable.c +350 -0
- data/ext/say_drawable.h +100 -0
- data/ext/say_error.c +27 -0
- data/ext/say_event.h +213 -0
- data/ext/say_font.c +335 -0
- data/ext/say_font.h +51 -0
- data/ext/say_image.c +283 -0
- data/ext/say_image.h +52 -0
- data/ext/say_image_target.c +134 -0
- data/ext/say_image_target.h +25 -0
- data/ext/say_imp.h +70 -0
- data/ext/say_index_buffer.c +90 -0
- data/ext/say_index_buffer.h +29 -0
- data/ext/say_index_buffer_slice.c +227 -0
- data/ext/say_index_buffer_slice.h +28 -0
- data/ext/say_input.c +35 -0
- data/ext/say_matrix.c +314 -0
- data/ext/say_matrix.h +55 -0
- data/ext/say_music.c +225 -0
- data/ext/say_osx.h +62 -0
- data/ext/say_osx_context.h +98 -0
- data/ext/say_osx_window.h +766 -0
- data/ext/say_polygon.c +358 -0
- data/ext/say_polygon.h +62 -0
- data/ext/say_renderer.c +42 -0
- data/ext/say_renderer.h +22 -0
- data/ext/say_shader.c +375 -0
- data/ext/say_shader.h +91 -0
- data/ext/say_sound.c +67 -0
- data/ext/say_sound_buffer.c +96 -0
- data/ext/say_sprite.c +273 -0
- data/ext/say_sprite.h +53 -0
- data/ext/say_string.c +9 -0
- data/ext/say_table.c +86 -0
- data/ext/say_table.h +24 -0
- data/ext/say_target.c +264 -0
- data/ext/say_target.h +67 -0
- data/ext/say_text.c +441 -0
- data/ext/say_text.h +56 -0
- data/ext/say_thread.c +46 -0
- data/ext/say_thread.h +39 -0
- data/ext/say_thread_variable.c +44 -0
- data/ext/say_utf.c +62 -0
- data/ext/say_vertex_type.c +113 -0
- data/ext/say_vertex_type.h +40 -0
- data/ext/say_vfile.c +57 -0
- data/ext/say_view.c +150 -0
- data/ext/say_view.h +44 -0
- data/ext/say_win.h +24 -0
- data/ext/say_win_context.h +91 -0
- data/ext/say_win_window.h +670 -0
- data/ext/say_window.c +155 -0
- data/ext/say_window.h +43 -0
- data/ext/say_x11.h +41 -0
- data/ext/say_x11_context.h +96 -0
- data/ext/say_x11_window.h +818 -0
- data/ext/shader.c +302 -0
- data/ext/sound.c +118 -0
- data/ext/sound_buffer.c +75 -0
- data/ext/sprite.c +241 -0
- data/ext/stb_image.h +4971 -0
- data/ext/stb_image_write.h +511 -0
- data/ext/target.c +184 -0
- data/ext/text.c +162 -0
- data/ext/utils.c +10 -0
- data/ext/vector.c +261 -0
- data/ext/vendor/freetype/bin/freetype6.dll +0 -0
- data/ext/vendor/freetype/bin/zlib1.dll +0 -0
- data/ext/vendor/freetype/include/freetype2/freetype/config/ftconfig.h +350 -0
- data/ext/vendor/freetype/include/freetype2/freetype/config/ftheader.h +729 -0
- data/ext/vendor/freetype/include/freetype2/freetype/config/ftmodule.h +22 -0
- data/ext/vendor/freetype/include/freetype2/freetype/config/ftoption.h +695 -0
- data/ext/vendor/freetype/include/freetype2/freetype/config/ftstdlib.h +180 -0
- data/ext/vendor/freetype/include/freetype2/freetype/freetype.h +3434 -0
- data/ext/vendor/freetype/include/freetype2/freetype/ftbbox.h +94 -0
- data/ext/vendor/freetype/include/freetype2/freetype/ftbdf.h +200 -0
- data/ext/vendor/freetype/include/freetype2/freetype/ftbitmap.h +206 -0
- data/ext/vendor/freetype/include/freetype2/freetype/ftcache.h +1110 -0
- data/ext/vendor/freetype/include/freetype2/freetype/ftchapters.h +100 -0
- data/ext/vendor/freetype/include/freetype2/freetype/fterrdef.h +239 -0
- data/ext/vendor/freetype/include/freetype2/freetype/fterrors.h +206 -0
- data/ext/vendor/freetype/include/freetype2/freetype/ftgasp.h +113 -0
- data/ext/vendor/freetype/include/freetype2/freetype/ftglyph.h +575 -0
- data/ext/vendor/freetype/include/freetype2/freetype/ftgxval.h +358 -0
- data/ext/vendor/freetype/include/freetype2/freetype/ftgzip.h +102 -0
- data/ext/vendor/freetype/include/freetype2/freetype/ftimage.h +1237 -0
- data/ext/vendor/freetype/include/freetype2/freetype/ftincrem.h +331 -0
- data/ext/vendor/freetype/include/freetype2/freetype/ftlcdfil.h +166 -0
- data/ext/vendor/freetype/include/freetype2/freetype/ftlist.h +273 -0
- data/ext/vendor/freetype/include/freetype2/freetype/ftlzw.h +99 -0
- data/ext/vendor/freetype/include/freetype2/freetype/ftmac.h +272 -0
- data/ext/vendor/freetype/include/freetype2/freetype/ftmm.h +378 -0
- data/ext/vendor/freetype/include/freetype2/freetype/ftmodapi.h +406 -0
- data/ext/vendor/freetype/include/freetype2/freetype/ftmoderr.h +155 -0
- data/ext/vendor/freetype/include/freetype2/freetype/ftotval.h +198 -0
- data/ext/vendor/freetype/include/freetype2/freetype/ftoutln.h +526 -0
- data/ext/vendor/freetype/include/freetype2/freetype/ftpfr.h +172 -0
- data/ext/vendor/freetype/include/freetype2/freetype/ftrender.h +229 -0
- data/ext/vendor/freetype/include/freetype2/freetype/ftsizes.h +159 -0
- data/ext/vendor/freetype/include/freetype2/freetype/ftsnames.h +170 -0
- data/ext/vendor/freetype/include/freetype2/freetype/ftstroke.h +716 -0
- data/ext/vendor/freetype/include/freetype2/freetype/ftsynth.h +73 -0
- data/ext/vendor/freetype/include/freetype2/freetype/ftsystem.h +346 -0
- data/ext/vendor/freetype/include/freetype2/freetype/fttrigon.h +350 -0
- data/ext/vendor/freetype/include/freetype2/freetype/fttypes.h +583 -0
- data/ext/vendor/freetype/include/freetype2/freetype/ftwinfnt.h +263 -0
- data/ext/vendor/freetype/include/freetype2/freetype/ftxf86.h +80 -0
- data/ext/vendor/freetype/include/freetype2/freetype/t1tables.h +450 -0
- data/ext/vendor/freetype/include/freetype2/freetype/ttnameid.h +1132 -0
- data/ext/vendor/freetype/include/freetype2/freetype/tttables.h +756 -0
- data/ext/vendor/freetype/include/freetype2/freetype/tttags.h +99 -0
- data/ext/vendor/freetype/include/freetype2/freetype/ttunpat.h +59 -0
- data/ext/vendor/freetype/include/ft2build.h +61 -0
- data/ext/vendor/freetype/lib/freetype-bcc.lib +0 -0
- data/ext/vendor/freetype/lib/freetype6.def +249 -0
- data/ext/vendor/freetype/lib/libfreetype.dll.a +0 -0
- data/ext/vendor/freetype/lib/tmp.freetype.lib +0 -0
- data/ext/vendor/glew/LICENSE.txt +73 -0
- data/ext/vendor/glew/README.txt +18 -0
- data/ext/vendor/glew/include/GL/glew.h +15507 -0
- data/ext/vendor/glew/include/GL/glxew.h +1568 -0
- data/ext/vendor/glew/include/GL/wglew.h +1361 -0
- data/ext/vendor/glew/lib/glew32.dll +0 -0
- data/ext/vendor/glew/lib/glew32mx.dll +0 -0
- data/ext/vendor/glew/lib/libglew32.a +0 -0
- data/ext/vendor/glew/lib/libglew32.dll.a +0 -0
- data/ext/vendor/glew/lib/libglew32mx.a +0 -0
- data/ext/vendor/glew/lib/libglew32mx.dll.a +0 -0
- data/ext/vendor/openal/COPYING +484 -0
- data/ext/vendor/openal/Win32/soft_oal.dll +0 -0
- data/ext/vendor/openal/include/AL/al.h +724 -0
- data/ext/vendor/openal/include/AL/alc.h +277 -0
- data/ext/vendor/openal/include/AL/alext.h +165 -0
- data/ext/vendor/openal/include/AL/efx-creative.h +3 -0
- data/ext/vendor/openal/include/AL/efx.h +758 -0
- data/ext/vendor/openal/lib/libOpenAL32.dll.a +0 -0
- data/ext/vendor/sndfile/bin/libsndfile-1.dll +0 -0
- data/ext/vendor/sndfile/include/sndfile.h +666 -0
- data/ext/vendor/sndfile/include/sndfile.hh +422 -0
- data/ext/vendor/sndfile/lib/libsndfile-1.def +41 -0
- data/ext/vendor/sndfile/lib/libsndfile-1.lib +0 -0
- data/ext/vertex.c +96 -0
- data/ext/view.c +131 -0
- data/ext/window.c +183 -0
- data/lib/ray/animation.rb +248 -0
- data/lib/ray/animation/block_animation.rb +36 -0
- data/lib/ray/animation/circular_motion.rb +57 -0
- data/lib/ray/animation/color_variation.rb +102 -0
- data/lib/ray/animation/combination.rb +71 -0
- data/lib/ray/animation/float_variation.rb +76 -0
- data/lib/ray/animation/sequence.rb +65 -0
- data/lib/ray/animation/sprite_animation.rb +68 -0
- data/lib/ray/animation/vector_variation.rb +111 -0
- data/lib/ray/animation_list.rb +50 -0
- data/lib/ray/audio.rb +4 -7
- data/lib/ray/buffer_renderer.rb +9 -0
- data/lib/ray/color.rb +41 -6
- data/lib/ray/drawable.rb +34 -9
- data/lib/ray/dsl.rb +6 -0
- data/lib/ray/dsl/event.rb +1 -1
- data/lib/ray/dsl/event_listener.rb +14 -10
- data/lib/ray/dsl/event_raiser.rb +5 -2
- data/lib/ray/dsl/event_runner.rb +4 -10
- data/lib/ray/dsl/event_translator.rb +67 -99
- data/lib/ray/dsl/handler.rb +1 -1
- data/lib/ray/dsl/matcher.rb +40 -27
- data/lib/ray/event.rb +22 -0
- data/lib/ray/font.rb +0 -42
- data/lib/ray/font_set.rb +3 -7
- data/lib/ray/game.rb +33 -73
- data/lib/ray/gl/int_array.rb +24 -0
- data/lib/ray/gl/vertex.rb +106 -0
- data/lib/ray/helper.rb +25 -11
- data/lib/ray/image.rb +9 -154
- data/lib/ray/image_set.rb +3 -8
- data/lib/ray/image_target.rb +12 -0
- data/lib/ray/matrix.rb +90 -0
- data/lib/ray/music.rb +12 -0
- data/lib/ray/polygon.rb +77 -0
- data/lib/ray/ray.rb +45 -13
- data/lib/ray/rect.rb +14 -3
- data/lib/ray/resource_set.rb +18 -35
- data/lib/ray/scene.rb +43 -81
- data/lib/ray/scene_list.rb +12 -5
- data/lib/ray/shader.rb +82 -0
- data/lib/ray/sound.rb +18 -0
- data/lib/ray/sound_buffer.rb +6 -0
- data/lib/ray/sound_buffer_set.rb +32 -0
- data/lib/ray/sprite.rb +111 -97
- data/lib/ray/target.rb +18 -0
- data/lib/ray/text.rb +80 -58
- data/lib/ray/text_helper.rb +21 -27
- data/lib/ray/turtle.rb +49 -38
- data/lib/ray/vector.rb +76 -1
- data/lib/ray/vertex.rb +24 -0
- data/lib/ray/view.rb +47 -0
- data/lib/ray/window.rb +23 -0
- data/samples/_media/Beep.wav +0 -0
- data/samples/_media/CptnRuby Gem.png +0 -0
- data/samples/_media/CptnRuby Map.txt +25 -0
- data/samples/_media/CptnRuby Tileset.png +0 -0
- data/samples/_media/CptnRuby.png +0 -0
- data/samples/_media/Space.png +0 -0
- data/samples/_media/Star.png +0 -0
- data/samples/_media/Starfighter.png +0 -0
- data/samples/animation/chain.rb +33 -0
- data/samples/animation/circle.rb +38 -0
- data/samples/animation/color.rb +18 -0
- data/samples/animation/rotation.rb +17 -0
- data/samples/animation/sequence.rb +33 -0
- data/samples/animation/shader.rb +65 -0
- data/samples/animation/sprite_motion.rb +103 -0
- data/samples/animation/translation.rb +23 -0
- data/samples/audio/spacial.rb +25 -11
- data/samples/buffer/buffer.rb +28 -0
- data/samples/buffer/index_buffer.rb +36 -0
- data/samples/buffer/renderer.rb +27 -0
- data/samples/cptn_ruby/cptn_ruby.rb +279 -0
- data/samples/hello_world/hello.rb +2 -2
- data/samples/hello_world/hello_dsl.rb +3 -3
- data/samples/hello_world/text.rb +2 -2
- data/samples/opengl/cube.rb +124 -0
- data/samples/opengl/image.rb +36 -16
- data/samples/opengl/obj_loader.rb +99 -0
- data/samples/opengl/opengl.rb +24 -18
- data/samples/opengl/shader.rb +36 -26
- data/samples/pong/pong.rb +41 -39
- data/samples/{run_scene.rb → scenes/run_scene.rb} +21 -7
- data/samples/shaders/geometry.rb +98 -0
- data/samples/shaders/scene.rb +19 -12
- data/samples/shaders/shaders.rb +34 -17
- data/samples/shaders/shape.rb +12 -7
- data/samples/sokoban/level_1 +11 -7
- data/samples/sokoban/sokoban.rb +36 -63
- data/samples/starfighter/starfighter.rb +159 -0
- data/samples/test/actual_scene.rb +3 -3
- data/samples/test/scene_riot.rb +4 -4
- data/samples/test/scene_spec.rb +3 -3
- data/samples/test/scene_test_unit.rb +1 -1
- data/samples/turtle/byzantium.rb +10 -5
- data/samples/turtle/hilbert.rb +16 -11
- data/samples/turtle/koch.rb +16 -11
- data/samples/turtle/mandala.rb +43 -38
- data/samples/turtle/tree.rb +13 -8
- data/samples/view/resize.rb +26 -0
- data/samples/view/view.rb +35 -0
- data/samples/window/all_events.rb +44 -0
- data/samples/window/change_title.rb +16 -0
- data/samples/window/fullscreen.rb +18 -0
- data/samples/window/get_pixel.rb +29 -0
- data/samples/window/icon.rb +88 -0
- data/samples/window/input.rb +27 -0
- data/samples/window/no_border.rb +16 -0
- data/samples/window/resize.rb +24 -0
- data/test/animation/color_variation_test.rb +64 -0
- data/test/animation/combination_test.rb +35 -0
- data/test/animation/float_variation_test.rb +75 -0
- data/test/animation/vector_variation_test.rb +123 -0
- data/test/animation_list_test.rb +122 -0
- data/test/animation_test.rb +83 -0
- data/test/audio_test.rb +88 -33
- data/test/buffer_renderer_test.rb +38 -0
- data/test/color_test.rb +31 -22
- data/test/drawable_test.rb +207 -7
- data/test/dsl_test.rb +25 -7
- data/test/font_test.rb +6 -40
- data/test/game_test.rb +76 -0
- data/test/gl_buffer_test.rb +26 -0
- data/test/gl_index_buffer_test.rb +17 -0
- data/test/gl_vertex_test.rb +117 -0
- data/test/helpers.rb +45 -5
- data/test/image_target_test.rb +19 -0
- data/test/image_test.rb +73 -53
- data/test/int_array_test.rb +64 -0
- data/test/matrix_test.rb +134 -0
- data/test/polygon_test.rb +126 -0
- data/test/rect_test.rb +6 -8
- data/test/res/frag.c +14 -0
- data/test/res/frag3d.c +10 -0
- data/test/res/frag_gray.c +17 -0
- data/test/res/frag_light3d.c +20 -0
- data/test/res/light3d.c +20 -0
- data/test/res/sprite.png +0 -0
- data/test/res/teapot.obj +12831 -0
- data/test/res/vert.c +17 -0
- data/test/res/vertex3d.c +14 -0
- data/test/resource_set_test.rb +8 -45
- data/test/run_all.rb +1 -1
- data/test/scene_list_test.rb +79 -0
- data/test/scene_test.rb +168 -0
- data/test/shader_test.rb +58 -0
- data/test/sprite_test.rb +46 -41
- data/test/target_test.rb +34 -0
- data/test/text_test.rb +20 -31
- data/test/turtle_test.rb +35 -20
- data/test/vector_test.rb +61 -19
- data/test/vertex_test.rb +43 -0
- data/test/view_test.rb +61 -0
- metadata +347 -126
- data/.yardopts +0 -4
- data/VERSION +0 -1
- data/ext/audio.cpp +0 -723
- data/ext/color.cpp +0 -159
- data/ext/drawable.cpp +0 -91
- data/ext/event.cpp +0 -460
- data/ext/font.cpp +0 -190
- data/ext/image.cpp +0 -733
- data/ext/input.cpp +0 -74
- data/ext/ray.cpp +0 -168
- data/ext/ray.hpp +0 -356
- data/ext/rect.cpp +0 -245
- data/ext/shader.cpp +0 -169
- data/ext/shape.cpp +0 -409
- data/ext/sprite.cpp +0 -306
- data/ext/text.cpp +0 -181
- data/ext/vector.cpp +0 -215
- data/guide.md +0 -619
- data/lib/ray/input.rb +0 -10
- data/lib/ray/music_set.rb +0 -37
- data/lib/ray/rmagick.rb +0 -41
- data/lib/ray/shape.rb +0 -132
- data/lib/ray/sound_set.rb +0 -37
- data/samples/opengl/binding.rb +0 -38
- data/test/ray_test.rb +0 -25
- data/test/shape_test.rb +0 -101
- data/yard_ext.rb +0 -63
data/ext/ray.c
ADDED
@@ -0,0 +1,59 @@
|
|
1
|
+
#include "ray.h"
|
2
|
+
|
3
|
+
VALUE ray_mRay = Qnil;
|
4
|
+
|
5
|
+
static
|
6
|
+
VALUE ray_clean_up(VALUE self) {
|
7
|
+
say_clean_up();
|
8
|
+
return Qnil;
|
9
|
+
}
|
10
|
+
|
11
|
+
/* @return [Ray::Vector2] Size of the screen */
|
12
|
+
static
|
13
|
+
VALUE ray_screen_size(VALUE self) {
|
14
|
+
return ray_vector2_to_rb(say_make_vector2(say_imp_screen_get_width(),
|
15
|
+
say_imp_screen_get_height()));
|
16
|
+
}
|
17
|
+
|
18
|
+
void Init_ray_ext() {
|
19
|
+
#ifdef SAY_OSX
|
20
|
+
say_osx_flip_pool();
|
21
|
+
#endif
|
22
|
+
|
23
|
+
ray_mRay = rb_define_module("Ray");
|
24
|
+
|
25
|
+
rb_define_private_method(rb_singleton_class(ray_mRay),
|
26
|
+
"_clean_up!", ray_clean_up, 0);
|
27
|
+
|
28
|
+
rb_define_module_function(ray_mRay, "screen_size", ray_screen_size, 0);
|
29
|
+
|
30
|
+
Init_ray_vector();
|
31
|
+
Init_ray_rect();
|
32
|
+
Init_ray_matrix();
|
33
|
+
Init_ray_color();
|
34
|
+
Init_ray_vertex();
|
35
|
+
Init_ray_gl();
|
36
|
+
Init_ray_gl_vertex();
|
37
|
+
Init_ray_int_array();
|
38
|
+
Init_ray_gl_buffer();
|
39
|
+
Init_ray_gl_index_buffer();
|
40
|
+
Init_ray_image();
|
41
|
+
Init_ray_font();
|
42
|
+
Init_ray_shader();
|
43
|
+
Init_ray_view();
|
44
|
+
Init_ray_drawable();
|
45
|
+
Init_ray_polygon();
|
46
|
+
Init_ray_sprite();
|
47
|
+
Init_ray_text();
|
48
|
+
Init_ray_buffer_renderer();
|
49
|
+
Init_ray_target();
|
50
|
+
Init_ray_window();
|
51
|
+
Init_ray_image_target();
|
52
|
+
Init_ray_input();
|
53
|
+
Init_ray_event();
|
54
|
+
Init_ray_audio();
|
55
|
+
Init_ray_sound_buffer();
|
56
|
+
Init_ray_audio_source();
|
57
|
+
Init_ray_sound();
|
58
|
+
Init_ray_music();
|
59
|
+
}
|
data/ext/ray.h
ADDED
@@ -0,0 +1,168 @@
|
|
1
|
+
#ifndef RAY_H_
|
2
|
+
#define RAY_H_
|
3
|
+
|
4
|
+
#include "ruby.h"
|
5
|
+
#include "say.h"
|
6
|
+
|
7
|
+
#ifdef __cplusplus
|
8
|
+
extern "C" {
|
9
|
+
# if 0
|
10
|
+
}
|
11
|
+
# endif
|
12
|
+
#endif
|
13
|
+
|
14
|
+
typedef struct {
|
15
|
+
say_drawable *drawable;
|
16
|
+
VALUE obj;
|
17
|
+
|
18
|
+
size_t vsize;
|
19
|
+
} ray_drawable;
|
20
|
+
|
21
|
+
/* Classes and modules */
|
22
|
+
extern VALUE ray_mRay;
|
23
|
+
|
24
|
+
extern VALUE ray_cVector2;
|
25
|
+
extern VALUE ray_cVector3;
|
26
|
+
extern VALUE ray_cRect;
|
27
|
+
extern VALUE ray_cMatrix;
|
28
|
+
extern VALUE ray_cColor;
|
29
|
+
extern VALUE ray_cVertex;
|
30
|
+
extern VALUE ray_mGL;
|
31
|
+
extern VALUE ray_cGLVertex;
|
32
|
+
extern VALUE ray_cIntArray;
|
33
|
+
extern VALUE ray_cGLBuffer;
|
34
|
+
extern VALUE ray_cGLIndexBuffer;
|
35
|
+
extern VALUE ray_cImage;
|
36
|
+
extern VALUE ray_cFont;
|
37
|
+
extern VALUE ray_cShader;
|
38
|
+
extern VALUE ray_cView;
|
39
|
+
extern VALUE ray_cDrawable;
|
40
|
+
extern VALUE ray_cPolygon;
|
41
|
+
extern VALUE ray_cSprite;
|
42
|
+
extern VALUE ray_cText;
|
43
|
+
extern VALUE ray_cBufferRenderer;
|
44
|
+
extern VALUE ray_cTarget;
|
45
|
+
extern VALUE ray_cWindow;
|
46
|
+
extern VALUE ray_cImageTarget;
|
47
|
+
extern VALUE ray_cInput;
|
48
|
+
extern VALUE ray_cEvent;
|
49
|
+
extern VALUE ray_mAudio;
|
50
|
+
extern VALUE ray_cSoundBuffer;
|
51
|
+
extern VALUE ray_cAudioSource;
|
52
|
+
extern VALUE ray_cSound;
|
53
|
+
extern VALUE ray_cMusic;
|
54
|
+
|
55
|
+
/* Macros for Ruby's C API */
|
56
|
+
|
57
|
+
#define RAY_IS_A(obj, klass) (RTEST(rb_obj_is_kind_of(obj, klass)))
|
58
|
+
|
59
|
+
#define RAY_OBJ_CLASSNAME(obj) (rb_class2name(rb_class_of(obj)))
|
60
|
+
|
61
|
+
#define RAY_SYM(string) (ID2SYM(rb_intern(string)))
|
62
|
+
#define RAY_METH(string) (rb_intern(string))
|
63
|
+
|
64
|
+
#define RAY_ARRAY_AT(ary, i) (rb_funcall(ary, RAY_METH("[]"), 1, INT2FIX(i)))
|
65
|
+
|
66
|
+
void Init_ray_ext();
|
67
|
+
void Init_ray_vector();
|
68
|
+
void Init_ray_rect();
|
69
|
+
void Init_ray_matrix();
|
70
|
+
void Init_ray_color();
|
71
|
+
void Init_ray_vertex();
|
72
|
+
void Init_ray_gl();
|
73
|
+
void Init_ray_gl_vertex();
|
74
|
+
void Init_ray_int_array();
|
75
|
+
void Init_ray_gl_buffer();
|
76
|
+
void Init_ray_gl_index_buffer();
|
77
|
+
void Init_ray_image();
|
78
|
+
void Init_ray_font();
|
79
|
+
void Init_ray_shader();
|
80
|
+
void Init_ray_view();
|
81
|
+
void Init_ray_drawable();
|
82
|
+
void Init_ray_polygon();
|
83
|
+
void Init_ray_sprite();
|
84
|
+
void Init_ray_text();
|
85
|
+
void Init_ray_buffer_renderer();
|
86
|
+
void Init_ray_target();
|
87
|
+
void Init_ray_window();
|
88
|
+
void Init_ray_image_target();
|
89
|
+
void Init_ray_input();
|
90
|
+
void Init_ray_event();
|
91
|
+
void Init_ray_audio();
|
92
|
+
void Init_ray_sound_buffer();
|
93
|
+
void Init_ray_audio_source();
|
94
|
+
void Init_ray_sound();
|
95
|
+
void Init_ray_music();
|
96
|
+
|
97
|
+
/* Conversions */
|
98
|
+
|
99
|
+
say_vector2 *ray_rb2vector2_ptr(VALUE obj);
|
100
|
+
say_vector2 ray_rb2vector2(VALUE obj);
|
101
|
+
say_vector2 ray_convert_to_vector2(VALUE obj);
|
102
|
+
VALUE ray_vector2_to_rb(say_vector2 obj);
|
103
|
+
|
104
|
+
say_vector3 *ray_rb2vector3_ptr(VALUE obj);
|
105
|
+
say_vector3 ray_rb2vector3(VALUE obj);
|
106
|
+
say_vector3 ray_convert_to_vector3(VALUE obj);
|
107
|
+
VALUE ray_vector3_to_rb(say_vector3 obj);
|
108
|
+
|
109
|
+
say_rect *ray_rb2rect_ptr(VALUE obj);
|
110
|
+
say_rect ray_rb2rect(VALUE obj);
|
111
|
+
say_rect ray_convert_to_rect(VALUE obj);
|
112
|
+
VALUE ray_rect2rb(say_rect rect);
|
113
|
+
|
114
|
+
VALUE ray_matrix2rb(say_matrix *matrix);
|
115
|
+
say_matrix *ray_rb2matrix(VALUE matrix);
|
116
|
+
|
117
|
+
VALUE ray_view2rb(say_view *view);
|
118
|
+
say_view *ray_rb2view(VALUE self);
|
119
|
+
|
120
|
+
say_color ray_rb2col(VALUE object);
|
121
|
+
VALUE ray_col2rb(say_color color);
|
122
|
+
|
123
|
+
say_vertex *ray_rb2vertex(VALUE obj);
|
124
|
+
|
125
|
+
say_image *ray_rb2image(VALUE obj);
|
126
|
+
say_font *ray_rb2font(VALUE obj);
|
127
|
+
|
128
|
+
VALUE ray_shader2rb(say_shader *shader, VALUE owner);
|
129
|
+
say_shader *ray_rb2shader(VALUE obj);
|
130
|
+
|
131
|
+
say_drawable *ray_rb2drawable(VALUE obj);
|
132
|
+
say_polygon *ray_rb2polygon(VALUE obj);
|
133
|
+
say_sprite *ray_rb2sprite(VALUE obj);
|
134
|
+
say_text *ray_rb2text(VALUE obj);
|
135
|
+
|
136
|
+
say_target *ray_rb2target(VALUE obj);
|
137
|
+
say_window *ray_rb2window(VALUE obj);
|
138
|
+
say_image_target *ray_rb2image_target(VALUE obj);
|
139
|
+
|
140
|
+
say_event *ray_rb2event(VALUE obj);
|
141
|
+
|
142
|
+
say_input *ray_rb2input(VALUE obj);
|
143
|
+
VALUE ray_input2rb(say_input *input, VALUE owner);
|
144
|
+
|
145
|
+
say_sound_buffer *ray_rb2sound_buffer(VALUE obj);
|
146
|
+
|
147
|
+
say_audio_source *ray_rb2audio_source(VALUE obj);
|
148
|
+
say_sound *ray_rb2sound(VALUE obj);
|
149
|
+
say_music *ray_rb2music(VALUE obj);
|
150
|
+
|
151
|
+
say_array *ray_rb2int_array(VALUE obj);
|
152
|
+
|
153
|
+
say_buffer_renderer *ray_rb2buf_renderer(VALUE obj);
|
154
|
+
|
155
|
+
uint8_t ray_byte_clamp(int color);
|
156
|
+
|
157
|
+
VALUE ray_get_vertex_class(size_t id);
|
158
|
+
size_t ray_get_vtype(VALUE class);
|
159
|
+
GLenum ray_buf_type(VALUE type);
|
160
|
+
|
161
|
+
#ifdef __cplusplus
|
162
|
+
# if 0
|
163
|
+
{
|
164
|
+
# endif
|
165
|
+
}
|
166
|
+
#endif
|
167
|
+
|
168
|
+
#endif
|
data/ext/rect.c
ADDED
@@ -0,0 +1,255 @@
|
|
1
|
+
#include "ray.h"
|
2
|
+
|
3
|
+
VALUE ray_cRect = Qnil;
|
4
|
+
|
5
|
+
say_rect *ray_rb2rect_ptr(VALUE obj) {
|
6
|
+
if (!RAY_IS_A(obj, rb_path2class("Ray::Rect"))) {
|
7
|
+
rb_raise(rb_eTypeError, "Can't convert %s into Ray::Rect",
|
8
|
+
RAY_OBJ_CLASSNAME(obj));
|
9
|
+
}
|
10
|
+
|
11
|
+
say_rect *rect;
|
12
|
+
Data_Get_Struct(obj, say_rect, rect);
|
13
|
+
|
14
|
+
return rect;
|
15
|
+
}
|
16
|
+
|
17
|
+
say_rect ray_rb2rect(VALUE obj) {
|
18
|
+
return *ray_rb2rect_ptr(obj);
|
19
|
+
}
|
20
|
+
|
21
|
+
say_rect ray_convert_to_rect(VALUE obj) {
|
22
|
+
obj = rb_funcall(obj, RAY_METH("to_rect"), 0);
|
23
|
+
return ray_rb2rect(obj);
|
24
|
+
}
|
25
|
+
|
26
|
+
VALUE ray_rect2rb(say_rect rect) {
|
27
|
+
say_rect *obj = malloc(sizeof(say_rect));
|
28
|
+
*obj = rect;
|
29
|
+
|
30
|
+
return Data_Wrap_Struct(ray_cRect, 0, free, obj);
|
31
|
+
}
|
32
|
+
|
33
|
+
static
|
34
|
+
VALUE ray_alloc_rect(VALUE self) {
|
35
|
+
say_rect *rect = malloc(sizeof(say_rect));
|
36
|
+
*rect = say_make_rect(0, 0, 0, 0);
|
37
|
+
|
38
|
+
return Data_Wrap_Struct(self, 0, free, rect);
|
39
|
+
}
|
40
|
+
|
41
|
+
/*
|
42
|
+
@overload initialize(x, y)
|
43
|
+
Creates a new rect with size set to 0, 0.
|
44
|
+
|
45
|
+
@overload initialize(x, y, w, h)
|
46
|
+
Creates a new rect with the specified size.
|
47
|
+
|
48
|
+
@overload initialize(hash)
|
49
|
+
Creates a new rect according to the keys specified in hash.
|
50
|
+
|
51
|
+
@option hash [Float] :x
|
52
|
+
@option hash [Float] :y
|
53
|
+
@option hash [Float] (0) :width
|
54
|
+
@option hash [Float] (0) :height required if width is set
|
55
|
+
|
56
|
+
@option hash [Float] (0) :w alias for :width
|
57
|
+
@option hash [Float] (0) :h alias for :height
|
58
|
+
*/
|
59
|
+
static
|
60
|
+
VALUE ray_init_rect(int argc, VALUE *argv, VALUE self) {
|
61
|
+
VALUE x_or_hash, y, w, h;
|
62
|
+
rb_scan_args(argc, argv, "13", &x_or_hash, &y, &w, &h);
|
63
|
+
|
64
|
+
int type = TYPE(x_or_hash);
|
65
|
+
if (type == T_HASH) {
|
66
|
+
if (!NIL_P(y)) {
|
67
|
+
rb_raise(rb_eArgError, "wrong number of arguments (%d for 1)",
|
68
|
+
argc);
|
69
|
+
}
|
70
|
+
|
71
|
+
VALUE hash = x_or_hash;
|
72
|
+
|
73
|
+
x_or_hash = rb_hash_aref(hash, RAY_SYM("x"));
|
74
|
+
y = rb_hash_aref(hash, RAY_SYM("y"));
|
75
|
+
|
76
|
+
w = rb_hash_aref(hash, RAY_SYM("width"));
|
77
|
+
h = rb_hash_aref(hash, RAY_SYM("height"));
|
78
|
+
|
79
|
+
if (NIL_P(w)) w = rb_hash_aref(hash, RAY_SYM("w"));
|
80
|
+
if (NIL_P(h)) h = rb_hash_aref(hash, RAY_SYM("h"));
|
81
|
+
|
82
|
+
if (NIL_P(y)) {
|
83
|
+
rb_raise(rb_eArgError, "missing option :y");
|
84
|
+
}
|
85
|
+
|
86
|
+
if (!NIL_P(w) && NIL_P(h)) {
|
87
|
+
rb_raise(rb_eArgError, "missing option :height");
|
88
|
+
}
|
89
|
+
}
|
90
|
+
|
91
|
+
say_rect *rect;
|
92
|
+
Data_Get_Struct(self, say_rect, rect);
|
93
|
+
|
94
|
+
rect->x = NUM2DBL(x_or_hash);
|
95
|
+
rect->y = NUM2DBL(y);
|
96
|
+
|
97
|
+
if (!NIL_P(w)) {
|
98
|
+
rect->w = NUM2DBL(w);
|
99
|
+
rect->h = NUM2DBL(h);
|
100
|
+
}
|
101
|
+
else {
|
102
|
+
rect->w = 0;
|
103
|
+
rect->h = 0;
|
104
|
+
}
|
105
|
+
|
106
|
+
return Qnil;
|
107
|
+
}
|
108
|
+
|
109
|
+
static
|
110
|
+
VALUE ray_init_rect_copy(VALUE self, VALUE other) {
|
111
|
+
say_rect *rect = NULL, *source = NULL;
|
112
|
+
Data_Get_Struct(self, say_rect, rect);
|
113
|
+
Data_Get_Struct(other, say_rect, source);
|
114
|
+
|
115
|
+
*rect = *source;
|
116
|
+
return self;
|
117
|
+
}
|
118
|
+
|
119
|
+
/* @return [Float] X position of the rect */
|
120
|
+
static
|
121
|
+
VALUE ray_rect_x(VALUE self) {
|
122
|
+
say_rect *rect;
|
123
|
+
Data_Get_Struct(self, say_rect, rect);
|
124
|
+
|
125
|
+
return rb_float_new(rect->x);
|
126
|
+
}
|
127
|
+
|
128
|
+
/* @return [Float] Y position of the rect */
|
129
|
+
static
|
130
|
+
VALUE ray_rect_y(VALUE self) {
|
131
|
+
say_rect *rect;
|
132
|
+
Data_Get_Struct(self, say_rect, rect);
|
133
|
+
|
134
|
+
return rb_float_new(rect->y);
|
135
|
+
}
|
136
|
+
|
137
|
+
/* @return [Float] width of the rect */
|
138
|
+
static
|
139
|
+
VALUE ray_rect_w(VALUE self) {
|
140
|
+
say_rect *rect;
|
141
|
+
Data_Get_Struct(self, say_rect, rect);
|
142
|
+
|
143
|
+
return rb_float_new(rect->w);
|
144
|
+
}
|
145
|
+
|
146
|
+
/* @return [Float] height of the rect */
|
147
|
+
static
|
148
|
+
VALUE ray_rect_h(VALUE self) {
|
149
|
+
say_rect *rect;
|
150
|
+
Data_Get_Struct(self, say_rect, rect);
|
151
|
+
|
152
|
+
return rb_float_new(rect->h);
|
153
|
+
}
|
154
|
+
|
155
|
+
/*
|
156
|
+
@overload x=(val)
|
157
|
+
Sets the x position of the rect
|
158
|
+
|
159
|
+
@param [Float] val The new x position of the rect
|
160
|
+
@return [void]
|
161
|
+
*/
|
162
|
+
static
|
163
|
+
VALUE ray_rect_set_x(VALUE self, VALUE val) {
|
164
|
+
rb_check_frozen(self);
|
165
|
+
|
166
|
+
say_rect *rect;
|
167
|
+
Data_Get_Struct(self, say_rect, rect);
|
168
|
+
|
169
|
+
rect->x = NUM2DBL(val);
|
170
|
+
|
171
|
+
return val;
|
172
|
+
}
|
173
|
+
|
174
|
+
/*
|
175
|
+
@overload y=(val)
|
176
|
+
Changes the y position of the rect.
|
177
|
+
|
178
|
+
@param [Float] val The new y position of the rect.
|
179
|
+
@return [void]
|
180
|
+
*/
|
181
|
+
static
|
182
|
+
VALUE ray_rect_set_y(VALUE self, VALUE val) {
|
183
|
+
rb_check_frozen(self);
|
184
|
+
|
185
|
+
say_rect *rect;
|
186
|
+
Data_Get_Struct(self, say_rect, rect);
|
187
|
+
|
188
|
+
rect->y = NUM2DBL(val);
|
189
|
+
|
190
|
+
return val;
|
191
|
+
}
|
192
|
+
|
193
|
+
/*
|
194
|
+
@overload w=(val)
|
195
|
+
Changes the with of the rect
|
196
|
+
|
197
|
+
@param [Float] val The new width of the rect.
|
198
|
+
@return [void]
|
199
|
+
*/
|
200
|
+
static
|
201
|
+
VALUE ray_rect_set_w(VALUE self, VALUE val) {
|
202
|
+
rb_check_frozen(self);
|
203
|
+
|
204
|
+
say_rect *rect;
|
205
|
+
Data_Get_Struct(self, say_rect, rect);
|
206
|
+
|
207
|
+
rect->w = NUM2DBL(val);
|
208
|
+
|
209
|
+
return val;
|
210
|
+
}
|
211
|
+
|
212
|
+
/*
|
213
|
+
@overload h=(val)
|
214
|
+
Sets the height of the rect
|
215
|
+
|
216
|
+
@param [Float] val The new height of the rect.
|
217
|
+
@return [void]
|
218
|
+
*/
|
219
|
+
static
|
220
|
+
VALUE ray_rect_set_h(VALUE self, VALUE val) {
|
221
|
+
rb_check_frozen(self);
|
222
|
+
|
223
|
+
say_rect *rect;
|
224
|
+
Data_Get_Struct(self, say_rect, rect);
|
225
|
+
|
226
|
+
rect->h = NUM2DBL(val);
|
227
|
+
|
228
|
+
return val;
|
229
|
+
}
|
230
|
+
|
231
|
+
/*
|
232
|
+
Document-class: Ray::Rect
|
233
|
+
|
234
|
+
Rects are used to represent a part of an image, using
|
235
|
+
two attributes to represent its position, and two
|
236
|
+
others to represent its size.
|
237
|
+
*/
|
238
|
+
|
239
|
+
void Init_ray_rect() {
|
240
|
+
ray_cRect = rb_define_class_under(ray_mRay, "Rect", rb_cObject);
|
241
|
+
|
242
|
+
rb_define_alloc_func(ray_cRect, ray_alloc_rect);
|
243
|
+
rb_define_method(ray_cRect, "initialize", ray_init_rect, -1);
|
244
|
+
rb_define_method(ray_cRect, "initialize_copy", ray_init_rect_copy, 1);
|
245
|
+
|
246
|
+
rb_define_method(ray_cRect, "x", ray_rect_x, 0);
|
247
|
+
rb_define_method(ray_cRect, "y", ray_rect_y, 0);
|
248
|
+
rb_define_method(ray_cRect, "width", ray_rect_w, 0);
|
249
|
+
rb_define_method(ray_cRect, "height", ray_rect_h, 0);
|
250
|
+
|
251
|
+
rb_define_method(ray_cRect, "x=", ray_rect_set_x, 1);
|
252
|
+
rb_define_method(ray_cRect, "y=", ray_rect_set_y, 1);
|
253
|
+
rb_define_method(ray_cRect, "width=", ray_rect_set_w, 1);
|
254
|
+
rb_define_method(ray_cRect, "height=", ray_rect_set_h, 1);
|
255
|
+
}
|