rays 0.2.1 → 0.3.1

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 (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"