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
|