ray 0.1.0.pre1 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- 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/input.cpp
DELETED
@@ -1,74 +0,0 @@
|
|
1
|
-
#include "ray.hpp"
|
2
|
-
|
3
|
-
VALUE ray_mInput = Qnil;
|
4
|
-
|
5
|
-
const sf::Input &ray_input() {
|
6
|
-
return ray_screen.GetInput();
|
7
|
-
}
|
8
|
-
|
9
|
-
/*
|
10
|
-
@overload holding?(key)
|
11
|
-
@param [Integer] key Key code
|
12
|
-
@return [true, false] True if key is pressed
|
13
|
-
*/
|
14
|
-
VALUE ray_input_holding(VALUE self, VALUE key) {
|
15
|
-
return ray_input().IsKeyDown((sf::Key::Code)NUM2INT(key)) ? Qtrue : Qfalse;
|
16
|
-
}
|
17
|
-
|
18
|
-
/*
|
19
|
-
@overload mouse_button_down?(button)
|
20
|
-
@param [Integer] button Mouse button code
|
21
|
-
@return [true, false] True if the button is pressed
|
22
|
-
*/
|
23
|
-
VALUE ray_input_mouse_button_down(VALUE self, VALUE button) {
|
24
|
-
return ray_input().IsMouseButtonDown((sf::Mouse::Button)NUM2INT(button)) ?
|
25
|
-
Qtrue : Qfalse;
|
26
|
-
}
|
27
|
-
|
28
|
-
/*
|
29
|
-
@overload jostick_button_down?(joy_id, button)
|
30
|
-
@param [Integer] joy_id Id of the joytick
|
31
|
-
@param [Integer] button button id
|
32
|
-
@return [true, false] True if the button is pressed
|
33
|
-
*/
|
34
|
-
VALUE ray_input_joystick_button_down(VALUE self, VALUE joy_id, VALUE button) {
|
35
|
-
return ray_input().IsJoystickButtonDown(NUM2INT(joy_id),
|
36
|
-
NUM2INT(button)) ?
|
37
|
-
Qtrue : Qfalse;
|
38
|
-
}
|
39
|
-
|
40
|
-
/* @return [Integer] mouse x position */
|
41
|
-
VALUE ray_input_mouse_x(VALUE self) {
|
42
|
-
return INT2FIX(ray_input().GetMouseX());
|
43
|
-
}
|
44
|
-
|
45
|
-
/* @return [Integer] mouse y position */
|
46
|
-
VALUE ray_input_mouse_y(VALUE self) {
|
47
|
-
return INT2FIX(ray_input().GetMouseY());
|
48
|
-
}
|
49
|
-
|
50
|
-
/*
|
51
|
-
@overload axis_position(joy_id, axis_id)
|
52
|
-
@param [Integer] joy_id Id of the joystick
|
53
|
-
@param [Integer] axis_id Id of the axis
|
54
|
-
@return [Float] current position of the axis, between -100 and 100.
|
55
|
-
*/
|
56
|
-
VALUE ray_input_axis_position(VALUE self, VALUE joy_id, VALUE axis_id) {
|
57
|
-
return rb_float_new(ray_input().GetJoystickAxis(NUM2INT(joy_id),
|
58
|
-
(sf::Joy::Axis)NUM2INT(axis_id)));
|
59
|
-
}
|
60
|
-
|
61
|
-
void Init_ray_input() {
|
62
|
-
ray_mInput = rb_define_module_under(ray_mRay, "Input");
|
63
|
-
|
64
|
-
rb_define_module_function(ray_mInput, "holding?", ray_input_holding, 1);
|
65
|
-
rb_define_module_function(ray_mInput, "mouse_button_down?",
|
66
|
-
ray_input_mouse_button_down, 1);
|
67
|
-
rb_define_module_function(ray_mInput, "jostick_button_down?",
|
68
|
-
ray_input_joystick_button_down, 2);
|
69
|
-
|
70
|
-
rb_define_module_function(ray_mInput, "mouse_x", ray_input_mouse_x, 0);
|
71
|
-
rb_define_module_function(ray_mInput, "mouse_y", ray_input_mouse_y, 0);
|
72
|
-
|
73
|
-
rb_define_module_function(ray_mInput, "axis_position", ray_input_axis_position, 2);
|
74
|
-
}
|
data/ext/ray.cpp
DELETED
@@ -1,168 +0,0 @@
|
|
1
|
-
#include "ray.hpp"
|
2
|
-
|
3
|
-
VALUE ray_mRay = Qnil;
|
4
|
-
sf::RenderWindow ray_screen;
|
5
|
-
|
6
|
-
ray_video_mode ray_parse_video_mode(VALUE hash) {
|
7
|
-
VALUE width = rb_hash_aref(hash, RAY_SYM("width"));
|
8
|
-
VALUE height = rb_hash_aref(hash, RAY_SYM("height"));
|
9
|
-
|
10
|
-
if (NIL_P(width)) width = rb_hash_aref(hash, RAY_SYM("w"));
|
11
|
-
if (NIL_P(height)) height = rb_hash_aref(hash, RAY_SYM("h"));
|
12
|
-
|
13
|
-
if (NIL_P(width) || NIL_P(height))
|
14
|
-
rb_raise(rb_eArgError, "Missing parameter: width or height");
|
15
|
-
|
16
|
-
VALUE bitsperpixel = rb_hash_aref(hash, RAY_SYM("bits_per_pixel"));
|
17
|
-
if (NIL_P(bitsperpixel)) bitsperpixel = rb_hash_aref(hash, RAY_SYM("bpp"));
|
18
|
-
|
19
|
-
if (NIL_P(bitsperpixel))
|
20
|
-
bitsperpixel = INT2FIX(32);
|
21
|
-
|
22
|
-
uint32_t flags = sf::Style::None;
|
23
|
-
|
24
|
-
if (RTEST(rb_hash_aref(hash, RAY_SYM("fullscreen"))))
|
25
|
-
flags |= sf::Style::Fullscreen;
|
26
|
-
|
27
|
-
if (!RTEST(rb_hash_aref(hash, RAY_SYM("no_frame")))) {
|
28
|
-
flags |= sf::Style::Titlebar;
|
29
|
-
flags |= sf::Style::Close;
|
30
|
-
}
|
31
|
-
|
32
|
-
if (RTEST(rb_hash_aref(hash, RAY_SYM("resizable"))))
|
33
|
-
flags |= sf::Style::Resize;
|
34
|
-
|
35
|
-
ray_video_mode mode = {
|
36
|
-
NUM2INT(width),
|
37
|
-
NUM2INT(height),
|
38
|
-
|
39
|
-
NUM2INT(bitsperpixel),
|
40
|
-
|
41
|
-
flags
|
42
|
-
};
|
43
|
-
|
44
|
-
return mode;
|
45
|
-
}
|
46
|
-
|
47
|
-
/*
|
48
|
-
@overload create_window(hash)
|
49
|
-
Creates a new window.
|
50
|
-
|
51
|
-
If both hw_surface and sws_urface are false, hw_surface
|
52
|
-
will be considered as true. :sw_surface should be true
|
53
|
-
if you want to acess
|
54
|
-
|
55
|
-
@return [Ray::Image] An image representing the window
|
56
|
-
|
57
|
-
@option hash [Integer] :width Width of the window
|
58
|
-
@option hash [Integer] :height Height of the window
|
59
|
-
|
60
|
-
@option hash [Integer] :w Alias for width
|
61
|
-
@option hash [Integer] :h Alias for height
|
62
|
-
|
63
|
-
@option hash [Integer] :bits_per_pixel Bits per pixel. Valid values are
|
64
|
-
8, 15, 16, 24, and 32.
|
65
|
-
@option hash [Integer] :bpp Alias for bits_per_pixel
|
66
|
-
|
67
|
-
@option hash [true, false] :hw_surface Creates the surface in video memory
|
68
|
-
(default)
|
69
|
-
@option hash [true, false] :sw_surface Creates the surface in system memory
|
70
|
-
@option hash [true, false] :async_blit Enables asynchronous updates of the
|
71
|
-
the surface
|
72
|
-
@option hash [true, false] :double_buf Enables double buffering. Ignored
|
73
|
-
if sw_surface is set.
|
74
|
-
@option hash [true, false] :fullscreen Creates a full screen window.
|
75
|
-
@option hash [true, false] :resizable Creates a resizable window.
|
76
|
-
@option hash [true, false] :no_frame Disables window decoration if
|
77
|
-
possible.
|
78
|
-
*/
|
79
|
-
VALUE ray_create_window(VALUE self, VALUE hash) {
|
80
|
-
ray_video_mode mode = ray_parse_video_mode(hash);
|
81
|
-
|
82
|
-
sf::VideoMode sfml_mode(mode.width, mode.height, mode.bpp);
|
83
|
-
if (mode.flags & sf::Style::Fullscreen) {
|
84
|
-
if (!sfml_mode.IsValid())
|
85
|
-
rb_raise(rb_eRuntimeError, "Invalid fullscreen mode");
|
86
|
-
}
|
87
|
-
|
88
|
-
ray_screen.Create(sfml_mode, "", mode.flags);
|
89
|
-
|
90
|
-
return ray_create_screen();
|
91
|
-
}
|
92
|
-
|
93
|
-
/*
|
94
|
-
@overload icon=(icon)
|
95
|
-
Sets the window icon
|
96
|
-
@param [Ray::Image] icon The icon to display
|
97
|
-
*/
|
98
|
-
VALUE ray_set_icon(VALUE self, VALUE icon) {
|
99
|
-
ray_image *image = ray_rb2image(icon);
|
100
|
-
ray_screen.SetIcon(image->width(), image->height(),
|
101
|
-
image->pixels());
|
102
|
-
return Qnil;
|
103
|
-
}
|
104
|
-
|
105
|
-
/*
|
106
|
-
@overload window_title=(title)
|
107
|
-
Sets the window title
|
108
|
-
*/
|
109
|
-
VALUE ray_set_window_title(VALUE self, VALUE title) {
|
110
|
-
if (!NIL_P(title)) {
|
111
|
-
title = rb_String(title);
|
112
|
-
ray_screen.SetTitle(StringValuePtr(title));
|
113
|
-
}
|
114
|
-
else
|
115
|
-
ray_screen.SetTitle("");
|
116
|
-
|
117
|
-
return title;
|
118
|
-
}
|
119
|
-
|
120
|
-
/* @return [Ray::Image, nil] The current screen, created by create_window */
|
121
|
-
VALUE ray_get_screen(VALUE self) {
|
122
|
-
if (!ray_screen.IsOpened())
|
123
|
-
return Qnil;
|
124
|
-
return ray_create_screen();
|
125
|
-
}
|
126
|
-
|
127
|
-
/* Starts outputing error to stderr */
|
128
|
-
VALUE ray_verbose(VALUE self) {
|
129
|
-
sf::Err().rdbuf(std::cerr.rdbuf());
|
130
|
-
return Qnil;
|
131
|
-
}
|
132
|
-
|
133
|
-
/* Stops outputing errors to stderr (default) */
|
134
|
-
VALUE ray_quiet(VALUE self) {
|
135
|
-
sf::Err().rdbuf(NULL);
|
136
|
-
return Qnil;
|
137
|
-
}
|
138
|
-
|
139
|
-
extern "C"
|
140
|
-
void Init_ray_ext() {
|
141
|
-
sf::Err().rdbuf(NULL); /* Don't put errors in stderr */
|
142
|
-
|
143
|
-
ray_mRay = rb_define_module("Ray");
|
144
|
-
|
145
|
-
rb_define_module_function(ray_mRay, "create_window", ray_create_window, 1);
|
146
|
-
rb_define_module_function(ray_mRay, "screen", ray_get_screen, 0);
|
147
|
-
|
148
|
-
rb_define_module_function(ray_mRay, "icon=", ray_set_icon, 1);
|
149
|
-
rb_define_module_function(ray_mRay, "window_title=", ray_set_window_title,
|
150
|
-
1);
|
151
|
-
|
152
|
-
rb_define_module_function(ray_mRay, "verbose!", ray_verbose, 0);
|
153
|
-
rb_define_module_function(ray_mRay, "quiet!", ray_quiet, 0);
|
154
|
-
|
155
|
-
Init_ray_image();
|
156
|
-
Init_ray_sprite();
|
157
|
-
Init_ray_color();
|
158
|
-
Init_ray_rect();
|
159
|
-
Init_ray_vector();
|
160
|
-
Init_ray_event();
|
161
|
-
Init_ray_input();
|
162
|
-
Init_ray_shape();
|
163
|
-
Init_ray_font();
|
164
|
-
Init_ray_text();
|
165
|
-
Init_ray_audio();
|
166
|
-
Init_ray_drawable();
|
167
|
-
Init_ray_shader();
|
168
|
-
}
|
data/ext/ray.hpp
DELETED
@@ -1,356 +0,0 @@
|
|
1
|
-
#ifndef RAY_H_
|
2
|
-
#define RAY_H_
|
3
|
-
|
4
|
-
#include "ruby.h"
|
5
|
-
|
6
|
-
#include <SFML/Graphics.hpp>
|
7
|
-
#include <SFML/OpenGL.hpp>
|
8
|
-
#include <SFML/Audio.hpp>
|
9
|
-
|
10
|
-
#include <iostream>
|
11
|
-
|
12
|
-
extern sf::RenderWindow ray_screen;
|
13
|
-
|
14
|
-
/* Classes and modules */
|
15
|
-
extern VALUE ray_mRay;
|
16
|
-
|
17
|
-
extern VALUE ray_cImage;
|
18
|
-
extern VALUE ray_cSprite;
|
19
|
-
extern VALUE ray_cShape;
|
20
|
-
extern VALUE ray_cColor;
|
21
|
-
extern VALUE ray_cRect;
|
22
|
-
extern VALUE ray_cVector2;
|
23
|
-
extern VALUE ray_cVector3;
|
24
|
-
extern VALUE ray_cEvent;
|
25
|
-
extern VALUE ray_mInput;
|
26
|
-
extern VALUE ray_cFont;
|
27
|
-
extern VALUE ray_cText;
|
28
|
-
extern VALUE ray_mAudio;
|
29
|
-
extern VALUE ray_cAudioSource;
|
30
|
-
extern VALUE ray_cSound;
|
31
|
-
extern VALUE ray_cMusic;
|
32
|
-
extern VALUE ray_cDrawable;
|
33
|
-
extern VALUE ray_cShader;
|
34
|
-
|
35
|
-
/* Macros for Ruby's C API */
|
36
|
-
|
37
|
-
#define RAY_IS_A(obj, klass) (RTEST(rb_obj_is_kind_of(obj, klass)))
|
38
|
-
|
39
|
-
#define RAY_OBJ_CLASSNAME(obj) (rb_class2name(rb_class_of(obj)))
|
40
|
-
|
41
|
-
#define RAY_SYM(string) (ID2SYM(rb_intern(string)))
|
42
|
-
#define RAY_METH(string) (rb_intern(string))
|
43
|
-
|
44
|
-
#define RAY_FLOAT_RECT(rect) \
|
45
|
-
(sf::FloatRect(rect.Left, rect.Top, rect.Width, rect.Height))
|
46
|
-
#define RAY_INT_RECT(rect) \
|
47
|
-
(sf::IntRect(rect.Left, rect.Top, rect.Width, rect.Height))
|
48
|
-
#define RAY_RECT(rect) \
|
49
|
-
(ray_rect(rect.Left, rect.Top, rect.Width, rect.Height))
|
50
|
-
|
51
|
-
/* Data types */
|
52
|
-
|
53
|
-
typedef struct {
|
54
|
-
int width;
|
55
|
-
int height;
|
56
|
-
|
57
|
-
int bpp;
|
58
|
-
|
59
|
-
uint32_t flags;
|
60
|
-
} ray_video_mode;
|
61
|
-
|
62
|
-
typedef sf::Color ray_color;
|
63
|
-
|
64
|
-
typedef sf::FloatRect ray_rect;
|
65
|
-
typedef sf::Vector2f ray_vector2;
|
66
|
-
typedef sf::Vector3f ray_vector3;
|
67
|
-
|
68
|
-
class ray_image {
|
69
|
-
public:
|
70
|
-
ray_image(bool should_be_screen = false);
|
71
|
-
~ray_image();
|
72
|
-
|
73
|
-
bool create_with_size(int w, int h);
|
74
|
-
bool create_with_filename(const std::string &filename);
|
75
|
-
bool create_with_io(VALUE io);
|
76
|
-
bool create_with_image(ray_image &src);
|
77
|
-
|
78
|
-
bool save_as(const std::string &filename) const;
|
79
|
-
|
80
|
-
int width() const;
|
81
|
-
int height() const;
|
82
|
-
|
83
|
-
void update();
|
84
|
-
|
85
|
-
sf::Sprite &get_sprite() { return sprite; }
|
86
|
-
|
87
|
-
void fill(sf::Color color);
|
88
|
-
void draw(const sf::Drawable &drawable,
|
89
|
-
sf::Shader *shader = NULL);
|
90
|
-
|
91
|
-
void draw_image(ray_image &image,
|
92
|
-
const ray_rect &src_rect, const ray_vector2 &dest_pos,
|
93
|
-
float angle, const ray_vector2 &zoom,
|
94
|
-
sf::Shader *shader = NULL,
|
95
|
-
const ray_color &color = sf::Color::White);
|
96
|
-
|
97
|
-
ray_color at(int x, int y) const;
|
98
|
-
bool set_at(int x, int y, const ray_color &color);
|
99
|
-
|
100
|
-
const uint8_t *pixels() const;
|
101
|
-
|
102
|
-
bool operator==(const ray_image &other) const;
|
103
|
-
|
104
|
-
ray_rect clip() const;
|
105
|
-
void set_clip(const ray_rect &other);
|
106
|
-
|
107
|
-
bool lock();
|
108
|
-
void unlock();
|
109
|
-
|
110
|
-
void activate();
|
111
|
-
void bind();
|
112
|
-
|
113
|
-
bool is_image() const;
|
114
|
-
const sf::Image &image() const;
|
115
|
-
|
116
|
-
sf::RenderTarget &target();
|
117
|
-
const sf::RenderTarget &target() const;
|
118
|
-
private:
|
119
|
-
bool is_screen;
|
120
|
-
|
121
|
-
sf::RenderImage render_image;
|
122
|
-
sf::Sprite sprite;
|
123
|
-
|
124
|
-
sf::Image *pixel_modifier;
|
125
|
-
};
|
126
|
-
|
127
|
-
class ray_sprite {
|
128
|
-
public:
|
129
|
-
ray_sprite();
|
130
|
-
~ray_sprite();
|
131
|
-
|
132
|
-
void copy(const ray_sprite &sprite);
|
133
|
-
|
134
|
-
void set_self(VALUE self);
|
135
|
-
|
136
|
-
ray_rect from_rect() const;
|
137
|
-
void set_from_rect(const ray_rect &rect);
|
138
|
-
|
139
|
-
ray_vector2 position() const;
|
140
|
-
void set_position(const ray_vector2 &pos);
|
141
|
-
|
142
|
-
float angle() const;
|
143
|
-
void set_angle(float angle);
|
144
|
-
|
145
|
-
ray_vector2 scale() const;
|
146
|
-
void set_scale(const ray_vector2 &scale);
|
147
|
-
|
148
|
-
ray_color color() const;
|
149
|
-
void set_color(const ray_color &color);
|
150
|
-
|
151
|
-
VALUE get_shader() const;
|
152
|
-
void set_shader(VALUE shader);
|
153
|
-
|
154
|
-
VALUE get_image() const;
|
155
|
-
void set_image(VALUE image);
|
156
|
-
|
157
|
-
void draw_on(ray_image &image);
|
158
|
-
private:
|
159
|
-
sf::Sprite sprite;
|
160
|
-
VALUE self;
|
161
|
-
};
|
162
|
-
|
163
|
-
typedef sf::Font ray_font;
|
164
|
-
|
165
|
-
class ray_audio_source {
|
166
|
-
public:
|
167
|
-
virtual ~ray_audio_source() {}
|
168
|
-
|
169
|
-
void set_pitch(float value);
|
170
|
-
float pitch() const;
|
171
|
-
|
172
|
-
void set_position(const ray_vector3 &vector);
|
173
|
-
ray_vector3 position() const;
|
174
|
-
|
175
|
-
void set_relative(bool value);
|
176
|
-
bool is_relative() const;
|
177
|
-
|
178
|
-
void set_min_distance(float value);
|
179
|
-
float min_distance() const;
|
180
|
-
|
181
|
-
void set_attenuation(float value);
|
182
|
-
float attenuation() const;
|
183
|
-
|
184
|
-
void set_volume(float value);
|
185
|
-
float volume() const;
|
186
|
-
protected:
|
187
|
-
virtual sf::SoundSource &source() = 0;
|
188
|
-
virtual const sf::SoundSource &source() const = 0;
|
189
|
-
};
|
190
|
-
|
191
|
-
class ray_sound : public ray_audio_source {
|
192
|
-
public:
|
193
|
-
bool load_from_io(VALUE io);
|
194
|
-
bool load_from_filename(const std::string &filename);
|
195
|
-
bool create_from_sound(const ray_sound &sound);
|
196
|
-
|
197
|
-
void play();
|
198
|
-
void pause();
|
199
|
-
void stop();
|
200
|
-
|
201
|
-
sf::SoundSource::Status status() const;
|
202
|
-
|
203
|
-
void set_loop(bool value);
|
204
|
-
bool is_looping() const;
|
205
|
-
|
206
|
-
void set_current_time(float value);
|
207
|
-
float current_time() const;
|
208
|
-
protected:
|
209
|
-
sf::SoundSource &source();
|
210
|
-
const sf::SoundSource &source() const;
|
211
|
-
private:
|
212
|
-
sf::SoundBuffer sound_buffer;
|
213
|
-
sf::Sound sound;
|
214
|
-
};
|
215
|
-
|
216
|
-
class ray_music : public ray_audio_source {
|
217
|
-
public:
|
218
|
-
bool load_from_io(VALUE self, VALUE io);
|
219
|
-
bool load_from_filename(const std::string &filename);
|
220
|
-
|
221
|
-
void play();
|
222
|
-
void pause();
|
223
|
-
void stop();
|
224
|
-
|
225
|
-
sf::SoundSource::Status status() const;
|
226
|
-
|
227
|
-
void set_loop(bool value);
|
228
|
-
bool is_looping() const;
|
229
|
-
|
230
|
-
void set_current_time(float value);
|
231
|
-
float current_time() const;
|
232
|
-
|
233
|
-
float duration() const;
|
234
|
-
|
235
|
-
int sample_rate() const;
|
236
|
-
int channel_count() const;
|
237
|
-
protected:
|
238
|
-
sf::SoundSource &source();
|
239
|
-
const sf::SoundSource &source() const;
|
240
|
-
private:
|
241
|
-
sf::Music music;
|
242
|
-
};
|
243
|
-
|
244
|
-
typedef sf::Event ray_event;
|
245
|
-
|
246
|
-
class ray_drawable {
|
247
|
-
public:
|
248
|
-
ray_drawable(): block(Qnil) {}
|
249
|
-
~ray_drawable();
|
250
|
-
|
251
|
-
void render(VALUE image);
|
252
|
-
|
253
|
-
void set_block(VALUE val);
|
254
|
-
private:
|
255
|
-
VALUE block;
|
256
|
-
};
|
257
|
-
|
258
|
-
/* Convertion functions */
|
259
|
-
|
260
|
-
/** Converts a color into a ruby object */
|
261
|
-
VALUE ray_col2rb(const ray_color &color);
|
262
|
-
|
263
|
-
/** Converts a rect into a ruby object */
|
264
|
-
VALUE ray_rect2rb(const ray_rect &rect);
|
265
|
-
|
266
|
-
VALUE ray_vector2_to_rb(const ray_vector2 &vector);
|
267
|
-
VALUE ray_vector3_to_rb(const ray_vector3 &vector);
|
268
|
-
|
269
|
-
/** Converts a font into a ruby object */
|
270
|
-
VALUE ray_font2rb(const ray_font &font);
|
271
|
-
|
272
|
-
/** Converts a ruby object into a color */
|
273
|
-
ray_color ray_rb2col(VALUE object);
|
274
|
-
|
275
|
-
/** Parses a hash to create a video mode */
|
276
|
-
ray_video_mode ray_parse_video_mode(VALUE hash);
|
277
|
-
|
278
|
-
/** Converts a ruby object into an image*/
|
279
|
-
ray_image *ray_rb2image(VALUE object);
|
280
|
-
|
281
|
-
/** Returns a Ruby object representing the screen */
|
282
|
-
VALUE ray_create_screen();
|
283
|
-
|
284
|
-
/** Converts a ruby object into a rect */
|
285
|
-
ray_rect ray_rb2rect(VALUE object);
|
286
|
-
|
287
|
-
/** Converts a ruby object into a shape */
|
288
|
-
sf::Shape *ray_rb2shape(VALUE object);
|
289
|
-
|
290
|
-
/** Converts a ruby object into a shader */
|
291
|
-
sf::Shader *ray_rb2shader(VALUE object);
|
292
|
-
|
293
|
-
/**
|
294
|
-
Converts a ruby object into a rect even if it's not an instance
|
295
|
-
of Ray::Rect.
|
296
|
-
*/
|
297
|
-
ray_rect ray_convert_to_rect(VALUE obj);
|
298
|
-
|
299
|
-
/** Converts a ruby object into a vector2 using #to_vector2 */
|
300
|
-
ray_vector2 ray_convert_to_vector2(VALUE obj);
|
301
|
-
|
302
|
-
/** Converts a ruby object into a vector3 using #to_vector3 */
|
303
|
-
ray_vector3 ray_convert_to_vector3(VALUE obj);
|
304
|
-
|
305
|
-
/** Converts a ruby object into an event */
|
306
|
-
ray_event *ray_rb2event(VALUE object);
|
307
|
-
|
308
|
-
/** Converts a ruby object into a font */
|
309
|
-
ray_font *ray_rb2font(VALUE object);
|
310
|
-
|
311
|
-
/** Converts a ruby object into an audio source */
|
312
|
-
ray_audio_source *ray_rb2source(VALUE object);
|
313
|
-
|
314
|
-
/** Converts a ruby object into a sound */
|
315
|
-
ray_sound *ray_rb2sound(VALUE object);
|
316
|
-
|
317
|
-
/** Converts a ruby object into a music */
|
318
|
-
ray_music *ray_rb2music(VALUE object);
|
319
|
-
|
320
|
-
/** Converts a ruby object into a drawable */
|
321
|
-
ray_drawable *ray_rb2drawable(VALUE obj);
|
322
|
-
|
323
|
-
/* Initializers */
|
324
|
-
|
325
|
-
extern "C" void Init_ray_ext();
|
326
|
-
void Init_ray_image();
|
327
|
-
void Init_ray_sprite();
|
328
|
-
void Init_ray_color();
|
329
|
-
void Init_ray_rect();
|
330
|
-
void Init_ray_vector();
|
331
|
-
void Init_ray_event();
|
332
|
-
void Init_ray_input();
|
333
|
-
void Init_ray_shape();
|
334
|
-
void Init_ray_font();
|
335
|
-
void Init_ray_text();
|
336
|
-
void Init_ray_audio();
|
337
|
-
void Init_ray_drawable();
|
338
|
-
void Init_ray_shader();
|
339
|
-
|
340
|
-
/* Hack to make it compile, and still let YARD parse the source code: */
|
341
|
-
|
342
|
-
#if !RUBINIUS /* Won't work on Rubinius, and unneeded */
|
343
|
-
# define rb_define_method(klass, name, func, argc) \
|
344
|
-
rb_define_method(klass, name, (VALUE (*)(...))(func), argc)
|
345
|
-
|
346
|
-
# define rb_define_singleton_method(klass, name, func, argc) \
|
347
|
-
rb_define_singleton_method(klass, name, (VALUE (*)(...))(func), argc)
|
348
|
-
#endif
|
349
|
-
|
350
|
-
#define rb_define_module_function(klass, name, func, argc) \
|
351
|
-
rb_define_module_function(klass, name, (VALUE (*)(...))(func), argc)
|
352
|
-
|
353
|
-
#define rb_ensure(func1, arg1, func2, arg2) \
|
354
|
-
rb_ensure((VALUE (*)(...))(func1), arg1, (VALUE (*)(...))func2, arg2)
|
355
|
-
|
356
|
-
#endif
|