rays 0.1.47 → 0.1.49
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 +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);
|