rays 0.1.3 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (88) hide show
  1. data/.doc/ext/rays/bitmap.cpp +76 -53
  2. data/.doc/ext/rays/font.cpp +31 -27
  3. data/.doc/ext/rays/image.cpp +44 -37
  4. data/.doc/ext/rays/native.cpp +6 -0
  5. data/.doc/ext/rays/painter.cpp +276 -160
  6. data/.doc/ext/rays/rays.cpp +8 -9
  7. data/.doc/ext/rays/texture.cpp +50 -28
  8. data/.gitignore +14 -0
  9. data/Rakefile +5 -30
  10. data/VERSION +1 -1
  11. data/ext/rays/bitmap.cpp +77 -53
  12. data/ext/rays/bounds.cpp +426 -0
  13. data/ext/rays/color.cpp +199 -0
  14. data/ext/rays/defs.h +1 -18
  15. data/ext/rays/extconf.rb +10 -8
  16. data/ext/rays/font.cpp +31 -27
  17. data/ext/rays/image.cpp +44 -37
  18. data/ext/rays/matrix.cpp +154 -0
  19. data/ext/rays/native.cpp +6 -0
  20. data/ext/rays/painter.cpp +288 -163
  21. data/ext/rays/point.cpp +175 -0
  22. data/ext/rays/rays.cpp +8 -9
  23. data/ext/rays/texture.cpp +52 -28
  24. data/include/rays.h +1 -2
  25. data/include/rays/bitmap.h +5 -3
  26. data/include/rays/bounds.h +94 -0
  27. data/include/rays/color.h +53 -0
  28. data/include/rays/colorspace.h +2 -2
  29. data/include/rays/exception.h +1 -1
  30. data/include/rays/font.h +7 -3
  31. data/include/rays/image.h +6 -2
  32. data/include/rays/matrix.h +63 -0
  33. data/include/rays/opengl.h +1 -1
  34. data/include/rays/painter.h +138 -39
  35. data/include/rays/point.h +39 -0
  36. data/include/rays/ruby.h +3 -0
  37. data/include/rays/ruby/bitmap.h +5 -3
  38. data/include/rays/ruby/bounds.h +41 -0
  39. data/include/rays/ruby/color.h +41 -0
  40. data/include/rays/ruby/font.h +5 -3
  41. data/include/rays/ruby/image.h +5 -3
  42. data/include/rays/ruby/matrix.h +41 -0
  43. data/include/rays/ruby/painter.h +5 -3
  44. data/include/rays/ruby/point.h +41 -0
  45. data/include/rays/ruby/texture.h +5 -3
  46. data/include/rays/texture.h +6 -2
  47. data/lib/rays.rb +3 -0
  48. data/lib/rays/autoinit.rb +1 -1
  49. data/lib/rays/bitmap.rb +15 -1
  50. data/lib/rays/bounds.rb +138 -0
  51. data/lib/rays/color.rb +52 -0
  52. data/lib/rays/ext.rb +4 -0
  53. data/lib/rays/image.rb +1 -1
  54. data/lib/rays/module.rb +9 -2
  55. data/lib/rays/painter.rb +40 -41
  56. data/lib/rays/point.rb +82 -0
  57. data/lib/rays/texture.rb +1 -1
  58. data/rays.gemspec +16 -37
  59. data/src/bounds.cpp +234 -0
  60. data/src/cocoa/bitmap.mm +4 -4
  61. data/src/cocoa/font.mm +35 -30
  62. data/src/cocoa/rays.mm +2 -0
  63. data/src/color.cpp +77 -0
  64. data/src/colorspace.cpp +3 -3
  65. data/src/exception.cpp +3 -18
  66. data/src/image.cpp +9 -2
  67. data/src/matrix.cpp +103 -0
  68. data/src/painter.cpp +475 -224
  69. data/src/point.cpp +52 -0
  70. data/src/texture.cpp +14 -2
  71. data/src/win32/bitmap.cpp +2 -2
  72. data/src/win32/gdi.cpp +22 -13
  73. data/src/win32/gdi.h +7 -7
  74. data/test/helpers.rb +1 -5
  75. data/test/test_bitmap.rb +9 -0
  76. data/test/test_bounds.rb +246 -0
  77. data/test/test_color.rb +88 -0
  78. data/test/test_font.rb +28 -0
  79. data/test/test_image.rb +9 -0
  80. data/test/test_painter.rb +1 -3
  81. data/test/test_point.rb +121 -0
  82. data/test/test_rays.rb +2 -3
  83. data/test/test_texture.rb +1 -3
  84. metadata +146 -75
  85. data/include/rays/helpers.h +0 -37
  86. data/include/rays/transform.h +0 -35
  87. data/src/helpers.cpp +0 -22
  88. data/src/transform.cpp +0 -88
@@ -0,0 +1,426 @@
1
+ #include "rays/ruby/bounds.h"
2
+
3
+
4
+ #include <rucy.h>
5
+ #include <rays/ruby/point.h>
6
+ #include "defs.h"
7
+
8
+
9
+ using namespace Rucy;
10
+
11
+ using Rays::coord;
12
+
13
+
14
+ static Class cBounds;
15
+
16
+
17
+ namespace Rays
18
+ {
19
+
20
+
21
+ Class
22
+ bounds_class ()
23
+ {
24
+ return cBounds;
25
+ }
26
+
27
+
28
+ }// Rays
29
+
30
+
31
+ namespace Rucy
32
+ {
33
+
34
+
35
+ Value
36
+ value (const Rays::Bounds& obj)
37
+ {
38
+ return new_type(cBounds, new Rays::Bounds(obj));
39
+ }
40
+
41
+ Value
42
+ value (const Rays::Bounds* obj)
43
+ {
44
+ return obj ? value(*obj) : nil();
45
+ }
46
+
47
+
48
+ }// Rucy
49
+
50
+
51
+ #define THIS to<Rays::Bounds*>(self)
52
+
53
+ #define CHECK RUCY_CHECK_OBJ(self, Rays::Bounds, cBounds)
54
+
55
+
56
+ static
57
+ RUBY_DEF_ALLOC(alloc, klass)
58
+ {
59
+ return new_type<Rays::Bounds>(klass);
60
+ }
61
+ RUBY_END
62
+
63
+ static
64
+ RUBY_DEFN(initialize)
65
+ {
66
+ RUCY_CHECK_OBJ(self, Rays::Bounds, cBounds);
67
+
68
+ if (argc != 0 && argc != 1 && argc != 2 && argc != 3 && argc != 4 && argc != 6)
69
+ arg_count_error("Bounds#initialize", argc, 0, 1, 2, 3, 4, 6);
70
+
71
+ if (argc == 0) return self;
72
+
73
+ switch (argc)
74
+ {
75
+ case 1:
76
+ *THIS = Rays::Bounds(to<coord>(argv[0]));
77
+ break;
78
+
79
+ case 2:
80
+ *THIS = Rays::Bounds(to<coord>(argv[0]), to<coord>(argv[1]));
81
+ break;
82
+
83
+ case 3:
84
+ *THIS = Rays::Bounds(
85
+ to<coord>(argv[0]), to<coord>(argv[1]), to<coord>(argv[2]));
86
+ break;
87
+
88
+ case 4:
89
+ *THIS = Rays::Bounds(
90
+ to<coord>(argv[0]), to<coord>(argv[1]),
91
+ to<coord>(argv[2]), to<coord>(argv[3]));
92
+ break;
93
+
94
+ case 6:
95
+ *THIS = Rays::Bounds(
96
+ to<coord>(argv[0]), to<coord>(argv[1]), to<coord>(argv[2]),
97
+ to<coord>(argv[3]), to<coord>(argv[4]), to<coord>(argv[5]));
98
+ break;
99
+ }
100
+
101
+ return self;
102
+ }
103
+ RUBY_END
104
+
105
+ static
106
+ RUBY_DEF1(initialize_copy, obj)
107
+ {
108
+ RUCY_CHECK_OBJ(self, Rays::Bounds, cBounds);
109
+
110
+ Rays::Bounds* bounds = to<Rays::Bounds*>(obj);
111
+ if (!bounds) argument_error();
112
+
113
+ *THIS = *bounds;
114
+ return self;
115
+ }
116
+ RUBY_END
117
+
118
+ static
119
+ RUBY_DEF1(set_x, x)
120
+ {
121
+ CHECK;
122
+
123
+ return value(THIS->x = to<coord>(x));
124
+ }
125
+ RUBY_END
126
+
127
+ static
128
+ RUBY_DEF0(get_x)
129
+ {
130
+ CHECK;
131
+
132
+ return value(THIS->x);
133
+ }
134
+ RUBY_END
135
+
136
+ static
137
+ RUBY_DEF1(set_y, y)
138
+ {
139
+ CHECK;
140
+
141
+ return value(THIS->y = to<coord>(y));
142
+ }
143
+ RUBY_END
144
+
145
+ static
146
+ RUBY_DEF0(get_y)
147
+ {
148
+ CHECK;
149
+
150
+ return value(THIS->y);
151
+ }
152
+ RUBY_END
153
+
154
+ static
155
+ RUBY_DEF1(set_z, z)
156
+ {
157
+ CHECK;
158
+
159
+ return value(THIS->z = to<coord>(z));
160
+ }
161
+ RUBY_END
162
+
163
+ static
164
+ RUBY_DEF0(get_z)
165
+ {
166
+ CHECK;
167
+
168
+ return value(THIS->z);
169
+ }
170
+ RUBY_END
171
+
172
+ static
173
+ RUBY_DEF1(set_width, width)
174
+ {
175
+ CHECK;
176
+
177
+ return value(THIS->width = to<coord>(width));
178
+ }
179
+ RUBY_END
180
+
181
+ static
182
+ RUBY_DEF0(get_width)
183
+ {
184
+ CHECK;
185
+
186
+ return value(THIS->width);
187
+ }
188
+ RUBY_END
189
+
190
+ static
191
+ RUBY_DEF1(set_height, height)
192
+ {
193
+ CHECK;
194
+
195
+ return value(THIS->height = to<coord>(height));
196
+ }
197
+ RUBY_END
198
+
199
+ static
200
+ RUBY_DEF0(get_height)
201
+ {
202
+ CHECK;
203
+
204
+ return value(THIS->height);
205
+ }
206
+ RUBY_END
207
+
208
+ static
209
+ RUBY_DEF1(set_depth, depth)
210
+ {
211
+ CHECK;
212
+
213
+ return value(THIS->depth = to<coord>(depth));
214
+ }
215
+ RUBY_END
216
+
217
+ static
218
+ RUBY_DEF0(get_depth)
219
+ {
220
+ CHECK;
221
+
222
+ return value(THIS->depth);
223
+ }
224
+ RUBY_END
225
+
226
+ static
227
+ RUBY_DEF1(set_left, left)
228
+ {
229
+ CHECK;
230
+ Rays::Bounds* this_ = THIS;
231
+
232
+ this_->set_left(to<coord>(left));
233
+ return value(this_->left());
234
+ }
235
+ RUBY_END
236
+
237
+ static
238
+ RUBY_DEF0(get_left)
239
+ {
240
+ CHECK;
241
+
242
+ return value(THIS->left());
243
+ }
244
+ RUBY_END
245
+
246
+ static
247
+ RUBY_DEF1(set_right, right)
248
+ {
249
+ CHECK;
250
+ Rays::Bounds* this_ = THIS;
251
+
252
+ this_->set_right(to<coord>(right));
253
+ return value(this_->right());
254
+ }
255
+ RUBY_END
256
+
257
+ static
258
+ RUBY_DEF0(get_right)
259
+ {
260
+ CHECK;
261
+
262
+ return value(THIS->right());
263
+ }
264
+ RUBY_END
265
+
266
+ static
267
+ RUBY_DEF1(set_top, top)
268
+ {
269
+ CHECK;
270
+ Rays::Bounds* this_ = THIS;
271
+
272
+ this_->set_top(to<coord>(top));
273
+ return value(this_->top());
274
+ }
275
+ RUBY_END
276
+
277
+ static
278
+ RUBY_DEF0(get_top)
279
+ {
280
+ CHECK;
281
+
282
+ return value(THIS->top());
283
+ }
284
+ RUBY_END
285
+
286
+ static
287
+ RUBY_DEF1(set_bottom, bottom)
288
+ {
289
+ CHECK;
290
+ Rays::Bounds* this_ = THIS;
291
+
292
+ this_->set_bottom(to<coord>(bottom));
293
+ return value(this_->bottom());
294
+ }
295
+ RUBY_END
296
+
297
+ static
298
+ RUBY_DEF0(get_bottom)
299
+ {
300
+ CHECK;
301
+
302
+ return value(THIS->bottom());
303
+ }
304
+ RUBY_END
305
+
306
+ static
307
+ RUBY_DEF1(set_back, back)
308
+ {
309
+ CHECK;
310
+ Rays::Bounds* this_ = THIS;
311
+
312
+ this_->set_back(to<coord>(back));
313
+ return value(this_->back());
314
+ }
315
+ RUBY_END
316
+
317
+ static
318
+ RUBY_DEF0(get_back)
319
+ {
320
+ CHECK;
321
+
322
+ return value(THIS->back());
323
+ }
324
+ RUBY_END
325
+
326
+ static
327
+ RUBY_DEF1(set_front, front)
328
+ {
329
+ CHECK;
330
+ Rays::Bounds* this_ = THIS;
331
+
332
+ this_->set_front(to<coord>(front));
333
+ return value(this_->front());
334
+ }
335
+ RUBY_END
336
+
337
+ static
338
+ RUBY_DEF0(get_front)
339
+ {
340
+ CHECK;
341
+
342
+ return value(THIS->front());
343
+ }
344
+ RUBY_END
345
+
346
+ static
347
+ RUBY_DEF1(set_position, pos)
348
+ {
349
+ CHECK;
350
+
351
+ Rays::Point* p = to<Rays::Point*>(pos);
352
+ if (!p) argument_error("%s is not a Rays::Point.", pos.inspect().c_str());
353
+
354
+ return value(THIS->position() = *p);
355
+ }
356
+ RUBY_END
357
+
358
+ static
359
+ RUBY_DEF0(get_position)
360
+ {
361
+ CHECK;
362
+
363
+ return value(THIS->position());
364
+ }
365
+ RUBY_END
366
+
367
+ static
368
+ RUBY_DEF1(set_size, size)
369
+ {
370
+ CHECK;
371
+
372
+ Rays::Point* p = to<Rays::Point*>(size);
373
+ if (!p) argument_error("%s is not a Rays::Point.", size.inspect().c_str());
374
+
375
+ return value(THIS->size() = *p);
376
+ }
377
+ RUBY_END
378
+
379
+ static
380
+ RUBY_DEF0(get_size)
381
+ {
382
+ CHECK;
383
+
384
+ return value(THIS->size());
385
+ }
386
+ RUBY_END
387
+
388
+
389
+ void
390
+ Init_bounds ()
391
+ {
392
+ Module mRays = define_module("Rays");
393
+
394
+ cBounds = mRays.define_class("Bounds");
395
+ cBounds.define_alloc_func(alloc);
396
+ cBounds.define_private_method("initialize", initialize);
397
+ cBounds.define_private_method("initialize_copy", initialize_copy);
398
+ cBounds.define_method("x=", set_x);
399
+ cBounds.define_method("x", get_x);
400
+ cBounds.define_method("y=", set_y);
401
+ cBounds.define_method("y", get_y);
402
+ cBounds.define_method("z=", set_z);
403
+ cBounds.define_method("z", get_z);
404
+ cBounds.define_method("width=", set_width);
405
+ cBounds.define_method("width", get_width);
406
+ cBounds.define_method("height=", set_height);
407
+ cBounds.define_method("height", get_height);
408
+ cBounds.define_method("depth=", set_depth);
409
+ cBounds.define_method("depth", get_depth);
410
+ cBounds.define_method("left=", set_left);
411
+ cBounds.define_method("left", get_left);
412
+ cBounds.define_method("right=", set_right);
413
+ cBounds.define_method("right", get_right);
414
+ cBounds.define_method("top=", set_top);
415
+ cBounds.define_method("top", get_top);
416
+ cBounds.define_method("bottom=", set_bottom);
417
+ cBounds.define_method("bottom", get_bottom);
418
+ cBounds.define_method("back=", set_back);
419
+ cBounds.define_method("back", get_back);
420
+ cBounds.define_method("front=", set_front);
421
+ cBounds.define_method("front", get_front);
422
+ cBounds.define_method("position=", set_position);
423
+ cBounds.define_method("position", get_position);
424
+ cBounds.define_method("size=", set_size);
425
+ cBounds.define_method("size", get_size);
426
+ }
@@ -0,0 +1,199 @@
1
+ #include "rays/ruby/color.h"
2
+
3
+
4
+ #include <rucy.h>
5
+ #include "defs.h"
6
+
7
+
8
+ using namespace Rucy;
9
+
10
+
11
+ static Class cColor;
12
+
13
+
14
+ namespace Rays
15
+ {
16
+
17
+
18
+ Class
19
+ color_class ()
20
+ {
21
+ return cColor;
22
+ }
23
+
24
+
25
+ }// Rays
26
+
27
+
28
+ namespace Rucy
29
+ {
30
+
31
+
32
+ Value
33
+ value (const Rays::Color& obj)
34
+ {
35
+ return new_type(cColor, new Rays::Color(obj));
36
+ }
37
+
38
+ Value
39
+ value (const Rays::Color* obj)
40
+ {
41
+ return obj ? value(*obj) : nil();
42
+ }
43
+
44
+
45
+ }// Rucy
46
+
47
+
48
+ #define THIS to<Rays::Color*>(self)
49
+
50
+ #define CHECK RUCY_CHECK_OBJ(self, Rays::Color, cColor)
51
+
52
+
53
+ static
54
+ RUBY_DEF_ALLOC(alloc, klass)
55
+ {
56
+ return new_type<Rays::Color>(klass);
57
+ }
58
+ RUBY_END
59
+
60
+ static
61
+ RUBY_DEFN(initialize)
62
+ {
63
+ RUCY_CHECK_OBJ(self, Rays::Color, cColor);
64
+
65
+ if (argc < 0 || 4 < argc)
66
+ arg_count_error("Color#initialize", argc, 0, 1, 2, 3, 4);
67
+
68
+ if (argc == 0) return self;
69
+
70
+ switch (argc)
71
+ {
72
+ case 1:
73
+ *THIS = Rays::Color(to<float>(argv[0]));
74
+ break;
75
+
76
+ case 2:
77
+ *THIS = Rays::Color(to<float>(argv[0]), to<float>(argv[1]));
78
+ break;
79
+
80
+ case 3:
81
+ *THIS = Rays::Color(
82
+ to<float>(argv[0]), to<float>(argv[1]), to<float>(argv[2]));
83
+ break;
84
+
85
+ case 4:
86
+ *THIS = Rays::Color(
87
+ to<float>(argv[0]), to<float>(argv[1]),
88
+ to<float>(argv[2]), to<float>(argv[3]));
89
+ break;
90
+ }
91
+
92
+ return self;
93
+ }
94
+ RUBY_END
95
+
96
+ static
97
+ RUBY_DEF1(initialize_copy, obj)
98
+ {
99
+ RUCY_CHECK_OBJ(self, Rays::Color, cColor);
100
+
101
+ Rays::Color* color = to<Rays::Color*>(obj);
102
+ if (!color) argument_error();
103
+
104
+ *THIS = *color;
105
+ return self;
106
+ }
107
+ RUBY_END
108
+
109
+ static
110
+ RUBY_DEF1(set_red, red)
111
+ {
112
+ CHECK;
113
+
114
+ return value(THIS->red = to<float>(red));
115
+ }
116
+ RUBY_END
117
+
118
+ static
119
+ RUBY_DEF0(get_red)
120
+ {
121
+ CHECK;
122
+
123
+ return value(THIS->red);
124
+ }
125
+ RUBY_END
126
+
127
+ static
128
+ RUBY_DEF1(set_green, green)
129
+ {
130
+ CHECK;
131
+
132
+ return value(THIS->green = to<float>(green));
133
+ }
134
+ RUBY_END
135
+
136
+ static
137
+ RUBY_DEF0(get_green)
138
+ {
139
+ CHECK;
140
+
141
+ return value(THIS->green);
142
+ }
143
+ RUBY_END
144
+
145
+ static
146
+ RUBY_DEF1(set_blue, blue)
147
+ {
148
+ CHECK;
149
+
150
+ return value(THIS->blue = to<float>(blue));
151
+ }
152
+ RUBY_END
153
+
154
+ static
155
+ RUBY_DEF0(get_blue)
156
+ {
157
+ CHECK;
158
+
159
+ return value(THIS->blue);
160
+ }
161
+ RUBY_END
162
+
163
+ static
164
+ RUBY_DEF1(set_alpha, alpha)
165
+ {
166
+ CHECK;
167
+
168
+ return value(THIS->alpha = to<float>(alpha));
169
+ }
170
+ RUBY_END
171
+
172
+ static
173
+ RUBY_DEF0(get_alpha)
174
+ {
175
+ CHECK;
176
+
177
+ return value(THIS->alpha);
178
+ }
179
+ RUBY_END
180
+
181
+
182
+ void
183
+ Init_color ()
184
+ {
185
+ Module mRays = define_module("Rays");
186
+
187
+ cColor = mRays.define_class("Color");
188
+ cColor.define_alloc_func(alloc);
189
+ cColor.define_private_method("initialize", initialize);
190
+ cColor.define_private_method("initialize_copy", initialize_copy);
191
+ cColor.define_method("red=", set_red);
192
+ cColor.define_method("red", get_red);
193
+ cColor.define_method("green=", set_green);
194
+ cColor.define_method("green", get_green);
195
+ cColor.define_method("blue=", set_blue);
196
+ cColor.define_method("blue", get_blue);
197
+ cColor.define_method("alpha=", set_alpha);
198
+ cColor.define_method("alpha", get_alpha);
199
+ }