rays 0.1.47 → 0.1.48

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.
Files changed (69) hide show
  1. checksums.yaml +4 -4
  2. data/.doc/ext/rays/bitmap.cpp +287 -46
  3. data/.doc/ext/rays/camera.cpp +2 -2
  4. data/.doc/ext/rays/defs.cpp +32 -8
  5. data/.doc/ext/rays/font.cpp +50 -2
  6. data/.doc/ext/rays/native.cpp +2 -4
  7. data/.doc/ext/rays/painter.cpp +73 -3
  8. data/.doc/ext/rays/polygon.cpp +131 -97
  9. data/.doc/ext/rays/polyline.cpp +89 -10
  10. data/.doc/ext/rays/rays.cpp +80 -0
  11. data/.doc/ext/rays/{noise.cpp → util.cpp} +2 -2
  12. data/ChangeLog.md +23 -0
  13. data/VERSION +1 -1
  14. data/ext/rays/bitmap.cpp +288 -46
  15. data/ext/rays/camera.cpp +2 -2
  16. data/ext/rays/defs.cpp +32 -8
  17. data/ext/rays/defs.h +56 -3
  18. data/ext/rays/font.cpp +56 -4
  19. data/ext/rays/native.cpp +2 -4
  20. data/ext/rays/painter.cpp +80 -3
  21. data/ext/rays/polygon.cpp +134 -99
  22. data/ext/rays/polyline.cpp +95 -9
  23. data/ext/rays/rays.cpp +80 -0
  24. data/ext/rays/{noise.cpp → util.cpp} +2 -2
  25. data/include/rays/defs.h +24 -26
  26. data/include/rays/font.h +17 -3
  27. data/include/rays/painter.h +14 -0
  28. data/include/rays/polygon.h +56 -37
  29. data/include/rays/polyline.h +17 -2
  30. data/include/rays/ruby/polygon.h +0 -11
  31. data/include/rays/ruby/rays.h +4 -0
  32. data/include/rays/{noise.h → util.h} +2 -2
  33. data/lib/rays/color.rb +1 -1
  34. data/lib/rays/font.rb +1 -1
  35. data/lib/rays/image.rb +1 -1
  36. data/lib/rays/painter.rb +12 -1
  37. data/lib/rays/point.rb +1 -1
  38. data/lib/rays/polygon.rb +44 -35
  39. data/lib/rays/polyline.rb +54 -8
  40. data/lib/rays.rb +0 -1
  41. data/rays.gemspec +1 -1
  42. data/src/font.cpp +24 -2
  43. data/src/font.h +8 -1
  44. data/src/ios/font.mm +88 -27
  45. data/src/osx/font.mm +90 -28
  46. data/src/osx/helper.h +2 -2
  47. data/src/osx/helper.mm +2 -2
  48. data/src/painter.cpp +155 -85
  49. data/src/painter.h +11 -3
  50. data/src/polygon.cpp +404 -315
  51. data/src/polyline.cpp +138 -27
  52. data/src/polyline.h +3 -5
  53. data/src/shader.cpp +36 -4
  54. data/src/shader.h +1 -1
  55. data/src/texture.cpp +2 -2
  56. data/src/{noise.cpp → util.cpp} +1 -1
  57. data/src/win32/font.cpp +1 -1
  58. data/test/test_bitmap.rb +12 -5
  59. data/test/test_color.rb +4 -0
  60. data/test/test_font.rb +20 -2
  61. data/test/test_image.rb +18 -18
  62. data/test/test_point.rb +1 -1
  63. data/test/test_polygon.rb +52 -45
  64. data/test/test_polyline.rb +191 -72
  65. metadata +9 -15
  66. data/.doc/ext/rays/polygon_line.cpp +0 -97
  67. data/ext/rays/polygon_line.cpp +0 -100
  68. data/lib/rays/polygon_line.rb +0 -33
  69. data/test/test_polygon_line.rb +0 -164
data/ext/rays/defs.h CHANGED
@@ -7,6 +7,7 @@
7
7
  #include <vector>
8
8
  #include <rucy.h>
9
9
  #include "rays/defs.h"
10
+ #include "rays/color.h"
10
11
  #include "rays/point.h"
11
12
  #include "rays/ruby/defs.h"
12
13
 
@@ -16,9 +17,9 @@ using namespace Rucy;
16
17
  using Rays::coord;
17
18
 
18
19
 
19
- void get_line_args (
20
- std::vector<Rays::Point>* points,
21
- int argc, const Value* argv);
20
+ void get_points (std::vector<Rays::Point>* points, int argc, const Value* argv);
21
+
22
+ void get_colors (std::vector<Rays::Color>* colors, int argc, const Value* argv);
22
23
 
23
24
  void get_rect_args (
24
25
  coord* x, coord* y, coord* w, coord* h,
@@ -35,4 +36,56 @@ void get_ellipse_args (
35
36
  Value nsegment);
36
37
 
37
38
 
39
+ struct CreateParams
40
+ {
41
+
42
+ std::vector<Rays::Point> points;
43
+
44
+ std::vector<Rays::Color> colors;
45
+
46
+ std::vector<Rays::Point> texcoords;
47
+
48
+ CreateParams (
49
+ const Value& points_, const Value& colors_, const Value& texcoords_)
50
+ {
51
+ get_points(&points, points_.size(), points_.as_array());
52
+
53
+ if (colors_)
54
+ {
55
+ get_colors(&colors, colors_.size(), colors_.as_array());
56
+ if (colors.size() != points.size())
57
+ argument_error(__FILE__, __LINE__, "colors.size() != points.size()");
58
+ }
59
+
60
+ if (texcoords_)
61
+ {
62
+ get_points(&texcoords, texcoords_.size(), texcoords_.as_array());
63
+ if (texcoords.size() != points.size())
64
+ argument_error(__FILE__, __LINE__, "texcoords.size() != points.size()");
65
+ }
66
+ }
67
+
68
+ const Rays::Point* ppoints () const
69
+ {
70
+ return points.empty() ? NULL : &points[0];
71
+ }
72
+
73
+ const Rays::Color* pcolors () const
74
+ {
75
+ return colors.empty() ? NULL : &colors[0];
76
+ }
77
+
78
+ const Rays::Point* ptexcoords () const
79
+ {
80
+ return texcoords.empty() ? NULL : &texcoords[0];
81
+ }
82
+
83
+ size_t size () const
84
+ {
85
+ return points.size();
86
+ }
87
+
88
+ };// CreateParams
89
+
90
+
38
91
  #endif//EOH
data/ext/rays/font.cpp CHANGED
@@ -30,6 +30,16 @@ RUCY_DEFN(initialize)
30
30
  }
31
31
  RUCY_END
32
32
 
33
+ static
34
+ RUCY_DEF1(initialize_copy, obj)
35
+ {
36
+ RUCY_CHECK_OBJ(Rays::Font, self);
37
+
38
+ *THIS = to<Rays::Font&>(obj).dup();
39
+ return self;
40
+ }
41
+ RUCY_END
42
+
33
43
  static
34
44
  RUCY_DEF0(name)
35
45
  {
@@ -38,6 +48,15 @@ RUCY_DEF0(name)
38
48
  }
39
49
  RUCY_END
40
50
 
51
+ static
52
+ RUCY_DEF1(set_size, size)
53
+ {
54
+ CHECK;
55
+ THIS->set_size(to<coord>(size));
56
+ return size;
57
+ }
58
+ RUCY_END
59
+
41
60
  static
42
61
  RUCY_DEF0(size)
43
62
  {
@@ -92,6 +111,35 @@ RUCY_DEF0(leading)
92
111
  }
93
112
  RUCY_END
94
113
 
114
+ static
115
+ RUCY_DEF0(families)
116
+ {
117
+ Hash hash;
118
+ for (const auto& family : Rays::get_font_families())
119
+ {
120
+ std::vector<Value> members;
121
+ for (const auto& member : family.second)
122
+ members.emplace_back(member.c_str());
123
+ hash.set(family.first.c_str(), value(members.size(), &members[0]));
124
+ }
125
+ return hash;
126
+ }
127
+ RUCY_END
128
+
129
+ static
130
+ RUCY_DEFN(load)
131
+ {
132
+ check_arg_count(__FILE__, __LINE__, "Font.load", argc, 1, 2);
133
+
134
+ const char* path = argv[0].c_str();
135
+
136
+ if (argc >= 2)
137
+ return value(Rays::load_font(path, to<Rays::coord>(argv[1])));
138
+ else
139
+ return value(Rays::load_font(path));
140
+ }
141
+ RUCY_END
142
+
95
143
 
96
144
  static Class cFont;
97
145
 
@@ -102,14 +150,18 @@ Init_rays_font ()
102
150
 
103
151
  cFont = mRays.define_class("Font");
104
152
  cFont.define_alloc_func(alloc);
105
- cFont.define_private_method("initialize", initialize);
153
+ cFont.define_private_method("initialize", initialize);
154
+ cFont.define_private_method("initialize_copy", initialize_copy);
106
155
  cFont.define_method("name", name);
107
- cFont.define_method("size", size);
156
+ cFont.define_method("size=", set_size);
157
+ cFont.define_method("size", size);
108
158
  cFont.define_method("width", width);
109
159
  cFont.define_method("height", height);
110
160
  cFont.define_method("ascent", ascent);
111
161
  cFont.define_method("descent", descent);
112
162
  cFont.define_method("leading", leading);
163
+ cFont.define_module_function("families", families);
164
+ cFont.define_module_function("load", load);
113
165
  }
114
166
 
115
167
 
@@ -131,9 +183,9 @@ namespace Rucy
131
183
  if (convert)
132
184
  {
133
185
  if (argc == 0)
134
- return Rays::default_font();
186
+ return Rays::get_default_font();
135
187
 
136
- coord size = argc >= 2 ? to<coord>(argv[1]) : 0;
188
+ coord size = argc >= 2 ? to<coord>(argv[1]) : Rays::Font::DEFAULT_SIZE;
137
189
  if (argv->is_nil())
138
190
  return Rays::Font(NULL, size);
139
191
  else if (argv->is_s() || argv->is_sym())
data/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 Init_rays_noise ();
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
- Init_rays_noise();
54
+ Init_rays_util();
57
55
 
58
56
  RUCY_CATCH
59
57
  }
data/ext/rays/painter.cpp CHANGED
@@ -162,7 +162,7 @@ RUCY_DEF2(line, args, loop)
162
162
  CHECK;
163
163
 
164
164
  std::vector<Rays::Point> points;
165
- get_line_args(&points, args.size(), args.as_array());
165
+ get_points(&points, args.size(), args.as_array());
166
166
 
167
167
  THIS->line(&points[0], points.size(), loop);
168
168
  return self;
@@ -224,7 +224,7 @@ RUCY_DEF2(curve, args, loop)
224
224
  argument_error(__FILE__, __LINE__);
225
225
 
226
226
  std::vector<Rays::Point> points;
227
- get_line_args(&points, args.size(), args.as_array());
227
+ get_points(&points, args.size(), args.as_array());
228
228
 
229
229
  THIS->curve(&points[0], points.size(), loop);
230
230
  return self;
@@ -240,7 +240,7 @@ RUCY_DEF2(bezier, args, loop)
240
240
  argument_error(__FILE__, __LINE__);
241
241
 
242
242
  std::vector<Rays::Point> points;
243
- get_line_args(&points, args.size(), args.as_array());
243
+ get_points(&points, args.size(), args.as_array());
244
244
 
245
245
  THIS->bezier(&points[0], points.size(), loop);
246
246
  return self;
@@ -558,6 +558,76 @@ RUCY_DEF0(get_font)
558
558
  }
559
559
  RUCY_END
560
560
 
561
+ static
562
+ RUCY_DEF1(set_texture, image)
563
+ {
564
+ CHECK;
565
+
566
+ if (!image)
567
+ THIS->no_texture();
568
+ else
569
+ THIS->set_texture(to<Rays::Image&>(image));
570
+ return self;
571
+ }
572
+ RUCY_END
573
+
574
+ static
575
+ RUCY_DEF0(get_texture)
576
+ {
577
+ CHECK;
578
+
579
+ const Rays::Image& image = THIS->texture();
580
+ return image ? value(image) : nil();
581
+ }
582
+ RUCY_END
583
+
584
+ static
585
+ RUCY_DEF0(no_texture)
586
+ {
587
+ CHECK;
588
+ THIS->no_texture();
589
+ return self;
590
+ }
591
+ RUCY_END
592
+
593
+ static
594
+ RUCY_DEF1(set_texcoord_mode, mode)
595
+ {
596
+ CHECK;
597
+
598
+ THIS->set_texcoord_mode(to<Rays::TexCoordMode>(mode));
599
+ return self;
600
+ }
601
+ RUCY_END
602
+
603
+ static
604
+ RUCY_DEF0(get_texcoord_mode)
605
+ {
606
+ CHECK;
607
+
608
+ return value(THIS->texcoord_mode());
609
+ }
610
+ RUCY_END
611
+
612
+ static
613
+ RUCY_DEF1(set_texcoord_wrap, wrap)
614
+ {
615
+ CHECK;
616
+
617
+ THIS->set_texcoord_wrap(to<Rays::TexCoordWrap>(wrap));
618
+ return self;
619
+ }
620
+ RUCY_END
621
+
622
+ static
623
+ RUCY_DEF0(get_texcoord_wrap)
624
+ {
625
+ CHECK;
626
+
627
+ return value(THIS->texcoord_wrap());
628
+ }
629
+ RUCY_END
630
+
561
631
  static
562
632
  RUCY_DEFN(set_shader)
563
633
  {
@@ -752,6 +822,13 @@ Init_rays_painter ()
752
822
  cPainter.define_method("no_clip", no_clip);
753
823
  cPainter.define_method("font=", set_font);
754
824
  cPainter.define_method("font", get_font);
825
+ cPainter.define_method( "texture=", set_texture);
826
+ cPainter.define_method( "texture", get_texture);
827
+ cPainter.define_method("no_texture", no_texture);
828
+ cPainter.define_method("texcoord_mode=", set_texcoord_mode);
829
+ cPainter.define_method("texcoord_mode", get_texcoord_mode);
830
+ cPainter.define_method("texcoord_wrap=", set_texcoord_wrap);
831
+ cPainter.define_method("texcoord_wrap", get_texcoord_wrap);
755
832
  cPainter.define_private_method("set_shader", set_shader);
756
833
  cPainter.define_method( "shader", get_shader);
757
834
  cPainter.define_method( "no_shader", no_shader);