rays 0.1.6 → 0.1.7
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.
- checksums.yaml +7 -0
- data/.doc/ext/rays/bitmap.cpp +70 -233
- data/.doc/ext/rays/bounds.cpp +339 -57
- data/.doc/ext/rays/color.cpp +58 -48
- data/.doc/ext/rays/color_space.cpp +174 -0
- data/.doc/ext/rays/font.cpp +31 -53
- data/.doc/ext/rays/image.cpp +64 -67
- data/.doc/ext/rays/matrix.cpp +22 -50
- data/.doc/ext/rays/native.cpp +9 -2
- data/.doc/ext/rays/painter.cpp +276 -259
- data/.doc/ext/rays/point.cpp +186 -52
- data/.doc/ext/rays/rays.cpp +25 -20
- data/.doc/ext/rays/shader.cpp +61 -0
- data/.doc/ext/rays/texture.cpp +47 -59
- data/{README → README.md} +0 -0
- data/Rakefile +6 -5
- data/VERSION +1 -1
- data/ext/rays/bitmap.cpp +88 -248
- data/ext/rays/bounds.cpp +437 -141
- data/ext/rays/color.cpp +79 -69
- data/ext/rays/color_space.cpp +185 -0
- data/ext/rays/extconf.rb +14 -63
- data/ext/rays/font.cpp +44 -65
- data/ext/rays/image.cpp +82 -81
- data/ext/rays/matrix.cpp +32 -60
- data/ext/rays/native.cpp +9 -2
- data/ext/rays/painter.cpp +345 -321
- data/ext/rays/point.cpp +212 -69
- data/ext/rays/rays.cpp +29 -23
- data/ext/rays/shader.cpp +63 -0
- data/ext/rays/texture.cpp +64 -74
- data/include/rays/bitmap.h +21 -12
- data/include/rays/bounds.h +67 -9
- data/include/rays/color.h +23 -7
- data/include/rays/{colorspace.h → color_space.h} +6 -3
- data/include/rays/exception.h +17 -11
- data/include/rays/font.h +4 -3
- data/include/rays/image.h +11 -6
- data/include/rays/matrix.h +15 -12
- data/include/rays/opengl.h +54 -1
- data/include/rays/painter.h +98 -108
- data/include/rays/point.h +45 -5
- data/include/rays/rays.h +2 -2
- data/include/rays/ruby/bitmap.h +2 -16
- data/include/rays/ruby/bounds.h +4 -16
- data/include/rays/ruby/color.h +3 -16
- data/include/rays/ruby/color_space.h +27 -0
- data/include/rays/ruby/font.h +2 -16
- data/include/rays/ruby/image.h +2 -16
- data/include/rays/ruby/matrix.h +2 -16
- data/include/rays/ruby/painter.h +2 -16
- data/include/rays/ruby/point.h +3 -16
- data/include/rays/ruby/shader.h +27 -0
- data/include/rays/ruby/texture.h +2 -16
- data/include/rays/ruby.h +1 -0
- data/include/rays/shader.h +48 -0
- data/include/rays/texture.h +13 -2
- data/include/rays.h +2 -1
- data/lib/rays/bitmap.rb +20 -11
- data/lib/rays/bounds.rb +29 -68
- data/lib/rays/color.rb +39 -0
- data/lib/rays/color_space.rb +33 -0
- data/lib/rays/font.rb +29 -0
- data/lib/rays/image.rb +22 -0
- data/lib/rays/module.rb +11 -7
- data/lib/rays/painter.rb +103 -40
- data/lib/rays/point.rb +19 -36
- data/lib/rays/shader.rb +13 -0
- data/lib/rays/texture.rb +9 -0
- data/lib/rays.rb +4 -0
- data/rays.gemspec +3 -4
- data/src/bounds.cpp +272 -63
- data/src/color.cpp +168 -21
- data/src/{colorspace.cpp → color_space.cpp} +38 -1
- data/src/exception.cpp +24 -15
- data/src/frame_buffer.cpp +275 -0
- data/src/frame_buffer.h +79 -0
- data/src/image.cpp +80 -36
- data/src/ios/bitmap.mm +340 -0
- data/src/ios/font.mm +206 -0
- data/src/{cocoa → ios}/helper.h +2 -2
- data/src/{cocoa → ios}/helper.mm +0 -0
- data/src/ios/opengl.mm +21 -0
- data/src/ios/program.cpp +122 -0
- data/src/{cocoa → ios}/rays.mm +8 -7
- data/src/matrix.cpp +10 -22
- data/src/opengl.cpp +64 -0
- data/src/{cocoa → osx}/bitmap.mm +121 -70
- data/src/{cocoa → osx}/font.mm +32 -24
- data/src/osx/helper.h +26 -0
- data/src/osx/helper.mm +25 -0
- data/src/osx/opengl.mm +103 -0
- data/src/osx/rays.mm +43 -0
- data/src/painter.cpp +596 -422
- data/src/point.cpp +154 -11
- data/src/program.cpp +513 -0
- data/src/program.h +73 -0
- data/src/render_buffer.cpp +120 -0
- data/src/render_buffer.h +47 -0
- data/src/shader.cpp +117 -0
- data/src/texture.cpp +104 -134
- data/test/helper.rb +10 -3
- data/test/test_bitmap.rb +18 -0
- data/test/test_bounds.rb +81 -35
- data/test/test_color.rb +29 -2
- data/test/test_image.rb +63 -0
- data/test/test_painter.rb +120 -0
- data/test/test_point.rb +30 -9
- data/test/test_shader.rb +37 -0
- data/test/test_texture.rb +18 -0
- metadata +75 -58
- data/.gitignore +0 -14
- data/ChangeLog +0 -8
    
        data/ext/rays/color.cpp
    CHANGED
    
    | @@ -10,60 +10,25 @@ using namespace Rucy; | |
| 10 10 |  | 
| 11 11 | 
             
            static Class cColor;
         | 
| 12 12 |  | 
| 13 | 
            +
            RUCY_DEFINE_VALUE_FROM_TO(Rays::Color, cColor)
         | 
| 13 14 |  | 
| 14 | 
            -
             | 
| 15 | 
            -
            {
         | 
| 15 | 
            +
            #define THIS  to<Rays::Color*>(self)
         | 
| 16 16 |  | 
| 17 | 
            -
             | 
| 18 | 
            -
            	Class
         | 
| 19 | 
            -
            	color_class ()
         | 
| 20 | 
            -
            	{
         | 
| 21 | 
            -
            		return cColor;
         | 
| 22 | 
            -
            	}
         | 
| 23 | 
            -
             | 
| 24 | 
            -
             | 
| 25 | 
            -
            }// Rays
         | 
| 26 | 
            -
             | 
| 27 | 
            -
             | 
| 28 | 
            -
            namespace Rucy
         | 
| 29 | 
            -
            {
         | 
| 30 | 
            -
             | 
| 31 | 
            -
             | 
| 32 | 
            -
            	Value
         | 
| 33 | 
            -
            	value (const Rays::Color& obj)
         | 
| 34 | 
            -
            	{
         | 
| 35 | 
            -
            		return new_type(cColor, new Rays::Color(obj));
         | 
| 36 | 
            -
            	}
         | 
| 37 | 
            -
             | 
| 38 | 
            -
            	Value
         | 
| 39 | 
            -
            	value (const Rays::Color* obj)
         | 
| 40 | 
            -
            	{
         | 
| 41 | 
            -
            		return obj ? value(*obj) : nil();
         | 
| 42 | 
            -
            	}
         | 
| 43 | 
            -
             | 
| 44 | 
            -
             | 
| 45 | 
            -
            }// Rucy
         | 
| 46 | 
            -
             | 
| 47 | 
            -
             | 
| 48 | 
            -
            #define THIS to<Rays::Color*>(self)
         | 
| 49 | 
            -
             | 
| 50 | 
            -
            #define CHECK RUCY_CHECK_OBJ(self, Rays::Color, cColor)
         | 
| 17 | 
            +
            #define CHECK RUCY_CHECK_OBJ(Rays::Color, cColor, self)
         | 
| 51 18 |  | 
| 52 19 |  | 
| 53 20 | 
             
            static
         | 
| 54 | 
            -
             | 
| 21 | 
            +
            RUCY_DEF_ALLOC(alloc, klass)
         | 
| 55 22 | 
             
            {
         | 
| 56 23 | 
             
            	return new_type<Rays::Color>(klass);
         | 
| 57 24 | 
             
            }
         | 
| 58 | 
            -
             | 
| 25 | 
            +
            RUCY_END
         | 
| 59 26 |  | 
| 60 27 | 
             
            static
         | 
| 61 | 
            -
             | 
| 28 | 
            +
            RUCY_DEFN(setup)
         | 
| 62 29 | 
             
            {
         | 
| 63 | 
            -
            	 | 
| 64 | 
            -
             | 
| 65 | 
            -
            	if (argc < 0 || 4 < argc)
         | 
| 66 | 
            -
            		arg_count_error("Color#initialize", argc, 0, 1, 2, 3, 4);
         | 
| 30 | 
            +
            	CHECK;
         | 
| 31 | 
            +
            	check_arg_count(__FILE__, __LINE__, "Color#initialize", argc, 0, 1, 2, 3, 4);
         | 
| 67 32 |  | 
| 68 33 | 
             
            	if (argc == 0) return self;
         | 
| 69 34 |  | 
| @@ -91,92 +56,88 @@ RUBY_DEFN(initialize) | |
| 91 56 |  | 
| 92 57 | 
             
            	return self;
         | 
| 93 58 | 
             
            }
         | 
| 94 | 
            -
             | 
| 59 | 
            +
            RUCY_END
         | 
| 95 60 |  | 
| 96 61 | 
             
            static
         | 
| 97 | 
            -
             | 
| 62 | 
            +
            RUCY_DEF1(initialize_copy, obj)
         | 
| 98 63 | 
             
            {
         | 
| 99 | 
            -
            	 | 
| 100 | 
            -
             | 
| 101 | 
            -
            	Rays::Color* color = to<Rays::Color*>(obj);
         | 
| 102 | 
            -
            	if (!color) argument_error();
         | 
| 103 | 
            -
             | 
| 104 | 
            -
            	*THIS = *color;
         | 
| 64 | 
            +
            	CHECK;
         | 
| 65 | 
            +
            	*THIS = to<Rays::Color&>(obj);
         | 
| 105 66 | 
             
            	return self;
         | 
| 106 67 | 
             
            }
         | 
| 107 | 
            -
             | 
| 68 | 
            +
            RUCY_END
         | 
| 108 69 |  | 
| 109 70 | 
             
            static
         | 
| 110 | 
            -
             | 
| 71 | 
            +
            RUCY_DEF1(set_red, red)
         | 
| 111 72 | 
             
            {
         | 
| 112 73 | 
             
            	CHECK;
         | 
| 113 74 |  | 
| 114 75 | 
             
            	return value(THIS->red = to<float>(red));
         | 
| 115 76 | 
             
            }
         | 
| 116 | 
            -
             | 
| 77 | 
            +
            RUCY_END
         | 
| 117 78 |  | 
| 118 79 | 
             
            static
         | 
| 119 | 
            -
             | 
| 80 | 
            +
            RUCY_DEF0(get_red)
         | 
| 120 81 | 
             
            {
         | 
| 121 82 | 
             
            	CHECK;
         | 
| 122 83 |  | 
| 123 84 | 
             
            	return value(THIS->red);
         | 
| 124 85 | 
             
            }
         | 
| 125 | 
            -
             | 
| 86 | 
            +
            RUCY_END
         | 
| 126 87 |  | 
| 127 88 | 
             
            static
         | 
| 128 | 
            -
             | 
| 89 | 
            +
            RUCY_DEF1(set_green, green)
         | 
| 129 90 | 
             
            {
         | 
| 130 91 | 
             
            	CHECK;
         | 
| 131 92 |  | 
| 132 93 | 
             
            	return value(THIS->green = to<float>(green));
         | 
| 133 94 | 
             
            }
         | 
| 134 | 
            -
             | 
| 95 | 
            +
            RUCY_END
         | 
| 135 96 |  | 
| 136 97 | 
             
            static
         | 
| 137 | 
            -
             | 
| 98 | 
            +
            RUCY_DEF0(get_green)
         | 
| 138 99 | 
             
            {
         | 
| 139 100 | 
             
            	CHECK;
         | 
| 140 101 |  | 
| 141 102 | 
             
            	return value(THIS->green);
         | 
| 142 103 | 
             
            }
         | 
| 143 | 
            -
             | 
| 104 | 
            +
            RUCY_END
         | 
| 144 105 |  | 
| 145 106 | 
             
            static
         | 
| 146 | 
            -
             | 
| 107 | 
            +
            RUCY_DEF1(set_blue, blue)
         | 
| 147 108 | 
             
            {
         | 
| 148 109 | 
             
            	CHECK;
         | 
| 149 110 |  | 
| 150 111 | 
             
            	return value(THIS->blue = to<float>(blue));
         | 
| 151 112 | 
             
            }
         | 
| 152 | 
            -
             | 
| 113 | 
            +
            RUCY_END
         | 
| 153 114 |  | 
| 154 115 | 
             
            static
         | 
| 155 | 
            -
             | 
| 116 | 
            +
            RUCY_DEF0(get_blue)
         | 
| 156 117 | 
             
            {
         | 
| 157 118 | 
             
            	CHECK;
         | 
| 158 119 |  | 
| 159 120 | 
             
            	return value(THIS->blue);
         | 
| 160 121 | 
             
            }
         | 
| 161 | 
            -
             | 
| 122 | 
            +
            RUCY_END
         | 
| 162 123 |  | 
| 163 124 | 
             
            static
         | 
| 164 | 
            -
             | 
| 125 | 
            +
            RUCY_DEF1(set_alpha, alpha)
         | 
| 165 126 | 
             
            {
         | 
| 166 127 | 
             
            	CHECK;
         | 
| 167 128 |  | 
| 168 129 | 
             
            	return value(THIS->alpha = to<float>(alpha));
         | 
| 169 130 | 
             
            }
         | 
| 170 | 
            -
             | 
| 131 | 
            +
            RUCY_END
         | 
| 171 132 |  | 
| 172 133 | 
             
            static
         | 
| 173 | 
            -
             | 
| 134 | 
            +
            RUCY_DEF0(get_alpha)
         | 
| 174 135 | 
             
            {
         | 
| 175 136 | 
             
            	CHECK;
         | 
| 176 137 |  | 
| 177 138 | 
             
            	return value(THIS->alpha);
         | 
| 178 139 | 
             
            }
         | 
| 179 | 
            -
             | 
| 140 | 
            +
            RUCY_END
         | 
| 180 141 |  | 
| 181 142 |  | 
| 182 143 | 
             
            void
         | 
| @@ -186,7 +147,7 @@ Init_color () | |
| 186 147 |  | 
| 187 148 | 
             
            	cColor = mRays.define_class("Color");
         | 
| 188 149 | 
             
            	cColor.define_alloc_func(alloc);
         | 
| 189 | 
            -
            	cColor.define_private_method(" | 
| 150 | 
            +
            	cColor.define_private_method("setup", setup);
         | 
| 190 151 | 
             
            	cColor.define_private_method("initialize_copy", initialize_copy);
         | 
| 191 152 | 
             
            	cColor.define_method("red=", set_red);
         | 
| 192 153 | 
             
            	cColor.define_method("red", get_red);
         | 
| @@ -197,3 +158,52 @@ Init_color () | |
| 197 158 | 
             
            	cColor.define_method("alpha=", set_alpha);
         | 
| 198 159 | 
             
            	cColor.define_method("alpha", get_alpha);
         | 
| 199 160 | 
             
            }
         | 
| 161 | 
            +
             | 
| 162 | 
            +
             | 
| 163 | 
            +
            namespace Rucy
         | 
| 164 | 
            +
            {
         | 
| 165 | 
            +
             | 
| 166 | 
            +
             | 
| 167 | 
            +
            	template <> Rays::Color
         | 
| 168 | 
            +
            	value_to<Rays::Color> (Value value, bool convert)
         | 
| 169 | 
            +
            	{
         | 
| 170 | 
            +
            		if (convert)
         | 
| 171 | 
            +
            		{
         | 
| 172 | 
            +
            			if (value.is_i() || value.is_f())
         | 
| 173 | 
            +
            				return Rays::Color(value.as_f(true));
         | 
| 174 | 
            +
            			else if (value.is_array())
         | 
| 175 | 
            +
            			{
         | 
| 176 | 
            +
            				int size = value.size();
         | 
| 177 | 
            +
            				if (size <= 0 || 4 < size)
         | 
| 178 | 
            +
            					Rucy::argument_error(__FILE__, __LINE__);
         | 
| 179 | 
            +
             | 
| 180 | 
            +
            				Value* a = value.as_array();
         | 
| 181 | 
            +
            				switch (size)
         | 
| 182 | 
            +
            				{
         | 
| 183 | 
            +
            					case 1: return Rays::Color(a[0].as_f(true));
         | 
| 184 | 
            +
            					case 2: return Rays::Color(a[0].as_f(true), a[1].as_f(true));
         | 
| 185 | 
            +
            					case 3: return Rays::Color(a[0].as_f(true), a[1].as_f(true), a[2].as_f(true));
         | 
| 186 | 
            +
            					case 4: return Rays::Color(a[0].as_f(true), a[1].as_f(true), a[2].as_f(true), a[3].as_f(true));
         | 
| 187 | 
            +
            				}
         | 
| 188 | 
            +
            			}
         | 
| 189 | 
            +
            		}
         | 
| 190 | 
            +
             | 
| 191 | 
            +
            		return value_to<Rays::Color&>(value, convert);
         | 
| 192 | 
            +
            	}
         | 
| 193 | 
            +
             | 
| 194 | 
            +
             | 
| 195 | 
            +
            }// Rucy
         | 
| 196 | 
            +
             | 
| 197 | 
            +
             | 
| 198 | 
            +
            namespace Rays
         | 
| 199 | 
            +
            {
         | 
| 200 | 
            +
             | 
| 201 | 
            +
             | 
| 202 | 
            +
            	Class
         | 
| 203 | 
            +
            	color_class ()
         | 
| 204 | 
            +
            	{
         | 
| 205 | 
            +
            		return cColor;
         | 
| 206 | 
            +
            	}
         | 
| 207 | 
            +
             | 
| 208 | 
            +
             | 
| 209 | 
            +
            }// Rays
         | 
| @@ -0,0 +1,185 @@ | |
| 1 | 
            +
            #include "rays/ruby/color_space.h"
         | 
| 2 | 
            +
             | 
| 3 | 
            +
             | 
| 4 | 
            +
            #include <rucy.h>
         | 
| 5 | 
            +
            #include "defs.h"
         | 
| 6 | 
            +
             | 
| 7 | 
            +
             | 
| 8 | 
            +
            using namespace Rucy;
         | 
| 9 | 
            +
             | 
| 10 | 
            +
             | 
| 11 | 
            +
            static Class cColorSpace;
         | 
| 12 | 
            +
             | 
| 13 | 
            +
            RUCY_DEFINE_VALUE_FROM_TO(Rays::ColorSpace, cColorSpace)
         | 
| 14 | 
            +
             | 
| 15 | 
            +
            #define THIS  to<Rays::ColorSpace*>(self)
         | 
| 16 | 
            +
             | 
| 17 | 
            +
            #define CHECK RUCY_CHECK_OBJ(Rays::ColorSpace, cColorSpace, self)
         | 
| 18 | 
            +
             | 
| 19 | 
            +
             | 
| 20 | 
            +
            static
         | 
| 21 | 
            +
            RUCY_DEF_ALLOC(alloc, klass)
         | 
| 22 | 
            +
            {
         | 
| 23 | 
            +
            	return new_type<Rays::ColorSpace>(klass);
         | 
| 24 | 
            +
            }
         | 
| 25 | 
            +
            RUCY_END
         | 
| 26 | 
            +
             | 
| 27 | 
            +
            static
         | 
| 28 | 
            +
            RUCY_DEF2(setup, type, premultiplied)
         | 
| 29 | 
            +
            {
         | 
| 30 | 
            +
            	CHECK;
         | 
| 31 | 
            +
             | 
| 32 | 
            +
            	*THIS = Rays::ColorSpace(
         | 
| 33 | 
            +
            		(Rays::ColorSpaceType) to<uint>(type),
         | 
| 34 | 
            +
            		to<bool>(premultiplied));
         | 
| 35 | 
            +
            	return self;
         | 
| 36 | 
            +
            }
         | 
| 37 | 
            +
            RUCY_END
         | 
| 38 | 
            +
             | 
| 39 | 
            +
            static
         | 
| 40 | 
            +
            RUCY_DEF1(initialize_copy, obj)
         | 
| 41 | 
            +
            {
         | 
| 42 | 
            +
            	CHECK;
         | 
| 43 | 
            +
            	*THIS = to<Rays::ColorSpace&>(obj);
         | 
| 44 | 
            +
            	return self;
         | 
| 45 | 
            +
            }
         | 
| 46 | 
            +
            RUCY_END
         | 
| 47 | 
            +
             | 
| 48 | 
            +
            static
         | 
| 49 | 
            +
            RUCY_DEF0(type)
         | 
| 50 | 
            +
            {
         | 
| 51 | 
            +
            	CHECK;
         | 
| 52 | 
            +
             | 
| 53 | 
            +
            	return value(THIS->type());
         | 
| 54 | 
            +
            }
         | 
| 55 | 
            +
            RUCY_END
         | 
| 56 | 
            +
             | 
| 57 | 
            +
            static
         | 
| 58 | 
            +
            RUCY_DEF0(is_gray)
         | 
| 59 | 
            +
            {
         | 
| 60 | 
            +
            	CHECK;
         | 
| 61 | 
            +
             | 
| 62 | 
            +
            	return value(THIS->is_gray());
         | 
| 63 | 
            +
            }
         | 
| 64 | 
            +
            RUCY_END
         | 
| 65 | 
            +
             | 
| 66 | 
            +
            static
         | 
| 67 | 
            +
            RUCY_DEF0(is_rgb)
         | 
| 68 | 
            +
            {
         | 
| 69 | 
            +
            	CHECK;
         | 
| 70 | 
            +
             | 
| 71 | 
            +
            	return value(THIS->is_rgb());
         | 
| 72 | 
            +
            }
         | 
| 73 | 
            +
            RUCY_END
         | 
| 74 | 
            +
             | 
| 75 | 
            +
            static
         | 
| 76 | 
            +
            RUCY_DEF0(is_bgr)
         | 
| 77 | 
            +
            {
         | 
| 78 | 
            +
            	CHECK;
         | 
| 79 | 
            +
             | 
| 80 | 
            +
            	return value(THIS->is_bgr());
         | 
| 81 | 
            +
            }
         | 
| 82 | 
            +
            RUCY_END
         | 
| 83 | 
            +
             | 
| 84 | 
            +
            static
         | 
| 85 | 
            +
            RUCY_DEF0(is_float)
         | 
| 86 | 
            +
            {
         | 
| 87 | 
            +
            	CHECK;
         | 
| 88 | 
            +
             | 
| 89 | 
            +
            	return value(THIS->is_float());
         | 
| 90 | 
            +
            }
         | 
| 91 | 
            +
            RUCY_END
         | 
| 92 | 
            +
             | 
| 93 | 
            +
            static
         | 
| 94 | 
            +
            RUCY_DEF0(has_alpha)
         | 
| 95 | 
            +
            {
         | 
| 96 | 
            +
            	CHECK;
         | 
| 97 | 
            +
             | 
| 98 | 
            +
            	return value(THIS->has_alpha());
         | 
| 99 | 
            +
            }
         | 
| 100 | 
            +
            RUCY_END
         | 
| 101 | 
            +
             | 
| 102 | 
            +
            static
         | 
| 103 | 
            +
            RUCY_DEF0(has_skip)
         | 
| 104 | 
            +
            {
         | 
| 105 | 
            +
            	CHECK;
         | 
| 106 | 
            +
             | 
| 107 | 
            +
            	return value(THIS->has_skip());
         | 
| 108 | 
            +
            }
         | 
| 109 | 
            +
            RUCY_END
         | 
| 110 | 
            +
             | 
| 111 | 
            +
            static
         | 
| 112 | 
            +
            RUCY_DEF0(is_premult)
         | 
| 113 | 
            +
            {
         | 
| 114 | 
            +
            	CHECK;
         | 
| 115 | 
            +
             | 
| 116 | 
            +
            	return value(THIS->is_premult());
         | 
| 117 | 
            +
            }
         | 
| 118 | 
            +
            RUCY_END
         | 
| 119 | 
            +
             | 
| 120 | 
            +
             | 
| 121 | 
            +
            void
         | 
| 122 | 
            +
            Init_color_space ()
         | 
| 123 | 
            +
            {
         | 
| 124 | 
            +
            	Module mRays = define_module("Rays");
         | 
| 125 | 
            +
             | 
| 126 | 
            +
            	cColorSpace = mRays.define_class("ColorSpace");
         | 
| 127 | 
            +
            	cColorSpace.define_alloc_func(alloc);
         | 
| 128 | 
            +
            	cColorSpace.define_private_method("initialize_copy", initialize_copy);
         | 
| 129 | 
            +
            	cColorSpace.define_private_method("setup", setup);
         | 
| 130 | 
            +
            	cColorSpace.define_method("type",     type);
         | 
| 131 | 
            +
            	cColorSpace.define_method("gray?",    is_gray);
         | 
| 132 | 
            +
            	cColorSpace.define_method("rgb?",     is_rgb);
         | 
| 133 | 
            +
            	cColorSpace.define_method("bgr?",     is_bgr);
         | 
| 134 | 
            +
            	cColorSpace.define_method("float?",   is_float);
         | 
| 135 | 
            +
            	cColorSpace.define_method("alpha?",   has_alpha);
         | 
| 136 | 
            +
            	cColorSpace.define_method("skip?",    has_skip);
         | 
| 137 | 
            +
            	cColorSpace.define_method("premult?", is_premult);
         | 
| 138 | 
            +
             | 
| 139 | 
            +
            	cColorSpace.define_const("GRAY_8",     Rays::GRAY_8);
         | 
| 140 | 
            +
            	cColorSpace.define_const("GRAY_16",    Rays::GRAY_16);
         | 
| 141 | 
            +
            	cColorSpace.define_const("GRAY_24",    Rays::GRAY_24);
         | 
| 142 | 
            +
            	cColorSpace.define_const("GRAY_32",    Rays::GRAY_32);
         | 
| 143 | 
            +
            	cColorSpace.define_const("GRAY_float", Rays::GRAY_float);
         | 
| 144 | 
            +
            	cColorSpace.define_const("RGB_888",    Rays:: RGB_888);
         | 
| 145 | 
            +
            	cColorSpace.define_const("RGBA_8888",  Rays:: RGBA_8888);
         | 
| 146 | 
            +
            	cColorSpace.define_const("RGBX_8888",  Rays:: RGBX_8888);
         | 
| 147 | 
            +
            	cColorSpace.define_const("ARGB_8888",  Rays::ARGB_8888);
         | 
| 148 | 
            +
            	cColorSpace.define_const("XRGB_8888",  Rays::XRGB_8888);
         | 
| 149 | 
            +
            	cColorSpace.define_const("BGR_888",    Rays:: BGR_888);
         | 
| 150 | 
            +
            	cColorSpace.define_const("BGRA_8888",  Rays:: BGRA_8888);
         | 
| 151 | 
            +
            	cColorSpace.define_const("BGRX_8888",  Rays:: BGRX_8888);
         | 
| 152 | 
            +
            	cColorSpace.define_const("ABGR_8888",  Rays::ABGR_8888);
         | 
| 153 | 
            +
            	cColorSpace.define_const("XBGR_8888",  Rays::XBGR_8888);
         | 
| 154 | 
            +
            	cColorSpace.define_const("RGB_float",  Rays:: RGB_float);
         | 
| 155 | 
            +
            	cColorSpace.define_const("RGBA_float", Rays:: RGBA_float);
         | 
| 156 | 
            +
            	cColorSpace.define_const("ARGB_float", Rays::ARGB_float);
         | 
| 157 | 
            +
            	cColorSpace.define_const("BGR_float",  Rays:: BGR_float);
         | 
| 158 | 
            +
            	cColorSpace.define_const("BGRA_float", Rays:: BGRA_float);
         | 
| 159 | 
            +
            	cColorSpace.define_const("ABGR_float", Rays::ABGR_float);
         | 
| 160 | 
            +
            	cColorSpace.define_const("GRAY",       Rays::GRAY);
         | 
| 161 | 
            +
            	cColorSpace.define_const("RGB",        Rays:: RGB);
         | 
| 162 | 
            +
            	cColorSpace.define_const("BGR",        Rays:: BGR);
         | 
| 163 | 
            +
            	cColorSpace.define_const("RGBA",       Rays:: RGBA);
         | 
| 164 | 
            +
            	cColorSpace.define_const("RGBX",       Rays:: RGBX);
         | 
| 165 | 
            +
            	cColorSpace.define_const("ARGB",       Rays::ARGB);
         | 
| 166 | 
            +
            	cColorSpace.define_const("XRGB",       Rays::XRGB);
         | 
| 167 | 
            +
            	cColorSpace.define_const("BGRA",       Rays:: BGRA);
         | 
| 168 | 
            +
            	cColorSpace.define_const("BGRX",       Rays:: BGRX);
         | 
| 169 | 
            +
            	cColorSpace.define_const("ABGR",       Rays::ABGR);
         | 
| 170 | 
            +
            	cColorSpace.define_const("XBGR",       Rays::XBGR);
         | 
| 171 | 
            +
            }
         | 
| 172 | 
            +
             | 
| 173 | 
            +
             | 
| 174 | 
            +
            namespace Rays
         | 
| 175 | 
            +
            {
         | 
| 176 | 
            +
             | 
| 177 | 
            +
             | 
| 178 | 
            +
            	Class
         | 
| 179 | 
            +
            	color_space_class ()
         | 
| 180 | 
            +
            	{
         | 
| 181 | 
            +
            		return cColorSpace;
         | 
| 182 | 
            +
            	}
         | 
| 183 | 
            +
             | 
| 184 | 
            +
             | 
| 185 | 
            +
            }// Rays
         | 
    
        data/ext/rays/extconf.rb
    CHANGED
    
    | @@ -1,75 +1,26 @@ | |
| 1 1 | 
             
            # -*- coding: utf-8 -*-
         | 
| 2 2 |  | 
| 3 3 |  | 
| 4 | 
            -
             | 
| 5 | 
            -
             | 
| 4 | 
            +
            %w[../xot ../rucy .]
         | 
| 5 | 
            +
              .map  {|s| File.expand_path "../../../#{s}/lib", __FILE__}
         | 
| 6 | 
            +
              .each {|s| $:.unshift s if !$:.include?(s) && File.directory?(s)}
         | 
| 6 7 |  | 
| 7 8 | 
             
            require 'mkmf'
         | 
| 8 | 
            -
            require 'xot/ | 
| 9 | 
            +
            require 'xot/extconf'
         | 
| 9 10 | 
             
            require 'xot/module'
         | 
| 10 11 | 
             
            require 'rucy/module'
         | 
| 11 12 | 
             
            require 'rays/module'
         | 
| 12 13 |  | 
| 13 | 
            -
            include Xot::Rake
         | 
| 14 14 |  | 
| 15 | 
            +
            Xot::ExtConf.new Xot, Rucy, Rays do
         | 
| 16 | 
            +
              setup do
         | 
| 17 | 
            +
                headers    << 'boost/noncopyable.hpp' << 'ruby.h'
         | 
| 18 | 
            +
                local_libs << 'rucy'
         | 
| 19 | 
            +
                libs.unshift 'gdi21', 'opengl32' if win32?
         | 
| 20 | 
            +
                frameworks << 'AppKit' << 'OpenGL' if osx?
         | 
| 21 | 
            +
                $LDFLAGS   << ' -Wl,--out-implib=native.dll.a' if cygwin?
         | 
| 22 | 
            +
              end
         | 
| 15 23 |  | 
| 16 | 
            -
             | 
| 17 | 
            -
             | 
| 18 | 
            -
             | 
| 19 | 
            -
            DEFS    = []
         | 
| 20 | 
            -
            INCDIRS = %w[
         | 
| 21 | 
            -
              /opt/local/include
         | 
| 22 | 
            -
              /opt/include
         | 
| 23 | 
            -
            ]
         | 
| 24 | 
            -
            LIBDIRS = []
         | 
| 25 | 
            -
             | 
| 26 | 
            -
            HEADERS = %w[
         | 
| 27 | 
            -
              boost/shared_ptr.hpp
         | 
| 28 | 
            -
              ruby.h
         | 
| 29 | 
            -
              xot.h
         | 
| 30 | 
            -
              rucy.h
         | 
| 31 | 
            -
              rays.h
         | 
| 32 | 
            -
            ]
         | 
| 33 | 
            -
            LIBS = %w[
         | 
| 34 | 
            -
              stdc++
         | 
| 35 | 
            -
              xot
         | 
| 36 | 
            -
              rucy
         | 
| 37 | 
            -
              rays
         | 
| 38 | 
            -
            ]
         | 
| 39 | 
            -
            FRAMEWORKS = []
         | 
| 40 | 
            -
             | 
| 41 | 
            -
             | 
| 42 | 
            -
            DEFS << '_DEBUG' if debug
         | 
| 43 | 
            -
            DEFS << 'NDEBUG' unless debug
         | 
| 44 | 
            -
            DEFS << $~[0].upcase if RUBY_PLATFORM =~ /mswin|ming|cygwin|darwin/i
         | 
| 45 | 
            -
            if win32?
         | 
| 46 | 
            -
              DEFS << 'WINDOWS' << 'WIN32'
         | 
| 47 | 
            -
              LIBS.unshift 'gdi32', 'opengl32'
         | 
| 48 | 
            -
            elsif cocoa?
         | 
| 49 | 
            -
              DEFS << 'COCOA'
         | 
| 50 | 
            -
              FRAMEWORKS << 'AppKit' << 'OpenGL'
         | 
| 24 | 
            +
              dir_config 'boost'
         | 
| 25 | 
            +
              create_makefile 'rays/native'
         | 
| 51 26 | 
             
            end
         | 
| 52 | 
            -
             | 
| 53 | 
            -
            $CPPFLAGS   << DEFS.map       {|s| " -D#{s}"}.join
         | 
| 54 | 
            -
            $CPPFLAGS   << INCDIRS.map    {|s| " -I#{s}"}.join
         | 
| 55 | 
            -
            $LDFLAGS    << LIBDIRS.map    {|s| " -L#{s}"}.join
         | 
| 56 | 
            -
            $LDFLAGS    << FRAMEWORKS.map {|s| " -framework #{s}"}.join
         | 
| 57 | 
            -
            $LDFLAGS    << ' -Wl,--out-implib=native.dll.a' if cygwin?
         | 
| 58 | 
            -
            $CFLAGS     << ' --stdlib=libc++' if clang?
         | 
| 59 | 
            -
            $LOCAL_LIBS << ' -lrucy'
         | 
| 60 | 
            -
             | 
| 61 | 
            -
            RbConfig::CONFIG.each do |key, val|
         | 
| 62 | 
            -
              {'gcc' => 'g++', 'clang' => 'clang++'}.each {|from, to| val.gsub! from, to}
         | 
| 63 | 
            -
            end
         | 
| 64 | 
            -
             | 
| 65 | 
            -
             | 
| 66 | 
            -
            dir_config 'boost'
         | 
| 67 | 
            -
            dir_config 'xot',  Xot.root_dir
         | 
| 68 | 
            -
            dir_config 'rucy', Rucy.root_dir
         | 
| 69 | 
            -
            dir_config 'rays', Rays.root_dir
         | 
| 70 | 
            -
             | 
| 71 | 
            -
            exit 1 unless HEADERS.all? {|s| have_header(s)}
         | 
| 72 | 
            -
            exit 1 unless LIBS.all?    {|s| have_library(s)}
         | 
| 73 | 
            -
             | 
| 74 | 
            -
             | 
| 75 | 
            -
            create_makefile 'rays/native'
         | 
    
        data/ext/rays/font.cpp
    CHANGED
    
    | @@ -12,59 +12,25 @@ using Rays::coord; | |
| 12 12 |  | 
| 13 13 | 
             
            static Class cFont;
         | 
| 14 14 |  | 
| 15 | 
            +
            RUCY_DEFINE_VALUE_FROM_TO(Rays::Font, cFont)
         | 
| 15 16 |  | 
| 16 | 
            -
             | 
| 17 | 
            -
            {
         | 
| 18 | 
            -
             | 
| 19 | 
            -
             | 
| 20 | 
            -
            	Class
         | 
| 21 | 
            -
            	font_class ()
         | 
| 22 | 
            -
            	{
         | 
| 23 | 
            -
            		return cFont;
         | 
| 24 | 
            -
            	}
         | 
| 25 | 
            -
             | 
| 26 | 
            -
             | 
| 27 | 
            -
            }// Rays
         | 
| 28 | 
            -
             | 
| 29 | 
            -
             | 
| 30 | 
            -
            namespace Rucy
         | 
| 31 | 
            -
            {
         | 
| 32 | 
            -
             | 
| 33 | 
            -
             | 
| 34 | 
            -
            	Value
         | 
| 35 | 
            -
            	value (const Rays::Font& obj)
         | 
| 36 | 
            -
            	{
         | 
| 37 | 
            -
            		return new_type(cFont, new Rays::Font(obj));
         | 
| 38 | 
            -
            	}
         | 
| 39 | 
            -
             | 
| 40 | 
            -
            	Value
         | 
| 41 | 
            -
            	value (const Rays::Font* obj)
         | 
| 42 | 
            -
            	{
         | 
| 43 | 
            -
            		return obj ? value(*obj) : nil();
         | 
| 44 | 
            -
            	}
         | 
| 45 | 
            -
             | 
| 46 | 
            -
             | 
| 47 | 
            -
            }// Rucy
         | 
| 48 | 
            -
             | 
| 49 | 
            -
             | 
| 50 | 
            -
            #define THIS to<Rays::Font*>(self)
         | 
| 17 | 
            +
            #define THIS  to<Rays::Font*>(self)
         | 
| 51 18 |  | 
| 52 | 
            -
            #define CHECK RUCY_CHECK_OBJECT( | 
| 19 | 
            +
            #define CHECK RUCY_CHECK_OBJECT(Rays::Font, cFont, self)
         | 
| 53 20 |  | 
| 54 21 |  | 
| 55 22 | 
             
            static
         | 
| 56 | 
            -
             | 
| 23 | 
            +
            RUCY_DEF_ALLOC(alloc, klass)
         | 
| 57 24 | 
             
            {
         | 
| 58 25 | 
             
            	return new_type<Rays::Font>(klass);
         | 
| 59 26 | 
             
            }
         | 
| 60 | 
            -
             | 
| 27 | 
            +
            RUCY_END
         | 
| 61 28 |  | 
| 62 29 | 
             
            static
         | 
| 63 | 
            -
             | 
| 30 | 
            +
            RUCY_DEFN(initialize)
         | 
| 64 31 | 
             
            {
         | 
| 65 | 
            -
            	RUCY_CHECK_OBJ( | 
| 66 | 
            -
            	 | 
| 67 | 
            -
            		arg_count_error("Font#initialize", argc, 0, 1, 2);
         | 
| 32 | 
            +
            	RUCY_CHECK_OBJ(Rays::Font, cFont, self);
         | 
| 33 | 
            +
            	check_arg_count(__FILE__, __LINE__, "Font#initialize", argc, 0, 1, 2);
         | 
| 68 34 |  | 
| 69 35 | 
             
            	const char* name = (argc >= 1) ? argv[0].c_str()    : NULL;
         | 
| 70 36 | 
             
            	float size       = (argc >= 2) ? to<float>(argv[1]) : 0;
         | 
| @@ -72,51 +38,49 @@ RUBY_DEFN(initialize) | |
| 72 38 |  | 
| 73 39 | 
             
            	return self;
         | 
| 74 40 | 
             
            }
         | 
| 75 | 
            -
             | 
| 41 | 
            +
            RUCY_END
         | 
| 76 42 |  | 
| 77 43 | 
             
            static
         | 
| 78 | 
            -
             | 
| 44 | 
            +
            RUCY_DEF1(initialize_copy, obj)
         | 
| 79 45 | 
             
            {
         | 
| 80 | 
            -
            	 | 
| 46 | 
            +
            	RUCY_CHECK_OBJ(Rays::Font, cFont, self);
         | 
| 81 47 |  | 
| 82 | 
            -
            	 | 
| 48 | 
            +
            	*THIS = to<Rays::Font&>(obj).copy();
         | 
| 49 | 
            +
            	return self;
         | 
| 83 50 | 
             
            }
         | 
| 84 | 
            -
             | 
| 51 | 
            +
            RUCY_END
         | 
| 85 52 |  | 
| 86 53 | 
             
            static
         | 
| 87 | 
            -
             | 
| 54 | 
            +
            RUCY_DEF0(name)
         | 
| 88 55 | 
             
            {
         | 
| 89 56 | 
             
            	CHECK;
         | 
| 57 | 
            +
            	return value(THIS->name().c_str());
         | 
| 58 | 
            +
            }
         | 
| 59 | 
            +
            RUCY_END
         | 
| 90 60 |  | 
| 61 | 
            +
            static
         | 
| 62 | 
            +
            RUCY_DEF0(size)
         | 
| 63 | 
            +
            {
         | 
| 64 | 
            +
            	CHECK;
         | 
| 91 65 | 
             
            	return value(THIS->size());
         | 
| 92 66 | 
             
            }
         | 
| 93 | 
            -
             | 
| 67 | 
            +
            RUCY_END
         | 
| 94 68 |  | 
| 95 69 | 
             
            static
         | 
| 96 | 
            -
             | 
| 70 | 
            +
            RUCY_DEF1(width, str)
         | 
| 97 71 | 
             
            {
         | 
| 98 72 | 
             
            	CHECK;
         | 
| 99 | 
            -
             | 
| 100 | 
            -
            	coord width = 0;
         | 
| 101 | 
            -
            	if (!THIS->get_width(&width, str.c_str()))
         | 
| 102 | 
            -
            		rays_error("Font#width(%s) failed.", str.inspect().c_str());
         | 
| 103 | 
            -
             | 
| 104 | 
            -
            	return value(width);
         | 
| 73 | 
            +
            	return value(THIS->get_width(str.c_str()));
         | 
| 105 74 | 
             
            }
         | 
| 106 | 
            -
             | 
| 75 | 
            +
            RUCY_END
         | 
| 107 76 |  | 
| 108 77 | 
             
            static
         | 
| 109 | 
            -
             | 
| 78 | 
            +
            RUCY_DEF0(height)
         | 
| 110 79 | 
             
            {
         | 
| 111 80 | 
             
            	CHECK;
         | 
| 112 | 
            -
             | 
| 113 | 
            -
            	coord height = 0;
         | 
| 114 | 
            -
            	if (!THIS->get_height(&height))
         | 
| 115 | 
            -
            		rays_error("Font#height() failed.");
         | 
| 116 | 
            -
             | 
| 117 | 
            -
            	return value(height);
         | 
| 81 | 
            +
            	return value(THIS->get_height());
         | 
| 118 82 | 
             
            }
         | 
| 119 | 
            -
             | 
| 83 | 
            +
            RUCY_END
         | 
| 120 84 |  | 
| 121 85 |  | 
| 122 86 | 
             
            void
         | 
| @@ -127,8 +91,23 @@ Init_font () | |
| 127 91 | 
             
            	cFont = mRays.define_class("Font");
         | 
| 128 92 | 
             
            	cFont.define_alloc_func(alloc);
         | 
| 129 93 | 
             
            	cFont.define_private_method("initialize", initialize);
         | 
| 94 | 
            +
            	cFont.define_private_method("initialize_copy", initialize_copy);
         | 
| 130 95 | 
             
            	cFont.define_method("name", name);
         | 
| 131 96 | 
             
            	cFont.define_method("size", size);
         | 
| 132 97 | 
             
            	cFont.define_method("width", width);
         | 
| 133 98 | 
             
            	cFont.define_method("height", height);
         | 
| 134 99 | 
             
            }
         | 
| 100 | 
            +
             | 
| 101 | 
            +
             | 
| 102 | 
            +
            namespace Rays
         | 
| 103 | 
            +
            {
         | 
| 104 | 
            +
             | 
| 105 | 
            +
             | 
| 106 | 
            +
            	Class
         | 
| 107 | 
            +
            	font_class ()
         | 
| 108 | 
            +
            	{
         | 
| 109 | 
            +
            		return cFont;
         | 
| 110 | 
            +
            	}
         | 
| 111 | 
            +
             | 
| 112 | 
            +
             | 
| 113 | 
            +
            }// Rays
         |