rays 0.1.7 → 0.1.8
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 +6 -6
- data/.doc/ext/rays/bounds.cpp +4 -4
- data/.doc/ext/rays/color.cpp +4 -4
- data/.doc/ext/rays/color_space.cpp +4 -4
- data/.doc/ext/rays/font.cpp +6 -6
- data/.doc/ext/rays/image.cpp +6 -6
- data/.doc/ext/rays/matrix.cpp +4 -4
- data/.doc/ext/rays/painter.cpp +56 -21
- data/.doc/ext/rays/point.cpp +5 -4
- data/.doc/ext/rays/rays.cpp +2 -3
- data/.doc/ext/rays/shader.cpp +5 -5
- data/.doc/ext/rays/texture.cpp +5 -5
- data/README.md +2 -2
- data/VERSION +1 -1
- data/ext/rays/bitmap.cpp +6 -6
- data/ext/rays/bounds.cpp +4 -4
- data/ext/rays/color.cpp +4 -4
- data/ext/rays/color_space.cpp +4 -4
- data/ext/rays/font.cpp +6 -6
- data/ext/rays/image.cpp +6 -6
- data/ext/rays/matrix.cpp +4 -4
- data/ext/rays/painter.cpp +72 -35
- data/ext/rays/point.cpp +5 -4
- data/ext/rays/rays.cpp +2 -3
- data/ext/rays/shader.cpp +5 -5
- data/ext/rays/texture.cpp +5 -5
- data/include/rays/opengl.h +1 -1
- data/include/rays/painter.h +12 -0
- data/include/rays/point.h +35 -9
- data/include/rays/ruby/bitmap.h +14 -0
- data/include/rays/ruby/bounds.h +14 -0
- data/include/rays/ruby/color.h +14 -0
- data/include/rays/ruby/color_space.h +14 -0
- data/include/rays/ruby/font.h +14 -0
- data/include/rays/ruby/image.h +14 -0
- data/include/rays/ruby/matrix.h +14 -0
- data/include/rays/ruby/painter.h +14 -0
- data/include/rays/ruby/point.h +14 -0
- data/include/rays/ruby/shader.h +14 -0
- data/include/rays/ruby/texture.h +14 -0
- data/rays.gemspec +1 -1
- data/src/painter.cpp +132 -43
- data/src/point.cpp +65 -30
- metadata +3 -3
data/ext/rays/point.cpp
CHANGED
@@ -10,13 +10,11 @@ using namespace Rucy;
|
|
10
10
|
using Rays::coord;
|
11
11
|
|
12
12
|
|
13
|
-
|
14
|
-
|
15
|
-
RUCY_DEFINE_VALUE_FROM_TO(Rays::Point, cPoint)
|
13
|
+
RUCY_DEFINE_VALUE_FROM_TO(Rays::Point)
|
16
14
|
|
17
15
|
#define THIS to<Rays::Point*>(self)
|
18
16
|
|
19
|
-
#define CHECK RUCY_CHECK_OBJ(Rays::Point,
|
17
|
+
#define CHECK RUCY_CHECK_OBJ(Rays::Point, self)
|
20
18
|
|
21
19
|
|
22
20
|
static
|
@@ -229,6 +227,9 @@ RUCY_DEF0(inspect)
|
|
229
227
|
}
|
230
228
|
RUCY_END
|
231
229
|
|
230
|
+
|
231
|
+
static Class cPoint;
|
232
|
+
|
232
233
|
void
|
233
234
|
Init_point ()
|
234
235
|
{
|
data/ext/rays/rays.cpp
CHANGED
data/ext/rays/shader.cpp
CHANGED
@@ -8,13 +8,11 @@
|
|
8
8
|
using namespace Rucy;
|
9
9
|
|
10
10
|
|
11
|
-
|
12
|
-
|
13
|
-
RUCY_DEFINE_VALUE_FROM_TO(Rays::Shader, cShader)
|
11
|
+
RUCY_DEFINE_VALUE_FROM_TO(Rays::Shader)
|
14
12
|
|
15
13
|
#define THIS to<Rays::Shader*>(self)
|
16
14
|
|
17
|
-
#define CHECK RUCY_CHECK_OBJECT(Rays::Shader,
|
15
|
+
#define CHECK RUCY_CHECK_OBJECT(Rays::Shader, self)
|
18
16
|
|
19
17
|
|
20
18
|
static
|
@@ -27,7 +25,7 @@ RUCY_END
|
|
27
25
|
static
|
28
26
|
RUCY_DEF1(initialize, source)
|
29
27
|
{
|
30
|
-
RUCY_CHECK_OBJ(Rays::Shader,
|
28
|
+
RUCY_CHECK_OBJ(Rays::Shader, self);
|
31
29
|
|
32
30
|
if (!source.is_s())
|
33
31
|
argument_error(__FILE__, __LINE__);
|
@@ -38,6 +36,8 @@ RUCY_DEF1(initialize, source)
|
|
38
36
|
RUCY_END
|
39
37
|
|
40
38
|
|
39
|
+
static Class cShader;
|
40
|
+
|
41
41
|
void
|
42
42
|
Init_shader ()
|
43
43
|
{
|
data/ext/rays/texture.cpp
CHANGED
@@ -12,13 +12,11 @@ using namespace Rucy;
|
|
12
12
|
using Rays::coord;
|
13
13
|
|
14
14
|
|
15
|
-
|
16
|
-
|
17
|
-
RUCY_DEFINE_VALUE_FROM_TO(Rays::Texture, cTexture)
|
15
|
+
RUCY_DEFINE_VALUE_FROM_TO(Rays::Texture)
|
18
16
|
|
19
17
|
#define THIS to<Rays::Texture*>(self)
|
20
18
|
|
21
|
-
#define CHECK RUCY_CHECK_OBJECT(Rays::Texture,
|
19
|
+
#define CHECK RUCY_CHECK_OBJECT(Rays::Texture, self)
|
22
20
|
|
23
21
|
|
24
22
|
static
|
@@ -31,7 +29,7 @@ RUCY_END
|
|
31
29
|
static
|
32
30
|
RUCY_DEF4(setup, width, height, color_space, alpha_only)
|
33
31
|
{
|
34
|
-
RUCY_CHECK_OBJ(Rays::Texture,
|
32
|
+
RUCY_CHECK_OBJ(Rays::Texture, self);
|
35
33
|
|
36
34
|
Rays::ColorSpace* cs = to<Rays::ColorSpace*>(color_space);
|
37
35
|
if (!cs) argument_error(__FILE__, __LINE__);
|
@@ -115,6 +113,8 @@ RUCY_DEF0(to_bitmap)
|
|
115
113
|
RUCY_END
|
116
114
|
|
117
115
|
|
116
|
+
static Class cTexture;
|
117
|
+
|
118
118
|
void
|
119
119
|
Init_texture ()
|
120
120
|
{
|
data/include/rays/opengl.h
CHANGED
@@ -48,7 +48,7 @@ namespace Rays
|
|
48
48
|
#define glCheckFramebufferStatus glCheckFramebufferStatusOES
|
49
49
|
#define glFramebufferTexture2D glFramebufferTexture2DOES
|
50
50
|
#define glRenderbufferStorage glRenderbufferStorageOES
|
51
|
-
#define glOrtho
|
51
|
+
#define glOrtho glOrthof
|
52
52
|
|
53
53
|
#define GL_UNSIGNED_INT GL_UNSIGNED_INT_OES
|
54
54
|
#define GL_FRAMEBUFFER GL_FRAMEBUFFER_OES
|
data/include/rays/painter.h
CHANGED
@@ -13,6 +13,10 @@ namespace Rays
|
|
13
13
|
{
|
14
14
|
|
15
15
|
|
16
|
+
struct Coord2;
|
17
|
+
|
18
|
+
struct Coord3;
|
19
|
+
|
16
20
|
struct Point;
|
17
21
|
|
18
22
|
struct Bounds;
|
@@ -64,6 +68,14 @@ namespace Rays
|
|
64
68
|
|
65
69
|
void line (const Point& p1, const Point& p2);
|
66
70
|
|
71
|
+
void lines (const Coord2* points, size_t size);
|
72
|
+
|
73
|
+
void lines (const Coord3* points, size_t size);
|
74
|
+
|
75
|
+
void polygon (const Coord2* points, size_t size);
|
76
|
+
|
77
|
+
void polygon (const Coord3* points, size_t size);
|
78
|
+
|
67
79
|
void rect (coord x, coord y, coord width, coord height);
|
68
80
|
|
69
81
|
void rect (const Bounds& bounds);
|
data/include/rays/point.h
CHANGED
@@ -11,7 +11,27 @@ namespace Rays
|
|
11
11
|
{
|
12
12
|
|
13
13
|
|
14
|
-
struct
|
14
|
+
struct Coord2
|
15
|
+
{
|
16
|
+
|
17
|
+
union
|
18
|
+
{
|
19
|
+
struct {coord x, y;};
|
20
|
+
coord array[2];
|
21
|
+
};
|
22
|
+
|
23
|
+
Coord2& reset (coord value = 0);
|
24
|
+
|
25
|
+
Coord2& reset (coord x, coord y);
|
26
|
+
|
27
|
+
coord& operator [] (size_t index);
|
28
|
+
|
29
|
+
const coord& operator [] (size_t index) const;
|
30
|
+
|
31
|
+
};// Coord2
|
32
|
+
|
33
|
+
|
34
|
+
struct Coord3
|
15
35
|
{
|
16
36
|
|
17
37
|
union
|
@@ -20,16 +40,26 @@ namespace Rays
|
|
20
40
|
coord array[3];
|
21
41
|
};
|
22
42
|
|
43
|
+
Coord3& reset (coord value = 0);
|
44
|
+
|
45
|
+
Coord3& reset (coord x, coord y, coord z = 0);
|
46
|
+
|
47
|
+
coord& operator [] (size_t index);
|
48
|
+
|
49
|
+
const coord& operator [] (size_t index) const;
|
50
|
+
|
51
|
+
};// Coord3
|
52
|
+
|
53
|
+
|
54
|
+
struct Point : public Coord3
|
55
|
+
{
|
56
|
+
|
23
57
|
Point (coord value = 0);
|
24
58
|
|
25
59
|
Point (coord x, coord y, coord z = 0);
|
26
60
|
|
27
61
|
Point dup () const;
|
28
62
|
|
29
|
-
Point& reset (coord value = 0);
|
30
|
-
|
31
|
-
Point& reset (coord x, coord y, coord z = 0);
|
32
|
-
|
33
63
|
Point& move_to (coord x, coord y, coord z = 0);
|
34
64
|
|
35
65
|
Point& move_to (const Point& point);
|
@@ -40,10 +70,6 @@ namespace Rays
|
|
40
70
|
|
41
71
|
String inspect () const;
|
42
72
|
|
43
|
-
coord& operator [] (size_t index);
|
44
|
-
|
45
|
-
const coord& operator [] (size_t index) const;
|
46
|
-
|
47
73
|
Point operator - () const;
|
48
74
|
|
49
75
|
Point& operator += (const Point& rhs);
|
data/include/rays/ruby/bitmap.h
CHANGED
data/include/rays/ruby/bounds.h
CHANGED
data/include/rays/ruby/color.h
CHANGED
@@ -24,4 +24,18 @@ namespace Rays
|
|
24
24
|
RUCY_DECLARE_VALUE_FROM_TO(Rays::ColorSpace)
|
25
25
|
|
26
26
|
|
27
|
+
namespace Rucy
|
28
|
+
{
|
29
|
+
|
30
|
+
|
31
|
+
template <> inline Class
|
32
|
+
get_ruby_class<Rays::ColorSpace> ()
|
33
|
+
{
|
34
|
+
return Rays::color_space_class();
|
35
|
+
}
|
36
|
+
|
37
|
+
|
38
|
+
}// Rucy
|
39
|
+
|
40
|
+
|
27
41
|
#endif//EOH
|
data/include/rays/ruby/font.h
CHANGED
data/include/rays/ruby/image.h
CHANGED
data/include/rays/ruby/matrix.h
CHANGED
data/include/rays/ruby/painter.h
CHANGED
data/include/rays/ruby/point.h
CHANGED
data/include/rays/ruby/shader.h
CHANGED
data/include/rays/ruby/texture.h
CHANGED
data/rays.gemspec
CHANGED
@@ -23,7 +23,7 @@ Gem::Specification.new do |s|
|
|
23
23
|
|
24
24
|
s.authors = %w[snori]
|
25
25
|
s.email = 'snori@xord.org'
|
26
|
-
s.homepage = "
|
26
|
+
s.homepage = "https://github.com/xord/spacy/wiki/#{name.capitalize}-Home"
|
27
27
|
|
28
28
|
s.platform = Gem::Platform::RUBY
|
29
29
|
s.required_ruby_version = '>=1.9.0'
|
data/src/painter.cpp
CHANGED
@@ -31,8 +31,8 @@ namespace Rays
|
|
31
31
|
FILL = 0,
|
32
32
|
STROKE,
|
33
33
|
|
34
|
-
|
35
|
-
|
34
|
+
COLOR_TYPE_END,
|
35
|
+
COLOR_TYPE_BEGIN = 0
|
36
36
|
|
37
37
|
};// ColorType
|
38
38
|
|
@@ -63,19 +63,6 @@ namespace Rays
|
|
63
63
|
};// Attributes
|
64
64
|
|
65
65
|
|
66
|
-
struct coord2 {
|
67
|
-
|
68
|
-
coord x, y;
|
69
|
-
|
70
|
-
void reset (coord x_, coord y_)
|
71
|
-
{
|
72
|
-
x = x_;
|
73
|
-
y = y_;
|
74
|
-
}
|
75
|
-
|
76
|
-
};// coord2
|
77
|
-
|
78
|
-
|
79
66
|
struct Painter::Data
|
80
67
|
{
|
81
68
|
|
@@ -89,6 +76,8 @@ namespace Rays
|
|
89
76
|
|
90
77
|
bool painting;
|
91
78
|
|
79
|
+
GLenum prev_matrix_mode;
|
80
|
+
|
92
81
|
GLuint current_texture;
|
93
82
|
|
94
83
|
Image text_image;
|
@@ -98,7 +87,8 @@ namespace Rays
|
|
98
87
|
mutable Matrix matrix_tmp;
|
99
88
|
|
100
89
|
Data ()
|
101
|
-
: painting(false),
|
90
|
+
: painting(false), prev_matrix_mode(0), current_texture(0),
|
91
|
+
text_image(1, 1, GRAY, true)
|
102
92
|
{
|
103
93
|
attrs.init();
|
104
94
|
}
|
@@ -122,11 +112,6 @@ namespace Rays
|
|
122
112
|
check_error(__FILE__, __LINE__);
|
123
113
|
}
|
124
114
|
|
125
|
-
GLuint frame_buffer_id () const
|
126
|
-
{
|
127
|
-
return frame_buffer ? frame_buffer.id() : 0;
|
128
|
-
}
|
129
|
-
|
130
115
|
bool use_color (ColorType type)
|
131
116
|
{
|
132
117
|
const Color& c = attrs.colors[type];
|
@@ -262,20 +247,22 @@ namespace Rays
|
|
262
247
|
if (self->painting)
|
263
248
|
invalid_state_error(__FILE__, __LINE__, "self->painting should be false.");
|
264
249
|
|
265
|
-
|
266
|
-
bind_frame_buffer(fb);
|
250
|
+
FrameBuffer& fb = self->frame_buffer;
|
251
|
+
if (fb) bind_frame_buffer(fb.id());
|
267
252
|
|
268
253
|
push_attr();
|
269
254
|
push_shader();
|
270
255
|
|
271
256
|
const Bounds& vp = self->viewport;
|
272
|
-
glViewport((int) vp.x, (int)vp.y, (int) vp.width, (int) vp.height);
|
257
|
+
glViewport((int) vp.x, (int) vp.y, (int) vp.width, (int) vp.height);
|
273
258
|
|
274
259
|
coord x1 = vp.x, x2 = vp.x + vp.width;
|
275
260
|
coord y1 = vp.y, y2 = vp.y + vp.height;
|
276
261
|
coord z1 = vp.z, z2 = vp.z + vp.depth;
|
277
262
|
if (z1 == 0 && z2 == 0) {z1 = -100; z2 = 200;}
|
278
|
-
if (fb
|
263
|
+
if (!fb) std::swap(y1, y2);
|
264
|
+
|
265
|
+
glGetIntegerv(GL_MATRIX_MODE, (GLint*) &self->prev_matrix_mode);
|
279
266
|
|
280
267
|
glMatrixMode(GL_PROJECTION);
|
281
268
|
glPushMatrix();
|
@@ -335,15 +322,20 @@ namespace Rays
|
|
335
322
|
glPopMatrix();
|
336
323
|
#endif
|
337
324
|
|
325
|
+
glMatrixMode(self->prev_matrix_mode);
|
326
|
+
|
338
327
|
pop_shader();
|
339
328
|
pop_attr();
|
340
329
|
|
341
330
|
//glFinish();
|
342
331
|
|
343
|
-
|
332
|
+
if (self->frame_buffer)
|
333
|
+
{
|
334
|
+
unbind_frame_buffer();
|
344
335
|
|
345
|
-
|
346
|
-
|
336
|
+
Texture& tex = self->frame_buffer.texture();
|
337
|
+
if (tex) tex.set_dirty(true);
|
338
|
+
}
|
347
339
|
}
|
348
340
|
|
349
341
|
void
|
@@ -390,6 +382,109 @@ namespace Rays
|
|
390
382
|
line(p1.x, p1.y, p2.x, p2.y);
|
391
383
|
}
|
392
384
|
|
385
|
+
void
|
386
|
+
Painter::lines (const Coord2* points, size_t size)
|
387
|
+
{
|
388
|
+
Data* pself = self.get();
|
389
|
+
|
390
|
+
if (!pself->painting)
|
391
|
+
invalid_state_error(__FILE__, __LINE__, "self->painting should be true.");
|
392
|
+
|
393
|
+
if (!pself->use_color(STROKE))
|
394
|
+
return;
|
395
|
+
|
396
|
+
boost::scoped_array<uint> indices(new uint[size]);
|
397
|
+
for (size_t i = 0; i < size; ++i)
|
398
|
+
indices[i] = (uint) i;
|
399
|
+
|
400
|
+
pself->draw_shape(GL_LINES, (int) size, indices.get(), 2, (coord*) points);
|
401
|
+
}
|
402
|
+
|
403
|
+
void
|
404
|
+
Painter::lines (const Coord3* points, size_t size)
|
405
|
+
{
|
406
|
+
Data* pself = self.get();
|
407
|
+
|
408
|
+
if (!pself->painting)
|
409
|
+
invalid_state_error(__FILE__, __LINE__, "self->painting should be true.");
|
410
|
+
|
411
|
+
if (!pself->use_color(STROKE))
|
412
|
+
return;
|
413
|
+
|
414
|
+
boost::scoped_array<uint> indices(new uint[size]);
|
415
|
+
boost::scoped_array<Coord2> vertices(new Coord2[size]);
|
416
|
+
for (size_t i = 0; i < size; ++i)
|
417
|
+
{
|
418
|
+
indices[i] = (uint) i;
|
419
|
+
vertices[i].reset(points[i].x, points[i].y);
|
420
|
+
}
|
421
|
+
|
422
|
+
pself->draw_shape(
|
423
|
+
GL_LINES, (int) size, indices.get(), 2, (coord*) vertices.get());
|
424
|
+
}
|
425
|
+
|
426
|
+
void
|
427
|
+
Painter::polygon (const Coord2* points, size_t size)
|
428
|
+
{
|
429
|
+
Data* pself = self.get();
|
430
|
+
|
431
|
+
if (!pself->painting)
|
432
|
+
invalid_state_error(__FILE__, __LINE__, "self->painting should be true.");
|
433
|
+
|
434
|
+
GLenum modes[] = {GL_TRIANGLE_FAN, GL_LINE_LOOP};
|
435
|
+
boost::scoped_array<uint> indices;
|
436
|
+
|
437
|
+
for (int type = COLOR_TYPE_BEGIN; type < COLOR_TYPE_END; ++type)
|
438
|
+
{
|
439
|
+
if (!pself->use_color((ColorType) type)) continue;
|
440
|
+
|
441
|
+
if (!indices.get())
|
442
|
+
{
|
443
|
+
indices.reset(new uint[size]);
|
444
|
+
for (size_t i = 0; i < size; ++i)
|
445
|
+
indices[i] = (uint) i;
|
446
|
+
}
|
447
|
+
|
448
|
+
pself->draw_shape(
|
449
|
+
modes[type], (int) size, indices.get(), 2, (coord*) points);
|
450
|
+
}
|
451
|
+
}
|
452
|
+
|
453
|
+
void
|
454
|
+
Painter::polygon (const Coord3* points, size_t size)
|
455
|
+
{
|
456
|
+
Data* pself = self.get();
|
457
|
+
|
458
|
+
if (!pself->painting)
|
459
|
+
invalid_state_error(__FILE__, __LINE__, "self->painting should be true.");
|
460
|
+
|
461
|
+
GLenum modes[] = {GL_TRIANGLE_FAN, GL_LINE_LOOP};
|
462
|
+
boost::scoped_array<uint> indices;
|
463
|
+
boost::scoped_array<Coord2> vertices;
|
464
|
+
|
465
|
+
for (int type = COLOR_TYPE_BEGIN; type < COLOR_TYPE_END; ++type)
|
466
|
+
{
|
467
|
+
if (!pself->use_color((ColorType) type)) continue;
|
468
|
+
|
469
|
+
if (!indices.get())
|
470
|
+
{
|
471
|
+
indices.reset(new uint[size]);
|
472
|
+
for (size_t i = 0; i < size; ++i)
|
473
|
+
indices[i] = (uint) i;
|
474
|
+
}
|
475
|
+
|
476
|
+
if (!vertices.get())
|
477
|
+
{
|
478
|
+
vertices.reset(new Coord2[size]);
|
479
|
+
for (size_t i = 0; i < size; ++i)
|
480
|
+
vertices[i].reset(points[i].x, points[i].y);
|
481
|
+
}
|
482
|
+
|
483
|
+
pself->draw_shape(
|
484
|
+
modes[type], (int) size, indices.get(), 2, (coord*) vertices.get());
|
485
|
+
}
|
486
|
+
}
|
487
|
+
|
393
488
|
void
|
394
489
|
Painter::rect (coord x, coord y, coord width, coord height)
|
395
490
|
{
|
@@ -409,7 +504,7 @@ namespace Rays
|
|
409
504
|
coord x2 = x + width - 1;
|
410
505
|
coord y2 = y + height - 1;
|
411
506
|
|
412
|
-
for (int type =
|
507
|
+
for (int type = COLOR_TYPE_BEGIN; type < COLOR_TYPE_END; ++type)
|
413
508
|
{
|
414
509
|
if (!pself->use_color((ColorType) type)) continue;
|
415
510
|
|
@@ -460,19 +555,19 @@ namespace Rays
|
|
460
555
|
float from = angle_from / 360.f;
|
461
556
|
float to = angle_to / 360.f;
|
462
557
|
bool hole = radius_min != 0;
|
463
|
-
int nvertices = hole ? nsegment * 2 : nsegment
|
558
|
+
int nvertices = hole ? nsegment * 2 : nsegment;
|
464
559
|
GLenum modes[] =
|
465
560
|
{
|
466
561
|
(GLenum) (hole ? GL_TRIANGLE_STRIP : GL_TRIANGLE_FAN),
|
467
562
|
GL_LINE_LOOP
|
468
563
|
};
|
469
|
-
boost::scoped_array<uint>
|
470
|
-
boost::scoped_array<
|
564
|
+
boost::scoped_array<uint> indices;
|
565
|
+
boost::scoped_array<Coord2> vertices;
|
471
566
|
|
472
567
|
x += radius_x;
|
473
568
|
y += radius_y;
|
474
569
|
|
475
|
-
for (int type =
|
570
|
+
for (int type = COLOR_TYPE_BEGIN; type < COLOR_TYPE_END; ++type)
|
476
571
|
{
|
477
572
|
if (!pself->use_color((ColorType) type)) continue;
|
478
573
|
|
@@ -484,18 +579,12 @@ namespace Rays
|
|
484
579
|
}
|
485
580
|
|
486
581
|
if (!vertices.get())
|
487
|
-
vertices.reset(new
|
582
|
+
vertices.reset(new Coord2[nvertices]);
|
488
583
|
|
489
|
-
|
584
|
+
Coord2* vertex = vertices.get();
|
490
585
|
assert(vertex);
|
491
586
|
|
492
|
-
|
493
|
-
{
|
494
|
-
vertex->reset(x, y);
|
495
|
-
++vertex;
|
496
|
-
}
|
497
|
-
|
498
|
-
for (int seg = 0; seg <= (int) nsegment; ++seg, ++vertex)
|
587
|
+
for (int seg = 0; seg < (int) nsegment; ++seg, ++vertex)
|
499
588
|
{
|
500
589
|
float pos = (float) seg / (float) nsegment;
|
501
590
|
float radian = (from + (to - from) * pos) * PI_2;
|
@@ -595,7 +684,7 @@ namespace Rays
|
|
595
684
|
x2, y
|
596
685
|
};
|
597
686
|
|
598
|
-
for (int type =
|
687
|
+
for (int type = COLOR_TYPE_BEGIN; type < COLOR_TYPE_END; ++type)
|
599
688
|
{
|
600
689
|
if (
|
601
690
|
(nostroke && type == STROKE) ||
|