rays 0.1.6 → 0.1.7

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 (113) hide show
  1. checksums.yaml +7 -0
  2. data/.doc/ext/rays/bitmap.cpp +70 -233
  3. data/.doc/ext/rays/bounds.cpp +339 -57
  4. data/.doc/ext/rays/color.cpp +58 -48
  5. data/.doc/ext/rays/color_space.cpp +174 -0
  6. data/.doc/ext/rays/font.cpp +31 -53
  7. data/.doc/ext/rays/image.cpp +64 -67
  8. data/.doc/ext/rays/matrix.cpp +22 -50
  9. data/.doc/ext/rays/native.cpp +9 -2
  10. data/.doc/ext/rays/painter.cpp +276 -259
  11. data/.doc/ext/rays/point.cpp +186 -52
  12. data/.doc/ext/rays/rays.cpp +25 -20
  13. data/.doc/ext/rays/shader.cpp +61 -0
  14. data/.doc/ext/rays/texture.cpp +47 -59
  15. data/{README → README.md} +0 -0
  16. data/Rakefile +6 -5
  17. data/VERSION +1 -1
  18. data/ext/rays/bitmap.cpp +88 -248
  19. data/ext/rays/bounds.cpp +437 -141
  20. data/ext/rays/color.cpp +79 -69
  21. data/ext/rays/color_space.cpp +185 -0
  22. data/ext/rays/extconf.rb +14 -63
  23. data/ext/rays/font.cpp +44 -65
  24. data/ext/rays/image.cpp +82 -81
  25. data/ext/rays/matrix.cpp +32 -60
  26. data/ext/rays/native.cpp +9 -2
  27. data/ext/rays/painter.cpp +345 -321
  28. data/ext/rays/point.cpp +212 -69
  29. data/ext/rays/rays.cpp +29 -23
  30. data/ext/rays/shader.cpp +63 -0
  31. data/ext/rays/texture.cpp +64 -74
  32. data/include/rays/bitmap.h +21 -12
  33. data/include/rays/bounds.h +67 -9
  34. data/include/rays/color.h +23 -7
  35. data/include/rays/{colorspace.h → color_space.h} +6 -3
  36. data/include/rays/exception.h +17 -11
  37. data/include/rays/font.h +4 -3
  38. data/include/rays/image.h +11 -6
  39. data/include/rays/matrix.h +15 -12
  40. data/include/rays/opengl.h +54 -1
  41. data/include/rays/painter.h +98 -108
  42. data/include/rays/point.h +45 -5
  43. data/include/rays/rays.h +2 -2
  44. data/include/rays/ruby/bitmap.h +2 -16
  45. data/include/rays/ruby/bounds.h +4 -16
  46. data/include/rays/ruby/color.h +3 -16
  47. data/include/rays/ruby/color_space.h +27 -0
  48. data/include/rays/ruby/font.h +2 -16
  49. data/include/rays/ruby/image.h +2 -16
  50. data/include/rays/ruby/matrix.h +2 -16
  51. data/include/rays/ruby/painter.h +2 -16
  52. data/include/rays/ruby/point.h +3 -16
  53. data/include/rays/ruby/shader.h +27 -0
  54. data/include/rays/ruby/texture.h +2 -16
  55. data/include/rays/ruby.h +1 -0
  56. data/include/rays/shader.h +48 -0
  57. data/include/rays/texture.h +13 -2
  58. data/include/rays.h +2 -1
  59. data/lib/rays/bitmap.rb +20 -11
  60. data/lib/rays/bounds.rb +29 -68
  61. data/lib/rays/color.rb +39 -0
  62. data/lib/rays/color_space.rb +33 -0
  63. data/lib/rays/font.rb +29 -0
  64. data/lib/rays/image.rb +22 -0
  65. data/lib/rays/module.rb +11 -7
  66. data/lib/rays/painter.rb +103 -40
  67. data/lib/rays/point.rb +19 -36
  68. data/lib/rays/shader.rb +13 -0
  69. data/lib/rays/texture.rb +9 -0
  70. data/lib/rays.rb +4 -0
  71. data/rays.gemspec +3 -4
  72. data/src/bounds.cpp +272 -63
  73. data/src/color.cpp +168 -21
  74. data/src/{colorspace.cpp → color_space.cpp} +38 -1
  75. data/src/exception.cpp +24 -15
  76. data/src/frame_buffer.cpp +275 -0
  77. data/src/frame_buffer.h +79 -0
  78. data/src/image.cpp +80 -36
  79. data/src/ios/bitmap.mm +340 -0
  80. data/src/ios/font.mm +206 -0
  81. data/src/{cocoa → ios}/helper.h +2 -2
  82. data/src/{cocoa → ios}/helper.mm +0 -0
  83. data/src/ios/opengl.mm +21 -0
  84. data/src/ios/program.cpp +122 -0
  85. data/src/{cocoa → ios}/rays.mm +8 -7
  86. data/src/matrix.cpp +10 -22
  87. data/src/opengl.cpp +64 -0
  88. data/src/{cocoa → osx}/bitmap.mm +121 -70
  89. data/src/{cocoa → osx}/font.mm +32 -24
  90. data/src/osx/helper.h +26 -0
  91. data/src/osx/helper.mm +25 -0
  92. data/src/osx/opengl.mm +103 -0
  93. data/src/osx/rays.mm +43 -0
  94. data/src/painter.cpp +596 -422
  95. data/src/point.cpp +154 -11
  96. data/src/program.cpp +513 -0
  97. data/src/program.h +73 -0
  98. data/src/render_buffer.cpp +120 -0
  99. data/src/render_buffer.h +47 -0
  100. data/src/shader.cpp +117 -0
  101. data/src/texture.cpp +104 -134
  102. data/test/helper.rb +10 -3
  103. data/test/test_bitmap.rb +18 -0
  104. data/test/test_bounds.rb +81 -35
  105. data/test/test_color.rb +29 -2
  106. data/test/test_image.rb +63 -0
  107. data/test/test_painter.rb +120 -0
  108. data/test/test_point.rb +30 -9
  109. data/test/test_shader.rb +37 -0
  110. data/test/test_texture.rb +18 -0
  111. metadata +75 -58
  112. data/.gitignore +0 -14
  113. data/ChangeLog +0 -8
data/src/program.h ADDED
@@ -0,0 +1,73 @@
1
+ // -*- c++ -*-
2
+ #pragma once
3
+ #ifndef __RAYS_PROGRAM_H__
4
+ #define __RAYS_PROGRAM_H__
5
+
6
+
7
+ #include <xot/pimpl.h>
8
+ #include <rays/opengl.h>
9
+
10
+
11
+ namespace Rays
12
+ {
13
+
14
+
15
+ class Shader;
16
+
17
+
18
+ class Program
19
+ {
20
+
21
+ typedef Program This;
22
+
23
+ public:
24
+
25
+ Program ();
26
+
27
+ ~Program ();
28
+
29
+ void attach (const Shader& shader);
30
+
31
+ void detach (const Shader& shader);
32
+
33
+ void set_uniform (const char* name, int arg1);
34
+
35
+ void set_uniform (const char* name, int arg1, int arg2);
36
+
37
+ void set_uniform (const char* name, int arg1, int arg2, int arg3);
38
+
39
+ void set_uniform (const char* name, int arg1, int arg2, int arg3, int arg4);
40
+
41
+ void set_uniform (const char* name, const int* args, size_t size);
42
+
43
+ void set_uniform (const char* name, float arg1);
44
+
45
+ void set_uniform (const char* name, float arg1, float arg2);
46
+
47
+ void set_uniform (const char* name, float arg1, float arg2, float arg3);
48
+
49
+ void set_uniform (const char* name, float arg1, float arg2, float arg3, float arg4);
50
+
51
+ void set_uniform (const char* name, const float* args, size_t size);
52
+
53
+ void push ();
54
+
55
+ void pop ();
56
+
57
+ GLuint id () const;
58
+
59
+ operator bool () const;
60
+
61
+ bool operator ! () const;
62
+
63
+ struct Data;
64
+
65
+ Xot::PImpl<Data, true> self;
66
+
67
+ };// Program
68
+
69
+
70
+ }// Rays
71
+
72
+
73
+ #endif//EOH
@@ -0,0 +1,120 @@
1
+ #include "render_buffer.h"
2
+
3
+
4
+ #include "rays/exception.h"
5
+
6
+
7
+ namespace Rays
8
+ {
9
+
10
+
11
+ struct RenderBuffer::Data
12
+ {
13
+
14
+ int id, width, height;
15
+
16
+ Data ()
17
+ : id(-1), width(0), height(0)
18
+ {
19
+ }
20
+
21
+ ~Data ()
22
+ {
23
+ clear();
24
+ }
25
+
26
+ void create (int width_, int height_)
27
+ {
28
+ if (width_ <= 0 || height_ <= 0)
29
+ argument_error(__FILE__, __LINE__);
30
+
31
+ if (is_valid())
32
+ {
33
+ if (width != width_ || height == height_)
34
+ {
35
+ argument_error(__FILE__, __LINE__,
36
+ "RenderBuffer is already created and "
37
+ "width/height parameters is not same as current width/height.");
38
+ }
39
+ return;
40
+ }
41
+
42
+ GLuint id_ = 0;
43
+ glGenRenderbuffers(1, &id_);
44
+ check_error(__FILE__, __LINE__);
45
+
46
+ id = id_;
47
+ glBindRenderbuffer(GL_RENDERBUFFER, id_);
48
+ check_error(__FILE__, __LINE__);
49
+
50
+ glRenderbufferStorage(
51
+ GL_RENDERBUFFER, GL_DEPTH_COMPONENT24, width, height);
52
+ check_error(__FILE__, __LINE__);
53
+
54
+ width = width_;
55
+ height = height_;
56
+ }
57
+
58
+ void clear ()
59
+ {
60
+ if (id >= 0)
61
+ {
62
+ GLenum id_ = id;
63
+ glDeleteRenderbuffers(1, &id_);
64
+ }
65
+
66
+ id = -1;
67
+ }
68
+
69
+ bool is_valid () const
70
+ {
71
+ return id >= 0;
72
+ }
73
+
74
+ };// RenderBuffer::Data
75
+
76
+
77
+ RenderBuffer::RenderBuffer ()
78
+ {
79
+ }
80
+
81
+ RenderBuffer::RenderBuffer (int width, int height)
82
+ {
83
+ self->create(width, height);
84
+ }
85
+
86
+ RenderBuffer::~RenderBuffer ()
87
+ {
88
+ }
89
+
90
+ GLuint
91
+ RenderBuffer::id () const
92
+ {
93
+ return self->id;
94
+ }
95
+
96
+ int
97
+ RenderBuffer::width () const
98
+ {
99
+ return self->width;
100
+ }
101
+
102
+ int
103
+ RenderBuffer::height () const
104
+ {
105
+ return self->height;
106
+ }
107
+
108
+ RenderBuffer::operator bool () const
109
+ {
110
+ return self && self->is_valid();
111
+ }
112
+
113
+ bool
114
+ RenderBuffer::operator ! () const
115
+ {
116
+ return !operator bool();
117
+ }
118
+
119
+
120
+ }// Rays
@@ -0,0 +1,47 @@
1
+ // -*- c++ -*-
2
+ #pragma once
3
+ #ifndef __RAYS_RENDER_BUFFER_H__
4
+ #define __RAYS_RENDER_BUFFER_H__
5
+
6
+
7
+ #include <xot/pimpl.h>
8
+ #include <rays/defs.h>
9
+ #include <rays/opengl.h>
10
+
11
+
12
+ namespace Rays
13
+ {
14
+
15
+
16
+ class RenderBuffer
17
+ {
18
+
19
+ public:
20
+
21
+ RenderBuffer ();
22
+
23
+ RenderBuffer (int width, int height);
24
+
25
+ ~RenderBuffer ();
26
+
27
+ GLuint id () const;
28
+
29
+ int width () const;
30
+
31
+ int height () const;
32
+
33
+ operator bool () const;
34
+
35
+ bool operator ! () const;
36
+
37
+ struct Data;
38
+
39
+ Xot::PImpl<Data, true> self;
40
+
41
+ };// RenderBuffer
42
+
43
+
44
+ }// Rays
45
+
46
+
47
+ #endif//EOH
data/src/shader.cpp ADDED
@@ -0,0 +1,117 @@
1
+ #include "rays/shader.h"
2
+
3
+
4
+ #include <boost/scoped_array.hpp>
5
+ #include "rays/exception.h"
6
+
7
+
8
+ namespace Rays
9
+ {
10
+
11
+
12
+ struct Shader::Data
13
+ {
14
+
15
+ int id;
16
+
17
+ Data ()
18
+ : id(-1)
19
+ {
20
+ }
21
+
22
+ ~Data ()
23
+ {
24
+ clear();
25
+ }
26
+
27
+ void clear ()
28
+ {
29
+ if (id >= 0) glDeleteShader((GLuint) id);
30
+
31
+ id = -1;
32
+ }
33
+
34
+ bool is_valid () const
35
+ {
36
+ return id >= 0;
37
+ }
38
+
39
+ };// Shader::Data
40
+
41
+
42
+ void
43
+ compile_shader (Shader* this_, const char* source)
44
+ {
45
+ if (!this_ || !source)
46
+ argument_error(__FILE__, __LINE__);
47
+
48
+ Shader::Data* self = this_->self.get();
49
+ if (self->is_valid())
50
+ invalid_state_error(__FILE__, __LINE__);
51
+
52
+ self->id = glCreateShader(GL_FRAGMENT_SHADER);
53
+ glShaderSource(self->id, 1, &source, NULL);
54
+ glCompileShader(self->id);
55
+
56
+ GLint status = GL_FALSE;
57
+ glGetShaderiv(self->id, GL_COMPILE_STATUS, &status);
58
+ if (status == GL_FALSE)
59
+ {
60
+ int len = 0;
61
+ glGetShaderiv(self->id, GL_INFO_LOG_LENGTH, &len);
62
+
63
+ boost::scoped_array<char> buffer(new char[len]);
64
+ int written = 0;
65
+ glGetShaderInfoLog(self->id, len, &written, &buffer[0]);
66
+
67
+ opengl_error(__FILE__, __LINE__, &buffer[0]);
68
+ }
69
+
70
+ check_error(__FILE__, __LINE__);
71
+ }
72
+
73
+
74
+ Shader::Shader ()
75
+ {
76
+ }
77
+
78
+ Shader::Shader (const char* source)
79
+ {
80
+ compile_shader(this, source);
81
+ }
82
+
83
+ Shader::~Shader ()
84
+ {
85
+ }
86
+
87
+ GLuint
88
+ Shader::id () const
89
+ {
90
+ return self->id;
91
+ }
92
+
93
+ bool
94
+ Shader::operator == (const Shader& rhs) const
95
+ {
96
+ return self->id == rhs.self->id;
97
+ }
98
+
99
+ bool
100
+ Shader::operator != (const Shader& rhs) const
101
+ {
102
+ return !operator==(rhs);
103
+ }
104
+
105
+ Shader::operator bool () const
106
+ {
107
+ return self->is_valid();
108
+ }
109
+
110
+ bool
111
+ Shader::operator ! () const
112
+ {
113
+ return !operator bool();
114
+ }
115
+
116
+
117
+ }// Rays