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
@@ -1,4 +1,4 @@
1
- #include "rays/color_space.h"
1
+ #include "color_space.h"
2
2
 
3
3
 
4
4
  #include <assert.h>
@@ -13,13 +13,15 @@ namespace Rays
13
13
  enum
14
14
  {
15
15
 
16
- FIRST = GRAY_8, LAST = ABGR_float,
16
+ FIRST = GRAY_8, LAST = ABGR_float,
17
17
 
18
- GRAY_FIRST = GRAY_8, GRAY_LAST = GRAY_float,
18
+ GRAY_FIRST = GRAY_8, GRAY_LAST = GRAY_float,
19
19
 
20
- RGB_FIRST = RGB_888, RGB_LAST = ABGR_float,
20
+ ALPHA_FIRST = ALPHA_8, ALPHA_LAST = ALPHA_float,
21
21
 
22
- FLOAT_SECOND = RGB_float, FLOAT_LAST = ABGR_float,
22
+ RGB_FIRST = RGB_888, RGB_LAST = ABGR_float,
23
+
24
+ RGB_FLOAT_FIRST = RGB_float, RGB_FLOAT_LAST = ABGR_float,
23
25
 
24
26
  };
25
27
 
@@ -45,12 +47,15 @@ namespace Rays
45
47
  {
46
48
  static const int BPPS[] =
47
49
  {
48
- 0, // UNKNOWN
49
- 8, 16, 24, 32, 32, // GRAY
50
- 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, // RGB(A), BGR(A)
51
- 32, 32, 32, 32, 32, 32, // RGB(A), BGR(A) float
50
+ 0, // UNKNOWN
51
+ 8, 16, 24, 32, 32, // GRAY
52
+ 8, 16, 24, 32, 32, // ALPHA
53
+ 8, 8, 8, 8, 8, // RGB(A),
54
+ 8, 8, 8, 8, 8, // BGR(A)
55
+ 32, 32, 32, // RGB(A) float
56
+ 32, 32, 32, // BGR(A) float
52
57
  };
53
- if (type_ < 0 || COLORSPACE_LAST <= type_) return BPPS[COLORSPACE_UNKNOWN];
58
+ if (type_ < 0 || COLORSPACE_MAX <= type_) return BPPS[COLORSPACE_UNKNOWN];
54
59
  return BPPS[type_];
55
60
  }
56
61
 
@@ -67,12 +72,13 @@ namespace Rays
67
72
  {
68
73
  0, // UNKNOWN
69
74
  8, 16, 24, 32, 32, // GRAY
75
+ 8, 16, 24, 32, 32, // ALPHA
70
76
  24, 32, 32, 32, 32, // RGB(A)
71
77
  24, 32, 32, 32, 32, // BGR(A)
72
78
  96, 128, 128, // RGB(A) float
73
79
  96, 128, 128, // BGR(A) float
74
80
  };
75
- if (type_ < 0 || COLORSPACE_LAST <= type_) return BPPS[COLORSPACE_UNKNOWN];
81
+ if (type_ < 0 || COLORSPACE_MAX <= type_) return BPPS[COLORSPACE_UNKNOWN];
76
82
  return BPPS[type_];
77
83
  }
78
84
 
@@ -91,7 +97,13 @@ namespace Rays
91
97
  bool
92
98
  ColorSpace::is_gray () const
93
99
  {
94
- return GRAY_FIRST <= (int) type_ && (int) type_ <= GRAY_LAST;
100
+ return GRAY_FIRST <= (int) type_ && (int) type_ <= GRAY_LAST;
101
+ }
102
+
103
+ bool
104
+ ColorSpace::is_alpha () const
105
+ {
106
+ return ALPHA_FIRST <= (int) type_ && (int) type_ <= ALPHA_LAST;
95
107
  }
96
108
 
97
109
  bool
@@ -114,14 +126,15 @@ namespace Rays
114
126
  ColorSpace::is_float () const
115
127
  {
116
128
  return
117
- type_ == GRAY_float ||
118
- (FLOAT_SECOND <= (int) type_ && (int) type_ <= FLOAT_LAST);
129
+ type_ == GRAY_float || type_ == ALPHA_float ||
130
+ (RGB_FLOAT_FIRST <= (int) type_ && (int) type_ <= RGB_FLOAT_LAST);
119
131
  }
120
132
 
121
133
  bool
122
134
  ColorSpace::has_alpha () const
123
135
  {
124
136
  return
137
+ (ALPHA_FIRST <= type_ && type_ <= ALPHA_LAST) ||
125
138
  type_ == RGBA_8888 || type_ == ARGB_8888 ||
126
139
  type_ == BGRA_8888 || type_ == ABGR_8888 ||
127
140
  type_ == RGBA_float || type_ == ARGB_float ||
@@ -170,51 +183,56 @@ namespace Rays
170
183
  return premult;
171
184
  }
172
185
 
186
+ ColorSpace::operator bool () const
187
+ {
188
+ return FIRST <= (int) type_ && (int) type_ <= LAST;
189
+ }
190
+
191
+ bool
192
+ ColorSpace::operator ! () const
193
+ {
194
+ return !operator bool();
195
+ }
196
+
197
+
173
198
  void
174
- ColorSpace::get_gl_enums (GLenum* format, GLenum* type, bool alpha_only) const
199
+ ColorSpace_get_gl_format_and_type (
200
+ GLenum* format, GLenum* type, const ColorSpace& cs)
175
201
  {
176
202
  if (!format && !type)
177
203
  argument_error(__FILE__, __LINE__);
178
204
 
179
- if (!*this)
205
+ if (!cs)
180
206
  invalid_state_error(__FILE__, __LINE__);
181
207
 
182
208
  if (format)
183
209
  {
184
- if (is_rgb()) *format = has_alpha() ? GL_RGBA : GL_RGB;
210
+ if (cs.is_rgb()) *format = cs.has_alpha() ? GL_RGBA : GL_RGB;
185
211
  #ifndef IOS
186
- else if (is_bgr()) *format = has_alpha() ? GL_BGRA : GL_BGR;
212
+ else if (cs.is_bgr()) *format = cs.has_alpha() ? GL_BGRA : GL_BGR;
187
213
  #endif
188
- else if (is_gray()) *format = alpha_only ? GL_ALPHA : GL_LUMINANCE;
189
- else rays_error(__FILE__, __LINE__, "invalid color space.");
214
+ else if (cs.is_gray()) *format = GL_LUMINANCE;
215
+ else if (cs.is_alpha()) *format = GL_ALPHA;
216
+ else
217
+ rays_error(__FILE__, __LINE__, "invalid color space.");
190
218
  }
191
219
 
192
220
  if (type)
193
221
  {
194
- if (is_float())
222
+ if (cs.is_float())
195
223
  *type = GL_FLOAT;
196
- else switch (bpc())
224
+ else switch (cs.bpc())
197
225
  {
198
226
  case 8: *type = GL_UNSIGNED_BYTE; break;
199
227
  case 16: *type = GL_UNSIGNED_SHORT; break;
200
228
  #ifndef IOS
201
229
  case 32: *type = GL_UNSIGNED_INT; break;
202
230
  #endif
203
- default: rays_error(__FILE__, __LINE__, "invalid bpc.");
231
+ default:
232
+ rays_error(__FILE__, __LINE__, "invalid bpc.");
204
233
  }
205
234
  }
206
235
  }
207
236
 
208
- ColorSpace::operator bool () const
209
- {
210
- return FIRST <= (int) type_ && (int) type_ <= LAST;
211
- }
212
-
213
- bool
214
- ColorSpace::operator ! () const
215
- {
216
- return !operator bool();
217
- }
218
-
219
237
 
220
238
  }// Rays
@@ -0,0 +1,22 @@
1
+ // -*- c++ -*-
2
+ #pragma once
3
+ #ifndef __RAYS_SRC_COLOR_SPACE_H__
4
+ #define __RAYS_SRC_COLOR_SPACE_H__
5
+
6
+
7
+ #include <rays/color_space.h>
8
+ #include "opengl.h"
9
+
10
+
11
+ namespace Rays
12
+ {
13
+
14
+
15
+ void ColorSpace_get_gl_format_and_type (
16
+ GLenum* format, GLenum* type, const ColorSpace& cs);
17
+
18
+
19
+ }// Rays
20
+
21
+
22
+ #endif//EOH
@@ -0,0 +1,170 @@
1
+ #include "coord.h"
2
+
3
+
4
+ #include <xot/string.h>
5
+ #include "rays/exception.h"
6
+
7
+
8
+ namespace Rays
9
+ {
10
+
11
+
12
+ Coord2&
13
+ Coord2::reset (coord value)
14
+ {
15
+ return reset(value, value);
16
+ }
17
+
18
+ Coord2&
19
+ Coord2::reset (coord x, coord y)
20
+ {
21
+ this->x = x;
22
+ this->y = y;
23
+ return *this;
24
+ }
25
+
26
+ size_t
27
+ Coord2::size () const
28
+ {
29
+ return SIZE;
30
+ }
31
+
32
+ String
33
+ Coord2::inspect () const
34
+ {
35
+ return Xot::stringf("x=%f y=%f", x, y);
36
+ }
37
+
38
+ coord&
39
+ Coord2::operator [] (size_t index)
40
+ {
41
+ if (index >= 2)
42
+ argument_error(__FILE__, __LINE__);
43
+
44
+ return array[index];
45
+ }
46
+
47
+ const coord&
48
+ Coord2::operator [] (size_t index) const
49
+ {
50
+ return const_cast<Coord2*>(this)->operator[](index);
51
+ }
52
+
53
+
54
+ Coord3&
55
+ Coord3::operator = (const Coord2& rhs)
56
+ {
57
+ x = rhs.x;
58
+ y = rhs.y;
59
+ z = 0;
60
+ return *this;
61
+ }
62
+
63
+ Coord3&
64
+ Coord3::reset (coord value)
65
+ {
66
+ return reset(value, value);
67
+ }
68
+
69
+ Coord3&
70
+ Coord3::reset (coord x, coord y, coord z)
71
+ {
72
+ this->x = x;
73
+ this->y = y;
74
+ this->z = z;
75
+ return *this;
76
+ }
77
+
78
+ size_t
79
+ Coord3::size () const
80
+ {
81
+ return SIZE;
82
+ }
83
+
84
+ String
85
+ Coord3::inspect () const
86
+ {
87
+ return Xot::stringf("x=%f y=%f z=%f", x, y, z);
88
+ }
89
+
90
+ coord&
91
+ Coord3::operator [] (size_t index)
92
+ {
93
+ if (index >= 3)
94
+ argument_error(__FILE__, __LINE__);
95
+
96
+ return array[index];
97
+ }
98
+
99
+ const coord&
100
+ Coord3::operator [] (size_t index) const
101
+ {
102
+ return const_cast<Coord3*>(this)->operator[](index);
103
+ }
104
+
105
+
106
+ Coord4&
107
+ Coord4::operator = (const Coord2& rhs)
108
+ {
109
+ x = rhs.x;
110
+ y = rhs.y;
111
+ z = 0;
112
+ w = 1;
113
+ return *this;
114
+ }
115
+
116
+ Coord4&
117
+ Coord4::operator = (const Coord3& rhs)
118
+ {
119
+ x = rhs.x;
120
+ y = rhs.y;
121
+ z = rhs.z;
122
+ w = 1;
123
+ return *this;
124
+ }
125
+
126
+ Coord4&
127
+ Coord4::reset (coord value)
128
+ {
129
+ return reset(value, value, value);
130
+ }
131
+
132
+ Coord4&
133
+ Coord4::reset (coord x, coord y, coord z, coord w)
134
+ {
135
+ this->x = x;
136
+ this->y = y;
137
+ this->z = z;
138
+ this->w = w;
139
+ return *this;
140
+ }
141
+
142
+ size_t
143
+ Coord4::size () const
144
+ {
145
+ return SIZE;
146
+ }
147
+
148
+ String
149
+ Coord4::inspect () const
150
+ {
151
+ return Xot::stringf("x=%f y=%f z=%f w=%f", x, y, z, w);
152
+ }
153
+
154
+ coord&
155
+ Coord4::operator [] (size_t index)
156
+ {
157
+ if (index >= 4)
158
+ argument_error(__FILE__, __LINE__);
159
+
160
+ return array[index];
161
+ }
162
+
163
+ const coord&
164
+ Coord4::operator [] (size_t index) const
165
+ {
166
+ return const_cast<Coord4*>(this)->operator[](index);
167
+ }
168
+
169
+
170
+ }// Rays
@@ -0,0 +1,35 @@
1
+ // -*- c++ -*-
2
+ #pragma once
3
+ #ifndef __RAYS_SRC_COORD_H__
4
+ #define __RAYS_SRC_COORD_H__
5
+
6
+
7
+ #include <glm/vec2.hpp>
8
+ #include <glm/vec3.hpp>
9
+ #include <rays/coord.h>
10
+
11
+
12
+ namespace Rays
13
+ {
14
+
15
+
16
+ typedef glm::tvec3<coord, glm::defaultp> Vec3;
17
+
18
+ typedef glm::tvec4<coord, glm::defaultp> Vec4;
19
+
20
+
21
+ inline Vec3& to_glm ( Coord3& val) {return *( Vec3*) &val;}
22
+
23
+ inline const Vec3& to_glm (const Coord3& val) {return *(const Vec3*) &val;}
24
+
25
+ template <typename T>
26
+ inline T& to_rays ( Vec3& val) {return *( T*) &val;}
27
+
28
+ template <typename T>
29
+ inline const T& to_rays (const Vec3& val) {return *(const T*) &val;}
30
+
31
+
32
+ }// Rays
33
+
34
+
35
+ #endif//EOH
@@ -0,0 +1,118 @@
1
+ #include "font.h"
2
+
3
+
4
+ #include <assert.h>
5
+
6
+
7
+ namespace Rays
8
+ {
9
+
10
+
11
+ struct Font::Data
12
+ {
13
+
14
+ RawFont rawfont;
15
+
16
+ mutable RawFont rawfont_for_pixel_density;
17
+
18
+ mutable float for_pixel_density = 1;
19
+
20
+ const RawFont& get_raw (float pixel_density) const
21
+ {
22
+ assert(pixel_density > 0);
23
+
24
+ if (!rawfont || pixel_density == 1)
25
+ return rawfont;
26
+
27
+ if (pixel_density != for_pixel_density)
28
+ {
29
+ rawfont_for_pixel_density =
30
+ RawFont(rawfont.name(), rawfont.size() * pixel_density);
31
+ for_pixel_density = pixel_density;
32
+ }
33
+
34
+ return rawfont_for_pixel_density;
35
+ }
36
+
37
+ };// Font::Data
38
+
39
+
40
+ const Font&
41
+ default_font ()
42
+ {
43
+ static const Font FONT(NULL);
44
+ return FONT;
45
+ }
46
+
47
+ const RawFont&
48
+ Font_get_raw (const Font& font, float pixel_density)
49
+ {
50
+ return font.self->get_raw(pixel_density);
51
+ }
52
+
53
+ coord
54
+ Font_get_width (const Font& font, float pixel_density, const char* str)
55
+ {
56
+ return Font_get_raw(font, pixel_density).get_width(str);
57
+ }
58
+
59
+ coord
60
+ Font_get_height (
61
+ const Font& font, float pixel_density,
62
+ coord* ascent, coord* descent, coord* leading)
63
+ {
64
+ return Font_get_raw(font, pixel_density)
65
+ .get_height(ascent, descent, leading);
66
+ }
67
+
68
+
69
+ Font::Font ()
70
+ {
71
+ }
72
+
73
+ Font::Font (const char* name, coord size)
74
+ {
75
+ self->rawfont = RawFont(name, size);
76
+ }
77
+
78
+ Font::~Font ()
79
+ {
80
+ }
81
+
82
+ String
83
+ Font::name () const
84
+ {
85
+ return self->rawfont.name();
86
+ }
87
+
88
+ coord
89
+ Font::size () const
90
+ {
91
+ return self->rawfont.size();
92
+ }
93
+
94
+ coord
95
+ Font::get_width (const char* str) const
96
+ {
97
+ return self->rawfont.get_width(str);
98
+ }
99
+
100
+ coord
101
+ Font::get_height (coord* ascent, coord* descent, coord* leading) const
102
+ {
103
+ return self->rawfont.get_height(ascent, descent, leading);
104
+ }
105
+
106
+ Font::operator bool () const
107
+ {
108
+ return !!self->rawfont;
109
+ }
110
+
111
+ bool
112
+ Font::operator ! () const
113
+ {
114
+ return !operator bool();
115
+ }
116
+
117
+
118
+ }// Rays