cairo 1.8.3-x86-mingw32

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of cairo might be problematic. Click here for more details.

Files changed (352) hide show
  1. data/AUTHORS +4 -0
  2. data/COPYING +59 -0
  3. data/GPL +340 -0
  4. data/NEWS +163 -0
  5. data/Rakefile +190 -0
  6. data/doc/doc.css +91 -0
  7. data/doc/en/cairo-antialias.html +38 -0
  8. data/doc/en/cairo-clip-not-representable-error.html +47 -0
  9. data/doc/en/cairo-color-base.html +69 -0
  10. data/doc/en/cairo-color-cmyk.html +157 -0
  11. data/doc/en/cairo-color-hsv.html +137 -0
  12. data/doc/en/cairo-color-rgb.html +142 -0
  13. data/doc/en/cairo-color-x11.html +173 -0
  14. data/doc/en/cairo-color.html +238 -0
  15. data/doc/en/cairo-content.html +37 -0
  16. data/doc/en/cairo-context-blur.html +39 -0
  17. data/doc/en/cairo-context-circle.html +39 -0
  18. data/doc/en/cairo-context-color.html +39 -0
  19. data/doc/en/cairo-context-path.html +44 -0
  20. data/doc/en/cairo-context-rectangle.html +39 -0
  21. data/doc/en/cairo-context-triangle.html +39 -0
  22. data/doc/en/cairo-context.html +643 -0
  23. data/doc/en/cairo-error.html +44 -0
  24. data/doc/en/cairo-extend.html +38 -0
  25. data/doc/en/cairo-file-not-found.html +47 -0
  26. data/doc/en/cairo-fill-rule.html +36 -0
  27. data/doc/en/cairo-filter.html +40 -0
  28. data/doc/en/cairo-font-extents.html +129 -0
  29. data/doc/en/cairo-font-face.html +38 -0
  30. data/doc/en/cairo-font-options.html +139 -0
  31. data/doc/en/cairo-font-slant.html +37 -0
  32. data/doc/en/cairo-font-type-mismatch.html +47 -0
  33. data/doc/en/cairo-font-weight.html +36 -0
  34. data/doc/en/cairo-format.html +46 -0
  35. data/doc/en/cairo-glyph.html +99 -0
  36. data/doc/en/cairo-gradient-pattern.html +74 -0
  37. data/doc/en/cairo-hint-metrics.html +37 -0
  38. data/doc/en/cairo-hint-style.html +39 -0
  39. data/doc/en/cairo-image-surface.html +82 -0
  40. data/doc/en/cairo-invalid-clusters.html +47 -0
  41. data/doc/en/cairo-invalid-content-error.html +47 -0
  42. data/doc/en/cairo-invalid-dash-error.html +47 -0
  43. data/doc/en/cairo-invalid-dsc-comment-error.html +47 -0
  44. data/doc/en/cairo-invalid-format-error.html +47 -0
  45. data/doc/en/cairo-invalid-index-error.html +47 -0
  46. data/doc/en/cairo-invalid-matrix-error.html +47 -0
  47. data/doc/en/cairo-invalid-path-data-error.html +47 -0
  48. data/doc/en/cairo-invalid-pop-group-error.html +47 -0
  49. data/doc/en/cairo-invalid-restore-error.html +47 -0
  50. data/doc/en/cairo-invalid-slant.html +47 -0
  51. data/doc/en/cairo-invalid-status-error.html +47 -0
  52. data/doc/en/cairo-invalid-stride-error.html +47 -0
  53. data/doc/en/cairo-invalid-string-error.html +47 -0
  54. data/doc/en/cairo-invalid-visual-error.html +47 -0
  55. data/doc/en/cairo-invalid-weight.html +47 -0
  56. data/doc/en/cairo-line-cap.html +37 -0
  57. data/doc/en/cairo-line-join.html +37 -0
  58. data/doc/en/cairo-linear-pattern.html +60 -0
  59. data/doc/en/cairo-matrix.html +259 -0
  60. data/doc/en/cairo-negative-count.html +47 -0
  61. data/doc/en/cairo-no-current-point-error.html +47 -0
  62. data/doc/en/cairo-null-pointer-error.html +47 -0
  63. data/doc/en/cairo-operator.html +48 -0
  64. data/doc/en/cairo-paper-parse-error.html +47 -0
  65. data/doc/en/cairo-paper-unknown-paper-name.html +66 -0
  66. data/doc/en/cairo-paper-unknown-unit.html +66 -0
  67. data/doc/en/cairo-paper-unrecognized-paper-description.html +66 -0
  68. data/doc/en/cairo-paper.html +184 -0
  69. data/doc/en/cairo-path-close-path.html +49 -0
  70. data/doc/en/cairo-path-curve-to.html +49 -0
  71. data/doc/en/cairo-path-data-type.html +38 -0
  72. data/doc/en/cairo-path-data.html +98 -0
  73. data/doc/en/cairo-path-line-to.html +49 -0
  74. data/doc/en/cairo-path-move-to.html +49 -0
  75. data/doc/en/cairo-path.html +155 -0
  76. data/doc/en/cairo-pattern-type-mismatch-error.html +47 -0
  77. data/doc/en/cairo-pattern.html +99 -0
  78. data/doc/en/cairo-pdf-surface.html +57 -0
  79. data/doc/en/cairo-point.html +74 -0
  80. data/doc/en/cairo-ps-level.html +49 -0
  81. data/doc/en/cairo-ps-surface.html +92 -0
  82. data/doc/en/cairo-quartz-image-surface.html +57 -0
  83. data/doc/en/cairo-quartz-surface.html +57 -0
  84. data/doc/en/cairo-radial-pattern.html +60 -0
  85. data/doc/en/cairo-read-error.html +47 -0
  86. data/doc/en/cairo-rectangle.html +89 -0
  87. data/doc/en/cairo-scaled-font.html +94 -0
  88. data/doc/en/cairo-solid-pattern.html +62 -0
  89. data/doc/en/cairo-subpixel-order.html +39 -0
  90. data/doc/en/cairo-surface-finished-error.html +47 -0
  91. data/doc/en/cairo-surface-pattern.html +57 -0
  92. data/doc/en/cairo-surface-type-mismatch-error.html +47 -0
  93. data/doc/en/cairo-surface.html +121 -0
  94. data/doc/en/cairo-svg-surface.html +77 -0
  95. data/doc/en/cairo-svg-version.html +49 -0
  96. data/doc/en/cairo-temp-file-error.html +47 -0
  97. data/doc/en/cairo-text-cluster-flag.html +35 -0
  98. data/doc/en/cairo-text-cluster.html +84 -0
  99. data/doc/en/cairo-text-extents.html +144 -0
  100. data/doc/en/cairo-toy-font-face.html +67 -0
  101. data/doc/en/cairo-user-font-error.html +47 -0
  102. data/doc/en/cairo-user-font-face-text-to-glyphs-data.html +94 -0
  103. data/doc/en/cairo-user-font-face.html +72 -0
  104. data/doc/en/cairo-user-font-immutable.html +47 -0
  105. data/doc/en/cairo-win32-printing-surface.html +57 -0
  106. data/doc/en/cairo-win32-surface.html +62 -0
  107. data/doc/en/cairo-write-error.html +47 -0
  108. data/doc/en/cairo.html +131 -0
  109. data/doc/en/index.html +1154 -0
  110. data/doc/index.html +18 -0
  111. data/doc/ja/cairo-antialias.html +57 -0
  112. data/doc/ja/cairo-clip-not-representable-error.html +56 -0
  113. data/doc/ja/cairo-color-base.html +75 -0
  114. data/doc/ja/cairo-color-cmyk.html +152 -0
  115. data/doc/ja/cairo-color-hsv.html +135 -0
  116. data/doc/ja/cairo-color-rgb.html +145 -0
  117. data/doc/ja/cairo-color-x11.html +183 -0
  118. data/doc/ja/cairo-color.html +317 -0
  119. data/doc/ja/cairo-content.html +51 -0
  120. data/doc/ja/cairo-context-blur.html +53 -0
  121. data/doc/ja/cairo-context-circle.html +54 -0
  122. data/doc/ja/cairo-context-color.html +52 -0
  123. data/doc/ja/cairo-context-path.html +77 -0
  124. data/doc/ja/cairo-context-rectangle.html +60 -0
  125. data/doc/ja/cairo-context-triangle.html +47 -0
  126. data/doc/ja/cairo-context.html +1542 -0
  127. data/doc/ja/cairo-error.html +56 -0
  128. data/doc/ja/cairo-extend.html +56 -0
  129. data/doc/ja/cairo-file-not-found.html +51 -0
  130. data/doc/ja/cairo-fill-rule.html +58 -0
  131. data/doc/ja/cairo-filter.html +43 -0
  132. data/doc/ja/cairo-font-extents.html +164 -0
  133. data/doc/ja/cairo-font-face.html +55 -0
  134. data/doc/ja/cairo-font-options.html +189 -0
  135. data/doc/ja/cairo-font-slant.html +50 -0
  136. data/doc/ja/cairo-font-type-mismatch.html +52 -0
  137. data/doc/ja/cairo-font-weight.html +47 -0
  138. data/doc/ja/cairo-format.html +81 -0
  139. data/doc/ja/cairo-glyph.html +115 -0
  140. data/doc/ja/cairo-gradient-pattern.html +119 -0
  141. data/doc/ja/cairo-hint-metrics.html +57 -0
  142. data/doc/ja/cairo-hint-style.html +64 -0
  143. data/doc/ja/cairo-image-surface.html +131 -0
  144. data/doc/ja/cairo-invalid-clusters.html +55 -0
  145. data/doc/ja/cairo-invalid-content-error.html +54 -0
  146. data/doc/ja/cairo-invalid-dash-error.html +54 -0
  147. data/doc/ja/cairo-invalid-dsc-comment-error.html +54 -0
  148. data/doc/ja/cairo-invalid-format-error.html +54 -0
  149. data/doc/ja/cairo-invalid-index-error.html +54 -0
  150. data/doc/ja/cairo-invalid-matrix-error.html +54 -0
  151. data/doc/ja/cairo-invalid-path-data-error.html +54 -0
  152. data/doc/ja/cairo-invalid-pop-group-error.html +54 -0
  153. data/doc/ja/cairo-invalid-restore-error.html +55 -0
  154. data/doc/ja/cairo-invalid-slant.html +57 -0
  155. data/doc/ja/cairo-invalid-status-error.html +55 -0
  156. data/doc/ja/cairo-invalid-stride-error.html +55 -0
  157. data/doc/ja/cairo-invalid-string-error.html +54 -0
  158. data/doc/ja/cairo-invalid-visual-error.html +57 -0
  159. data/doc/ja/cairo-invalid-weight.html +57 -0
  160. data/doc/ja/cairo-line-cap.html +50 -0
  161. data/doc/ja/cairo-line-join.html +53 -0
  162. data/doc/ja/cairo-linear-pattern.html +87 -0
  163. data/doc/ja/cairo-matrix.html +354 -0
  164. data/doc/ja/cairo-negative-count.html +52 -0
  165. data/doc/ja/cairo-no-current-point-error.html +54 -0
  166. data/doc/ja/cairo-null-pointer-error.html +54 -0
  167. data/doc/ja/cairo-operator.html +51 -0
  168. data/doc/ja/cairo-paper-parse-error.html +55 -0
  169. data/doc/ja/cairo-paper-unknown-paper-name.html +76 -0
  170. data/doc/ja/cairo-paper-unknown-unit.html +75 -0
  171. data/doc/ja/cairo-paper-unrecognized-paper-description.html +76 -0
  172. data/doc/ja/cairo-paper.html +357 -0
  173. data/doc/ja/cairo-path-close-path.html +57 -0
  174. data/doc/ja/cairo-path-curve-to.html +70 -0
  175. data/doc/ja/cairo-path-data-type.html +53 -0
  176. data/doc/ja/cairo-path-data.html +127 -0
  177. data/doc/ja/cairo-path-line-to.html +62 -0
  178. data/doc/ja/cairo-path-move-to.html +62 -0
  179. data/doc/ja/cairo-path.html +144 -0
  180. data/doc/ja/cairo-pattern-type-mismatch-error.html +56 -0
  181. data/doc/ja/cairo-pattern.html +128 -0
  182. data/doc/ja/cairo-pdf-surface.html +86 -0
  183. data/doc/ja/cairo-point.html +90 -0
  184. data/doc/ja/cairo-ps-level.html +62 -0
  185. data/doc/ja/cairo-ps-surface.html +214 -0
  186. data/doc/ja/cairo-quartz-image-surface.html +75 -0
  187. data/doc/ja/cairo-quartz-surface.html +93 -0
  188. data/doc/ja/cairo-radial-pattern.html +93 -0
  189. data/doc/ja/cairo-read-error.html +55 -0
  190. data/doc/ja/cairo-rectangle.html +109 -0
  191. data/doc/ja/cairo-scaled-font.html +180 -0
  192. data/doc/ja/cairo-solid-pattern.html +87 -0
  193. data/doc/ja/cairo-subpixel-order.html +57 -0
  194. data/doc/ja/cairo-surface-finished-error.html +54 -0
  195. data/doc/ja/cairo-surface-pattern.html +68 -0
  196. data/doc/ja/cairo-surface-type-mismatch-error.html +56 -0
  197. data/doc/ja/cairo-surface.html +213 -0
  198. data/doc/ja/cairo-svg-surface.html +114 -0
  199. data/doc/ja/cairo-svg-version.html +66 -0
  200. data/doc/ja/cairo-temp-file-error.html +50 -0
  201. data/doc/ja/cairo-text-cluster-flag.html +46 -0
  202. data/doc/ja/cairo-text-cluster.html +102 -0
  203. data/doc/ja/cairo-text-extents.html +163 -0
  204. data/doc/ja/cairo-toy-font-face.html +107 -0
  205. data/doc/ja/cairo-user-font-error.html +55 -0
  206. data/doc/ja/cairo-user-font-face-text-to-glyphs-data.html +156 -0
  207. data/doc/ja/cairo-user-font-face.html +268 -0
  208. data/doc/ja/cairo-user-font-immutable.html +54 -0
  209. data/doc/ja/cairo-win32-printing-surface.html +80 -0
  210. data/doc/ja/cairo-win32-surface.html +100 -0
  211. data/doc/ja/cairo-write-error.html +55 -0
  212. data/doc/ja/cairo.html +177 -0
  213. data/doc/ja/index.html +1156 -0
  214. data/ext/cairo/cairo.def +104 -0
  215. data/ext/cairo/extconf.rb +80 -0
  216. data/ext/cairo/rb_cairo.c +104 -0
  217. data/ext/cairo/rb_cairo.h +275 -0
  218. data/ext/cairo/rb_cairo_constants.c +478 -0
  219. data/ext/cairo/rb_cairo_context.c +1693 -0
  220. data/ext/cairo/rb_cairo_exception.c +354 -0
  221. data/ext/cairo/rb_cairo_font_extents.c +200 -0
  222. data/ext/cairo/rb_cairo_font_face.c +713 -0
  223. data/ext/cairo/rb_cairo_font_options.c +197 -0
  224. data/ext/cairo/rb_cairo_glyph.c +161 -0
  225. data/ext/cairo/rb_cairo_matrix.c +366 -0
  226. data/ext/cairo/rb_cairo_path.c +459 -0
  227. data/ext/cairo/rb_cairo_pattern.c +540 -0
  228. data/ext/cairo/rb_cairo_private.c +242 -0
  229. data/ext/cairo/rb_cairo_private.h +114 -0
  230. data/ext/cairo/rb_cairo_scaled_font.c +235 -0
  231. data/ext/cairo/rb_cairo_surface.c +1371 -0
  232. data/ext/cairo/rb_cairo_text_cluster.c +151 -0
  233. data/ext/cairo/rb_cairo_text_extents.c +221 -0
  234. data/extconf.rb +45 -0
  235. data/lib/1.8/cairo.so +0 -0
  236. data/lib/1.9/cairo.so +0 -0
  237. data/lib/cairo.rb +151 -0
  238. data/lib/cairo/color.rb +267 -0
  239. data/lib/cairo/colors.rb +656 -0
  240. data/lib/cairo/constants.rb +24 -0
  241. data/lib/cairo/context.rb +29 -0
  242. data/lib/cairo/context/blur.rb +45 -0
  243. data/lib/cairo/context/circle.rb +9 -0
  244. data/lib/cairo/context/color.rb +11 -0
  245. data/lib/cairo/context/path.rb +116 -0
  246. data/lib/cairo/context/rectangle.rb +33 -0
  247. data/lib/cairo/context/triangle.rb +12 -0
  248. data/lib/cairo/paper.rb +183 -0
  249. data/lib/cairo/papers.rb +41 -0
  250. data/lib/cairo/path.rb +15 -0
  251. data/lib/cairo/point.rb +7 -0
  252. data/misc/update-colors.rb +143 -0
  253. data/pkg-config.rb +313 -0
  254. data/samples/agg/README +4 -0
  255. data/samples/agg/aa_test.rb +304 -0
  256. data/samples/blur.rb +47 -0
  257. data/samples/pac.rb +99 -0
  258. data/samples/pac2.rb +171 -0
  259. data/samples/png.rb +45 -0
  260. data/samples/scalable.rb +56 -0
  261. data/samples/text-on-path.rb +60 -0
  262. data/samples/text2.rb +131 -0
  263. data/test-unit/Rakefile +30 -0
  264. data/test-unit/bin/testrb +5 -0
  265. data/test-unit/lib/test/unit.rb +280 -0
  266. data/test-unit/lib/test/unit/assertionfailederror.rb +14 -0
  267. data/test-unit/lib/test/unit/assertions.rb +722 -0
  268. data/test-unit/lib/test/unit/attribute.rb +125 -0
  269. data/test-unit/lib/test/unit/autorunner.rb +254 -0
  270. data/test-unit/lib/test/unit/collector.rb +43 -0
  271. data/test-unit/lib/test/unit/collector/descendant.rb +23 -0
  272. data/test-unit/lib/test/unit/collector/dir.rb +108 -0
  273. data/test-unit/lib/test/unit/collector/load.rb +135 -0
  274. data/test-unit/lib/test/unit/collector/objectspace.rb +34 -0
  275. data/test-unit/lib/test/unit/color.rb +61 -0
  276. data/test-unit/lib/test/unit/diff.rb +524 -0
  277. data/test-unit/lib/test/unit/error.rb +124 -0
  278. data/test-unit/lib/test/unit/exceptionhandler.rb +39 -0
  279. data/test-unit/lib/test/unit/failure.rb +110 -0
  280. data/test-unit/lib/test/unit/fixture.rb +185 -0
  281. data/test-unit/lib/test/unit/notification.rb +125 -0
  282. data/test-unit/lib/test/unit/omission.rb +143 -0
  283. data/test-unit/lib/test/unit/pending.rb +146 -0
  284. data/test-unit/lib/test/unit/priority.rb +146 -0
  285. data/test-unit/lib/test/unit/runner/console.rb +46 -0
  286. data/test-unit/lib/test/unit/runner/emacs.rb +8 -0
  287. data/test-unit/lib/test/unit/testcase.rb +281 -0
  288. data/test-unit/lib/test/unit/testresult.rb +89 -0
  289. data/test-unit/lib/test/unit/testsuite.rb +110 -0
  290. data/test-unit/lib/test/unit/ui/console/outputlevel.rb +14 -0
  291. data/test-unit/lib/test/unit/ui/console/testrunner.rb +195 -0
  292. data/test-unit/lib/test/unit/ui/emacs/testrunner.rb +49 -0
  293. data/test-unit/lib/test/unit/ui/testrunner.rb +20 -0
  294. data/test-unit/lib/test/unit/ui/testrunnermediator.rb +77 -0
  295. data/test-unit/lib/test/unit/ui/testrunnerutilities.rb +41 -0
  296. data/test-unit/lib/test/unit/util/backtracefilter.rb +41 -0
  297. data/test-unit/lib/test/unit/util/observable.rb +90 -0
  298. data/test-unit/lib/test/unit/util/procwrapper.rb +48 -0
  299. data/test-unit/lib/test/unit/version.rb +7 -0
  300. data/test-unit/sample/adder.rb +13 -0
  301. data/test-unit/sample/subtracter.rb +12 -0
  302. data/test-unit/sample/tc_adder.rb +18 -0
  303. data/test-unit/sample/tc_subtracter.rb +18 -0
  304. data/test-unit/sample/ts_examples.rb +7 -0
  305. data/test-unit/test/collector/test_descendant.rb +135 -0
  306. data/test-unit/test/collector/test_dir.rb +406 -0
  307. data/test-unit/test/collector/test_load.rb +333 -0
  308. data/test-unit/test/collector/test_objectspace.rb +98 -0
  309. data/test-unit/test/run-test.rb +13 -0
  310. data/test-unit/test/test_assertions.rb +693 -0
  311. data/test-unit/test/test_attribute.rb +86 -0
  312. data/test-unit/test/test_color.rb +37 -0
  313. data/test-unit/test/test_diff.rb +477 -0
  314. data/test-unit/test/test_emacs_runner.rb +60 -0
  315. data/test-unit/test/test_error.rb +26 -0
  316. data/test-unit/test/test_failure.rb +33 -0
  317. data/test-unit/test/test_fixture.rb +252 -0
  318. data/test-unit/test/test_notification.rb +33 -0
  319. data/test-unit/test/test_omission.rb +81 -0
  320. data/test-unit/test/test_pending.rb +70 -0
  321. data/test-unit/test/test_priority.rb +89 -0
  322. data/test-unit/test/test_testcase.rb +430 -0
  323. data/test-unit/test/test_testresult.rb +113 -0
  324. data/test-unit/test/test_testsuite.rb +129 -0
  325. data/test-unit/test/testunit_test_util.rb +14 -0
  326. data/test-unit/test/ui/test_testrunmediator.rb +20 -0
  327. data/test-unit/test/util/test_backtracefilter.rb +41 -0
  328. data/test-unit/test/util/test_observable.rb +102 -0
  329. data/test-unit/test/util/test_procwrapper.rb +36 -0
  330. data/test/cairo-test-utils.rb +18 -0
  331. data/test/run-test.rb +28 -0
  332. data/test/test_color.rb +17 -0
  333. data/test/test_constants.rb +16 -0
  334. data/test/test_context.rb +105 -0
  335. data/test/test_exception.rb +27 -0
  336. data/test/test_font_extents.rb +36 -0
  337. data/test/test_font_face.rb +244 -0
  338. data/test/test_font_options.rb +13 -0
  339. data/test/test_paper.rb +81 -0
  340. data/test/test_pkg_config.rb +123 -0
  341. data/test/test_scaled_font.rb +34 -0
  342. data/test/test_surface.rb +41 -0
  343. data/test/test_text_cluster.rb +32 -0
  344. data/test/test_text_extents.rb +40 -0
  345. data/test/test_text_to_glyphs_data.rb +51 -0
  346. data/tmp/x86-mingw32/cairo/1.8.7/fake.rb +6 -0
  347. data/tmp/x86-mingw32/cairo/1.8.7/mkmf.rb +1836 -0
  348. data/tmp/x86-mingw32/cairo/1.8.7/rbconfig.rb +183 -0
  349. data/tmp/x86-mingw32/cairo/1.9.2/fake.rb +6 -0
  350. data/tmp/x86-mingw32/cairo/1.9.2/mkmf.rb +2079 -0
  351. data/tmp/x86-mingw32/cairo/1.9.2/rbconfig.rb +226 -0
  352. metadata +437 -0
@@ -0,0 +1,478 @@
1
+ /* -*- c-file-style: "gnu"; indent-tabs-mode: nil -*- */
2
+ /*
3
+ * Ruby Cairo Binding
4
+ *
5
+ * $Author: kou $
6
+ * $Date: 2008-09-19 12:56:27 $
7
+ *
8
+ * Copyright 2005 Øyvind Kolås <pippin@freedesktop.org>
9
+ * Copyright 2004-2005 MenTaLguY <mental@rydia.com>
10
+ *
11
+ * This file is made available under the same terms as Ruby
12
+ *
13
+ */
14
+
15
+
16
+ #include "rb_cairo.h"
17
+ #include "rb_cairo_private.h"
18
+
19
+ VALUE rb_mCairo_Operator;
20
+ VALUE rb_mCairo_Antialias;
21
+ VALUE rb_mCairo_FillRule;
22
+ VALUE rb_mCairo_LineCap;
23
+ VALUE rb_mCairo_LineJoin;
24
+ VALUE rb_mCairo_FontSlant;
25
+ VALUE rb_mCairo_FontWeight;
26
+ VALUE rb_mCairo_SubpixelOrder;
27
+ VALUE rb_mCairo_HintStyle;
28
+ VALUE rb_mCairo_HintMetrics;
29
+ VALUE rb_mCairo_PathDataType;
30
+ VALUE rb_mCairo_Content;
31
+ VALUE rb_mCairo_Format;
32
+ VALUE rb_mCairo_Extend;
33
+ VALUE rb_mCairo_Filter;
34
+ VALUE rb_mCairo_SVGVersion = Qnil;
35
+ VALUE rb_mCairo_PSLevel = Qnil;
36
+ VALUE rb_mCairo_TextClusterFlag = Qnil;
37
+
38
+ #define CAIRO_OPERATOR_MIN CAIRO_OPERATOR_CLEAR
39
+ #define CAIRO_OPERATOR_MAX CAIRO_OPERATOR_SATURATE
40
+
41
+ #define CAIRO_ANTIALIAS_MIN CAIRO_ANTIALIAS_DEFAULT
42
+ #define CAIRO_ANTIALIAS_MAX CAIRO_ANTIALIAS_SUBPIXEL
43
+
44
+ #define CAIRO_FILL_RULE_MIN CAIRO_FILL_RULE_WINDING
45
+ #define CAIRO_FILL_RULE_MAX CAIRO_FILL_RULE_EVEN_ODD
46
+
47
+ #define CAIRO_LINE_CAP_MIN CAIRO_LINE_CAP_BUTT
48
+ #define CAIRO_LINE_CAP_MAX CAIRO_LINE_CAP_SQUARE
49
+
50
+ #define CAIRO_LINE_JOIN_MIN CAIRO_LINE_JOIN_MITER
51
+ #define CAIRO_LINE_JOIN_MAX CAIRO_LINE_JOIN_BEVEL
52
+
53
+ #define CAIRO_FONT_SLANT_MIN CAIRO_FONT_SLANT_NORMAL
54
+ #define CAIRO_FONT_SLANT_MAX CAIRO_FONT_SLANT_OBLIQUE
55
+
56
+ #define CAIRO_FONT_WEIGHT_MIN CAIRO_FONT_WEIGHT_NORMAL
57
+ #define CAIRO_FONT_WEIGHT_MAX CAIRO_FONT_WEIGHT_BOLD
58
+
59
+ #define CAIRO_SUBPIXEL_ORDER_MIN CAIRO_SUBPIXEL_ORDER_DEFAULT
60
+ #define CAIRO_SUBPIXEL_ORDER_MAX CAIRO_SUBPIXEL_ORDER_VBGR
61
+
62
+ #define CAIRO_HINT_STYLE_MIN CAIRO_HINT_STYLE_DEFAULT
63
+ #define CAIRO_HINT_STYLE_MAX CAIRO_HINT_STYLE_FULL
64
+
65
+ #define CAIRO_HINT_METRICS_MIN CAIRO_HINT_METRICS_DEFAULT
66
+ #define CAIRO_HINT_METRICS_MAX CAIRO_HINT_METRICS_OFF
67
+
68
+ #define CAIRO_PATH_MIN CAIRO_PATH_MOVE_TO
69
+ #define CAIRO_PATH_MAX CAIRO_PATH_CLOSE_PATH
70
+
71
+ #define CAIRO_CONTENT_MIN CAIRO_CONTENT_COLOR
72
+ #define CAIRO_CONTENT_MAX CAIRO_CONTENT_COLOR_ALPHA
73
+
74
+ #define CAIRO_FORMAT_MIN CAIRO_FORMAT_ARGB32
75
+ #define CAIRO_FORMAT_MAX CAIRO_FORMAT_A1
76
+
77
+ #define CAIRO_EXTEND_MIN CAIRO_EXTEND_NONE
78
+ #define CAIRO_EXTEND_MAX CAIRO_EXTEND_REFLECT
79
+
80
+ #define CAIRO_FILTER_MIN CAIRO_FILTER_FAST
81
+ #define CAIRO_FILTER_MAX CAIRO_FILTER_GAUSSIAN
82
+
83
+ #define CAIRO_SVG_VERSION_MIN CAIRO_SVG_VERSION_1_1
84
+ #define CAIRO_SVG_VERSION_MAX CAIRO_SVG_VERSION_1_2
85
+
86
+ #define CAIRO_PS_LEVEL_MIN CAIRO_PS_LEVEL_2
87
+ #define CAIRO_PS_LEVEL_MAX CAIRO_PS_LEVEL_3
88
+
89
+ #define CAIRO_TEXT_CLUSTER_FLAG_MIN 0
90
+ #define CAIRO_TEXT_CLUSTER_FLAG_MAX CAIRO_TEXT_CLUSTER_FLAG_BACKWARD
91
+
92
+ #define DEFINE_RVAL2ENUM(name, const_name) \
93
+ cairo_ ## name ## _t \
94
+ rb_cairo_ ## name ## _from_ruby_object (VALUE rb_ ## name) \
95
+ { \
96
+ cairo_ ## name ## _t name; \
97
+ \
98
+ if (!rb_cairo__is_kind_of (rb_ ## name, rb_cNumeric)) \
99
+ rb_ ## name = rb_cairo__const_get (rb_ ## name, \
100
+ # const_name "_"); \
101
+ \
102
+ name = FIX2INT (rb_ ## name); \
103
+ if (name < CAIRO_ ## const_name ## _MIN || \
104
+ name > CAIRO_ ## const_name ## _MAX) \
105
+ { \
106
+ rb_raise (rb_eArgError, \
107
+ "invalid %s: %d (expect %d <= %s <= %d)", \
108
+ #name, name, \
109
+ CAIRO_ ## const_name ## _MIN, \
110
+ #name, \
111
+ CAIRO_ ## const_name ## _MAX); \
112
+ } \
113
+ return name; \
114
+ }
115
+
116
+ DEFINE_RVAL2ENUM(operator, OPERATOR)
117
+ DEFINE_RVAL2ENUM(antialias, ANTIALIAS)
118
+ DEFINE_RVAL2ENUM(fill_rule, FILL_RULE)
119
+ DEFINE_RVAL2ENUM(line_cap, LINE_CAP)
120
+ DEFINE_RVAL2ENUM(line_join, LINE_JOIN)
121
+ DEFINE_RVAL2ENUM(font_slant, FONT_SLANT)
122
+ DEFINE_RVAL2ENUM(font_weight, FONT_WEIGHT)
123
+ DEFINE_RVAL2ENUM(subpixel_order, SUBPIXEL_ORDER)
124
+ DEFINE_RVAL2ENUM(hint_style, HINT_STYLE)
125
+ DEFINE_RVAL2ENUM(hint_metrics, HINT_METRICS)
126
+ DEFINE_RVAL2ENUM(path_data_type, PATH)
127
+ DEFINE_RVAL2ENUM(content, CONTENT)
128
+ DEFINE_RVAL2ENUM(format, FORMAT)
129
+ DEFINE_RVAL2ENUM(extend, EXTEND)
130
+ DEFINE_RVAL2ENUM(filter, FILTER)
131
+ #ifdef CAIRO_HAS_SVG_SURFACE
132
+ DEFINE_RVAL2ENUM(svg_version, SVG_VERSION)
133
+ #endif
134
+
135
+ #ifdef CAIRO_HAS_PS_SURFACE
136
+ # if CAIRO_CHECK_VERSION(1, 5, 2)
137
+ DEFINE_RVAL2ENUM(ps_level, PS_LEVEL)
138
+ #define PS_LEVEL_ENUM_DEFINED 1
139
+ # endif
140
+ #endif
141
+
142
+ #if CAIRO_CHECK_VERSION(1, 7, 6)
143
+ DEFINE_RVAL2ENUM(text_cluster_flags, TEXT_CLUSTER_FLAG)
144
+ #endif
145
+
146
+ #if defined(RB_CAIRO_PLATFORM_WIN32) && !defined(PS_LEVEL_ENUM_DEFINED)
147
+ void
148
+ rb_cairo_ps_level_from_ruby_object (VALUE rb_ps_level)
149
+ {
150
+ /* dummy */
151
+ }
152
+ #endif
153
+
154
+
155
+ #ifdef CAIRO_HAS_SVG_SURFACE
156
+ static VALUE
157
+ cr_svg_get_versions (VALUE self)
158
+ {
159
+ VALUE rb_versions;
160
+ int i, num_versions;
161
+ cairo_svg_version_t const *versions;
162
+
163
+ cairo_svg_get_versions (&versions, &num_versions);
164
+
165
+ rb_versions = rb_ary_new2 (num_versions);
166
+
167
+ for (i = 0; i < num_versions; i++)
168
+ {
169
+ rb_ary_push (rb_versions, INT2NUM (versions[i]));
170
+ }
171
+
172
+ return rb_versions;
173
+ }
174
+
175
+ static VALUE
176
+ cr_svg_version_to_string (int argc, VALUE *argv, VALUE self)
177
+ {
178
+ if (argc == 0)
179
+ {
180
+ return rb_call_super (argc, argv);
181
+ }
182
+ else
183
+ {
184
+ VALUE version;
185
+ const char *ver_str;
186
+ rb_scan_args (argc, argv, "1", &version);
187
+ ver_str = cairo_svg_version_to_string (RVAL2CRSVGVERSION(version));
188
+ return rb_str_new2 (ver_str);
189
+ }
190
+ }
191
+ #endif
192
+
193
+ #if CAIRO_CHECK_VERSION(1, 5, 8)
194
+ static VALUE
195
+ cr_format_stride_for_width (VALUE self, VALUE format, VALUE width)
196
+ {
197
+ return INT2NUM (cairo_format_stride_for_width (RVAL2CRFORMAT (format),
198
+ NUM2INT (width)));
199
+ }
200
+ #endif
201
+
202
+ #ifdef CAIRO_HAS_PS_SURFACE
203
+ # if CAIRO_CHECK_VERSION(1, 5, 8)
204
+ static VALUE
205
+ cr_ps_get_levels (VALUE self)
206
+ {
207
+ VALUE rb_levels;
208
+ const cairo_ps_level_t *levels;
209
+ int i, n_levels;
210
+
211
+ cairo_ps_get_levels (&levels, &n_levels);
212
+
213
+ rb_levels = rb_ary_new2 (n_levels);
214
+ for (i = 0; i < n_levels; i++)
215
+ {
216
+ rb_ary_push (rb_levels, INT2NUM (levels[i]));
217
+ }
218
+
219
+ return rb_levels;
220
+ }
221
+
222
+ static VALUE
223
+ cr_ps_level_to_string (int argc, VALUE *argv, VALUE self)
224
+ {
225
+ if (argc == 0)
226
+ {
227
+ return rb_call_super (argc, argv);
228
+ }
229
+ else
230
+ {
231
+ VALUE level;
232
+ rb_scan_args (argc, argv, "1", &level);
233
+ return rb_str_new2 (cairo_ps_level_to_string (RVAL2CRPSLEVEL (level)));
234
+ }
235
+ }
236
+ # endif
237
+ #endif
238
+
239
+ void
240
+ Init_cairo_constants (void)
241
+ {
242
+ /* cairo_operator_t */
243
+ rb_mCairo_Operator = rb_define_module_under (rb_mCairo, "Operator");
244
+ rb_define_const (rb_mCairo_Operator, "CLEAR",
245
+ INT2FIX (CAIRO_OPERATOR_CLEAR));
246
+
247
+ rb_define_const (rb_mCairo_Operator, "SOURCE",
248
+ INT2FIX (CAIRO_OPERATOR_SOURCE));
249
+ rb_define_const (rb_mCairo_Operator, "OVER",
250
+ INT2FIX (CAIRO_OPERATOR_OVER));
251
+ rb_define_const (rb_mCairo_Operator, "IN",
252
+ INT2FIX (CAIRO_OPERATOR_IN));
253
+ rb_define_const (rb_mCairo_Operator, "OUT",
254
+ INT2FIX (CAIRO_OPERATOR_OUT));
255
+ rb_define_const (rb_mCairo_Operator, "ATOP",
256
+ INT2FIX (CAIRO_OPERATOR_ATOP));
257
+
258
+ rb_define_const (rb_mCairo_Operator, "DEST",
259
+ INT2FIX (CAIRO_OPERATOR_DEST));
260
+ rb_define_const (rb_mCairo_Operator, "DEST_OVER",
261
+ INT2FIX (CAIRO_OPERATOR_DEST_OVER));
262
+ rb_define_const (rb_mCairo_Operator, "DEST_IN",
263
+ INT2FIX (CAIRO_OPERATOR_DEST_IN));
264
+ rb_define_const (rb_mCairo_Operator, "DEST_OUT",
265
+ INT2FIX (CAIRO_OPERATOR_DEST_OUT));
266
+ rb_define_const (rb_mCairo_Operator, "DEST_ATOP",
267
+ INT2FIX (CAIRO_OPERATOR_DEST_ATOP));
268
+
269
+ rb_define_const (rb_mCairo_Operator, "XOR",
270
+ INT2FIX (CAIRO_OPERATOR_XOR));
271
+ rb_define_const (rb_mCairo_Operator, "ADD",
272
+ INT2FIX (CAIRO_OPERATOR_ADD));
273
+ rb_define_const (rb_mCairo_Operator, "SATURATE",
274
+ INT2FIX (CAIRO_OPERATOR_SATURATE));
275
+
276
+
277
+ /* cairo_antialias_t */
278
+ rb_mCairo_Antialias = rb_define_module_under (rb_mCairo, "Antialias");
279
+ rb_define_const (rb_mCairo_Antialias, "DEFAULT",
280
+ INT2FIX (CAIRO_ANTIALIAS_DEFAULT));
281
+ rb_define_const (rb_mCairo_Antialias, "NONE",
282
+ INT2FIX (CAIRO_ANTIALIAS_NONE));
283
+ rb_define_const (rb_mCairo_Antialias, "GRAY",
284
+ INT2FIX (CAIRO_ANTIALIAS_GRAY));
285
+ rb_define_const (rb_mCairo_Antialias, "SUBPIXEL",
286
+ INT2FIX (CAIRO_ANTIALIAS_SUBPIXEL));
287
+
288
+
289
+ /* cairo_fill_rule_t */
290
+ rb_mCairo_FillRule = rb_define_module_under (rb_mCairo, "FillRule");
291
+ rb_define_const (rb_mCairo_FillRule, "WINDING",
292
+ INT2FIX (CAIRO_FILL_RULE_WINDING));
293
+ rb_define_const (rb_mCairo_FillRule, "EVEN_ODD",
294
+ INT2FIX (CAIRO_FILL_RULE_EVEN_ODD));
295
+
296
+
297
+ /* cairo_line_cap_t */
298
+ rb_mCairo_LineCap = rb_define_module_under (rb_mCairo, "LineCap");
299
+ rb_define_const (rb_mCairo_LineCap, "BUTT",
300
+ INT2FIX (CAIRO_LINE_CAP_BUTT));
301
+ rb_define_const (rb_mCairo_LineCap, "ROUND",
302
+ INT2FIX (CAIRO_LINE_CAP_ROUND));
303
+ rb_define_const (rb_mCairo_LineCap, "SQUARE",
304
+ INT2FIX (CAIRO_LINE_CAP_SQUARE));
305
+
306
+
307
+ /* cairo_line_join_t */
308
+ rb_mCairo_LineJoin = rb_define_module_under (rb_mCairo, "LineJoin");
309
+ rb_define_const (rb_mCairo_LineJoin, "MITER",
310
+ INT2FIX (CAIRO_LINE_JOIN_MITER));
311
+ rb_define_const (rb_mCairo_LineJoin, "ROUND",
312
+ INT2FIX (CAIRO_LINE_JOIN_ROUND));
313
+ rb_define_const (rb_mCairo_LineJoin, "BEVEL",
314
+ INT2FIX (CAIRO_LINE_JOIN_BEVEL));
315
+
316
+
317
+ /* cairo_font_slant_t */
318
+ rb_mCairo_FontSlant = rb_define_module_under (rb_mCairo, "FontSlant");
319
+ rb_define_const (rb_mCairo_FontSlant, "NORMAL",
320
+ INT2FIX (CAIRO_FONT_SLANT_NORMAL));
321
+ rb_define_const (rb_mCairo_FontSlant, "ITALIC",
322
+ INT2FIX (CAIRO_FONT_SLANT_ITALIC));
323
+ rb_define_const (rb_mCairo_FontSlant, "OBLIQUE",
324
+ INT2FIX (CAIRO_FONT_SLANT_OBLIQUE));
325
+
326
+
327
+ /* cairo_font_weight_t */
328
+ rb_mCairo_FontWeight = rb_define_module_under (rb_mCairo, "FontWeight");
329
+ rb_define_const (rb_mCairo_FontWeight, "NORMAL",
330
+ INT2FIX (CAIRO_FONT_WEIGHT_NORMAL));
331
+ rb_define_const (rb_mCairo_FontWeight, "BOLD",
332
+ INT2FIX (CAIRO_FONT_WEIGHT_BOLD));
333
+
334
+
335
+ /* cairo_subpixel_order_t */
336
+ rb_mCairo_SubpixelOrder = rb_define_module_under (rb_mCairo, "SubpixelOrder");
337
+ rb_define_const (rb_mCairo_SubpixelOrder, "DEFAULT",
338
+ INT2FIX (CAIRO_SUBPIXEL_ORDER_DEFAULT));
339
+ rb_define_const (rb_mCairo_SubpixelOrder, "RGB",
340
+ INT2FIX (CAIRO_SUBPIXEL_ORDER_RGB));
341
+ rb_define_const (rb_mCairo_SubpixelOrder, "BGR",
342
+ INT2FIX (CAIRO_SUBPIXEL_ORDER_BGR));
343
+ rb_define_const (rb_mCairo_SubpixelOrder, "VRGB",
344
+ INT2FIX (CAIRO_SUBPIXEL_ORDER_VRGB));
345
+ rb_define_const (rb_mCairo_SubpixelOrder, "VBGR",
346
+ INT2FIX (CAIRO_SUBPIXEL_ORDER_VBGR));
347
+
348
+
349
+ /* cairo_hint_style_t */
350
+ rb_mCairo_HintStyle = rb_define_module_under (rb_mCairo, "HintStyle");
351
+ rb_define_const (rb_mCairo_HintStyle, "DEFAULT",
352
+ INT2FIX (CAIRO_HINT_STYLE_DEFAULT));
353
+ rb_define_const (rb_mCairo_HintStyle, "NONE",
354
+ INT2FIX (CAIRO_HINT_STYLE_NONE));
355
+ rb_define_const (rb_mCairo_HintStyle, "SLIGHT",
356
+ INT2FIX (CAIRO_HINT_STYLE_SLIGHT));
357
+ rb_define_const (rb_mCairo_HintStyle, "MEDIUM",
358
+ INT2FIX (CAIRO_HINT_STYLE_MEDIUM));
359
+ rb_define_const (rb_mCairo_HintStyle, "FULL",
360
+ INT2FIX (CAIRO_HINT_STYLE_FULL));
361
+
362
+
363
+ /* cairo_hint_metrics_t */
364
+ rb_mCairo_HintMetrics = rb_define_module_under (rb_mCairo, "HintMetrics");
365
+ rb_define_const (rb_mCairo_HintMetrics, "DEFAULT",
366
+ INT2FIX (CAIRO_HINT_METRICS_DEFAULT));
367
+ rb_define_const (rb_mCairo_HintMetrics, "ON",
368
+ INT2FIX (CAIRO_HINT_METRICS_ON));
369
+ rb_define_const (rb_mCairo_HintMetrics, "OFF",
370
+ INT2FIX (CAIRO_HINT_METRICS_OFF));
371
+
372
+
373
+ /* cairo_path_data_type_t */
374
+ rb_mCairo_PathDataType = rb_define_module_under (rb_mCairo, "PathDataType");
375
+ rb_define_const (rb_mCairo_PathDataType, "MOVE_TO",
376
+ INT2FIX (CAIRO_PATH_MOVE_TO));
377
+ rb_define_const (rb_mCairo_PathDataType, "LINE_TO",
378
+ INT2FIX (CAIRO_PATH_LINE_TO));
379
+ rb_define_const (rb_mCairo_PathDataType, "CURVE_TO",
380
+ INT2FIX (CAIRO_PATH_CURVE_TO));
381
+ rb_define_const (rb_mCairo_PathDataType, "CLOSE_PATH",
382
+ INT2FIX (CAIRO_PATH_CLOSE_PATH));
383
+
384
+
385
+ /* cairo_content_t */
386
+ rb_mCairo_Content = rb_define_module_under (rb_mCairo, "Content");
387
+ rb_define_const (rb_mCairo_Content, "COLOR",
388
+ INT2FIX (CAIRO_CONTENT_COLOR));
389
+ rb_define_const (rb_mCairo_Content, "ALPHA",
390
+ INT2FIX (CAIRO_CONTENT_ALPHA));
391
+ rb_define_const (rb_mCairo_Content, "COLOR_ALPHA",
392
+ INT2FIX (CAIRO_CONTENT_COLOR_ALPHA));
393
+
394
+
395
+ /* cairo_format_t */
396
+ rb_mCairo_Format = rb_define_module_under (rb_mCairo, "Format");
397
+ rb_define_const (rb_mCairo_Format, "ARGB32",
398
+ INT2FIX (CAIRO_FORMAT_ARGB32));
399
+ rb_define_const (rb_mCairo_Format, "RGB24",
400
+ INT2FIX (CAIRO_FORMAT_RGB24));
401
+ rb_define_const (rb_mCairo_Format, "A8",
402
+ INT2FIX (CAIRO_FORMAT_A8));
403
+ rb_define_const (rb_mCairo_Format, "A1",
404
+ INT2FIX (CAIRO_FORMAT_A1));
405
+ #if !CAIRO_CHECK_VERSION(1, 3, 0)
406
+ rb_define_const (rb_mCairo_Format, "RGB16_565",
407
+ INT2FIX (CAIRO_FORMAT_RGB16_565));
408
+ #endif
409
+
410
+ #if CAIRO_CHECK_VERSION(1, 5, 8)
411
+ rb_define_singleton_method (rb_mCairo_Format, "stride_for_width",
412
+ cr_format_stride_for_width, 2);
413
+ #endif
414
+
415
+
416
+ /* cairo_extend_t */
417
+ rb_mCairo_Extend = rb_define_module_under (rb_mCairo, "Extend");
418
+ rb_define_const (rb_mCairo_Extend, "NONE",
419
+ INT2FIX (CAIRO_EXTEND_NONE));
420
+ rb_define_const (rb_mCairo_Extend, "REPEAT",
421
+ INT2FIX (CAIRO_EXTEND_REPEAT));
422
+ rb_define_const (rb_mCairo_Extend, "REFLECT",
423
+ INT2FIX (CAIRO_EXTEND_REFLECT));
424
+ rb_define_const (rb_mCairo_Extend, "PAD",
425
+ INT2FIX (CAIRO_EXTEND_PAD));
426
+
427
+
428
+ /* cairo_filter_t */
429
+ rb_mCairo_Filter = rb_define_module_under (rb_mCairo, "Filter");
430
+ rb_define_const (rb_mCairo_Filter, "FAST",
431
+ INT2FIX (CAIRO_FILTER_FAST));
432
+ rb_define_const (rb_mCairo_Filter, "GOOD",
433
+ INT2FIX (CAIRO_FILTER_GOOD));
434
+ rb_define_const (rb_mCairo_Filter, "BEST",
435
+ INT2FIX (CAIRO_FILTER_BEST));
436
+ rb_define_const (rb_mCairo_Filter, "NEAREST",
437
+ INT2FIX (CAIRO_FILTER_NEAREST));
438
+ rb_define_const (rb_mCairo_Filter, "BILINEAR",
439
+ INT2FIX (CAIRO_FILTER_BILINEAR));
440
+ rb_define_const (rb_mCairo_Filter, "GAUSSIAN",
441
+ INT2FIX (CAIRO_FILTER_GAUSSIAN));
442
+
443
+ #ifdef CAIRO_HAS_SVG_SURFACE
444
+ /* cairo_svg_version_t */
445
+ rb_mCairo_SVGVersion = rb_define_module_under (rb_mCairo, "SVGVersion");
446
+ rb_define_const (rb_mCairo_SVGVersion, "VERSION_1_1",
447
+ INT2FIX (CAIRO_SVG_VERSION_1_1));
448
+ rb_define_const (rb_mCairo_SVGVersion, "VERSION_1_2",
449
+ INT2FIX (CAIRO_SVG_VERSION_1_2));
450
+
451
+ rb_define_singleton_method (rb_mCairo_SVGVersion, "list",
452
+ cr_svg_get_versions, 0);
453
+ rb_define_singleton_method (rb_mCairo_SVGVersion, "name",
454
+ cr_svg_version_to_string, -1);
455
+ #endif
456
+
457
+ #ifdef CAIRO_HAS_PS_SURFACE
458
+ # if CAIRO_CHECK_VERSION(1, 5, 2)
459
+ /* cairo_ps_level_t */
460
+ rb_mCairo_PSLevel = rb_define_module_under (rb_mCairo, "PSLevel");
461
+ rb_define_const (rb_mCairo_PSLevel, "LEVEL_2", INT2FIX (CAIRO_PS_LEVEL_2));
462
+ rb_define_const (rb_mCairo_PSLevel, "LEVEL_3", INT2FIX (CAIRO_PS_LEVEL_3));
463
+
464
+ rb_define_singleton_method (rb_mCairo_PSLevel, "list",
465
+ cr_ps_get_levels, 0);
466
+ rb_define_singleton_method (rb_mCairo_PSLevel, "name",
467
+ cr_ps_level_to_string, -1);
468
+ # endif
469
+ #endif
470
+
471
+ #if CAIRO_CHECK_VERSION(1, 7, 6)
472
+ /* cairo_text_cluster_flags_t */
473
+ rb_mCairo_TextClusterFlag =
474
+ rb_define_module_under (rb_mCairo, "TextClusterFlag");
475
+ rb_define_const (rb_mCairo_TextClusterFlag, "BACKWARD",
476
+ INT2FIX (CAIRO_TEXT_CLUSTER_FLAG_BACKWARD));
477
+ #endif
478
+ }