rays 0.1.6 → 0.1.7

Sign up to get free protection for your applications and to get access to all the features.
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