rays 0.1.12 → 0.1.13

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 (155) hide show
  1. checksums.yaml +5 -5
  2. data/.doc/ext/rays/bitmap.cpp +22 -76
  3. data/.doc/ext/rays/bounds.cpp +95 -125
  4. data/.doc/ext/rays/color.cpp +224 -45
  5. data/.doc/ext/rays/color_space.cpp +137 -45
  6. data/.doc/ext/rays/defs.cpp +183 -0
  7. data/.doc/ext/rays/font.cpp +39 -21
  8. data/.doc/ext/rays/image.cpp +26 -37
  9. data/.doc/ext/rays/matrix.cpp +186 -29
  10. data/.doc/ext/rays/native.cpp +12 -6
  11. data/.doc/ext/rays/noise.cpp +53 -0
  12. data/.doc/ext/rays/painter.cpp +120 -308
  13. data/.doc/ext/rays/point.cpp +82 -77
  14. data/.doc/ext/rays/polygon.cpp +287 -0
  15. data/.doc/ext/rays/polygon_line.cpp +96 -0
  16. data/.doc/ext/rays/polyline.cpp +161 -0
  17. data/.doc/ext/rays/rays.cpp +0 -13
  18. data/.doc/ext/rays/shader.cpp +83 -9
  19. data/README.md +1 -1
  20. data/Rakefile +21 -9
  21. data/VERSION +1 -1
  22. data/ext/rays/bitmap.cpp +22 -80
  23. data/ext/rays/bounds.cpp +100 -128
  24. data/ext/rays/color.cpp +232 -51
  25. data/ext/rays/color_space.cpp +140 -46
  26. data/ext/rays/defs.cpp +183 -0
  27. data/ext/rays/defs.h +26 -2
  28. data/ext/rays/extconf.rb +1 -2
  29. data/ext/rays/font.cpp +39 -22
  30. data/ext/rays/image.cpp +27 -39
  31. data/ext/rays/matrix.cpp +198 -30
  32. data/ext/rays/native.cpp +12 -6
  33. data/ext/rays/noise.cpp +55 -0
  34. data/ext/rays/painter.cpp +129 -315
  35. data/ext/rays/point.cpp +89 -81
  36. data/ext/rays/polygon.cpp +301 -0
  37. data/ext/rays/polygon_line.cpp +99 -0
  38. data/ext/rays/polyline.cpp +170 -0
  39. data/ext/rays/rays.cpp +0 -14
  40. data/ext/rays/shader.cpp +84 -9
  41. data/include/rays.h +10 -2
  42. data/include/rays/bitmap.h +14 -26
  43. data/include/rays/bounds.h +21 -4
  44. data/include/rays/color.h +25 -14
  45. data/include/rays/color_space.h +11 -8
  46. data/include/rays/coord.h +114 -0
  47. data/include/rays/debug.h +22 -0
  48. data/include/rays/defs.h +3 -0
  49. data/include/rays/font.h +4 -4
  50. data/include/rays/image.h +11 -17
  51. data/include/rays/matrix.h +50 -24
  52. data/include/rays/noise.h +42 -0
  53. data/include/rays/opengl.h +2 -50
  54. data/include/rays/painter.h +57 -99
  55. data/include/rays/point.h +44 -51
  56. data/include/rays/polygon.h +164 -0
  57. data/include/rays/polyline.h +65 -0
  58. data/include/rays/rays.h +3 -0
  59. data/include/rays/ruby.h +7 -1
  60. data/include/rays/ruby/bounds.h +1 -1
  61. data/include/rays/ruby/color.h +1 -1
  62. data/include/rays/ruby/color_space.h +1 -1
  63. data/include/rays/ruby/font.h +1 -1
  64. data/include/rays/ruby/matrix.h +1 -1
  65. data/include/rays/ruby/point.h +1 -1
  66. data/include/rays/ruby/polygon.h +52 -0
  67. data/include/rays/ruby/polyline.h +41 -0
  68. data/include/rays/ruby/shader.h +1 -1
  69. data/include/rays/shader.h +36 -8
  70. data/lib/rays.rb +6 -1
  71. data/lib/rays/bitmap.rb +0 -15
  72. data/lib/rays/bounds.rb +17 -23
  73. data/lib/rays/color.rb +20 -47
  74. data/lib/rays/color_space.rb +13 -13
  75. data/lib/rays/image.rb +2 -6
  76. data/lib/rays/matrix.rb +28 -0
  77. data/lib/rays/module.rb +4 -19
  78. data/lib/rays/painter.rb +60 -97
  79. data/lib/rays/point.rb +13 -21
  80. data/lib/rays/polygon.rb +50 -0
  81. data/lib/rays/polygon_line.rb +36 -0
  82. data/lib/rays/polyline.rb +32 -0
  83. data/lib/rays/shader.rb +20 -1
  84. data/rays.gemspec +5 -7
  85. data/src/bitmap.h +36 -0
  86. data/src/bounds.cpp +74 -11
  87. data/src/color.cpp +58 -23
  88. data/src/color_space.cpp +50 -32
  89. data/src/color_space.h +22 -0
  90. data/src/coord.cpp +170 -0
  91. data/src/coord.h +35 -0
  92. data/src/font.cpp +118 -0
  93. data/src/font.h +64 -0
  94. data/src/frame_buffer.cpp +37 -71
  95. data/src/frame_buffer.h +4 -4
  96. data/src/image.cpp +171 -97
  97. data/src/image.h +25 -0
  98. data/src/ios/bitmap.mm +107 -105
  99. data/src/ios/font.mm +48 -60
  100. data/src/ios/helper.h +2 -2
  101. data/src/ios/opengl.mm +19 -4
  102. data/src/ios/rays.mm +3 -0
  103. data/src/matrix.cpp +111 -26
  104. data/src/matrix.h +30 -0
  105. data/src/noise.cpp +74 -0
  106. data/src/opengl.cpp +9 -27
  107. data/src/opengl.h +37 -0
  108. data/src/osx/bitmap.mm +111 -106
  109. data/src/osx/font.mm +48 -61
  110. data/src/osx/helper.h +2 -2
  111. data/src/osx/opengl.mm +19 -83
  112. data/src/osx/rays.mm +3 -0
  113. data/src/painter.cpp +780 -696
  114. data/src/painter.h +24 -0
  115. data/src/point.cpp +140 -119
  116. data/src/polygon.cpp +1100 -0
  117. data/src/polygon.h +32 -0
  118. data/src/polyline.cpp +158 -0
  119. data/src/polyline.h +67 -0
  120. data/src/render_buffer.cpp +11 -4
  121. data/src/render_buffer.h +2 -2
  122. data/src/shader.cpp +163 -106
  123. data/src/shader.h +38 -0
  124. data/src/shader_program.cpp +533 -0
  125. data/src/{program.h → shader_program.h} +28 -16
  126. data/src/shader_source.cpp +140 -0
  127. data/src/shader_source.h +52 -0
  128. data/src/texture.cpp +136 -160
  129. data/src/texture.h +65 -0
  130. data/src/win32/bitmap.cpp +62 -52
  131. data/src/win32/font.cpp +11 -13
  132. data/src/win32/font.h +24 -0
  133. data/src/win32/gdi.h +6 -6
  134. data/test/helper.rb +0 -3
  135. data/test/test_bitmap.rb +31 -7
  136. data/test/test_bounds.rb +36 -0
  137. data/test/test_color.rb +59 -19
  138. data/test/test_color_space.rb +95 -0
  139. data/test/test_image.rb +24 -20
  140. data/test/test_matrix.rb +106 -0
  141. data/test/test_painter.rb +92 -46
  142. data/test/test_painter_shape.rb +57 -0
  143. data/test/test_point.rb +21 -0
  144. data/test/test_polygon.rb +234 -0
  145. data/test/test_polygon_line.rb +167 -0
  146. data/test/test_polyline.rb +145 -0
  147. data/test/test_shader.rb +9 -9
  148. metadata +88 -67
  149. data/.doc/ext/rays/texture.cpp +0 -138
  150. data/ext/rays/texture.cpp +0 -149
  151. data/include/rays/ruby/texture.h +0 -41
  152. data/include/rays/texture.h +0 -71
  153. data/lib/rays/texture.rb +0 -24
  154. data/src/program.cpp +0 -648
  155. data/test/test_texture.rb +0 -27
@@ -5,6 +5,7 @@
5
5
 
6
6
 
7
7
  #include <rays/defs.h>
8
+ #include <rays/point.h>
8
9
 
9
10
 
10
11
  namespace Rays
@@ -14,48 +15,73 @@ namespace Rays
14
15
  struct Matrix
15
16
  {
16
17
 
18
+ typedef Matrix This;
19
+
20
+ enum {NROW = 4, NCOLUMN = 4, NELEM = NROW * NCOLUMN};
21
+
17
22
  union
18
23
  {
19
24
  struct
20
25
  {
21
- float
22
- a1, a2, a3, a4,
23
- b1, b2, b3, b4,
24
- c1, c2, c3, c4,
25
- d1, d2, d3, d4;
26
+ coord
27
+ x0, y0, z0, w0,
28
+ x1, y1, z1, w1,
29
+ x2, y2, z2, w2,
30
+ x3, y3, z3, w3;
26
31
  };
27
- float array[16];
32
+ Coord4 column[NCOLUMN];
33
+ coord array[NELEM];
28
34
  };
29
35
 
30
- Matrix (float value = 1);
36
+ Matrix (coord value = 1);
31
37
 
32
38
  Matrix (
33
- float a1, float a2, float a3, float a4,
34
- float b1, float b2, float b3, float b4,
35
- float c1, float c2, float c3, float c4,
36
- float d1, float d2, float d3, float d4);
39
+ coord x0, coord x1, coord x2, coord x3,
40
+ coord y0, coord y1, coord y2, coord y3,
41
+ coord z0, coord z1, coord z2, coord z3,
42
+ coord w0, coord w1, coord w2, coord w3);
43
+
44
+ Matrix (const coord* elements, size_t size);
45
+
46
+ This dup () const;
47
+
48
+ This& reset (coord value = 1);
49
+
50
+ This& reset (
51
+ coord x0, coord x1, coord x2, coord x3,
52
+ coord y0, coord y1, coord y2, coord y3,
53
+ coord z0, coord z1, coord z2, coord z3,
54
+ coord w0, coord w1, coord w2, coord w3);
55
+
56
+ This& reset (const coord* elements, size_t size);
57
+
58
+ This& translate (coord x, coord y, coord z = 0);
59
+
60
+ This& translate (const Coord3& translate);
61
+
62
+ This& scale (coord x, coord y, coord z = 1);
63
+
64
+ This& scale (const Coord3& scale);
65
+
66
+ This& rotate (float degree, coord x = 0, coord y = 0, coord z = 1);
37
67
 
38
- Matrix (const float* elements, size_t size);
68
+ This& rotate (float degree, const Coord3& normalized_axis);
39
69
 
40
- Matrix dup () const;
70
+ coord& at (int row, int column);
41
71
 
42
- Matrix& reset (float value = 1);
72
+ coord at (int row, int column) const;
43
73
 
44
- Matrix& reset (
45
- float a1, float a2, float a3, float a4,
46
- float b1, float b2, float b3, float b4,
47
- float c1, float c2, float c3, float c4,
48
- float d1, float d2, float d3, float d4);
74
+ String inspect () const;
49
75
 
50
- Matrix& reset (const float* elements, size_t size);
76
+ coord& operator [] (int index);
51
77
 
52
- float& at (int row, int column);
78
+ coord operator [] (int index) const;
53
79
 
54
- float at (int row, int column) const;
80
+ This& operator *= (const This& rhs);
55
81
 
56
- float& operator [] (int index);
82
+ Point operator * (const Point& rhs) const;
57
83
 
58
- float operator [] (int index) const;
84
+ This operator * (const This& rhs) const;
59
85
 
60
86
  };// Matrix
61
87
 
@@ -0,0 +1,42 @@
1
+ // -*- c++ -*-
2
+ #pragma once
3
+ #ifndef __RAYS_NOISE_H__
4
+ #define __RAYS_NOISE_H__
5
+
6
+
7
+ #include <rays/defs.h>
8
+
9
+
10
+ namespace Rays
11
+ {
12
+
13
+
14
+ struct Coord3;
15
+
16
+
17
+ coord perlin (coord x);
18
+
19
+ coord perlin (coord x, coord y);
20
+
21
+ coord perlin (coord x, coord y, coord z);
22
+
23
+ coord perlin (coord x, coord y, coord z, coord w);
24
+
25
+ coord perlin (const Coord3& position);
26
+
27
+
28
+ coord simplex (coord x);
29
+
30
+ coord simplex (coord x, coord y);
31
+
32
+ coord simplex (coord x, coord y, coord z);
33
+
34
+ coord simplex (coord x, coord y, coord z, coord w);
35
+
36
+ coord simplex (const Coord3& position);
37
+
38
+
39
+ }// Rays
40
+
41
+
42
+ #endif//EOH
@@ -4,65 +4,17 @@
4
4
  #define __RAYS_OPENGL_H__
5
5
 
6
6
 
7
- #if defined(OSX)
8
- #include <OpenGL/gl.h>
9
- #include <OpenGL/glext.h>
10
- #elif defined(IOS)
11
- #include <OpenGLES/ES1/gl.h>
12
- #include <OpenGLES/ES1/glext.h>
13
- #elif defined(WIN32)
14
- #include <GL/gl.h>
15
- #include <GL/glext.h>
16
- #endif
17
-
18
-
19
7
  namespace Rays
20
8
  {
21
9
 
22
10
 
23
- GLenum get_error ();
24
-
25
- bool no_error ();
26
-
27
- bool is_error (GLenum err);
28
-
29
- void check_error(const char* file, int line);
30
-
31
- void clear_error ();
11
+ typedef void* Context;
32
12
 
33
13
 
34
- void init_offscreen_context ();
14
+ Context get_offscreen_context ();
35
15
 
36
16
 
37
17
  }// Rays
38
18
 
39
19
 
40
- #ifdef IOS
41
-
42
- #define glGenFramebuffers glGenFramebuffersOES
43
- #define glGenRenderbuffers glGenRenderbuffersOES
44
- #define glDeleteFramebuffers glDeleteFramebuffersOES
45
- #define glDeleteRenderbuffers glDeleteRenderbuffersOES
46
- #define glBindFramebuffer glBindFramebufferOES
47
- #define glBindRenderbuffer glBindRenderbufferOES
48
- #define glCheckFramebufferStatus glCheckFramebufferStatusOES
49
- #define glFramebufferTexture2D glFramebufferTexture2DOES
50
- #define glRenderbufferStorage glRenderbufferStorageOES
51
- #define glOrtho glOrthof
52
-
53
- #define GL_UNSIGNED_INT GL_UNSIGNED_INT_OES
54
- #define GL_FRAMEBUFFER GL_FRAMEBUFFER_OES
55
- #define GL_RENDERBUFFER GL_RENDERBUFFER_OES
56
- #define GL_DRAW_FRAMEBUFFER GL_DRAW_FRAMEBUFFER_APPLE
57
- #define GL_READ_FRAMEBUFFER GL_READ_FRAMEBUFFER_APPLE
58
- #define GL_DRAW_FRAMEBUFFER_BINDING GL_DRAW_FRAMEBUFFER_BINDING_APPLE
59
- #define GL_READ_FRAMEBUFFER_BINDING GL_READ_FRAMEBUFFER_BINDING_APPLE
60
- #define GL_COLOR_ATTACHMENT0 GL_COLOR_ATTACHMENT0_OES
61
- #define GL_DEPTH_ATTACHMENT GL_DEPTH_ATTACHMENT_OES
62
- #define GL_DEPTH_COMPONENT24 GL_DEPTH_COMPONENT24_OES
63
- #define GL_FRAMEBUFFER_COMPLETE GL_FRAMEBUFFER_COMPLETE_OES
64
-
65
- #endif// IOS
66
-
67
-
68
20
  #endif//EOH
@@ -6,31 +6,21 @@
6
6
 
7
7
  #include <xot/pimpl.h>
8
8
  #include <rays/defs.h>
9
- #include <rays/opengl.h>
9
+ #include <rays/point.h>
10
10
 
11
11
 
12
12
  namespace Rays
13
13
  {
14
14
 
15
15
 
16
- struct Coord2;
17
-
18
- struct Coord3;
19
-
20
- struct Point;
21
-
22
16
  struct Bounds;
23
-
24
17
  struct Color;
25
-
26
18
  struct Matrix;
27
19
 
28
- class Font;
29
-
20
+ class Polyline;
21
+ class Polygon;
30
22
  class Image;
31
-
32
- class Texture;
33
-
23
+ class Font;
34
24
  class Shader;
35
25
 
36
26
 
@@ -39,31 +29,33 @@ namespace Rays
39
29
 
40
30
  public:
41
31
 
42
- enum
43
- {
44
-
45
- ELLIPSE_NSEGMENT = 32
46
-
47
- };
48
-
49
32
  Painter ();
50
33
 
51
34
  ~Painter ();
52
35
 
53
- void canvas (coord x, coord y, coord width, coord height);
36
+ void canvas (
37
+ coord x, coord y, coord width, coord height,
38
+ float pixel_density = 1);
54
39
 
55
- void canvas (coord x, coord y, coord z, coord width, coord height, coord depth);
40
+ void canvas (
41
+ coord x, coord y, coord z, coord width, coord height, coord depth,
42
+ float pixel_density = 1);
56
43
 
57
- void canvas (const Bounds& bounds);
44
+ void canvas (
45
+ const Bounds& bounds,
46
+ float pixel_density = 1);
58
47
 
59
- void bind (const Texture& texture);
48
+ void bind (const Image& image);
60
49
 
61
50
  void unbind ();
62
51
 
63
52
  const Bounds& bounds () const;
64
53
 
54
+ float pixel_density () const;
55
+
56
+
65
57
  //
66
- // high level drawing methods
58
+ // drawing methods
67
59
  //
68
60
  void begin ();
69
61
 
@@ -71,17 +63,15 @@ namespace Rays
71
63
 
72
64
  void clear ();
73
65
 
66
+ void polygon (const Polygon& polygon);
67
+
74
68
  void line (coord x1, coord y1, coord x2, coord y2);
75
69
 
76
70
  void line (const Point& p1, const Point& p2);
77
71
 
78
- void lines (const Coord2* points, size_t size);
79
-
80
- void lines (const Coord3* points, size_t size);
81
-
82
- void polygon (const Coord2* points, size_t size);
72
+ void line (const Point* points, size_t size, bool loop = false);
83
73
 
84
- void polygon (const Coord3* points, size_t size);
74
+ void line (const Polyline& polyline);
85
75
 
86
76
  void rect (
87
77
  coord x, coord y, coord width, coord height,
@@ -89,7 +79,8 @@ namespace Rays
89
79
 
90
80
  void rect (
91
81
  coord x, coord y, coord width, coord height,
92
- coord round_width, coord round_height);
82
+ coord round_left_top, coord round_right_top,
83
+ coord round_left_bottom, coord round_right_bottom);
93
84
 
94
85
  void rect (
95
86
  const Bounds& bounds,
@@ -97,34 +88,23 @@ namespace Rays
97
88
 
98
89
  void rect (
99
90
  const Bounds& bounds,
100
- coord round_width, coord round_height);
91
+ coord round_left_top, coord round_right_top,
92
+ coord round_left_bottom, coord round_right_bottom);
101
93
 
102
94
  void ellipse (
103
95
  coord x, coord y, coord width, coord height = 0,
104
- coord radius_min = 0, uint nsegment = 0);
96
+ const Point& hole_size = 0,
97
+ float angle_from = 0, float angle_to = 360);
105
98
 
106
99
  void ellipse (
107
100
  const Bounds& bounds,
108
- coord radius_min = 0, uint nsegment = 0);
101
+ const Point& hole_size = 0,
102
+ float angle_from = 0, float angle_to = 360);
109
103
 
110
104
  void ellipse (
111
- const Point& center, coord radius,
112
- coord radius_min = 0, uint nsegment = 0);
113
-
114
- void arc (
115
- coord x, coord y, coord width, coord height = 0,
116
- float angle_from = 0, float angle_to = 360,
117
- coord radius_min = 0, uint nsegment = 0);
118
-
119
- void arc (
120
- const Bounds& bounds,
121
- float angle_from = 0, float angle_to = 360,
122
- coord radius_min = 0, uint nsegment = 0);
123
-
124
- void arc (
125
- const Point& center, coord radius,
126
- float angle_from = 0, float angle_to = 360,
127
- coord radius_min = 0, uint nsegment = 0);
105
+ const Point& center, const Point& radius,
106
+ const Point& hole_radius = 0,
107
+ float angle_from = 0, float angle_to = 360);
128
108
 
129
109
  void image (
130
110
  const Image& image, coord x = 0, coord y = 0);
@@ -156,24 +136,17 @@ namespace Rays
156
136
  const Image& image,
157
137
  const Bounds& src_bounds, const Bounds& dest_bounds);
158
138
 
159
- void text (
160
- const char* str, coord x = 0, coord y = 0,
161
- const Font* font = NULL);
139
+ void text (const char* str, coord x = 0, coord y = 0);
162
140
 
163
- void text (
164
- const char* str, const Point& position,
165
- const Font* font = NULL);
141
+ void text (const char* str, const Point& position);
166
142
 
167
- void text (
168
- const char* str, coord x, coord y, coord width, coord height,
169
- const Font* font = NULL);
143
+ void text (const char* str, coord x, coord y, coord width, coord height);
144
+
145
+ void text (const char* str, const Bounds& bounds);
170
146
 
171
- void text (
172
- const char* str, const Bounds& bounds,
173
- const Font* font = NULL);
174
147
 
175
148
  //
176
- // attributes
149
+ // states
177
150
  //
178
151
  void set_background (float red, float green, float blue, float alpha = 1, bool clear = true);
179
152
 
@@ -199,6 +172,14 @@ namespace Rays
199
172
 
200
173
  const Color& stroke () const;
201
174
 
175
+ void set_stroke_width (coord width);
176
+
177
+ coord stroke_width () const;
178
+
179
+ void set_nsegment (int nsegment);
180
+
181
+ uint nsegment () const;
182
+
202
183
  void set_clip (coord x, coord y, coord width, coord height);
203
184
 
204
185
  void set_clip (const Bounds& bounds);
@@ -213,40 +194,16 @@ namespace Rays
213
194
 
214
195
  const Font& font () const;
215
196
 
216
- void push_attr ();
217
-
218
- void pop_attr ();
197
+ void set_shader (const Shader& shader);
219
198
 
220
- //
221
- // shader manipulation methods
222
- //
223
- void attach (const Shader& shader);
199
+ void no_shader ();
224
200
 
225
- void detach (const Shader& shader);
201
+ const Shader& shader () const;
226
202
 
227
- void set_uniform (const char* name, int arg1);
203
+ void push_state ();
228
204
 
229
- void set_uniform (const char* name, int arg1, int arg2);
205
+ void pop_state ();
230
206
 
231
- void set_uniform (const char* name, int arg1, int arg2, int arg3);
232
-
233
- void set_uniform (const char* name, int arg1, int arg2, int arg3, int arg4);
234
-
235
- void set_uniform (const char* name, const int* args, size_t size);
236
-
237
- void set_uniform (const char* name, float arg1);
238
-
239
- void set_uniform (const char* name, float arg1, float arg2);
240
-
241
- void set_uniform (const char* name, float arg1, float arg2, float arg3);
242
-
243
- void set_uniform (const char* name, float arg1, float arg2, float arg3, float arg4);
244
-
245
- void set_uniform (const char* name, const float* args, size_t size);
246
-
247
- void push_shader ();
248
-
249
- void pop_shader ();
250
207
 
251
208
  //
252
209
  // transformation methods
@@ -259,9 +216,9 @@ namespace Rays
259
216
 
260
217
  void scale (const Point& value);
261
218
 
262
- void rotate (float angle, coord x = 0, coord y = 0, coord z = 1);
219
+ void rotate (float degree, coord x = 0, coord y = 0, coord z = 1);
263
220
 
264
- void rotate (float angle, const Point& axis);
221
+ void rotate (float degree, const Point& normalized_axis);
265
222
 
266
223
  void set_matrix (float value = 1);
267
224
 
@@ -271,7 +228,7 @@ namespace Rays
271
228
  float c1, float c2, float c3, float c4,
272
229
  float d1, float d2, float d3, float d4);
273
230
 
274
- void set_matrix (const float* elements);
231
+ void set_matrix (const float* elements, size_t size);
275
232
 
276
233
  void set_matrix (const Matrix& matrix);
277
234
 
@@ -286,9 +243,10 @@ namespace Rays
286
243
 
287
244
  bool operator ! () const;
288
245
 
246
+
289
247
  struct Data;
290
248
 
291
- Xot::PImpl<Data, true> self;
249
+ Xot::PSharedImpl<Data> self;
292
250
 
293
251
  };// Painter
294
252