rays 0.1.47 → 0.1.49
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.doc/ext/rays/bitmap.cpp +287 -46
- data/.doc/ext/rays/camera.cpp +2 -2
- data/.doc/ext/rays/color.cpp +11 -0
- data/.doc/ext/rays/defs.cpp +32 -8
- data/.doc/ext/rays/font.cpp +50 -2
- data/.doc/ext/rays/image.cpp +3 -3
- data/.doc/ext/rays/matrix.cpp +65 -7
- data/.doc/ext/rays/native.cpp +2 -4
- data/.doc/ext/rays/painter.cpp +117 -9
- data/.doc/ext/rays/point.cpp +1 -11
- data/.doc/ext/rays/polygon.cpp +133 -97
- data/.doc/ext/rays/polyline.cpp +89 -10
- data/.doc/ext/rays/rays.cpp +80 -0
- data/.doc/ext/rays/{noise.cpp → util.cpp} +2 -2
- data/ChangeLog.md +46 -0
- data/VERSION +1 -1
- data/ext/rays/bitmap.cpp +288 -46
- data/ext/rays/camera.cpp +2 -2
- data/ext/rays/color.cpp +13 -1
- data/ext/rays/defs.cpp +32 -8
- data/ext/rays/defs.h +56 -3
- data/ext/rays/font.cpp +56 -4
- data/ext/rays/image.cpp +3 -3
- data/ext/rays/matrix.cpp +69 -7
- data/ext/rays/native.cpp +2 -4
- data/ext/rays/painter.cpp +132 -13
- data/ext/rays/point.cpp +1 -12
- data/ext/rays/polygon.cpp +136 -99
- data/ext/rays/polyline.cpp +95 -9
- data/ext/rays/rays.cpp +80 -0
- data/ext/rays/{noise.cpp → util.cpp} +2 -2
- data/include/rays/color.h +3 -1
- data/include/rays/defs.h +24 -26
- data/include/rays/font.h +17 -3
- data/include/rays/image.h +1 -1
- data/include/rays/matrix.h +24 -0
- data/include/rays/painter.h +24 -0
- data/include/rays/polygon.h +68 -43
- data/include/rays/polyline.h +17 -2
- data/include/rays/ruby/polygon.h +0 -11
- data/include/rays/ruby/rays.h +4 -0
- data/include/rays/{noise.h → util.h} +2 -2
- data/lib/rays/color.rb +7 -1
- data/lib/rays/font.rb +1 -1
- data/lib/rays/image.rb +11 -1
- data/lib/rays/matrix.rb +16 -0
- data/lib/rays/painter.rb +18 -7
- data/lib/rays/point.rb +5 -1
- data/lib/rays/polygon.rb +44 -35
- data/lib/rays/polyline.rb +54 -8
- data/lib/rays.rb +0 -1
- data/rays.gemspec +2 -2
- data/src/color.cpp +11 -2
- data/src/font.cpp +37 -18
- data/src/font.h +6 -5
- data/src/image.cpp +58 -14
- data/src/ios/font.mm +89 -32
- data/src/ios/helper.h +2 -2
- data/src/ios/helper.mm +2 -2
- data/src/matrix.cpp +45 -0
- data/src/osx/font.mm +93 -33
- data/src/osx/helper.h +2 -2
- data/src/osx/helper.mm +2 -2
- data/src/painter.cpp +246 -114
- data/src/painter.h +11 -3
- data/src/polygon.cpp +431 -332
- data/src/polyline.cpp +138 -27
- data/src/polyline.h +3 -5
- data/src/shader.cpp +36 -4
- data/src/shader.h +1 -1
- data/src/texture.cpp +23 -4
- data/src/texture.h +2 -0
- data/src/{noise.cpp → util.cpp} +1 -1
- data/src/win32/font.cpp +1 -1
- data/test/test_bitmap.rb +12 -5
- data/test/test_color.rb +25 -4
- data/test/test_font.rb +23 -2
- data/test/test_image.rb +44 -18
- data/test/test_matrix.rb +22 -0
- data/test/test_painter.rb +27 -0
- data/test/test_point.rb +1 -1
- data/test/test_polygon.rb +52 -45
- data/test/test_polyline.rb +191 -72
- metadata +12 -18
- data/.doc/ext/rays/polygon_line.cpp +0 -97
- data/ext/rays/polygon_line.cpp +0 -100
- data/lib/rays/polygon_line.rb +0 -33
- data/test/test_polygon_line.rb +0 -164
data/.doc/ext/rays/matrix.cpp
CHANGED
@@ -67,6 +67,14 @@ VALUE reset(VALUE self)
|
|
67
67
|
return self;
|
68
68
|
}
|
69
69
|
|
70
|
+
static
|
71
|
+
VALUE transpose(VALUE self)
|
72
|
+
{
|
73
|
+
CHECK;
|
74
|
+
THIS->transpose();
|
75
|
+
return self;
|
76
|
+
}
|
77
|
+
|
70
78
|
static
|
71
79
|
VALUE translate(VALUE self)
|
72
80
|
{
|
@@ -108,10 +116,10 @@ VALUE to_a(VALUE self)
|
|
108
116
|
{
|
109
117
|
CHECK;
|
110
118
|
return array(
|
111
|
-
THIS->x0, THIS->
|
112
|
-
THIS->
|
113
|
-
THIS->
|
114
|
-
THIS->
|
119
|
+
THIS->x0, THIS->x1, THIS->x2, THIS->x3,
|
120
|
+
THIS->y0, THIS->y1, THIS->y2, THIS->y3,
|
121
|
+
THIS->z0, THIS->z1, THIS->z2, THIS->z3,
|
122
|
+
THIS->w0, THIS->w1, THIS->w2, THIS->w3);
|
115
123
|
}
|
116
124
|
|
117
125
|
static
|
@@ -190,6 +198,51 @@ VALUE s_rotate(VALUE self)
|
|
190
198
|
return rotate(argc, argv, value(Rays::Matrix()));
|
191
199
|
}
|
192
200
|
|
201
|
+
static
|
202
|
+
VALUE s_ortho(VALUE self)
|
203
|
+
{
|
204
|
+
check_arg_count(__FILE__, __LINE__, "Matrix#ortho", argc, 4, 6);
|
205
|
+
|
206
|
+
coord l = to<coord>(argv[0]);
|
207
|
+
coord r = to<coord>(argv[1]);
|
208
|
+
coord t = to<coord>(argv[2]);
|
209
|
+
coord b = to<coord>(argv[3]);
|
210
|
+
if (argc == 4)
|
211
|
+
return value(Rays::ortho(l, r, t, b));
|
212
|
+
else
|
213
|
+
return value(Rays::ortho(l, r, t, b, to<coord>(argv[4]), to<coord>(argv[5])));
|
214
|
+
}
|
215
|
+
|
216
|
+
static
|
217
|
+
VALUE s_perspective(VALUE self, VALUE fov_y, VALUE aspect_ratio, VALUE near, VALUE far)
|
218
|
+
{
|
219
|
+
return value(Rays::perspective(
|
220
|
+
to<float>(fov_y), to<float>(aspect_ratio), to<coord>(near), to<coord>(far)));
|
221
|
+
}
|
222
|
+
|
223
|
+
static
|
224
|
+
VALUE s_look_at(VALUE self)
|
225
|
+
{
|
226
|
+
check_arg_count(__FILE__, __LINE__, "Matrix#ortho", argc, 3, 6, 9);
|
227
|
+
|
228
|
+
if (argc == 3)
|
229
|
+
{
|
230
|
+
return value(Rays::look_at(
|
231
|
+
to<Rays::Point&>(argv[0]),
|
232
|
+
to<Rays::Point&>(argv[1]),
|
233
|
+
to<Rays::Point&>(argv[2])));
|
234
|
+
}
|
235
|
+
else
|
236
|
+
{
|
237
|
+
return value(Rays::look_at(
|
238
|
+
to<coord>(argv[0]), to<coord>(argv[1]), to<coord>(argv[2]),
|
239
|
+
to<coord>(argv[3]), to<coord>(argv[4]), to<coord>(argv[5]),
|
240
|
+
argc >= 7 ? to<coord>(argv[6]) : 0,
|
241
|
+
argc >= 8 ? to<coord>(argv[7]) : 1,
|
242
|
+
argc >= 9 ? to<coord>(argv[8]) : 0));
|
243
|
+
}
|
244
|
+
}
|
245
|
+
|
193
246
|
|
194
247
|
static Class cMatrix;
|
195
248
|
|
@@ -203,9 +256,10 @@ Init_rays_matrix ()
|
|
203
256
|
rb_define_private_method(cMatrix, "initialize", RUBY_METHOD_FUNC(initialize), -1);
|
204
257
|
rb_define_private_method(cMatrix, "initialize_copy", RUBY_METHOD_FUNC(initialize_copy), 1);
|
205
258
|
rb_define_method(cMatrix, "reset", RUBY_METHOD_FUNC(reset), -1);
|
206
|
-
|
207
|
-
|
208
|
-
|
259
|
+
cMatrix.define_method("transpose!", transpose);
|
260
|
+
cMatrix.define_method("translate!", translate);
|
261
|
+
cMatrix.define_method("scale!", scale);
|
262
|
+
cMatrix.define_method("rotate!", rotate);
|
209
263
|
rb_define_method(cMatrix, "to_a", RUBY_METHOD_FUNC(to_a), 0);
|
210
264
|
cMatrix.define_method("*", mult);
|
211
265
|
cMatrix.define_method("[]=", set_at);
|
@@ -216,6 +270,10 @@ Init_rays_matrix ()
|
|
216
270
|
rb_define_singleton_method(cMatrix, "translate", RUBY_METHOD_FUNC(s_translate), -1);
|
217
271
|
rb_define_singleton_method(cMatrix, "scale", RUBY_METHOD_FUNC(s_scale), -1);
|
218
272
|
rb_define_singleton_method(cMatrix, "rotate", RUBY_METHOD_FUNC(s_rotate), -1);
|
273
|
+
rb_define_singleton_method(cMatrix, "ortho", RUBY_METHOD_FUNC(s_ortho), -1);
|
274
|
+
rb_define_singleton_method(cMatrix, "perspective", RUBY_METHOD_FUNC(s_perspective), 4);
|
275
|
+
rb_define_singleton_method(cMatrix, "look_at", RUBY_METHOD_FUNC(s_look_at), -1);
|
276
|
+
|
219
277
|
}
|
220
278
|
|
221
279
|
|
data/.doc/ext/rays/native.cpp
CHANGED
@@ -12,7 +12,6 @@ void Init_rays_matrix ();
|
|
12
12
|
|
13
13
|
void Init_rays_painter ();
|
14
14
|
void Init_rays_polyline ();
|
15
|
-
void Init_rays_polygon_line ();
|
16
15
|
void Init_rays_polygon ();
|
17
16
|
void Init_rays_bitmap ();
|
18
17
|
void Init_rays_image ();
|
@@ -20,7 +19,7 @@ void Init_rays_font ();
|
|
20
19
|
void Init_rays_shader ();
|
21
20
|
void Init_rays_camera ();
|
22
21
|
|
23
|
-
void
|
22
|
+
void Init_rays_util ();
|
24
23
|
|
25
24
|
|
26
25
|
extern "C" void
|
@@ -45,7 +44,6 @@ extern "C" void
|
|
45
44
|
|
46
45
|
Init_rays_painter();
|
47
46
|
Init_rays_polyline();
|
48
|
-
Init_rays_polygon_line();
|
49
47
|
Init_rays_polygon();
|
50
48
|
Init_rays_bitmap();
|
51
49
|
Init_rays_image();
|
@@ -53,7 +51,7 @@ extern "C" void
|
|
53
51
|
Init_rays_shader();
|
54
52
|
Init_rays_camera();
|
55
53
|
|
56
|
-
|
54
|
+
Init_rays_util();
|
57
55
|
|
58
56
|
RUCY_CATCH
|
59
57
|
}
|
data/.doc/ext/rays/painter.cpp
CHANGED
@@ -147,13 +147,25 @@ VALUE polygon(VALUE self)
|
|
147
147
|
return self;
|
148
148
|
}
|
149
149
|
|
150
|
+
static
|
151
|
+
VALUE point(VALUE self)
|
152
|
+
{
|
153
|
+
CHECK;
|
154
|
+
|
155
|
+
std::vector<Rays::Point> points;
|
156
|
+
get_points(&points, argc, argv);
|
157
|
+
|
158
|
+
THIS->points(&points[0], points.size());
|
159
|
+
return self;
|
160
|
+
}
|
161
|
+
|
150
162
|
static
|
151
163
|
VALUE line(VALUE self, VALUE args, VALUE loop)
|
152
164
|
{
|
153
165
|
CHECK;
|
154
166
|
|
155
167
|
std::vector<Rays::Point> points;
|
156
|
-
|
168
|
+
get_points(&points, args.size(), args.as_array());
|
157
169
|
|
158
170
|
THIS->line(&points[0], points.size(), loop);
|
159
171
|
return self;
|
@@ -211,7 +223,7 @@ VALUE curve(VALUE self, VALUE args, VALUE loop)
|
|
211
223
|
argument_error(__FILE__, __LINE__);
|
212
224
|
|
213
225
|
std::vector<Rays::Point> points;
|
214
|
-
|
226
|
+
get_points(&points, args.size(), args.as_array());
|
215
227
|
|
216
228
|
THIS->curve(&points[0], points.size(), loop);
|
217
229
|
return self;
|
@@ -226,7 +238,7 @@ VALUE bezier(VALUE self, VALUE args, VALUE loop)
|
|
226
238
|
argument_error(__FILE__, __LINE__);
|
227
239
|
|
228
240
|
std::vector<Rays::Point> points;
|
229
|
-
|
241
|
+
get_points(&points, args.size(), args.as_array());
|
230
242
|
|
231
243
|
THIS->bezier(&points[0], points.size(), loop);
|
232
244
|
return self;
|
@@ -458,6 +470,28 @@ VALUE get_nsegment(VALUE self)
|
|
458
470
|
return value(THIS->nsegment());
|
459
471
|
}
|
460
472
|
|
473
|
+
static
|
474
|
+
VALUE set_line_height(VALUE self, VALUE height)
|
475
|
+
{
|
476
|
+
CHECK;
|
477
|
+
THIS->set_line_height(height ? to<coord>(height) : -1);
|
478
|
+
return self;
|
479
|
+
}
|
480
|
+
|
481
|
+
static
|
482
|
+
VALUE get_line_height(VALUE self)
|
483
|
+
{
|
484
|
+
CHECK;
|
485
|
+
return value(THIS->line_height());
|
486
|
+
}
|
487
|
+
|
488
|
+
static
|
489
|
+
VALUE get_line_height_raw(VALUE self)
|
490
|
+
{
|
491
|
+
CHECK;
|
492
|
+
return value(THIS->line_height(true));
|
493
|
+
}
|
494
|
+
|
461
495
|
static
|
462
496
|
VALUE set_blend_mode(VALUE self, VALUE mode)
|
463
497
|
{
|
@@ -513,6 +547,69 @@ VALUE get_font(VALUE self)
|
|
513
547
|
return value(THIS->font());
|
514
548
|
}
|
515
549
|
|
550
|
+
static
|
551
|
+
VALUE set_texture(VALUE self, VALUE image)
|
552
|
+
{
|
553
|
+
CHECK;
|
554
|
+
|
555
|
+
if (!image)
|
556
|
+
THIS->no_texture();
|
557
|
+
else
|
558
|
+
THIS->set_texture(to<Rays::Image&>(image));
|
559
|
+
return self;
|
560
|
+
}
|
561
|
+
|
562
|
+
static
|
563
|
+
VALUE get_texture(VALUE self)
|
564
|
+
{
|
565
|
+
CHECK;
|
566
|
+
|
567
|
+
const Rays::Image& image = THIS->texture();
|
568
|
+
return image ? value(image) : nil();
|
569
|
+
}
|
570
|
+
|
571
|
+
static
|
572
|
+
VALUE no_texture(VALUE self)
|
573
|
+
{
|
574
|
+
CHECK;
|
575
|
+
THIS->no_texture();
|
576
|
+
return self;
|
577
|
+
}
|
578
|
+
|
579
|
+
static
|
580
|
+
VALUE set_texcoord_mode(VALUE self, VALUE mode)
|
581
|
+
{
|
582
|
+
CHECK;
|
583
|
+
|
584
|
+
THIS->set_texcoord_mode(to<Rays::TexCoordMode>(mode));
|
585
|
+
return self;
|
586
|
+
}
|
587
|
+
|
588
|
+
static
|
589
|
+
VALUE get_texcoord_mode(VALUE self)
|
590
|
+
{
|
591
|
+
CHECK;
|
592
|
+
|
593
|
+
return value(THIS->texcoord_mode());
|
594
|
+
}
|
595
|
+
|
596
|
+
static
|
597
|
+
VALUE set_texcoord_wrap(VALUE self, VALUE wrap)
|
598
|
+
{
|
599
|
+
CHECK;
|
600
|
+
|
601
|
+
THIS->set_texcoord_wrap(to<Rays::TexCoordWrap>(wrap));
|
602
|
+
return self;
|
603
|
+
}
|
604
|
+
|
605
|
+
static
|
606
|
+
VALUE get_texcoord_wrap(VALUE self)
|
607
|
+
{
|
608
|
+
CHECK;
|
609
|
+
|
610
|
+
return value(THIS->texcoord_wrap());
|
611
|
+
}
|
612
|
+
|
516
613
|
static
|
517
614
|
VALUE set_shader(VALUE self)
|
518
615
|
{
|
@@ -658,12 +755,13 @@ Init_rays_painter ()
|
|
658
755
|
cPainter.define_method( "painting?", is_painting);
|
659
756
|
rb_define_method(cPainter, "clear", RUBY_METHOD_FUNC(clear), 0);
|
660
757
|
rb_define_method(cPainter, "polygon", RUBY_METHOD_FUNC(polygon), -1);
|
661
|
-
|
662
|
-
|
663
|
-
|
664
|
-
|
665
|
-
|
666
|
-
|
758
|
+
rb_define_method(cPainter, "point", RUBY_METHOD_FUNC(point), -1);
|
759
|
+
cPainter.define_private_method("line!", line);
|
760
|
+
cPainter.define_private_method("polyline!", polyline);
|
761
|
+
cPainter.define_private_method("rect!", rect);
|
762
|
+
cPainter.define_private_method("ellipse!", ellipse);
|
763
|
+
cPainter.define_private_method("curve!", curve);
|
764
|
+
cPainter.define_private_method("bezier!", bezier);
|
667
765
|
rb_define_method(cPainter, "image", RUBY_METHOD_FUNC(image), -1);
|
668
766
|
rb_define_method(cPainter, "text", RUBY_METHOD_FUNC(text), -1);
|
669
767
|
|
@@ -688,6 +786,9 @@ Init_rays_painter ()
|
|
688
786
|
rb_define_method(cPainter, "miter_limit", RUBY_METHOD_FUNC(get_miter_limit), 0);
|
689
787
|
rb_define_method(cPainter, "nsegment=", RUBY_METHOD_FUNC(set_nsegment), 1);
|
690
788
|
rb_define_method(cPainter, "nsegment", RUBY_METHOD_FUNC(get_nsegment), 0);
|
789
|
+
rb_define_method(cPainter, "line_height=", RUBY_METHOD_FUNC(set_line_height), 1);
|
790
|
+
rb_define_method(cPainter, "line_height", RUBY_METHOD_FUNC(get_line_height), 0);
|
791
|
+
cPainter.define_method("line_height!", get_line_height_raw);
|
691
792
|
rb_define_method(cPainter, "blend_mode=", RUBY_METHOD_FUNC(set_blend_mode), 1);
|
692
793
|
rb_define_method(cPainter, "blend_mode", RUBY_METHOD_FUNC(get_blend_mode), 0);
|
693
794
|
rb_define_method(cPainter, "clip=", RUBY_METHOD_FUNC(set_clip), -1);
|
@@ -695,6 +796,13 @@ Init_rays_painter ()
|
|
695
796
|
rb_define_method(cPainter, "no_clip", RUBY_METHOD_FUNC(no_clip), 0);
|
696
797
|
rb_define_method(cPainter, "font=", RUBY_METHOD_FUNC(set_font), -1);
|
697
798
|
rb_define_method(cPainter, "font", RUBY_METHOD_FUNC(get_font), 0);
|
799
|
+
rb_define_method(cPainter, "texture=", RUBY_METHOD_FUNC(set_texture), 1);
|
800
|
+
rb_define_method(cPainter, "texture", RUBY_METHOD_FUNC(get_texture), 0);
|
801
|
+
rb_define_method(cPainter, "no_texture", RUBY_METHOD_FUNC(no_texture), 0);
|
802
|
+
rb_define_method(cPainter, "texcoord_mode=", RUBY_METHOD_FUNC(set_texcoord_mode), 1);
|
803
|
+
rb_define_method(cPainter, "texcoord_mode", RUBY_METHOD_FUNC(get_texcoord_mode), 0);
|
804
|
+
rb_define_method(cPainter, "texcoord_wrap=", RUBY_METHOD_FUNC(set_texcoord_wrap), 1);
|
805
|
+
rb_define_method(cPainter, "texcoord_wrap", RUBY_METHOD_FUNC(get_texcoord_wrap), 0);
|
698
806
|
rb_define_private_method(cPainter, "set_shader", RUBY_METHOD_FUNC(set_shader), -1);
|
699
807
|
rb_define_method(cPainter, "shader", RUBY_METHOD_FUNC(get_shader), 0);
|
700
808
|
rb_define_method(cPainter, "no_shader", RUBY_METHOD_FUNC(no_shader), 0);
|
data/.doc/ext/rays/point.cpp
CHANGED
@@ -79,15 +79,6 @@ VALUE move_by(VALUE self)
|
|
79
79
|
|
80
80
|
static
|
81
81
|
VALUE rotate(VALUE self, VALUE degree)
|
82
|
-
{
|
83
|
-
CHECK;
|
84
|
-
Rays::Point p = *THIS;
|
85
|
-
p.rotate(to<float>(degree));
|
86
|
-
return value(p);
|
87
|
-
}
|
88
|
-
|
89
|
-
static
|
90
|
-
VALUE rotate_self(VALUE self, VALUE degree)
|
91
82
|
{
|
92
83
|
CHECK;
|
93
84
|
THIS->rotate(to<float>(degree));
|
@@ -258,8 +249,7 @@ Init_rays_point ()
|
|
258
249
|
rb_define_private_method(cPoint, "initialize_copy", RUBY_METHOD_FUNC(initialize_copy), 1);
|
259
250
|
cPoint.define_method("move_to!", move_to);
|
260
251
|
cPoint.define_method("move_by!", move_by);
|
261
|
-
|
262
|
-
cPoint.define_method("rotate!", rotate_self);
|
252
|
+
cPoint.define_method("rotate!", rotate);
|
263
253
|
rb_define_method(cPoint, "length", RUBY_METHOD_FUNC(length), 0);
|
264
254
|
rb_define_method(cPoint, "normalize", RUBY_METHOD_FUNC(normalize), 0);
|
265
255
|
rb_define_method(cPoint, "normal", RUBY_METHOD_FUNC(normal), 0);
|