cairo 1.6.3 → 1.7.0

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 (445) hide show
  1. data/ChangeLog +206 -0
  2. data/NEWS +13 -0
  3. data/README +10 -3
  4. data/Rakefile +3 -2
  5. data/doc/en/cairo-antialias.html +0 -3
  6. data/doc/en/cairo-clip-not-representable-error.html +1 -4
  7. data/doc/en/cairo-color-base.html +0 -3
  8. data/doc/en/cairo-color-cmyk.html +1 -4
  9. data/doc/en/cairo-color-hsv.html +137 -0
  10. data/doc/en/cairo-color-rgb.html +142 -0
  11. data/doc/en/cairo-color-x11.html +173 -0
  12. data/doc/en/cairo-color.html +238 -0
  13. data/doc/en/cairo-content.html +37 -0
  14. data/doc/en/cairo-context-blur.html +39 -0
  15. data/doc/en/cairo-context-circle.html +39 -0
  16. data/doc/en/cairo-context-color.html +39 -0
  17. data/doc/en/cairo-context-path.html +44 -0
  18. data/doc/en/cairo-context-rectangle.html +0 -3
  19. data/doc/en/cairo-context-triangle.html +39 -0
  20. data/doc/en/cairo-context.html +124 -107
  21. data/doc/en/cairo-error.html +44 -0
  22. data/doc/en/cairo-extend.html +38 -0
  23. data/doc/en/cairo-file-not-found.html +1 -4
  24. data/doc/en/cairo-fill-rule.html +36 -0
  25. data/doc/en/cairo-filter.html +0 -3
  26. data/doc/en/cairo-font-extents.html +129 -0
  27. data/doc/en/cairo-font-face.html +38 -0
  28. data/doc/en/cairo-font-options.html +154 -0
  29. data/doc/en/cairo-font-slant.html +0 -3
  30. data/doc/en/cairo-font-type-mismatch.html +47 -0
  31. data/doc/en/cairo-font-weight.html +0 -3
  32. data/doc/en/cairo-format.html +0 -3
  33. data/doc/en/cairo-glyph.html +99 -0
  34. data/doc/en/cairo-gradient-pattern.html +74 -0
  35. data/doc/en/cairo-hint-metrics.html +37 -0
  36. data/doc/en/cairo-hint-style.html +0 -3
  37. data/doc/en/cairo-image-surface.html +82 -0
  38. data/doc/en/cairo-invalid-clusters.html +47 -0
  39. data/doc/en/cairo-invalid-content-error.html +47 -0
  40. data/doc/en/cairo-invalid-dash-error.html +0 -3
  41. data/doc/en/cairo-invalid-dsc-comment-error.html +47 -0
  42. data/doc/en/cairo-invalid-format-error.html +47 -0
  43. data/doc/en/cairo-invalid-index-error.html +47 -0
  44. data/doc/en/cairo-invalid-matrix-error.html +0 -3
  45. data/doc/en/cairo-invalid-path-data-error.html +47 -0
  46. data/doc/en/cairo-invalid-pop-group-error.html +1 -4
  47. data/doc/en/cairo-invalid-restore-error.html +47 -0
  48. data/doc/en/cairo-invalid-slant.html +47 -0
  49. data/doc/en/cairo-invalid-status-error.html +47 -0
  50. data/doc/en/cairo-invalid-stride-error.html +0 -3
  51. data/doc/en/cairo-invalid-string-error.html +47 -0
  52. data/doc/en/cairo-invalid-visual-error.html +47 -0
  53. data/doc/en/cairo-invalid-weight.html +47 -0
  54. data/doc/en/cairo-lcd-filter.html +39 -0
  55. data/doc/en/cairo-line-cap.html +37 -0
  56. data/doc/en/cairo-line-join.html +37 -0
  57. data/doc/en/cairo-linear-pattern.html +60 -0
  58. data/doc/en/cairo-matrix.html +259 -0
  59. data/doc/en/cairo-negative-count.html +47 -0
  60. data/doc/en/cairo-no-current-point-error.html +47 -0
  61. data/doc/en/cairo-null-pointer-error.html +0 -3
  62. data/doc/en/cairo-operator.html +0 -3
  63. data/doc/en/cairo-paper-parse-error.html +0 -3
  64. data/doc/en/cairo-paper-unknown-paper-name.html +66 -0
  65. data/doc/en/cairo-paper-unknown-unit.html +66 -0
  66. data/doc/en/cairo-paper-unrecognized-paper-description.html +1 -4
  67. data/doc/en/cairo-paper.html +0 -3
  68. data/doc/en/cairo-path-close-path.html +49 -0
  69. data/doc/en/cairo-path-curve-to.html +1 -4
  70. data/doc/en/cairo-path-data-type.html +0 -3
  71. data/doc/en/cairo-path-data.html +0 -3
  72. data/doc/en/cairo-path-line-to.html +1 -4
  73. data/doc/en/cairo-path-move-to.html +1 -4
  74. data/doc/en/cairo-path.html +0 -3
  75. data/doc/en/cairo-pattern-type-mismatch-error.html +47 -0
  76. data/doc/en/cairo-pattern.html +0 -3
  77. data/doc/en/cairo-pdf-surface.html +1 -4
  78. data/doc/en/cairo-point.html +0 -3
  79. data/doc/en/cairo-ps-level.html +49 -0
  80. data/doc/en/cairo-ps-surface.html +1 -4
  81. data/doc/en/cairo-quartz-image-surface.html +57 -0
  82. data/doc/en/cairo-quartz-surface.html +1 -4
  83. data/doc/en/cairo-radial-pattern.html +60 -0
  84. data/doc/en/cairo-read-error.html +47 -0
  85. data/doc/en/cairo-rectangle.html +0 -3
  86. data/doc/en/cairo-scaled-font.html +94 -0
  87. data/doc/en/cairo-solid-pattern.html +62 -0
  88. data/doc/en/cairo-subpixel-order.html +0 -3
  89. data/doc/en/cairo-surface-finished-error.html +1 -4
  90. data/doc/en/cairo-surface-pattern.html +0 -3
  91. data/doc/en/cairo-surface-type-mismatch-error.html +47 -0
  92. data/doc/en/cairo-surface.html +22 -15
  93. data/doc/en/cairo-svg-surface.html +77 -0
  94. data/doc/en/cairo-svg-version.html +0 -3
  95. data/doc/en/cairo-temp-file-error.html +47 -0
  96. data/doc/en/cairo-text-cluster.html +84 -0
  97. data/doc/en/cairo-text-extents.html +144 -0
  98. data/doc/en/cairo-toy-font-face.html +67 -0
  99. data/doc/en/cairo-user-font-error.html +47 -0
  100. data/doc/en/cairo-user-font-face-text-to-glyphs-data.html +94 -0
  101. data/doc/en/cairo-user-font-face.html +72 -0
  102. data/doc/en/cairo-user-font-immutable.html +47 -0
  103. data/doc/en/cairo-win32-printing-surface.html +57 -0
  104. data/doc/en/cairo-win32-surface.html +62 -0
  105. data/doc/en/cairo-write-error.html +47 -0
  106. data/doc/en/cairo.html +92 -80
  107. data/doc/en/index.html +1076 -989
  108. data/doc/ja/cairo-clip-not-representable-error.html +1 -1
  109. data/doc/ja/cairo-color-base.html +1 -1
  110. data/doc/ja/cairo-color-cmyk.html +9 -9
  111. data/doc/ja/cairo-color-hsv.html +8 -8
  112. data/doc/ja/cairo-color-rgb.html +9 -9
  113. data/doc/ja/cairo-color.html +8 -8
  114. data/doc/ja/cairo-context-circle.html +1 -1
  115. data/doc/ja/cairo-context-color.html +1 -1
  116. data/doc/ja/cairo-context-path.html +2 -2
  117. data/doc/ja/cairo-context.html +435 -342
  118. data/doc/ja/cairo-font-extents.html +69 -15
  119. data/doc/ja/cairo-font-face.html +3 -3
  120. data/doc/ja/cairo-font-options.html +37 -12
  121. data/doc/ja/cairo-font-slant.html +1 -1
  122. data/doc/ja/cairo-font-type-mismatch.html +52 -0
  123. data/doc/ja/cairo-glyph.html +5 -5
  124. data/doc/ja/cairo-gradient-pattern.html +6 -6
  125. data/doc/ja/cairo-image-surface.html +8 -8
  126. data/doc/ja/cairo-invalid-clusters.html +55 -0
  127. data/doc/ja/cairo-invalid-restore-error.html +1 -1
  128. data/doc/ja/cairo-invalid-slant.html +57 -0
  129. data/doc/ja/cairo-invalid-weight.html +57 -0
  130. data/doc/ja/cairo-lcd-filter.html +63 -0
  131. data/doc/ja/cairo-line-join.html +1 -1
  132. data/doc/ja/cairo-linear-pattern.html +2 -2
  133. data/doc/ja/cairo-matrix.html +35 -24
  134. data/doc/ja/cairo-negative-count.html +52 -0
  135. data/doc/ja/cairo-paper-unknown-paper-name.html +2 -2
  136. data/doc/ja/cairo-paper-unknown-unit.html +2 -2
  137. data/doc/ja/cairo-paper-unrecognized-paper-description.html +1 -1
  138. data/doc/ja/cairo-paper.html +12 -12
  139. data/doc/ja/cairo-path-close-path.html +1 -1
  140. data/doc/ja/cairo-path-curve-to.html +1 -1
  141. data/doc/ja/cairo-path-data.html +8 -8
  142. data/doc/ja/cairo-path-line-to.html +1 -1
  143. data/doc/ja/cairo-path-move-to.html +1 -1
  144. data/doc/ja/cairo-path.html +21 -21
  145. data/doc/ja/cairo-pattern.html +4 -4
  146. data/doc/ja/cairo-pdf-surface.html +2 -2
  147. data/doc/ja/cairo-point.html +5 -5
  148. data/doc/ja/cairo-ps-level.html +2 -2
  149. data/doc/ja/cairo-ps-surface.html +6 -6
  150. data/doc/ja/cairo-quartz-image-surface.html +2 -2
  151. data/doc/ja/cairo-quartz-surface.html +3 -3
  152. data/doc/ja/cairo-radial-pattern.html +2 -2
  153. data/doc/ja/cairo-rectangle.html +5 -5
  154. data/doc/ja/cairo-scaled-font.html +53 -17
  155. data/doc/ja/cairo-solid-pattern.html +3 -3
  156. data/doc/ja/cairo-surface-pattern.html +2 -2
  157. data/doc/ja/cairo-surface.html +58 -36
  158. data/doc/ja/cairo-svg-surface.html +4 -4
  159. data/doc/ja/cairo-svg-version.html +2 -2
  160. data/doc/ja/cairo-text-cluster.html +102 -0
  161. data/doc/ja/cairo-text-extents.html +84 -22
  162. data/doc/ja/cairo-toy-font-face.html +107 -0
  163. data/doc/ja/cairo-user-font-error.html +55 -0
  164. data/doc/ja/cairo-user-font-face-text-to-glyphs-data.html +155 -0
  165. data/doc/ja/cairo-user-font-face.html +268 -0
  166. data/doc/ja/cairo-user-font-immutable.html +54 -0
  167. data/doc/ja/cairo-win32-printing-surface.html +3 -3
  168. data/doc/ja/cairo-win32-surface.html +4 -4
  169. data/doc/ja/cairo.html +110 -77
  170. data/doc/ja/index.html +292 -205
  171. data/extconf.rb +1 -0
  172. data/src/cairo.def +8 -0
  173. data/src/lib/cairo.rb +12 -7
  174. data/src/lib/cairo/constants.rb +1 -0
  175. data/src/rb_cairo.c +25 -3
  176. data/src/rb_cairo.h +22 -1
  177. data/src/rb_cairo_constants.c +24 -1
  178. data/src/rb_cairo_context.c +147 -6
  179. data/src/rb_cairo_exception.c +143 -3
  180. data/src/rb_cairo_font_extents.c +81 -6
  181. data/src/rb_cairo_font_face.c +646 -4
  182. data/src/rb_cairo_font_options.c +24 -2
  183. data/src/rb_cairo_glyph.c +5 -3
  184. data/src/rb_cairo_matrix.c +17 -1
  185. data/src/rb_cairo_private.c +169 -5
  186. data/src/rb_cairo_private.h +36 -2
  187. data/src/rb_cairo_scaled_font.c +61 -3
  188. data/src/rb_cairo_surface.c +77 -52
  189. data/src/rb_cairo_text_cluster.c +151 -0
  190. data/src/rb_cairo_text_extents.c +85 -2
  191. data/test-unit/Rakefile +30 -0
  192. data/test-unit/bin/testrb +5 -0
  193. data/test-unit/lib/test/unit.rb +280 -0
  194. data/test-unit/lib/test/unit/assertionfailederror.rb +14 -0
  195. data/test-unit/lib/test/unit/assertions.rb +722 -0
  196. data/test-unit/lib/test/unit/attribute.rb +125 -0
  197. data/test-unit/lib/test/unit/autorunner.rb +254 -0
  198. data/test-unit/lib/test/unit/collector.rb +43 -0
  199. data/test-unit/lib/test/unit/collector/descendant.rb +23 -0
  200. data/test-unit/lib/test/unit/collector/dir.rb +108 -0
  201. data/test-unit/lib/test/unit/collector/load.rb +135 -0
  202. data/test-unit/lib/test/unit/collector/objectspace.rb +34 -0
  203. data/test-unit/lib/test/unit/color.rb +61 -0
  204. data/test-unit/lib/test/unit/diff.rb +524 -0
  205. data/test-unit/lib/test/unit/error.rb +124 -0
  206. data/test-unit/lib/test/unit/exceptionhandler.rb +39 -0
  207. data/test-unit/lib/test/unit/failure.rb +110 -0
  208. data/test-unit/lib/test/unit/fixture.rb +185 -0
  209. data/test-unit/lib/test/unit/notification.rb +125 -0
  210. data/test-unit/lib/test/unit/omission.rb +143 -0
  211. data/test-unit/lib/test/unit/pending.rb +146 -0
  212. data/test-unit/lib/test/unit/priority.rb +146 -0
  213. data/test-unit/lib/test/unit/runner/console.rb +46 -0
  214. data/test-unit/lib/test/unit/runner/emacs.rb +8 -0
  215. data/test-unit/lib/test/unit/testcase.rb +281 -0
  216. data/test-unit/lib/test/unit/testresult.rb +89 -0
  217. data/test-unit/lib/test/unit/testsuite.rb +110 -0
  218. data/test-unit/lib/test/unit/ui/console/outputlevel.rb +14 -0
  219. data/test-unit/lib/test/unit/ui/console/testrunner.rb +195 -0
  220. data/test-unit/lib/test/unit/ui/emacs/testrunner.rb +49 -0
  221. data/test-unit/lib/test/unit/ui/testrunner.rb +20 -0
  222. data/test-unit/lib/test/unit/ui/testrunnermediator.rb +77 -0
  223. data/test-unit/lib/test/unit/ui/testrunnerutilities.rb +41 -0
  224. data/test-unit/lib/test/unit/util/backtracefilter.rb +41 -0
  225. data/test-unit/lib/test/unit/util/observable.rb +90 -0
  226. data/test-unit/lib/test/unit/util/procwrapper.rb +48 -0
  227. data/test-unit/lib/test/unit/version.rb +7 -0
  228. data/test-unit/sample/adder.rb +13 -0
  229. data/test-unit/sample/subtracter.rb +12 -0
  230. data/test-unit/sample/tc_adder.rb +18 -0
  231. data/test-unit/sample/tc_subtracter.rb +18 -0
  232. data/test-unit/sample/ts_examples.rb +7 -0
  233. data/test-unit/test/collector/test_descendant.rb +135 -0
  234. data/test-unit/test/collector/test_dir.rb +406 -0
  235. data/test-unit/test/collector/test_load.rb +333 -0
  236. data/test-unit/test/collector/test_objectspace.rb +98 -0
  237. data/test-unit/test/run-test.rb +13 -0
  238. data/test-unit/test/test_assertions.rb +693 -0
  239. data/test-unit/test/test_attribute.rb +86 -0
  240. data/test-unit/test/test_color.rb +37 -0
  241. data/test-unit/test/test_diff.rb +477 -0
  242. data/test-unit/test/test_emacs_runner.rb +60 -0
  243. data/test-unit/test/test_error.rb +26 -0
  244. data/test-unit/test/test_failure.rb +33 -0
  245. data/test-unit/test/test_fixture.rb +252 -0
  246. data/test-unit/test/test_notification.rb +33 -0
  247. data/test-unit/test/test_omission.rb +81 -0
  248. data/test-unit/test/test_pending.rb +70 -0
  249. data/test-unit/test/test_priority.rb +89 -0
  250. data/test-unit/test/test_testcase.rb +430 -0
  251. data/test-unit/test/test_testresult.rb +113 -0
  252. data/test-unit/test/test_testsuite.rb +129 -0
  253. data/test-unit/test/testunit_test_util.rb +14 -0
  254. data/test-unit/test/ui/test_testrunmediator.rb +20 -0
  255. data/test-unit/test/util/test_backtracefilter.rb +41 -0
  256. data/test-unit/test/util/test_observable.rb +102 -0
  257. data/test-unit/test/util/test_procwrapper.rb +36 -0
  258. data/test/cairo-test-utils.rb +18 -0
  259. data/test/run-test.rb +14 -1
  260. data/test/test_constants.rb +19 -0
  261. data/test/test_context.rb +117 -0
  262. data/test/test_exception.rb +27 -0
  263. data/test/test_font_extents.rb +36 -0
  264. data/test/test_font_face.rb +244 -0
  265. data/test/test_font_options.rb +32 -0
  266. data/test/test_pkg_config.rb +3 -2
  267. data/test/test_scaled_font.rb +34 -0
  268. data/test/test_surface.rb +13 -0
  269. data/test/test_text_cluster.rb +32 -0
  270. data/test/test_text_extents.rb +40 -0
  271. data/test/test_text_to_glyphs_data.rb +47 -0
  272. metadata +156 -175
  273. data/doc/en/cairo-antialias.rbl +0 -8
  274. data/doc/en/cairo-antialias.rd +0 -16
  275. data/doc/en/cairo-antialias.rdc +0 -16
  276. data/doc/en/cairo-clip-not-representable-error.rbl +0 -4
  277. data/doc/en/cairo-clip-not-representable-error.rd +0 -17
  278. data/doc/en/cairo-clip-not-representable-error.rdc +0 -17
  279. data/doc/en/cairo-color-base.rbl +0 -11
  280. data/doc/en/cairo-color-base.rd +0 -38
  281. data/doc/en/cairo-color-base.rdc +0 -38
  282. data/doc/en/cairo-color-cmyk.rbl +0 -28
  283. data/doc/en/cairo-color-cmyk.rd +0 -107
  284. data/doc/en/cairo-color-cmyk.rdc +0 -107
  285. data/doc/en/cairo-color-hsv.rd +0 -91
  286. data/doc/en/cairo-color-rgb.rd +0 -95
  287. data/doc/en/cairo-color-x11.rd +0 -151
  288. data/doc/en/cairo-color.rd +0 -213
  289. data/doc/en/cairo-content.rd +0 -15
  290. data/doc/en/cairo-context-blur.rd +0 -15
  291. data/doc/en/cairo-context-circle.rd +0 -15
  292. data/doc/en/cairo-context-color.rd +0 -15
  293. data/doc/en/cairo-context-path.rd +0 -19
  294. data/doc/en/cairo-context-rectangle.rbl +0 -5
  295. data/doc/en/cairo-context-rectangle.rd +0 -15
  296. data/doc/en/cairo-context-rectangle.rdc +0 -15
  297. data/doc/en/cairo-context-triangle.rd +0 -15
  298. data/doc/en/cairo-context.rbl +0 -123
  299. data/doc/en/cairo-context.rd +0 -491
  300. data/doc/en/cairo-context.rdc +0 -491
  301. data/doc/en/cairo-error.rd +0 -16
  302. data/doc/en/cairo-extend.rd +0 -16
  303. data/doc/en/cairo-file-not-found.rbl +0 -4
  304. data/doc/en/cairo-file-not-found.rd +0 -17
  305. data/doc/en/cairo-file-not-found.rdc +0 -17
  306. data/doc/en/cairo-fill-rule.rd +0 -14
  307. data/doc/en/cairo-filter.rbl +0 -10
  308. data/doc/en/cairo-filter.rd +0 -18
  309. data/doc/en/cairo-filter.rdc +0 -18
  310. data/doc/en/cairo-font-extents.rd +0 -40
  311. data/doc/en/cairo-font-face.rd +0 -14
  312. data/doc/en/cairo-font-options.rd +0 -94
  313. data/doc/en/cairo-font-slant.rbl +0 -7
  314. data/doc/en/cairo-font-slant.rd +0 -15
  315. data/doc/en/cairo-font-slant.rdc +0 -15
  316. data/doc/en/cairo-font-weight.rbl +0 -6
  317. data/doc/en/cairo-font-weight.rd +0 -14
  318. data/doc/en/cairo-font-weight.rdc +0 -14
  319. data/doc/en/cairo-format.rbl +0 -10
  320. data/doc/en/cairo-format.rd +0 -22
  321. data/doc/en/cairo-format.rdc +0 -22
  322. data/doc/en/cairo-glyph.rd +0 -62
  323. data/doc/en/cairo-gradient-pattern.rd +0 -41
  324. data/doc/en/cairo-hint-metrics.rd +0 -15
  325. data/doc/en/cairo-hint-style.rbl +0 -9
  326. data/doc/en/cairo-hint-style.rd +0 -17
  327. data/doc/en/cairo-hint-style.rdc +0 -17
  328. data/doc/en/cairo-image-surface.rd +0 -47
  329. data/doc/en/cairo-invalid-content-error.rd +0 -17
  330. data/doc/en/cairo-invalid-dash-error.rbl +0 -4
  331. data/doc/en/cairo-invalid-dash-error.rd +0 -17
  332. data/doc/en/cairo-invalid-dash-error.rdc +0 -17
  333. data/doc/en/cairo-invalid-dsc-comment-error.rd +0 -17
  334. data/doc/en/cairo-invalid-format-error.rd +0 -17
  335. data/doc/en/cairo-invalid-index-error.rd +0 -17
  336. data/doc/en/cairo-invalid-matrix-error.rbl +0 -4
  337. data/doc/en/cairo-invalid-matrix-error.rd +0 -17
  338. data/doc/en/cairo-invalid-matrix-error.rdc +0 -17
  339. data/doc/en/cairo-invalid-path-data-error.rd +0 -17
  340. data/doc/en/cairo-invalid-pop-group-error.rbl +0 -4
  341. data/doc/en/cairo-invalid-pop-group-error.rd +0 -17
  342. data/doc/en/cairo-invalid-pop-group-error.rdc +0 -17
  343. data/doc/en/cairo-invalid-restore-error.rd +0 -17
  344. data/doc/en/cairo-invalid-status-error.rd +0 -17
  345. data/doc/en/cairo-invalid-stride-error.rbl +0 -4
  346. data/doc/en/cairo-invalid-stride-error.rd +0 -17
  347. data/doc/en/cairo-invalid-stride-error.rdc +0 -17
  348. data/doc/en/cairo-invalid-string-error.rd +0 -17
  349. data/doc/en/cairo-invalid-visual-error.rd +0 -17
  350. data/doc/en/cairo-line-cap.rd +0 -15
  351. data/doc/en/cairo-line-join.rd +0 -15
  352. data/doc/en/cairo-linear-pattern.rd +0 -28
  353. data/doc/en/cairo-matrix.rd +0 -186
  354. data/doc/en/cairo-no-current-point-error.rd +0 -17
  355. data/doc/en/cairo-null-pointer-error.rbl +0 -4
  356. data/doc/en/cairo-null-pointer-error.rd +0 -17
  357. data/doc/en/cairo-null-pointer-error.rdc +0 -17
  358. data/doc/en/cairo-operator.rbl +0 -18
  359. data/doc/en/cairo-operator.rd +0 -26
  360. data/doc/en/cairo-operator.rdc +0 -26
  361. data/doc/en/cairo-paper-parse-error.rbl +0 -4
  362. data/doc/en/cairo-paper-parse-error.rd +0 -17
  363. data/doc/en/cairo-paper-parse-error.rdc +0 -17
  364. data/doc/en/cairo-paper-unknown-paper-name.rd +0 -30
  365. data/doc/en/cairo-paper-unknown-unit.rd +0 -30
  366. data/doc/en/cairo-paper-unrecognized-paper-description.rbl +0 -8
  367. data/doc/en/cairo-paper-unrecognized-paper-description.rd +0 -30
  368. data/doc/en/cairo-paper-unrecognized-paper-description.rdc +0 -30
  369. data/doc/en/cairo-paper.rbl +0 -76
  370. data/doc/en/cairo-paper.rd +0 -141
  371. data/doc/en/cairo-paper.rdc +0 -141
  372. data/doc/en/cairo-path-close-path.rd +0 -21
  373. data/doc/en/cairo-path-curve-to.rbl +0 -6
  374. data/doc/en/cairo-path-curve-to.rd +0 -21
  375. data/doc/en/cairo-path-curve-to.rdc +0 -21
  376. data/doc/en/cairo-path-data-type.rbl +0 -8
  377. data/doc/en/cairo-path-data-type.rd +0 -16
  378. data/doc/en/cairo-path-data-type.rdc +0 -16
  379. data/doc/en/cairo-path-data.rbl +0 -17
  380. data/doc/en/cairo-path-data.rd +0 -62
  381. data/doc/en/cairo-path-data.rdc +0 -62
  382. data/doc/en/cairo-path-line-to.rbl +0 -6
  383. data/doc/en/cairo-path-line-to.rd +0 -21
  384. data/doc/en/cairo-path-line-to.rdc +0 -21
  385. data/doc/en/cairo-path-move-to.rbl +0 -6
  386. data/doc/en/cairo-path-move-to.rd +0 -21
  387. data/doc/en/cairo-path-move-to.rdc +0 -21
  388. data/doc/en/cairo-path.rbl +0 -32
  389. data/doc/en/cairo-path.rd +0 -109
  390. data/doc/en/cairo-path.rdc +0 -109
  391. data/doc/en/cairo-pattern-type-mismatch-error.rd +0 -17
  392. data/doc/en/cairo-pattern.rbl +0 -17
  393. data/doc/en/cairo-pattern.rd +0 -62
  394. data/doc/en/cairo-pattern.rdc +0 -62
  395. data/doc/en/cairo-pdf-surface.rbl +0 -8
  396. data/doc/en/cairo-pdf-surface.rd +0 -27
  397. data/doc/en/cairo-pdf-surface.rdc +0 -27
  398. data/doc/en/cairo-point.rbl +0 -12
  399. data/doc/en/cairo-point.rd +0 -42
  400. data/doc/en/cairo-point.rdc +0 -42
  401. data/doc/en/cairo-ps-level.rd +0 -24
  402. data/doc/en/cairo-ps-surface.rbl +0 -15
  403. data/doc/en/cairo-ps-surface.rd +0 -55
  404. data/doc/en/cairo-ps-surface.rdc +0 -55
  405. data/doc/en/cairo-quartz-image-surface.rd +0 -27
  406. data/doc/en/cairo-quartz-surface.rbl +0 -8
  407. data/doc/en/cairo-quartz-surface.rd +0 -27
  408. data/doc/en/cairo-quartz-surface.rdc +0 -27
  409. data/doc/en/cairo-radial-pattern.rd +0 -28
  410. data/doc/en/cairo-read-error.rd +0 -17
  411. data/doc/en/cairo-rectangle.rbl +0 -15
  412. data/doc/en/cairo-rectangle.rd +0 -54
  413. data/doc/en/cairo-rectangle.rdc +0 -54
  414. data/doc/en/cairo-scaled-font.rd +0 -50
  415. data/doc/en/cairo-solid-pattern.rd +0 -31
  416. data/doc/en/cairo-subpixel-order.rbl +0 -9
  417. data/doc/en/cairo-subpixel-order.rd +0 -17
  418. data/doc/en/cairo-subpixel-order.rdc +0 -17
  419. data/doc/en/cairo-surface-finished-error.rbl +0 -4
  420. data/doc/en/cairo-surface-finished-error.rd +0 -17
  421. data/doc/en/cairo-surface-finished-error.rdc +0 -17
  422. data/doc/en/cairo-surface-pattern.rbl +0 -8
  423. data/doc/en/cairo-surface-pattern.rd +0 -27
  424. data/doc/en/cairo-surface-pattern.rdc +0 -27
  425. data/doc/en/cairo-surface-type-mismatch-error.rd +0 -17
  426. data/doc/en/cairo-surface.rbl +0 -19
  427. data/doc/en/cairo-surface.rd +0 -72
  428. data/doc/en/cairo-surface.rdc +0 -72
  429. data/doc/en/cairo-svg-surface.rd +0 -44
  430. data/doc/en/cairo-svg-version.rbl +0 -9
  431. data/doc/en/cairo-svg-version.rd +0 -24
  432. data/doc/en/cairo-svg-version.rdc +0 -24
  433. data/doc/en/cairo-temp-file-error.rd +0 -17
  434. data/doc/en/cairo-text-extents.rd +0 -44
  435. data/doc/en/cairo-win32-printing-surface.rd +0 -27
  436. data/doc/en/cairo-win32-surface.rd +0 -31
  437. data/doc/en/cairo-write-error.rd +0 -17
  438. data/doc/en/cairo.rbl +0 -80
  439. data/doc/en/cairo.rd +0 -95
  440. data/doc/en/cairo.rdc +0 -95
  441. data/doc/en/index.rbl +0 -1
  442. data/doc/en/index.rd +0 -1051
  443. data/doc/en/index.rdc +0 -1051
  444. data/samples/agg/aa_demo.rb +0 -47
  445. data/src/lib/cairo/table.rb +0 -29
@@ -0,0 +1,18 @@
1
+ require 'cairo'
2
+
3
+ module CairoTestUtils
4
+ private
5
+ def only_cairo_version(major, minor, micro=nil)
6
+ unless Cairo.satisfied_version?(major, minor, micro)
7
+ omit("Require cairo >= #{major}.#{minor}.#{micro}")
8
+ end
9
+ end
10
+
11
+ def only_win32
12
+ omit("Only for Win32 platform") unless win32
13
+ end
14
+
15
+ def win32?
16
+ /cygwin|mingw|mswin32|bccwin32/.match(RUBY_PLATFORM) ? true : false
17
+ end
18
+ end
data/test/run-test.rb CHANGED
@@ -1,15 +1,28 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  base_dir = File.expand_path(File.join(File.dirname(__FILE__), ".."))
4
+ test_unit_dir = File.join(base_dir, "test-unit", "lib")
4
5
  src_dir = File.join(base_dir, "src")
5
6
  lib_dir = File.join(src_dir, "lib")
7
+ test_dir = File.join(base_dir, "test")
8
+
9
+ if system("which make > /dev/null")
10
+ system("cd #{base_dir.dump} && make > /dev/null") or exit(1)
11
+ end
12
+
13
+ $LOAD_PATH.unshift(test_unit_dir)
14
+
15
+ require 'test/unit'
6
16
 
7
17
  $LOAD_PATH.unshift(base_dir)
8
18
  $LOAD_PATH.unshift(src_dir)
9
19
  $LOAD_PATH.unshift(lib_dir)
10
20
 
11
- require 'test/unit'
21
+ $LOAD_PATH.unshift(test_dir)
22
+ require 'cairo-test-utils'
12
23
 
13
24
  Dir.glob("test/**/test_*.rb") do |file|
14
25
  require file.sub(/\.rb$/, '')
15
26
  end
27
+
28
+ exit Test::Unit::AutoRunner.run(false)
@@ -0,0 +1,19 @@
1
+ require 'cairo'
2
+
3
+ class ConstantsTest < Test::Unit::TestCase
4
+ def test_lcd_filter
5
+ constant_name = "LCDFilter"
6
+ unless Cairo.satisfied_version?(1, 7, 2)
7
+ assert_false(Cairo.const_defined?(constant_name))
8
+ return
9
+ end
10
+
11
+ assert_true(Cairo.const_defined?(constant_name))
12
+ assert_equal((0..4).to_a,
13
+ [Cairo::LCDFilter::DEFAULT,
14
+ Cairo::LCDFilter::NONE,
15
+ Cairo::LCDFilter::INTRA_PIXEL,
16
+ Cairo::LCDFilter::FIR3,
17
+ Cairo::LCDFilter::FIR5])
18
+ end
19
+ end
@@ -0,0 +1,117 @@
1
+ require 'cairo'
2
+ require 'stringio'
3
+
4
+ class ContextTest < Test::Unit::TestCase
5
+ include CairoTestUtils
6
+
7
+ def setup
8
+ @output = StringIO.new
9
+ @surface = Cairo::PDFSurface.new(@output, 10, 10)
10
+ end
11
+
12
+ def test_new_and_destroy
13
+ context = Cairo::Context.new(@surface)
14
+ @surface.destroy
15
+ assert_no_match(/%%EOF\s*\z/m, @output.string)
16
+ context.destroy
17
+ assert_match(/%%EOF\s*\z/m, @output.string)
18
+ end
19
+
20
+ def test_new_with_block
21
+ Cairo::Context.new(@surface) do |context|
22
+ @surface.destroy
23
+ assert_no_match(/%%EOF\s*\z/m, @output.string)
24
+ end
25
+ assert_match(/%%EOF\s*\z/m, @output.string)
26
+ end
27
+
28
+ def test_new_with_block_and_destroy
29
+ assert_nothing_raised do
30
+ Cairo::Context.new(@surface) do |context|
31
+ context.destroy
32
+ end
33
+ end
34
+ end
35
+
36
+ def test_font_face
37
+ only_cairo_version(1, 7, 2)
38
+
39
+ context = Cairo::Context.new(@surface)
40
+
41
+ assert_kind_of(Cairo::FontFace, context.font_face)
42
+
43
+ face = Cairo::ToyFontFace.new("serif")
44
+ context.font_face = face
45
+ assert_equal("serif", context.font_face.family)
46
+
47
+ face = Cairo::ToyFontFace.new("sans")
48
+ context.font_face = face
49
+ assert_equal("sans", context.font_face.family)
50
+ end
51
+
52
+ def test_have_show_text_glyphs?
53
+ only_cairo_version(1, 7, 2)
54
+
55
+ pdf_surface = Cairo::PDFSurface.new(@output, 10, 10)
56
+ context = Cairo::Context.new(pdf_surface)
57
+ assert_true(context.have_show_text_glyphs?)
58
+
59
+ image_surface = Cairo::ImageSurface.new(10, 10)
60
+ context = Cairo::Context.new(image_surface)
61
+ assert_false(context.have_show_text_glyphs?)
62
+ end
63
+
64
+ def test_text_to_glyphs
65
+ only_cairo_version(1, 7, 2)
66
+
67
+ surface = Cairo::PDFSurface.new(StringIO.new, 10, 10)
68
+ context = Cairo::Context.new(surface)
69
+ scaled_font = Cairo::ScaledFont.new(context.font_face,
70
+ Cairo::Matrix.identity,
71
+ Cairo::Matrix.identity,
72
+ Cairo::FontOptions.new)
73
+
74
+ utf8 = "text"
75
+ glyphs, clusters, backward = scaled_font.text_to_glyphs(0, 0, utf8)
76
+ assert_nothing_raised do
77
+ context.show_text_glyphs(utf8, glyphs, clusters, backward)
78
+ end
79
+ end
80
+
81
+ def test_select_font_face
82
+ only_cairo_version(1, 7, 2)
83
+
84
+ context = Cairo::Context.new(@surface)
85
+
86
+ face = context.font_face
87
+ default_font_family = ""
88
+ # default_font_family = "Helvetica" if quartz?
89
+ # default_font_family = "Arial" if win32?
90
+ assert_equal([default_font_family,
91
+ Cairo::FONT_SLANT_NORMAL,
92
+ Cairo::FONT_WEIGHT_NORMAL],
93
+ [face.family, face.slant, face.weight])
94
+
95
+ context.select_font_face
96
+ face = context.font_face
97
+ assert_equal([default_font_family,
98
+ Cairo::FONT_SLANT_NORMAL,
99
+ Cairo::FONT_WEIGHT_NORMAL],
100
+ [face.family, face.slant, face.weight])
101
+
102
+ context.select_font_face(:serif, :italic, :bold)
103
+ face = context.font_face
104
+ assert_equal(["serif", Cairo::FONT_SLANT_ITALIC, Cairo::FONT_WEIGHT_BOLD],
105
+ [face.family, face.slant, face.weight])
106
+ end
107
+
108
+ def test_select_font_face_with_invalid_family_name
109
+ context = Cairo::Context.new(@surface)
110
+
111
+ exception = assert_raise(ArgumentError) do
112
+ context.select_font_face([999])
113
+ end
114
+ assert_equal("family name should be nil, String or Symbol: [999]",
115
+ exception.message)
116
+ end
117
+ end
@@ -0,0 +1,27 @@
1
+ require 'cairo'
2
+
3
+ class ExceptionTest < Test::Unit::TestCase
4
+ def test_new_symbols_since_1_7_2
5
+ if Cairo.satisfied_version?(1, 7, 2)
6
+ assertion = :assert_defined
7
+ else
8
+ assertion = :assert_not_defined
9
+ end
10
+ send(assertion, "FontTypeMismatch")
11
+ send(assertion, "UserFontImmutable")
12
+ send(assertion, "UserFontError")
13
+ send(assertion, "NegativeCount")
14
+ send(assertion, "InvalidClusters")
15
+ send(assertion, "InvalidSlant")
16
+ send(assertion, "InvalidWeight")
17
+ end
18
+
19
+ private
20
+ def assert_defined(name)
21
+ assert_true(Cairo.const_defined?(name))
22
+ end
23
+
24
+ def assert_not_defined(name)
25
+ assert_false(Cairo.const_defined?(name))
26
+ end
27
+ end
@@ -0,0 +1,36 @@
1
+ require 'cairo'
2
+
3
+ class FontExtentsTest < Test::Unit::TestCase
4
+ include CairoTestUtils
5
+
6
+ def test_new
7
+ extents = Cairo::FontExtents.new
8
+ assert_equal([1.0, 0.0, 1.0, 1.0, 0.0],
9
+ [extents.ascent, extents.descent, extents.height,
10
+ extents.max_x_advance, extents.max_y_advance])
11
+ end
12
+
13
+ def test_accessor
14
+ extents = Cairo::FontExtents.new
15
+ extents.ascent = 0.1
16
+ extents.descent = 0.2
17
+ extents.height = 0.3
18
+ extents.max_x_advance = 0.4
19
+ extents.max_y_advance = 0.5
20
+ assert_equal([0.1, 0.2, 0.3, 0.4, 0.5],
21
+ [extents.ascent, extents.descent, extents.height,
22
+ extents.max_x_advance, extents.max_y_advance])
23
+ end
24
+
25
+ def test_to_s
26
+ extents = Cairo::FontExtents.new
27
+ extents.ascent = 0.1
28
+ extents.descent = 0.2
29
+ extents.height = 0.3
30
+ extents.max_x_advance = 0.4
31
+ extents.max_y_advance = 0.5
32
+ assert_equal("#<Cairo::FontExtents: ascent=0.1, descent=0.2, " +
33
+ "height=0.3, max_x_advance=0.4, max_y_advance=0.5>",
34
+ extents.to_s)
35
+ end
36
+ end
@@ -0,0 +1,244 @@
1
+ require 'cairo'
2
+
3
+ class FontFaceTest < Test::Unit::TestCase
4
+ include CairoTestUtils
5
+
6
+ def test_toy_font_face_new
7
+ only_cairo_version(1, 7, 2)
8
+
9
+ face = Cairo::ToyFontFace.new
10
+ default_font_family = ""
11
+ # default_font_family = "Helvetica" if quartz?
12
+ # default_font_family = "Arial" if win32?
13
+ assert_equal([default_font_family,
14
+ Cairo::FONT_SLANT_NORMAL,
15
+ Cairo::FONT_WEIGHT_NORMAL],
16
+ [face.family, face.slant, face.weight])
17
+
18
+ face = Cairo::ToyFontFace.new("serif")
19
+ assert_equal(["serif", Cairo::FONT_SLANT_NORMAL, Cairo::FONT_WEIGHT_NORMAL],
20
+ [face.family, face.slant, face.weight])
21
+
22
+ face = Cairo::ToyFontFace.new(:serif)
23
+ assert_equal(["serif", Cairo::FONT_SLANT_NORMAL, Cairo::FONT_WEIGHT_NORMAL],
24
+ [face.family, face.slant, face.weight])
25
+
26
+ face = Cairo::ToyFontFace.new("serif", :oblique)
27
+ assert_equal(["serif", Cairo::FONT_SLANT_OBLIQUE, Cairo::FONT_WEIGHT_NORMAL],
28
+ [face.family, face.slant, face.weight])
29
+
30
+ face = Cairo::ToyFontFace.new("serif", nil, :bold)
31
+ assert_equal(["serif", Cairo::FONT_SLANT_NORMAL, Cairo::FONT_WEIGHT_BOLD],
32
+ [face.family, face.slant, face.weight])
33
+
34
+ face = Cairo::ToyFontFace.new("serif", :italic, :bold)
35
+ assert_equal(["serif", Cairo::FONT_SLANT_ITALIC, Cairo::FONT_WEIGHT_BOLD],
36
+ [face.family, face.slant, face.weight])
37
+ end
38
+
39
+ def test_toy_font_face_new_with_invalid_family_name
40
+ only_cairo_version(1, 7, 2)
41
+
42
+ exception = assert_raise(ArgumentError) do
43
+ Cairo::ToyFontFace.new(999)
44
+ end
45
+ assert_equal("family name should be nil, String or Symbol: 999",
46
+ exception.message)
47
+ end
48
+
49
+ def test_user_font_face_empty
50
+ only_cairo_version(1, 7, 2)
51
+
52
+ face = Cairo::UserFontFace.new
53
+ scaled_font = Cairo::ScaledFont.new(face,
54
+ Cairo::Matrix.identity,
55
+ Cairo::Matrix.identity,
56
+ Cairo::FontOptions.new)
57
+ assert_equal([[], [], false],
58
+ scaled_font.text_to_glyphs(0, 0, "text"))
59
+ end
60
+
61
+ def test_user_font_face_callback
62
+ only_cairo_version(1, 7, 2)
63
+
64
+ face = Cairo::UserFontFace.new
65
+
66
+ init_args = []
67
+ face.on_init do |*args|
68
+ init_args << args
69
+ end
70
+
71
+ render_glyph_args = []
72
+ face.on_render_glyph do |*args|
73
+ render_glyph_args << args
74
+ end
75
+
76
+ text_to_glyphs_args = []
77
+ face.on_text_to_glyphs do |*args|
78
+ text_to_glyphs_args << args
79
+ scaled_font, utf8, data = args
80
+ data.backward = true
81
+ end
82
+
83
+ unicode_to_glyph_args = []
84
+ face.on_unicode_to_glyph do |*args|
85
+ unicode_to_glyph_args << args
86
+ scaled_font, unicode = args
87
+ unicode
88
+ end
89
+
90
+ scaled_font = Cairo::ScaledFont.new(face,
91
+ Cairo::Matrix.identity,
92
+ Cairo::Matrix.identity,
93
+ Cairo::FontOptions.new)
94
+ result = scaled_font.text_to_glyphs(0, 0, "text")
95
+ assert_equal([[[Cairo::ScaledFont, Cairo::Context, Cairo::FontExtents]],
96
+ [[Cairo::ScaledFont, ?t, Cairo::Context, Cairo::TextExtents],
97
+ [Cairo::ScaledFont, ?e, Cairo::Context, Cairo::TextExtents],
98
+ [Cairo::ScaledFont, ?x, Cairo::Context, Cairo::TextExtents]],
99
+ [[Cairo::ScaledFont, "text",
100
+ Cairo::UserFontFace::TextToGlyphsData]],
101
+ [[Cairo::ScaledFont, ?t],
102
+ [Cairo::ScaledFont, ?e],
103
+ [Cairo::ScaledFont, ?x],
104
+ [Cairo::ScaledFont, ?t]],
105
+ [[], [], true]],
106
+ [classify_cairo_object(init_args),
107
+ classify_cairo_object(render_glyph_args),
108
+ classify_cairo_object(text_to_glyphs_args),
109
+ classify_cairo_object(unicode_to_glyph_args),
110
+ result])
111
+ end
112
+
113
+ if Cairo.satisfied_version?(1, 7, 2)
114
+ class CustomUserFontFace < Cairo::UserFontFace
115
+ attr_reader :init_args, :render_glyph_args
116
+ attr_reader :text_to_glyphs_args, :unicode_to_glyph_args
117
+ def initialize
118
+ super
119
+ @init_args = []
120
+ @render_glyph_args = []
121
+ @text_to_glyphs_args = []
122
+ @unicode_to_glyph_args = []
123
+ end
124
+
125
+ def init(*args)
126
+ @init_args << args
127
+ end
128
+
129
+ def render_glyph(*args)
130
+ @render_glyph_args << args
131
+ end
132
+
133
+ def text_to_glyphs(*args)
134
+ @text_to_glyphs_args << args
135
+ scaled_font, utf8, data = args
136
+ data.backward = true
137
+ end
138
+
139
+ def unicode_to_glyph(*args)
140
+ @unicode_to_glyph_args << args
141
+ scaled_font, unicode = args
142
+ unicode
143
+ end
144
+ end
145
+ end
146
+
147
+ def test_user_font_face_class
148
+ only_cairo_version(1, 7, 2)
149
+
150
+ face = CustomUserFontFace.new
151
+
152
+ scaled_font = Cairo::ScaledFont.new(face,
153
+ Cairo::Matrix.identity,
154
+ Cairo::Matrix.identity,
155
+ Cairo::FontOptions.new)
156
+ result = scaled_font.text_to_glyphs(0, 0, "text")
157
+ assert_equal([[[Cairo::ScaledFont, Cairo::Context, Cairo::FontExtents]],
158
+ [[Cairo::ScaledFont, ?t, Cairo::Context, Cairo::TextExtents],
159
+ [Cairo::ScaledFont, ?e, Cairo::Context, Cairo::TextExtents],
160
+ [Cairo::ScaledFont, ?x, Cairo::Context, Cairo::TextExtents]],
161
+ [[Cairo::ScaledFont, "text",
162
+ Cairo::UserFontFace::TextToGlyphsData]],
163
+ [[Cairo::ScaledFont, ?t],
164
+ [Cairo::ScaledFont, ?e],
165
+ [Cairo::ScaledFont, ?x],
166
+ [Cairo::ScaledFont, ?t]],
167
+ [[], [], true]],
168
+ [classify_cairo_object(face.init_args),
169
+ classify_cairo_object(face.render_glyph_args),
170
+ classify_cairo_object(face.text_to_glyphs_args),
171
+ classify_cairo_object(face.unicode_to_glyph_args),
172
+ result])
173
+ end
174
+
175
+ def test_user_font_face_class_and_callback
176
+ only_cairo_version(1, 7, 2)
177
+
178
+ face = CustomUserFontFace.new
179
+
180
+ init_args = []
181
+ face.on_init do |*args|
182
+ init_args << args
183
+ end
184
+
185
+ render_glyph_args = []
186
+ face.on_render_glyph do |*args|
187
+ render_glyph_args << args
188
+ end
189
+
190
+ text_to_glyphs_args = []
191
+ face.on_text_to_glyphs do |*args|
192
+ text_to_glyphs_args << args
193
+ scaled_font, utf8, data = args
194
+ data.backward = true
195
+ end
196
+
197
+ unicode_to_glyph_args = []
198
+ face.on_unicode_to_glyph do |*args|
199
+ unicode_to_glyph_args << args
200
+ scaled_font, unicode = args
201
+ unicode
202
+ end
203
+
204
+ scaled_font = Cairo::ScaledFont.new(face,
205
+ Cairo::Matrix.identity,
206
+ Cairo::Matrix.identity,
207
+ Cairo::FontOptions.new)
208
+ result = scaled_font.text_to_glyphs(0, 0, "text")
209
+ assert_equal([[[Cairo::ScaledFont, Cairo::Context, Cairo::FontExtents]],
210
+ [[Cairo::ScaledFont, ?t, Cairo::Context, Cairo::TextExtents],
211
+ [Cairo::ScaledFont, ?e, Cairo::Context, Cairo::TextExtents],
212
+ [Cairo::ScaledFont, ?x, Cairo::Context, Cairo::TextExtents]],
213
+ [[Cairo::ScaledFont, "text",
214
+ Cairo::UserFontFace::TextToGlyphsData]],
215
+ [[Cairo::ScaledFont, ?t],
216
+ [Cairo::ScaledFont, ?e],
217
+ [Cairo::ScaledFont, ?x],
218
+ [Cairo::ScaledFont, ?t]],
219
+ [],
220
+ [],
221
+ [],
222
+ [],
223
+ [[], [], true]],
224
+ [classify_cairo_object(init_args),
225
+ classify_cairo_object(render_glyph_args),
226
+ classify_cairo_object(text_to_glyphs_args),
227
+ classify_cairo_object(unicode_to_glyph_args),
228
+ classify_cairo_object(face.init_args),
229
+ classify_cairo_object(face.render_glyph_args),
230
+ classify_cairo_object(face.text_to_glyphs_args),
231
+ classify_cairo_object(face.unicode_to_glyph_args),
232
+ result])
233
+ end
234
+
235
+ def classify_cairo_object(object)
236
+ if object.is_a?(Array)
237
+ object.collect {|obj| classify_cairo_object(obj)}
238
+ elsif /\ACairo::/ =~ object.class.name
239
+ object.class
240
+ else
241
+ object
242
+ end
243
+ end
244
+ end