rays 0.2.1 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (96) hide show
  1. checksums.yaml +4 -4
  2. data/.doc/ext/rays/bitmap.cpp +99 -32
  3. data/.doc/ext/rays/bounds.cpp +16 -12
  4. data/.doc/ext/rays/camera.cpp +1 -1
  5. data/.doc/ext/rays/color.cpp +2 -2
  6. data/.doc/ext/rays/color_space.cpp +3 -3
  7. data/.doc/ext/rays/defs.cpp +4 -4
  8. data/.doc/ext/rays/font.cpp +4 -3
  9. data/.doc/ext/rays/image.cpp +32 -18
  10. data/.doc/ext/rays/matrix.cpp +6 -6
  11. data/.doc/ext/rays/painter.cpp +1 -1
  12. data/.doc/ext/rays/point.cpp +10 -6
  13. data/.doc/ext/rays/polygon.cpp +11 -9
  14. data/.doc/ext/rays/polyline.cpp +6 -4
  15. data/.doc/ext/rays/rays.cpp +25 -15
  16. data/.doc/ext/rays/shader.cpp +3 -3
  17. data/.github/workflows/release-gem.yml +1 -1
  18. data/.github/workflows/test.yml +3 -0
  19. data/ChangeLog.md +11 -0
  20. data/Gemfile.lock +1 -1
  21. data/LICENSE +1 -1
  22. data/Rakefile +17 -3
  23. data/VERSION +1 -1
  24. data/ext/rays/bitmap.cpp +99 -32
  25. data/ext/rays/bounds.cpp +16 -12
  26. data/ext/rays/camera.cpp +1 -1
  27. data/ext/rays/color.cpp +2 -2
  28. data/ext/rays/color_space.cpp +3 -3
  29. data/ext/rays/defs.cpp +4 -4
  30. data/ext/rays/defs.h +2 -0
  31. data/ext/rays/extconf.rb +4 -2
  32. data/ext/rays/font.cpp +4 -3
  33. data/ext/rays/image.cpp +34 -18
  34. data/ext/rays/matrix.cpp +6 -6
  35. data/ext/rays/painter.cpp +1 -1
  36. data/ext/rays/point.cpp +10 -6
  37. data/ext/rays/polygon.cpp +11 -9
  38. data/ext/rays/polyline.cpp +6 -4
  39. data/ext/rays/rays.cpp +25 -15
  40. data/ext/rays/shader.cpp +3 -3
  41. data/include/rays/defs.h +7 -0
  42. data/include/rays/image.h +8 -2
  43. data/include/rays/ruby/bitmap.h +2 -2
  44. data/include/rays/ruby/bounds.h +2 -2
  45. data/include/rays/ruby/camera.h +2 -2
  46. data/include/rays/ruby/color.h +2 -2
  47. data/include/rays/ruby/color_space.h +2 -2
  48. data/include/rays/ruby/exception.h +3 -3
  49. data/include/rays/ruby/font.h +2 -2
  50. data/include/rays/ruby/image.h +2 -2
  51. data/include/rays/ruby/matrix.h +2 -2
  52. data/include/rays/ruby/painter.h +2 -2
  53. data/include/rays/ruby/point.h +2 -2
  54. data/include/rays/ruby/polygon.h +2 -2
  55. data/include/rays/ruby/polyline.h +2 -2
  56. data/include/rays/ruby/rays.h +6 -6
  57. data/include/rays/ruby/shader.h +2 -2
  58. data/lib/rays/bitmap.rb +7 -0
  59. data/lib/rays/extension.rb +4 -0
  60. data/lib/rays/image.rb +4 -0
  61. data/rays.gemspec +2 -2
  62. data/src/bounds.cpp +6 -2
  63. data/src/color.cpp +12 -4
  64. data/src/coord.h +2 -2
  65. data/src/font.cpp +1 -0
  66. data/src/image.cpp +32 -4
  67. data/src/ios/bitmap.mm +40 -33
  68. data/src/ios/font.mm +6 -1
  69. data/src/ios/rays.mm +2 -2
  70. data/src/matrix.h +1 -1
  71. data/src/opengl.h +1 -2
  72. data/src/osx/bitmap.mm +40 -33
  73. data/src/osx/font.mm +6 -1
  74. data/src/osx/rays.mm +2 -2
  75. data/src/painter.cpp +4 -1
  76. data/src/point.cpp +15 -3
  77. data/src/polygon.cpp +3 -5
  78. data/src/render_buffer.cpp +11 -3
  79. data/src/shader.cpp +3 -0
  80. data/src/shader_program.cpp +19 -9
  81. data/src/shader_source.cpp +5 -1
  82. data/src/texture.cpp +33 -11
  83. data/src/texture.h +6 -2
  84. data/src/win32/bitmap.cpp +178 -66
  85. data/src/win32/camera.cpp +119 -0
  86. data/src/win32/font.cpp +181 -40
  87. data/src/win32/gdi.h +1 -1
  88. data/src/win32/opengl.cpp +127 -0
  89. data/src/win32/rays.cpp +16 -9
  90. data/test/helper.rb +2 -0
  91. data/test/test_bitmap.rb +3 -1
  92. data/test/test_image.rb +8 -14
  93. data/test/test_painter.rb +4 -4
  94. data/test/test_painter_shape.rb +6 -5
  95. metadata +8 -7
  96. data/src/win32/font.h +0 -24
@@ -9,14 +9,14 @@
9
9
  #include <rays/color.h>
10
10
 
11
11
 
12
- RUCY_DECLARE_VALUE_OR_ARRAY_FROM_TO(Rays::Color)
12
+ RUCY_DECLARE_VALUE_OR_ARRAY_FROM_TO(RAYS_EXPORT, Rays::Color)
13
13
 
14
14
 
15
15
  namespace Rays
16
16
  {
17
17
 
18
18
 
19
- Rucy::Class color_class ();
19
+ RAYS_EXPORT Rucy::Class color_class ();
20
20
  // class Rays::Color
21
21
 
22
22
 
@@ -9,14 +9,14 @@
9
9
  #include <rays/color_space.h>
10
10
 
11
11
 
12
- RUCY_DECLARE_VALUE_OR_ARRAY_FROM_TO(Rays::ColorSpace)
12
+ RUCY_DECLARE_VALUE_OR_ARRAY_FROM_TO(RAYS_EXPORT, Rays::ColorSpace)
13
13
 
14
14
 
15
15
  namespace Rays
16
16
  {
17
17
 
18
18
 
19
- Rucy::Class color_space_class ();
19
+ RAYS_EXPORT Rucy::Class color_space_class ();
20
20
  // class Rays::ColorSpace
21
21
 
22
22
 
@@ -12,13 +12,13 @@ namespace Rays
12
12
  {
13
13
 
14
14
 
15
- Rucy::Class rays_error_class ();
15
+ RAYS_EXPORT Rucy::Class rays_error_class ();
16
16
  // class Rays::RaysError
17
17
 
18
- Rucy::Class opengl_error_class ();
18
+ RAYS_EXPORT Rucy::Class opengl_error_class ();
19
19
  // class Rays::OpenGLError
20
20
 
21
- Rucy::Class shader_error_class ();
21
+ RAYS_EXPORT Rucy::Class shader_error_class ();
22
22
  // class Rays::ShaderError
23
23
 
24
24
 
@@ -9,14 +9,14 @@
9
9
  #include <rays/font.h>
10
10
 
11
11
 
12
- RUCY_DECLARE_VALUE_OR_ARRAY_FROM_TO(Rays::Font)
12
+ RUCY_DECLARE_VALUE_OR_ARRAY_FROM_TO(RAYS_EXPORT, Rays::Font)
13
13
 
14
14
 
15
15
  namespace Rays
16
16
  {
17
17
 
18
18
 
19
- Rucy::Class font_class ();
19
+ RAYS_EXPORT Rucy::Class font_class ();
20
20
  // class Rays::Font
21
21
 
22
22
 
@@ -9,14 +9,14 @@
9
9
  #include <rays/image.h>
10
10
 
11
11
 
12
- RUCY_DECLARE_VALUE_FROM_TO(Rays::Image)
12
+ RUCY_DECLARE_VALUE_FROM_TO(RAYS_EXPORT, Rays::Image)
13
13
 
14
14
 
15
15
  namespace Rays
16
16
  {
17
17
 
18
18
 
19
- Rucy::Class image_class ();
19
+ RAYS_EXPORT Rucy::Class image_class ();
20
20
  // class Rays::Image
21
21
 
22
22
 
@@ -9,14 +9,14 @@
9
9
  #include <rays/matrix.h>
10
10
 
11
11
 
12
- RUCY_DECLARE_VALUE_OR_ARRAY_FROM_TO(Rays::Matrix)
12
+ RUCY_DECLARE_VALUE_OR_ARRAY_FROM_TO(RAYS_EXPORT, Rays::Matrix)
13
13
 
14
14
 
15
15
  namespace Rays
16
16
  {
17
17
 
18
18
 
19
- Rucy::Class matrix_class ();
19
+ RAYS_EXPORT Rucy::Class matrix_class ();
20
20
  // class Rays::Matrix
21
21
 
22
22
 
@@ -9,14 +9,14 @@
9
9
  #include <rays/painter.h>
10
10
 
11
11
 
12
- RUCY_DECLARE_VALUE_FROM_TO(Rays::Painter)
12
+ RUCY_DECLARE_VALUE_FROM_TO(RAYS_EXPORT, Rays::Painter)
13
13
 
14
14
 
15
15
  namespace Rays
16
16
  {
17
17
 
18
18
 
19
- Rucy::Class painter_class ();
19
+ RAYS_EXPORT Rucy::Class painter_class ();
20
20
  // class Rays::Painter
21
21
 
22
22
 
@@ -9,14 +9,14 @@
9
9
  #include <rays/point.h>
10
10
 
11
11
 
12
- RUCY_DECLARE_VALUE_OR_ARRAY_FROM_TO(Rays::Point)
12
+ RUCY_DECLARE_VALUE_OR_ARRAY_FROM_TO(RAYS_EXPORT, Rays::Point)
13
13
 
14
14
 
15
15
  namespace Rays
16
16
  {
17
17
 
18
18
 
19
- Rucy::Class point_class ();
19
+ RAYS_EXPORT Rucy::Class point_class ();
20
20
  // class Rays::Point
21
21
 
22
22
 
@@ -9,14 +9,14 @@
9
9
  #include <rays/polygon.h>
10
10
 
11
11
 
12
- RUCY_DECLARE_VALUE_OR_ARRAY_FROM_TO(Rays::Polygon)
12
+ RUCY_DECLARE_VALUE_OR_ARRAY_FROM_TO(RAYS_EXPORT, Rays::Polygon)
13
13
 
14
14
 
15
15
  namespace Rays
16
16
  {
17
17
 
18
18
 
19
- Rucy::Class polygon_class ();
19
+ RAYS_EXPORT Rucy::Class polygon_class ();
20
20
  // class Rays::Polygon
21
21
 
22
22
 
@@ -9,14 +9,14 @@
9
9
  #include <rays/polyline.h>
10
10
 
11
11
 
12
- RUCY_DECLARE_VALUE_OR_ARRAY_FROM_TO(Rays::Polyline)
12
+ RUCY_DECLARE_VALUE_OR_ARRAY_FROM_TO(RAYS_EXPORT, Rays::Polyline)
13
13
 
14
14
 
15
15
  namespace Rays
16
16
  {
17
17
 
18
18
 
19
- Rucy::Class polyline_class ();
19
+ RAYS_EXPORT Rucy::Class polyline_class ();
20
20
  // class Rays::Polyline
21
21
 
22
22
 
@@ -9,22 +9,22 @@
9
9
  #include <rays/rays.h>
10
10
 
11
11
 
12
- RUCY_DECLARE_CONVERT_TO(Rays::CapType)
12
+ RUCY_DECLARE_CONVERT_TO(RAYS_EXPORT, Rays::CapType)
13
13
 
14
- RUCY_DECLARE_CONVERT_TO(Rays::JoinType)
14
+ RUCY_DECLARE_CONVERT_TO(RAYS_EXPORT, Rays::JoinType)
15
15
 
16
- RUCY_DECLARE_CONVERT_TO(Rays::BlendMode)
16
+ RUCY_DECLARE_CONVERT_TO(RAYS_EXPORT, Rays::BlendMode)
17
17
 
18
- RUCY_DECLARE_CONVERT_TO(Rays::TexCoordMode)
18
+ RUCY_DECLARE_CONVERT_TO(RAYS_EXPORT, Rays::TexCoordMode)
19
19
 
20
- RUCY_DECLARE_CONVERT_TO(Rays::TexCoordWrap)
20
+ RUCY_DECLARE_CONVERT_TO(RAYS_EXPORT, Rays::TexCoordWrap)
21
21
 
22
22
 
23
23
  namespace Rays
24
24
  {
25
25
 
26
26
 
27
- Rucy::Module rays_module ();
27
+ RAYS_EXPORT Rucy::Module rays_module ();
28
28
  // module Rays
29
29
 
30
30
 
@@ -9,14 +9,14 @@
9
9
  #include <rays/shader.h>
10
10
 
11
11
 
12
- RUCY_DECLARE_VALUE_OR_ARRAY_FROM_TO(Rays::Shader)
12
+ RUCY_DECLARE_VALUE_OR_ARRAY_FROM_TO(RAYS_EXPORT, Rays::Shader)
13
13
 
14
14
 
15
15
  namespace Rays
16
16
  {
17
17
 
18
18
 
19
- Rucy::Class shader_class ();
19
+ RAYS_EXPORT Rucy::Class shader_class ();
20
20
  // class Rays::Shader
21
21
 
22
22
 
data/lib/rays/bitmap.rb CHANGED
@@ -16,6 +16,13 @@ module Rays
16
16
  end
17
17
  end
18
18
 
19
+ def pixels()
20
+ case o = pixels!
21
+ when Array then o
22
+ when String then o.unpack 'L*'
23
+ end
24
+ end
25
+
19
26
  def bounds()
20
27
  Bounds.new 0, 0, width, height
21
28
  end
@@ -25,6 +25,10 @@ module Rays
25
25
  root_dir 'lib'
26
26
  end
27
27
 
28
+ def ext_dir()
29
+ root_dir 'ext'
30
+ end
31
+
28
32
  end# Extension
29
33
 
30
34
 
data/lib/rays/image.rb CHANGED
@@ -13,6 +13,10 @@ module Rays
13
13
 
14
14
  def_delegators :bitmap_for_write, :pixels=, :[]=
15
15
 
16
+ def initialize(*args, pixel_density: 1, smooth: false)
17
+ initialize! args, pixel_density, smooth
18
+ end
19
+
16
20
  def paint(&block)
17
21
  painter.paint self, &block
18
22
  self
data/rays.gemspec CHANGED
@@ -25,8 +25,8 @@ Gem::Specification.new do |s|
25
25
  s.platform = Gem::Platform::RUBY
26
26
  s.required_ruby_version = '>= 3.0.0'
27
27
 
28
- s.add_runtime_dependency 'xot', '~> 0.2.1'
29
- s.add_runtime_dependency 'rucy', '~> 0.2.1'
28
+ s.add_runtime_dependency 'xot', '~> 0.3.1'
29
+ s.add_runtime_dependency 'rucy', '~> 0.3.1'
30
30
 
31
31
  s.files = `git ls-files`.split $/
32
32
  s.executables = s.files.grep(%r{^bin/}) {|f| File.basename f}
data/src/bounds.cpp CHANGED
@@ -50,7 +50,9 @@ namespace Rays
50
50
  bool
51
51
  Bounds::is_intersect (const Bounds& other, int dimension) const
52
52
  {
53
- if (dimension < 1 || 3 < dimension)
53
+ if (dimension < 1)
54
+ argument_error(__FILE__, __LINE__);
55
+ if (dimension > 3)
54
56
  argument_error(__FILE__, __LINE__);
55
57
 
56
58
  Point size = (*this & other).size();
@@ -69,7 +71,9 @@ namespace Rays
69
71
  bool
70
72
  Bounds::is_include (const Point& point, int dimension) const
71
73
  {
72
- if (dimension < 1 || 3 < dimension)
74
+ if (dimension < 1)
75
+ argument_error(__FILE__, __LINE__);
76
+ if (dimension > 3)
73
77
  argument_error(__FILE__, __LINE__);
74
78
 
75
79
  const Point &pos = position(), &size_ = size();
data/src/color.cpp CHANGED
@@ -117,7 +117,9 @@ namespace Rays
117
117
  Color&
118
118
  Color::reset (const void* pixel, const ColorSpace& cs)
119
119
  {
120
- if (!pixel || !cs)
120
+ if (!pixel)
121
+ argument_error(__FILE__, __LINE__);
122
+ if (!cs)
121
123
  argument_error(__FILE__, __LINE__);
122
124
 
123
125
  if (cs.is_float())
@@ -175,7 +177,9 @@ namespace Rays
175
177
  static void
176
178
  get_rgba (float* red, float* green, float* blue, float* alpha, const float* c)
177
179
  {
178
- if ((!red && !green && !blue && !alpha) || !c)
180
+ if (!red && !green && !blue && !alpha)
181
+ argument_error(__FILE__, __LINE__);
182
+ if (!c)
179
183
  argument_error(__FILE__, __LINE__);
180
184
 
181
185
  if (red) *red = c[0];
@@ -187,7 +191,9 @@ namespace Rays
187
191
  static void
188
192
  get_rgba (uchar* red, uchar* green, uchar* blue, uchar* alpha, const float* c)
189
193
  {
190
- if ((!red && !green && !blue && !alpha) || !c)
194
+ if (!red && !green && !blue && !alpha)
195
+ argument_error(__FILE__, __LINE__);
196
+ if (!c)
191
197
  argument_error(__FILE__, __LINE__);
192
198
 
193
199
  if (red) *red = Color::float2uchar(c[0]);
@@ -199,7 +205,9 @@ namespace Rays
199
205
  void
200
206
  Color::get (void* pixel, const ColorSpace& cs) const
201
207
  {
202
- if (!pixel || !cs)
208
+ if (!pixel)
209
+ argument_error(__FILE__, __LINE__);
210
+ if (!cs)
203
211
  argument_error(__FILE__, __LINE__);
204
212
 
205
213
  const float* c = array;
data/src/coord.h CHANGED
@@ -13,9 +13,9 @@ namespace Rays
13
13
  {
14
14
 
15
15
 
16
- typedef glm::tvec3<coord, glm::defaultp> Vec3;
16
+ typedef glm::vec<3, coord, glm::defaultp> Vec3;
17
17
 
18
- typedef glm::tvec4<coord, glm::defaultp> Vec4;
18
+ typedef glm::vec<4, coord, glm::defaultp> Vec4;
19
19
 
20
20
 
21
21
  inline Vec3& to_glm ( Coord3& val) {return *( Vec3*) &val;}
data/src/font.cpp CHANGED
@@ -1,6 +1,7 @@
1
1
  #include "font.h"
2
2
 
3
3
 
4
+ #include <string.h>
4
5
  #include <assert.h>
5
6
 
6
7
 
data/src/image.cpp CHANGED
@@ -30,6 +30,8 @@ namespace Rays
30
30
 
31
31
  float pixel_density = 1;
32
32
 
33
+ bool smooth = false;
34
+
33
35
  mutable Bitmap bitmap;
34
36
 
35
37
  mutable Texture texture;
@@ -56,6 +58,13 @@ namespace Rays
56
58
  if (self->texture) self->texture.set_modified(false);
57
59
  }
58
60
 
61
+ static void
62
+ invalidate_texture (Image* image)
63
+ {
64
+ image->bitmap();// update bitmap
65
+ image->self->texture = Texture();
66
+ }
67
+
59
68
  static Bitmap&
60
69
  get_bitmap (Image* image)
61
70
  {
@@ -117,12 +126,13 @@ namespace Rays
117
126
  if (self->bitmap)
118
127
  {
119
128
  PRINT_MODIFIED_FLAGS("new texture from bitmap");
120
- self->texture = Texture(self->bitmap);
129
+ self->texture = Texture(self->bitmap, self->smooth);
121
130
  }
122
131
  else
123
132
  {
124
133
  PRINT_MODIFIED_FLAGS("new texture");
125
- self->texture = Texture(self->width, self->height, self->color_space);
134
+ self->texture = Texture(
135
+ self->width, self->height, self->color_space, self->smooth);
126
136
 
127
137
  Painter p = image.painter();
128
138
  p.begin();
@@ -167,7 +177,8 @@ namespace Rays
167
177
  }
168
178
 
169
179
  Image::Image (
170
- int width, int height, const ColorSpace& cs, float pixel_density)
180
+ int width, int height, const ColorSpace& cs,
181
+ float pixel_density, bool smooth)
171
182
  {
172
183
  if (pixel_density <= 0)
173
184
  argument_error(__FILE__, __LINE__, "invalid pixel_density.");
@@ -176,9 +187,10 @@ namespace Rays
176
187
  self->height = (int) (height * pixel_density);
177
188
  self->color_space = cs;
178
189
  self->pixel_density = pixel_density;
190
+ self->smooth = smooth;
179
191
  }
180
192
 
181
- Image::Image (const Bitmap& bitmap, float pixel_density)
193
+ Image::Image (const Bitmap& bitmap, float pixel_density, bool smooth)
182
194
  {
183
195
  if (pixel_density <= 0)
184
196
  argument_error(__FILE__, __LINE__, "invalid pixel_density.");
@@ -188,6 +200,7 @@ namespace Rays
188
200
  self->height = bitmap.height();
189
201
  self->color_space = bitmap.color_space();
190
202
  self->pixel_density = pixel_density;
203
+ self->smooth = smooth;
191
204
  }
192
205
 
193
206
  Image::~Image ()
@@ -233,6 +246,21 @@ namespace Rays
233
246
  return self->pixel_density;
234
247
  }
235
248
 
249
+ void
250
+ Image::set_smooth (bool smooth)
251
+ {
252
+ if (smooth == self->smooth) return;
253
+
254
+ self->smooth = smooth;
255
+ invalidate_texture(this);
256
+ }
257
+
258
+ bool
259
+ Image::smooth () const
260
+ {
261
+ return self->smooth;
262
+ }
263
+
236
264
  Painter
237
265
  Image::painter ()
238
266
  {
data/src/ios/bitmap.mm CHANGED
@@ -2,7 +2,6 @@
2
2
  #import "bitmap.h"
3
3
 
4
4
 
5
- #include <assert.h>
6
5
  #import <ImageIO/CGImageDestination.h>
7
6
  #import <MobileCoreServices/UTCoreTypes.h>
8
7
  #include "rays/exception.h"
@@ -61,7 +60,7 @@ namespace Rays
61
60
 
62
61
  ColorSpace color_space;
63
62
 
64
- void* pixels = NULL;
63
+ void* pixels = NULL;
65
64
 
66
65
  CGContextRef context = NULL;
67
66
 
@@ -123,37 +122,44 @@ namespace Rays
123
122
 
124
123
  static void
125
124
  setup_bitmap (
126
- Bitmap* this_,
125
+ Bitmap* bitmap,
127
126
  int w, int h, const ColorSpace& cs,
128
- const void* pixels_ = NULL, bool clear_pixels = true)
127
+ const void* pixels = NULL, bool clear_pixels = true)
129
128
  {
130
- if (!this_ || w <= 0 || h <= 0 || !cs)
129
+ if (w <= 0)
131
130
  argument_error(__FILE__, __LINE__);
131
+ if (h <= 0)
132
+ argument_error(__FILE__, __LINE__);
133
+ if (!cs)
134
+ argument_error(__FILE__, __LINE__);
135
+
136
+ Bitmap::Data* self = bitmap->self.get();
132
137
 
133
- this_->self->clear();
138
+ self->clear();
134
139
 
135
- this_->self->width = w;
136
- this_->self->height = h;
137
- this_->self->color_space = cs;
138
- this_->self->modified = true;
140
+ self->width = w;
141
+ self->height = h;
142
+ self->color_space = cs;
143
+ self->modified = true;
139
144
 
140
145
  size_t size = w * h * cs.Bpp();
141
- this_->self->pixels = new uchar[size];
146
+ self->pixels = new uchar[size];
142
147
 
143
- if (pixels_)
144
- memcpy(this_->self->pixels, pixels_, size);
148
+ if (pixels)
149
+ memcpy(self->pixels, pixels, size);
145
150
  else if (clear_pixels)
146
- memset(this_->self->pixels, 0, size);
151
+ memset(self->pixels, 0, size);
147
152
  }
148
153
 
149
- static void
150
- setup_bitmap (Bitmap* this_, const Texture& tex)
154
+ Bitmap
155
+ Bitmap_from (const Texture& tex)
151
156
  {
152
- if (!this_ || !tex)
157
+ if (!tex)
153
158
  argument_error(__FILE__, __LINE__);
154
159
 
160
+ Bitmap bmp;
155
161
  setup_bitmap(
156
- this_, tex.width(), tex.height(), tex.color_space(), NULL, false);
162
+ &bmp, tex.width(), tex.height(), tex.color_space(), NULL, false);
157
163
 
158
164
  GLenum format, type;
159
165
  ColorSpace_get_gl_format_and_type(&format, &type, tex.color_space());
@@ -161,18 +167,12 @@ namespace Rays
161
167
  FrameBuffer fb(tex);
162
168
  FrameBufferBinder binder(fb.id());
163
169
 
164
- for (int y = 0; y < this_->height(); ++y)
170
+ for (int y = 0; y < bmp.height(); ++y)
165
171
  {
166
- GLvoid* ptr = (GLvoid*) this_->at<uchar>(0, y);
167
- glReadPixels(0, y, this_->width(), 1, format, type, ptr);
172
+ GLvoid* ptr = (GLvoid*) bmp.at<uchar>(0, y);
173
+ glReadPixels(0, y, bmp.width(), 1, format, type, ptr);
168
174
  }
169
- }
170
175
 
171
- Bitmap
172
- Bitmap_from (const Texture& texture)
173
- {
174
- Bitmap bmp;
175
- setup_bitmap(&bmp, texture);
176
176
  return bmp;
177
177
  }
178
178
 
@@ -183,7 +183,9 @@ namespace Rays
183
183
  {
184
184
  if (width == 0 || height == 0) return;
185
185
 
186
- if (!bitmap || !image)
186
+ if (!bitmap)
187
+ argument_error(__FILE__, __LINE__);
188
+ if (!image)
187
189
  argument_error(__FILE__, __LINE__);
188
190
 
189
191
  CGContextRef context = bitmap->self->get_context();
@@ -201,21 +203,24 @@ namespace Rays
201
203
  Bitmap_draw_string (
202
204
  Bitmap* bitmap, const RawFont& font, const char* str, coord x, coord y)
203
205
  {
204
- if (!bitmap || !*bitmap || !font || !str)
206
+ if (!bitmap)
207
+ argument_error(__FILE__, __LINE__);
208
+ if (!*bitmap)
209
+ argument_error(__FILE__, __LINE__);
210
+ if (!font)
211
+ argument_error(__FILE__, __LINE__);
212
+ if (!str)
205
213
  argument_error(__FILE__, __LINE__);
206
214
 
207
215
  if (*str == '\0') return;
208
216
 
209
217
  font.draw_string(bitmap->self->get_context(), bitmap->height(), str, x, y);
210
-
211
218
  Bitmap_set_modified(bitmap);
212
219
  }
213
220
 
214
221
  void
215
222
  Bitmap_set_modified (Bitmap* bitmap, bool modified)
216
223
  {
217
- assert(bitmap);
218
-
219
224
  bitmap->self->modified = modified;
220
225
  }
221
226
 
@@ -268,7 +273,9 @@ namespace Rays
268
273
  Bitmap
269
274
  Bitmap_load (const char* path_)
270
275
  {
271
- if (!path_ || path_[0] == '\0')
276
+ if (!path_)
277
+ argument_error(__FILE__, __LINE__);
278
+ if (path_[0] == '\0')
272
279
  argument_error(__FILE__, __LINE__);
273
280
 
274
281
  NSString* path = [NSString stringWithUTF8String: path_];
data/src/ios/font.mm CHANGED
@@ -152,11 +152,16 @@ namespace Rays
152
152
  {
153
153
  CGContextRef context = (CGContextRef) context_;
154
154
 
155
- if (!*this || !context || !str)
155
+ if (!context)
156
+ argument_error(__FILE__, __LINE__);
157
+ if (!str)
156
158
  argument_error(__FILE__, __LINE__);
157
159
 
158
160
  if (*str == '\0') return;
159
161
 
162
+ if (!*this)
163
+ invalid_state_error(__FILE__, __LINE__);
164
+
160
165
  CTLinePtr line = make_line(self->font, str);
161
166
  if (!line)
162
167
  rays_error(__FILE__, __LINE__, "creating CTLineRef failed.");
data/src/ios/rays.mm CHANGED
@@ -25,7 +25,7 @@ namespace Rays
25
25
  init ()
26
26
  {
27
27
  if (global::pool)
28
- rays_error(__FILE__, __LINE__, "Rays::init(): already initialized.");
28
+ rays_error(__FILE__, __LINE__, "already initialized.");
29
29
 
30
30
  global::pool = [[NSAutoreleasePool alloc] init];
31
31
 
@@ -36,7 +36,7 @@ namespace Rays
36
36
  fin ()
37
37
  {
38
38
  if (!global::pool)
39
- rays_error(__FILE__, __LINE__, "Rays::fin(): not initialized.");
39
+ rays_error(__FILE__, __LINE__, "not initialized.");
40
40
 
41
41
  OpenGL_fin();
42
42
 
data/src/matrix.h CHANGED
@@ -12,7 +12,7 @@ namespace Rays
12
12
  {
13
13
 
14
14
 
15
- typedef glm::tmat4x4<coord> Mat4;
15
+ typedef glm::mat<4, 4, coord> Mat4;
16
16
 
17
17
 
18
18
  inline Mat4& to_glm ( Matrix& val) {return *( Mat4*) &val;}
data/src/opengl.h CHANGED
@@ -11,8 +11,7 @@
11
11
  #include <OpenGLES/ES3/gl.h>
12
12
  #include <OpenGLES/ES3/glext.h>
13
13
  #elif defined(WIN32)
14
- #include <GL/gl.h>
15
- #include <GL/glext.h>
14
+ #include <GL/glew.h>
16
15
  #endif
17
16
 
18
17
  #include "rays/defs.h"