rays 0.1.12 → 0.1.17

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 (168) 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/camera.cpp +171 -0
  5. data/.doc/ext/rays/color.cpp +223 -45
  6. data/.doc/ext/rays/color_space.cpp +146 -46
  7. data/.doc/ext/rays/defs.cpp +183 -0
  8. data/.doc/ext/rays/font.cpp +69 -21
  9. data/.doc/ext/rays/image.cpp +26 -37
  10. data/.doc/ext/rays/matrix.cpp +186 -29
  11. data/.doc/ext/rays/native.cpp +14 -8
  12. data/.doc/ext/rays/noise.cpp +53 -0
  13. data/.doc/ext/rays/painter.cpp +187 -292
  14. data/.doc/ext/rays/point.cpp +96 -77
  15. data/.doc/ext/rays/polygon.cpp +313 -0
  16. data/.doc/ext/rays/polygon_line.cpp +96 -0
  17. data/.doc/ext/rays/polyline.cpp +167 -0
  18. data/.doc/ext/rays/rays.cpp +103 -12
  19. data/.doc/ext/rays/shader.cpp +83 -9
  20. data/LICENSE +21 -0
  21. data/README.md +1 -1
  22. data/Rakefile +24 -9
  23. data/VERSION +1 -1
  24. data/ext/rays/bitmap.cpp +23 -81
  25. data/ext/rays/bounds.cpp +100 -128
  26. data/ext/rays/camera.cpp +186 -0
  27. data/ext/rays/color.cpp +231 -51
  28. data/ext/rays/color_space.cpp +149 -47
  29. data/ext/rays/defs.cpp +183 -0
  30. data/ext/rays/defs.h +26 -2
  31. data/ext/rays/extconf.rb +2 -3
  32. data/ext/rays/font.cpp +74 -24
  33. data/ext/rays/image.cpp +28 -40
  34. data/ext/rays/matrix.cpp +198 -30
  35. data/ext/rays/native.cpp +14 -8
  36. data/ext/rays/noise.cpp +55 -0
  37. data/ext/rays/painter.cpp +203 -298
  38. data/ext/rays/point.cpp +105 -81
  39. data/ext/rays/polygon.cpp +329 -0
  40. data/ext/rays/polygon_line.cpp +99 -0
  41. data/ext/rays/polyline.cpp +176 -0
  42. data/ext/rays/rays.cpp +103 -13
  43. data/ext/rays/shader.cpp +84 -9
  44. data/include/rays.h +10 -2
  45. data/include/rays/bitmap.h +14 -26
  46. data/include/rays/bounds.h +21 -4
  47. data/include/rays/camera.h +74 -0
  48. data/include/rays/color.h +25 -14
  49. data/include/rays/color_space.h +15 -10
  50. data/include/rays/coord.h +114 -0
  51. data/include/rays/debug.h +22 -0
  52. data/include/rays/defs.h +36 -0
  53. data/include/rays/exception.h +6 -2
  54. data/include/rays/font.h +4 -4
  55. data/include/rays/image.h +12 -18
  56. data/include/rays/matrix.h +50 -24
  57. data/include/rays/noise.h +42 -0
  58. data/include/rays/opengl.h +2 -50
  59. data/include/rays/painter.h +89 -93
  60. data/include/rays/point.h +44 -51
  61. data/include/rays/polygon.h +198 -0
  62. data/include/rays/polyline.h +71 -0
  63. data/include/rays/rays.h +3 -0
  64. data/include/rays/ruby.h +7 -1
  65. data/include/rays/ruby/bounds.h +1 -1
  66. data/include/rays/ruby/camera.h +41 -0
  67. data/include/rays/ruby/color.h +1 -1
  68. data/include/rays/ruby/color_space.h +1 -1
  69. data/include/rays/ruby/font.h +1 -1
  70. data/include/rays/ruby/matrix.h +1 -1
  71. data/include/rays/ruby/point.h +1 -1
  72. data/include/rays/ruby/polygon.h +52 -0
  73. data/include/rays/ruby/polyline.h +41 -0
  74. data/include/rays/ruby/rays.h +8 -0
  75. data/include/rays/ruby/shader.h +1 -1
  76. data/include/rays/shader.h +36 -8
  77. data/lib/rays.rb +7 -2
  78. data/lib/rays/bitmap.rb +0 -15
  79. data/lib/rays/bounds.rb +17 -23
  80. data/lib/rays/camera.rb +24 -0
  81. data/lib/rays/color.rb +20 -47
  82. data/lib/rays/color_space.rb +13 -13
  83. data/lib/rays/image.rb +3 -7
  84. data/lib/rays/matrix.rb +28 -0
  85. data/lib/rays/module.rb +4 -19
  86. data/lib/rays/painter.rb +78 -93
  87. data/lib/rays/point.rb +13 -21
  88. data/lib/rays/polygon.rb +58 -0
  89. data/lib/rays/polygon_line.rb +36 -0
  90. data/lib/rays/polyline.rb +32 -0
  91. data/lib/rays/shader.rb +20 -1
  92. data/rays.gemspec +5 -7
  93. data/src/bitmap.h +36 -0
  94. data/src/bounds.cpp +74 -11
  95. data/src/color.cpp +58 -23
  96. data/src/color_space.cpp +52 -34
  97. data/src/color_space.h +22 -0
  98. data/src/coord.cpp +170 -0
  99. data/src/coord.h +35 -0
  100. data/src/font.cpp +118 -0
  101. data/src/font.h +64 -0
  102. data/src/frame_buffer.cpp +37 -71
  103. data/src/frame_buffer.h +4 -4
  104. data/src/image.cpp +172 -98
  105. data/src/image.h +25 -0
  106. data/src/ios/bitmap.h +23 -0
  107. data/src/ios/bitmap.mm +133 -110
  108. data/src/ios/camera.mm +510 -0
  109. data/src/ios/font.mm +50 -62
  110. data/src/ios/helper.h +4 -4
  111. data/src/ios/opengl.mm +19 -4
  112. data/src/ios/rays.mm +3 -0
  113. data/src/matrix.cpp +111 -26
  114. data/src/matrix.h +30 -0
  115. data/src/noise.cpp +74 -0
  116. data/src/opengl.cpp +9 -27
  117. data/src/opengl.h +37 -0
  118. data/src/osx/bitmap.h +23 -0
  119. data/src/osx/bitmap.mm +133 -110
  120. data/src/osx/camera.mm +451 -0
  121. data/src/osx/font.mm +49 -62
  122. data/src/osx/helper.h +2 -2
  123. data/src/osx/opengl.mm +19 -83
  124. data/src/osx/rays.mm +3 -0
  125. data/src/painter.cpp +845 -671
  126. data/src/painter.h +24 -0
  127. data/src/point.cpp +140 -119
  128. data/src/polygon.cpp +1266 -0
  129. data/src/polygon.h +32 -0
  130. data/src/polyline.cpp +160 -0
  131. data/src/polyline.h +69 -0
  132. data/src/render_buffer.cpp +11 -4
  133. data/src/render_buffer.h +2 -2
  134. data/src/shader.cpp +163 -106
  135. data/src/shader.h +38 -0
  136. data/src/shader_program.cpp +533 -0
  137. data/src/{program.h → shader_program.h} +28 -16
  138. data/src/shader_source.cpp +140 -0
  139. data/src/shader_source.h +52 -0
  140. data/src/texture.cpp +136 -160
  141. data/src/texture.h +65 -0
  142. data/src/win32/bitmap.cpp +62 -52
  143. data/src/win32/font.cpp +11 -13
  144. data/src/win32/font.h +24 -0
  145. data/src/win32/gdi.h +6 -6
  146. data/test/helper.rb +0 -3
  147. data/test/test_bitmap.rb +31 -7
  148. data/test/test_bounds.rb +36 -0
  149. data/test/test_color.rb +59 -19
  150. data/test/test_color_space.rb +95 -0
  151. data/test/test_font.rb +5 -0
  152. data/test/test_image.rb +24 -20
  153. data/test/test_matrix.rb +106 -0
  154. data/test/test_painter.rb +157 -51
  155. data/test/test_painter_shape.rb +102 -0
  156. data/test/test_point.rb +29 -0
  157. data/test/test_polygon.rb +234 -0
  158. data/test/test_polygon_line.rb +167 -0
  159. data/test/test_polyline.rb +171 -0
  160. data/test/test_shader.rb +9 -9
  161. metadata +102 -70
  162. data/.doc/ext/rays/texture.cpp +0 -138
  163. data/ext/rays/texture.cpp +0 -149
  164. data/include/rays/ruby/texture.h +0 -41
  165. data/include/rays/texture.h +0 -71
  166. data/lib/rays/texture.rb +0 -24
  167. data/src/program.cpp +0 -648
  168. data/test/test_texture.rb +0 -27
@@ -23,7 +23,7 @@ namespace Rays
23
23
  }// Rays
24
24
 
25
25
 
26
- RUCY_DECLARE_VALUE_FROM_TO(Rays::Bounds)
26
+ RUCY_DECLARE_VALUE_OR_ARRAY_FROM_TO(Rays::Bounds)
27
27
 
28
28
 
29
29
  namespace Rucy
@@ -0,0 +1,41 @@
1
+ // -*- c++ -*-
2
+ #pragma once
3
+ #ifndef __RAYS_RUBY_CAMERA_H__
4
+ #define __RAYS_RUBY_CAMERA_H__
5
+
6
+
7
+ #include <rucy/rucy.h>
8
+ #include <rucy/class.h>
9
+ #include <rucy/extension.h>
10
+ #include <rays/camera.h>
11
+
12
+
13
+ namespace Rays
14
+ {
15
+
16
+
17
+ Rucy::Class camera_class ();
18
+ // class Rays::Camera
19
+
20
+
21
+ }// Rays
22
+
23
+
24
+ RUCY_DECLARE_VALUE_FROM_TO(Rays::Camera)
25
+
26
+
27
+ namespace Rucy
28
+ {
29
+
30
+
31
+ template <> inline Class
32
+ get_ruby_class<Rays::Camera> ()
33
+ {
34
+ return Rays::camera_class();
35
+ }
36
+
37
+
38
+ }// Rucy
39
+
40
+
41
+ #endif//EOH
@@ -22,7 +22,7 @@ namespace Rays
22
22
  }// Rays
23
23
 
24
24
 
25
- RUCY_DECLARE_VALUE_FROM_TO(Rays::Color)
25
+ RUCY_DECLARE_VALUE_OR_ARRAY_FROM_TO(Rays::Color)
26
26
 
27
27
 
28
28
  namespace Rucy
@@ -21,7 +21,7 @@ namespace Rays
21
21
  }// Rays
22
22
 
23
23
 
24
- RUCY_DECLARE_VALUE_FROM_TO(Rays::ColorSpace)
24
+ RUCY_DECLARE_VALUE_OR_ARRAY_FROM_TO(Rays::ColorSpace)
25
25
 
26
26
 
27
27
  namespace Rucy
@@ -21,7 +21,7 @@ namespace Rays
21
21
  }// Rays
22
22
 
23
23
 
24
- RUCY_DECLARE_VALUE_FROM_TO(Rays::Font)
24
+ RUCY_DECLARE_VALUE_OR_ARRAY_FROM_TO(Rays::Font)
25
25
 
26
26
 
27
27
  namespace Rucy
@@ -21,7 +21,7 @@ namespace Rays
21
21
  }// Rays
22
22
 
23
23
 
24
- RUCY_DECLARE_VALUE_FROM_TO(Rays::Matrix)
24
+ RUCY_DECLARE_VALUE_OR_ARRAY_FROM_TO(Rays::Matrix)
25
25
 
26
26
 
27
27
  namespace Rucy
@@ -22,7 +22,7 @@ namespace Rays
22
22
  }// Rays
23
23
 
24
24
 
25
- RUCY_DECLARE_VALUE_FROM_TO(Rays::Point)
25
+ RUCY_DECLARE_VALUE_OR_ARRAY_FROM_TO(Rays::Point)
26
26
 
27
27
 
28
28
  namespace Rucy
@@ -0,0 +1,52 @@
1
+ // -*- c++ -*-
2
+ #pragma once
3
+ #ifndef __RAYS_RUBY_POLYGON_H__
4
+ #define __RAYS_RUBY_POLYGON_H__
5
+
6
+
7
+ #include <rucy/rucy.h>
8
+ #include <rucy/class.h>
9
+ #include <rucy/extension.h>
10
+ #include <rays/polygon.h>
11
+
12
+
13
+ namespace Rays
14
+ {
15
+
16
+
17
+ Rucy::Class polygon_class ();
18
+ // class Rays::Polygon
19
+
20
+ Rucy::Class polygon_line_class ();
21
+ // class Rays::Polygon::Line
22
+
23
+
24
+ }// Rays
25
+
26
+
27
+ RUCY_DECLARE_VALUE_OR_ARRAY_FROM_TO(Rays::Polygon)
28
+
29
+ RUCY_DECLARE_VALUE_OR_ARRAY_FROM_TO(Rays::Polygon::Line)
30
+
31
+
32
+ namespace Rucy
33
+ {
34
+
35
+
36
+ template <> inline Class
37
+ get_ruby_class<Rays::Polygon> ()
38
+ {
39
+ return Rays::polygon_class();
40
+ }
41
+
42
+ template <> inline Class
43
+ get_ruby_class<Rays::Polygon::Line> ()
44
+ {
45
+ return Rays::polygon_line_class();
46
+ }
47
+
48
+
49
+ }// Rucy
50
+
51
+
52
+ #endif//EOH
@@ -0,0 +1,41 @@
1
+ // -*- c++ -*-
2
+ #pragma once
3
+ #ifndef __RAYS_RUBY_POLYLINE_H__
4
+ #define __RAYS_RUBY_POLYLINE_H__
5
+
6
+
7
+ #include <rucy/rucy.h>
8
+ #include <rucy/class.h>
9
+ #include <rucy/extension.h>
10
+ #include <rays/polyline.h>
11
+
12
+
13
+ namespace Rays
14
+ {
15
+
16
+
17
+ Rucy::Class polyline_class ();
18
+ // class Rays::Polyline
19
+
20
+
21
+ }// Rays
22
+
23
+
24
+ RUCY_DECLARE_VALUE_OR_ARRAY_FROM_TO(Rays::Polyline)
25
+
26
+
27
+ namespace Rucy
28
+ {
29
+
30
+
31
+ template <> inline Class
32
+ get_ruby_class<Rays::Polyline> ()
33
+ {
34
+ return Rays::polyline_class();
35
+ }
36
+
37
+
38
+ }// Rucy
39
+
40
+
41
+ #endif//EOH
@@ -4,7 +4,10 @@
4
4
  #define __RAYS_RUBY_RAYS_H__
5
5
 
6
6
 
7
+ #include <rucy/rucy.h>
7
8
  #include <rucy/module.h>
9
+ #include <rucy/extension.h>
10
+ #include <rays/rays.h>
8
11
 
9
12
 
10
13
  namespace Rays
@@ -18,4 +21,9 @@ namespace Rays
18
21
  }// Rays
19
22
 
20
23
 
24
+ RUCY_DECLARE_CONVERT_TO(Rays::CapType)
25
+
26
+ RUCY_DECLARE_CONVERT_TO(Rays::JoinType)
27
+
28
+
21
29
  #endif//EOH
@@ -21,7 +21,7 @@ namespace Rays
21
21
  }// Rays
22
22
 
23
23
 
24
- RUCY_DECLARE_VALUE_FROM_TO(Rays::Shader)
24
+ RUCY_DECLARE_VALUE_OR_ARRAY_FROM_TO(Rays::Shader)
25
25
 
26
26
 
27
27
  namespace Rucy
@@ -5,13 +5,17 @@
5
5
 
6
6
 
7
7
  #include <xot/pimpl.h>
8
- #include "rays/opengl.h"
8
+ #include <rays/defs.h>
9
+ #include <rays/coord.h>
9
10
 
10
11
 
11
12
  namespace Rays
12
13
  {
13
14
 
14
15
 
16
+ class Image;
17
+
18
+
15
19
  class Shader
16
20
  {
17
21
 
@@ -19,25 +23,49 @@ namespace Rays
19
23
 
20
24
  public:
21
25
 
22
- Shader ();
23
-
24
- Shader (const char* source);
26
+ Shader (const char* source = NULL);
25
27
 
26
28
  ~Shader ();
27
29
 
28
- GLuint id () const;
30
+ void set_uniform (const char* name, int arg1);
31
+
32
+ void set_uniform (const char* name, int arg1, int arg2);
33
+
34
+ void set_uniform (const char* name, int arg1, int arg2, int arg3);
35
+
36
+ void set_uniform (const char* name, int arg1, int arg2, int arg3, int arg4);
37
+
38
+ void set_uniform (const char* name, const int* args, size_t size);
39
+
40
+ void set_uniform (const char* name, float arg1);
29
41
 
30
- bool operator == (const Shader& rhs) const;
42
+ void set_uniform (const char* name, float arg1, float arg2);
31
43
 
32
- bool operator != (const Shader& rhs) const;
44
+ void set_uniform (const char* name, float arg1, float arg2, float arg3);
45
+
46
+ void set_uniform (const char* name, float arg1, float arg2, float arg3, float arg4);
47
+
48
+ void set_uniform (const char* name, const float* args, size_t size);
49
+
50
+ void set_uniform (const char* name, const Coord2& vec2);
51
+
52
+ void set_uniform (const char* name, const Coord3& vec3);
53
+
54
+ void set_uniform (const char* name, const Coord4& vec4);
55
+
56
+ void set_uniform (const char* name, const Image& texture);
33
57
 
34
58
  operator bool () const;
35
59
 
36
60
  bool operator ! () const;
37
61
 
62
+ friend bool operator == (const This& lhs, const This& rhs);
63
+
64
+ friend bool operator != (const This& lhs, const This& rhs);
65
+
38
66
  struct Data;
39
67
 
40
- Xot::PImpl<Data, true> self;
68
+ Xot::PSharedImpl<Data> self;
41
69
 
42
70
  };// Shader
43
71
 
@@ -8,9 +8,14 @@ require 'rays/point'
8
8
  require 'rays/bounds'
9
9
  require 'rays/color'
10
10
  require 'rays/color_space'
11
+ require 'rays/matrix'
12
+
13
+ require 'rays/painter'
14
+ require 'rays/polyline'
15
+ require 'rays/polygon'
16
+ require 'rays/polygon_line'
11
17
  require 'rays/bitmap'
12
- require 'rays/texture'
13
18
  require 'rays/image'
14
19
  require 'rays/font'
15
20
  require 'rays/shader'
16
- require 'rays/painter'
21
+ require 'rays/camera'
@@ -2,7 +2,6 @@
2
2
 
3
3
 
4
4
  require 'rays/ext'
5
- require 'rays/color_space'
6
5
 
7
6
 
8
7
  module Rays
@@ -12,10 +11,6 @@ module Rays
12
11
 
13
12
  include Enumerable
14
13
 
15
- def initialize (width, height, color_space = :RGBA)
16
- setup width, height, ColorSpace.get_color_space(color_space)
17
- end
18
-
19
14
  def each ()
20
15
  height.times do |y|
21
16
  width.times do |x|
@@ -32,16 +27,6 @@ module Rays
32
27
  map {|o| o}
33
28
  end
34
29
 
35
- def []= (x, y, *args)
36
- args.flatten!
37
- case args[0]
38
- when Color
39
- set_at x, y, args[0]
40
- when Numeric
41
- set_at x, y, *args
42
- end
43
- end
44
-
45
30
  end# Bitmap
46
31
 
47
32
 
@@ -11,40 +11,29 @@ module Rays
11
11
  class Bounds
12
12
 
13
13
  include Comparable
14
+ include Enumerable
14
15
 
15
- alias w width
16
16
  alias w= width=
17
+ alias w width
17
18
 
18
- alias h height
19
19
  alias h= height=
20
+ alias h height
20
21
 
21
- alias d depth
22
22
  alias d= depth=
23
+ alias d depth
23
24
 
24
- def position= (*args)
25
- set_position *Point.from(*args).to_a(3)
26
- end
27
-
28
- alias pos position
29
25
  alias pos= position=
26
+ alias pos position
30
27
 
31
- def size= (*args)
32
- set_size *Point.from(*args).to_a(3)
33
- end
34
-
35
- def center= (*args)
36
- set_center *Point.from(*args).to_a(3)
37
- end
38
-
39
- alias left_top position
40
- def right_top () position.move_by w - 1, 0 end
41
- def left_bottom () position.move_by 0, h - 1 end
28
+ alias left_top position
29
+ def right_top () position .move_by w - 1, 0 end
30
+ def left_bottom () position .move_by 0, h - 1 end
42
31
  def right_bottom () (position + size).move_by! -1, -1 end
43
32
 
44
- def left_top= (*args) p = Point.from *args; self.left, self.top = p.x, p.y; left_top end
45
- def right_top= (*args) p = Point.from *args; self.right, self.top = p.x, p.y; right_top end
46
- def left_bottom= (*args) p = Point.from *args; self.left, self.bottom = p.x, p.y; left_bottom end
47
- def right_bottom= (*args) p = Point.from *args; self.right, self.bottom = p.x, p.y; right_bottom end
33
+ def left_top= (*args) p = Point.new *args; self.left, self.top = p.x, p.y; left_top end
34
+ def right_top= (*args) p = Point.new *args; self.right, self.top = p.x, p.y; right_top end
35
+ def left_bottom= (*args) p = Point.new *args; self.left, self.bottom = p.x, p.y; left_bottom end
36
+ def right_bottom= (*args) p = Point.new *args; self.right, self.bottom = p.x, p.y; right_bottom end
48
37
 
49
38
  alias lt left_top
50
39
  alias lt= left_top=
@@ -75,7 +64,12 @@ module Rays
75
64
  dup.inset_by! *args
76
65
  end
77
66
 
67
+ def each (dimension = 2, &block)
68
+ to_a(dimension).each &block
69
+ end
70
+
78
71
  def to_a (dimension = 2)
72
+ # TODO: return [lt, rb]
79
73
  case dimension
80
74
  when 1 then [x, w]
81
75
  when 2 then [x, y, w, h]
@@ -0,0 +1,24 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+
4
+ require 'xot/block_util'
5
+ require 'rays/ext'
6
+
7
+
8
+ module Rays
9
+
10
+
11
+ class Camera
12
+
13
+ def initialize (
14
+ min_width = -1, min_height = -1,
15
+ device_name: nil, resize: true, crop: true, &block)
16
+
17
+ setup device_name, min_width, min_height, resize, crop
18
+ Xot::BlockUtil.instance_eval_or_block_call self, &block if block
19
+ end
20
+
21
+ end# Camera
22
+
23
+
24
+ end# Rays