cairo 1.6.3 → 1.7.0

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 (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
data/extconf.rb CHANGED
@@ -80,6 +80,7 @@ major, minor, micro = 1, 2, 0
80
80
 
81
81
  PKGConfig.have_package(pkg, major, minor, micro) or exit 1
82
82
 
83
+ have_header("ruby/st.h") unless have_macro("HAVE_RUBY_ST_H", "ruby.h")
83
84
  have_func("rb_errinfo", "ruby.h")
84
85
  have_type("enum ruby_value_type", "ruby.h")
85
86
 
data/src/cairo.def CHANGED
@@ -16,11 +16,15 @@ EXPORTS
16
16
  rb_cCairo_LinearPattern DATA
17
17
  rb_cCairo_RadialPattern DATA
18
18
  rb_cCairo_FontFace DATA
19
+ rb_cCairo_ToyFontFace DATA
20
+ rb_cCairo_UserFontFace DATA
21
+ rb_cCairo_UserFontFace_TextToGlyphsData DATA
19
22
  rb_cCairo_FontExtents DATA
20
23
  rb_cCairo_FontOptions DATA
21
24
  rb_cCairo_ScaledFont DATA
22
25
  rb_cCairo_TextExtents DATA
23
26
  rb_cCairo_Glyph DATA
27
+ rb_cCairo_TextCluster DATA
24
28
  rb_cCairo_Surface DATA
25
29
  rb_cCairo_ImageSurface DATA
26
30
  rb_cCairo_PDFSurface DATA
@@ -48,6 +52,7 @@ EXPORTS
48
52
  rb_mCairo_Filter DATA
49
53
  rb_mCairo_SVGVersion DATA
50
54
  rb_mCairo_PSLevel DATA
55
+ rb_mCairo_LCDFilter DATA
51
56
 
52
57
  rb_mCairo_Color DATA
53
58
  rb_cCairo_Color_Base DATA
@@ -73,6 +78,8 @@ EXPORTS
73
78
  rb_cairo_text_extents_to_ruby_object
74
79
  rb_cairo_glyph_from_ruby_object
75
80
  rb_cairo_glyph_to_ruby_object
81
+ rb_cairo_text_cluster_from_ruby_object
82
+ rb_cairo_text_cluster_to_ruby_object
76
83
  rb_cairo_surface_from_ruby_object
77
84
  rb_cairo_surface_to_ruby_object
78
85
  rb_cairo_surface_to_ruby_object_with_destroy
@@ -93,4 +100,5 @@ EXPORTS
93
100
  rb_cairo_filter_from_ruby_object
94
101
  rb_cairo_svg_version_from_ruby_object
95
102
  rb_cairo_ps_level_from_ruby_object
103
+ rb_cairo_lcd_filter_from_ruby_object
96
104
  rb_cairo_check_status
data/src/lib/cairo.rb CHANGED
@@ -45,14 +45,19 @@ require 'cairo/constants'
45
45
  module Cairo
46
46
  class << self
47
47
  undef __add_one_arg_setter
48
- end
49
48
 
50
- module_function
51
- def bindings_version
52
- major, minor, micro, tag = BINDINGS_VERSION
53
- version = [major, minor, micro].join('.')
54
- version << "-#{tag}" if tag
55
- version
49
+ def bindings_version
50
+ major, minor, micro, tag = BINDINGS_VERSION
51
+ version = [major, minor, micro].join('.')
52
+ version << "-#{tag}" if tag
53
+ version
54
+ end
55
+
56
+ def exit_application(exception, status)
57
+ puts("#{exception.class}: #{exception}")
58
+ puts(exception.backtrace)
59
+ exit(status)
60
+ end
56
61
  end
57
62
 
58
63
  class Surface
@@ -18,4 +18,5 @@ module Cairo
18
18
  define_constants.call(PathDataType, nil, Path)
19
19
  define_constants.call(SVGVersion, nil, SVGSurface)
20
20
  define_constants.call(SVGVersion, "SVG")
21
+ define_constants.call(LCDFilter, "LCD_FILTER") if const_defined?(:LCDFilter)
21
22
  end
data/src/rb_cairo.c CHANGED
@@ -3,9 +3,9 @@
3
3
  * Ruby Cairo Binding
4
4
  *
5
5
  * $Author: kou $
6
- * $Date: 2008-07-19 11:00:10 $
6
+ * $Date: 2008-08-16 08:16:39 $
7
7
  *
8
- * Copyright 2006-2007 Kouhei Sutou <kou@cozmixng.org>
8
+ * Copyright 2006-2008 Kouhei Sutou <kou@cozmixng.org>
9
9
  * Copyright 2005 Øyvind Kolås <pippin@freedesktop.org>
10
10
  * Copyright 2004-2005 MenTaLguY <mental@rydia.com>
11
11
  *
@@ -27,6 +27,24 @@ rb_cairo_def_setters (VALUE klass)
27
27
  rb_funcall (rb_mCairo, id__add_one_arg_setter, 1, klass);
28
28
  }
29
29
 
30
+ static VALUE
31
+ rb_cairo_satisfied_version (int argc, VALUE *argv, VALUE self)
32
+ {
33
+ VALUE major, minor, micro;
34
+
35
+ rb_scan_args (argc, argv, "21", &major, &minor, &micro);
36
+
37
+ if (NIL_P (micro))
38
+ micro = UINT2NUM (0);
39
+
40
+ return CBOOL2RVAL (CAIRO_VERSION_MAJOR > NUM2UINT(major) ||
41
+ (CAIRO_VERSION_MAJOR == NUM2UINT(major) &&
42
+ CAIRO_VERSION_MINOR > NUM2UINT(minor)) ||
43
+ (CAIRO_VERSION_MAJOR == NUM2UINT(major) &&
44
+ CAIRO_VERSION_MINOR == NUM2UINT(minor) &&
45
+ CAIRO_VERSION_MICRO >= NUM2UINT(micro)));
46
+ }
47
+
30
48
  void
31
49
  Init_cairo ()
32
50
  {
@@ -58,7 +76,10 @@ Init_cairo ()
58
76
 
59
77
  rb_define_const (rb_mCairo, "BINDINGS_VERSION",
60
78
  rb_ary_new3 (4,
61
- INT2FIX (1), INT2FIX (6), INT2FIX (3), Qnil));
79
+ INT2FIX (1), INT2FIX (7), INT2FIX (0), Qnil));
80
+
81
+ rb_define_module_function (rb_mCairo, "satisfied_version?",
82
+ rb_cairo_satisfied_version, -1);
62
83
 
63
84
  rb_mCairo_Color = rb_const_get (rb_mCairo, rb_intern ("Color"));
64
85
  rb_cCairo_Color_Base = rb_const_get (rb_mCairo_Color, rb_intern ("Base"));
@@ -79,4 +100,5 @@ Init_cairo ()
79
100
  Init_cairo_text_extents ();
80
101
  Init_cairo_pattern ();
81
102
  Init_cairo_glyph ();
103
+ Init_cairo_text_cluster ();
82
104
  }
data/src/rb_cairo.h CHANGED
@@ -3,8 +3,9 @@
3
3
  * Ruby Cairo Binding
4
4
  *
5
5
  * $Author: kou $
6
- * $Date: 2008-06-19 13:00:18 $
6
+ * $Date: 2008-08-17 07:21:42 $
7
7
  *
8
+ * Copyright 2006-2008 Kouhei Sutou <kou@cozmixng.org>
8
9
  * Copyright 2005 Øyvind Kolås <pippin@freedesktop.org>
9
10
  * Copyright 2004-2005 MenTaLguY <mental@rydia.com>
10
11
  *
@@ -83,6 +84,9 @@ RB_CAIRO_VAR VALUE rb_cCairo_GradientPattern;
83
84
  RB_CAIRO_VAR VALUE rb_cCairo_LinearPattern;
84
85
  RB_CAIRO_VAR VALUE rb_cCairo_RadialPattern;
85
86
  RB_CAIRO_VAR VALUE rb_cCairo_FontFace;
87
+ RB_CAIRO_VAR VALUE rb_cCairo_ToyFontFace;
88
+ RB_CAIRO_VAR VALUE rb_cCairo_UserFontFace;
89
+ RB_CAIRO_VAR VALUE rb_cCairo_UserFontFace_TextToGlyphsData;
86
90
  RB_CAIRO_VAR VALUE rb_cCairo_FontExtents;
87
91
  RB_CAIRO_VAR VALUE rb_cCairo_FontOptions;
88
92
  RB_CAIRO_VAR VALUE rb_cCairo_ScaledFont;
@@ -119,6 +123,9 @@ RB_CAIRO_VAR VALUE rb_mCairo_PatternType;
119
123
  RB_CAIRO_VAR VALUE rb_mCairo_Extend;
120
124
  RB_CAIRO_VAR VALUE rb_mCairo_Filter;
121
125
  RB_CAIRO_VAR VALUE rb_mCairo_SVGVersion;
126
+ RB_CAIRO_VAR VALUE rb_mCairo_PSLevel;
127
+ RB_CAIRO_VAR VALUE rb_mCairo_LCDFilter;
128
+ RB_CAIRO_VAR VALUE rb_mCairo_SVGVersion;
122
129
  RB_CAIRO_VAR VALUE rb_mCairo_Color;
123
130
  RB_CAIRO_VAR VALUE rb_cCairo_Color_Base;
124
131
  RB_CAIRO_VAR VALUE rb_cCairo_Paper;
@@ -154,6 +161,9 @@ RB_CAIRO_VAR VALUE rb_cCairo_Paper;
154
161
  #define RVAL2CRGLYPH(obj) (rb_cairo_glyph_from_ruby_object(obj))
155
162
  #define CRGLYPH2RVAL(glyph) (rb_cairo_glyph_to_ruby_object(glyph))
156
163
 
164
+ #define RVAL2CRTEXTCLUSTER(obj) (rb_cairo_text_cluster_from_ruby_object(obj))
165
+ #define CRTEXTCLUSTER2RVAL(cluster) (rb_cairo_text_cluster_to_ruby_object(cluster))
166
+
157
167
  #define RVAL2CRSURFACE(obj) (rb_cairo_surface_from_ruby_object(obj))
158
168
  #define CRSURFACE2RVAL(surface) (rb_cairo_surface_to_ruby_object(surface))
159
169
  #define CRSURFACE2RVAL_WITH_DESTROY(surface) \
@@ -189,6 +199,11 @@ VALUE rb_cairo_text_extents_to_ruby_object (cairo_text_extents
189
199
  cairo_glyph_t *rb_cairo_glyph_from_ruby_object (VALUE obj);
190
200
  VALUE rb_cairo_glyph_to_ruby_object (cairo_glyph_t *glyph);
191
201
 
202
+ #if CAIRO_CHECK_VERSION(1, 7, 2)
203
+ cairo_text_cluster_t *rb_cairo_text_cluster_from_ruby_object (VALUE obj);
204
+ VALUE rb_cairo_text_cluster_to_ruby_object (cairo_text_cluster_t *cluster);
205
+ #endif
206
+
192
207
  cairo_surface_t *rb_cairo_surface_from_ruby_object (VALUE obj);
193
208
  VALUE rb_cairo_surface_to_ruby_object (cairo_surface_t *surface);
194
209
  VALUE rb_cairo_surface_to_ruby_object_with_destroy
@@ -218,6 +233,9 @@ VALUE rb_cairo_surface_to_ruby_object_with_destroy
218
233
  #define RVAL2CRPSLEVEL(obj) (rb_cairo_ps_level_from_ruby_object(obj))
219
234
  # endif
220
235
  #endif
236
+ #if CAIRO_CHECK_VERSION(1, 7, 2)
237
+ #define RVAL2CRLCDFILTER(obj) (rb_cairo_lcd_filter_from_ruby_object(obj))
238
+ #endif
221
239
 
222
240
  cairo_operator_t rb_cairo_operator_from_ruby_object (VALUE obj);
223
241
  cairo_antialias_t rb_cairo_antialias_from_ruby_object (VALUE obj);
@@ -242,6 +260,9 @@ cairo_svg_version_t rb_cairo_svg_version_from_ruby_object (VALUE obj);
242
260
  cairo_ps_level_t rb_cairo_ps_level_from_ruby_object (VALUE obj);
243
261
  # endif
244
262
  #endif
263
+ #if CAIRO_CHECK_VERSION(1, 7, 2)
264
+ cairo_lcd_filter_t rb_cairo_lcd_filter_from_ruby_object (VALUE obj);
265
+ #endif
245
266
 
246
267
  void rb_cairo_check_status (cairo_status_t status);
247
268
 
@@ -3,7 +3,7 @@
3
3
  * Ruby Cairo Binding
4
4
  *
5
5
  * $Author: kou $
6
- * $Date: 2008-06-19 13:00:18 $
6
+ * $Date: 2008-08-13 12:27:39 $
7
7
  *
8
8
  * Copyright 2005 Øyvind Kolås <pippin@freedesktop.org>
9
9
  * Copyright 2004-2005 MenTaLguY <mental@rydia.com>
@@ -33,6 +33,7 @@ VALUE rb_mCairo_Extend;
33
33
  VALUE rb_mCairo_Filter;
34
34
  VALUE rb_mCairo_SVGVersion = Qnil;
35
35
  VALUE rb_mCairo_PSLevel = Qnil;
36
+ VALUE rb_mCairo_LCDFilter = Qnil;
36
37
 
37
38
  #define CAIRO_OPERATOR_MIN CAIRO_OPERATOR_CLEAR
38
39
  #define CAIRO_OPERATOR_MAX CAIRO_OPERATOR_SATURATE
@@ -85,6 +86,9 @@ VALUE rb_mCairo_PSLevel = Qnil;
85
86
  #define CAIRO_PS_LEVEL_MIN CAIRO_PS_LEVEL_2
86
87
  #define CAIRO_PS_LEVEL_MAX CAIRO_PS_LEVEL_3
87
88
 
89
+ #define CAIRO_LCD_FILTER_MIN CAIRO_LCD_FILTER_DEFAULT
90
+ #define CAIRO_LCD_FILTER_MAX CAIRO_LCD_FILTER_FIR5
91
+
88
92
  #define DEFINE_RVAL2ENUM(name, const_name) \
89
93
  cairo_ ## name ## _t \
90
94
  rb_cairo_ ## name ## _from_ruby_object (VALUE rb_ ## name) \
@@ -135,6 +139,10 @@ DEFINE_RVAL2ENUM(ps_level, PS_LEVEL)
135
139
  # endif
136
140
  #endif
137
141
 
142
+ #if CAIRO_CHECK_VERSION(1, 7, 2)
143
+ DEFINE_RVAL2ENUM(lcd_filter, LCD_FILTER)
144
+ #endif
145
+
138
146
  #if defined(RB_CAIRO_PLATFORM_WIN32) && !defined(PS_LEVEL_ENUM_DEFINED)
139
147
  void
140
148
  rb_cairo_ps_level_from_ruby_object (VALUE rb_ps_level)
@@ -459,4 +467,19 @@ Init_cairo_constants (void)
459
467
  cr_ps_level_to_string, -1);
460
468
  # endif
461
469
  #endif
470
+
471
+ #if CAIRO_CHECK_VERSION(1, 7, 2)
472
+ /* cairo_lcd_filter_t */
473
+ rb_mCairo_LCDFilter = rb_define_module_under (rb_mCairo, "LCDFilter");
474
+ rb_define_const (rb_mCairo_LCDFilter, "DEFAULT",
475
+ INT2FIX (CAIRO_LCD_FILTER_DEFAULT));
476
+ rb_define_const (rb_mCairo_LCDFilter, "NONE",
477
+ INT2FIX (CAIRO_LCD_FILTER_NONE));
478
+ rb_define_const (rb_mCairo_LCDFilter, "INTRA_PIXEL",
479
+ INT2FIX (CAIRO_LCD_FILTER_INTRA_PIXEL));
480
+ rb_define_const (rb_mCairo_LCDFilter, "FIR3",
481
+ INT2FIX (CAIRO_LCD_FILTER_FIR3));
482
+ rb_define_const (rb_mCairo_LCDFilter, "FIR5",
483
+ INT2FIX (CAIRO_LCD_FILTER_FIR5));
484
+ #endif
462
485
  }
@@ -3,7 +3,7 @@
3
3
  * Ruby Cairo Binding
4
4
  *
5
5
  * $Author: kou $
6
- * $Date: 2008-06-12 10:59:54 $
6
+ * $Date: 2008-08-17 03:00:41 $
7
7
  *
8
8
  * Copyright 2005 Øyvind Kolås <pippin@freedesktop.org>
9
9
  * Copyright 2004-2005 MenTaLguY <mental@rydia.com>
@@ -15,10 +15,17 @@
15
15
  #include "rb_cairo.h"
16
16
  #include "rb_cairo_private.h"
17
17
 
18
+ #ifdef HAVE_RUBY_ST_H
19
+ # include <ruby/st.h>
20
+ #else
21
+ # include <st.h>
22
+ #endif
23
+
18
24
  VALUE rb_cCairo_Context;
19
25
 
20
26
  static ID cr_id_surface, cr_id_source;
21
27
  static ID cr_id_plus, cr_id_minus, cr_id_multi, cr_id_div;
28
+ static cairo_user_data_key_t cr_object_holder_key;
22
29
 
23
30
  #define _SELF (RVAL2CRCONTEXT(self))
24
31
 
@@ -57,9 +64,23 @@ rb_cairo_context_from_ruby_object (VALUE obj)
57
64
  rb_raise (rb_eTypeError, "not a cairo graphics context");
58
65
  }
59
66
  Data_Get_Struct (obj, cairo_t, context);
67
+ if (!context)
68
+ rb_cairo_check_status (CAIRO_STATUS_NULL_POINTER);
60
69
  return context;
61
70
  }
62
71
 
72
+ static rb_cairo__object_holder_t *
73
+ cr_object_holder_new (VALUE object)
74
+ {
75
+ return rb_cairo__object_holder_new (rb_cCairo_Context, object);
76
+ }
77
+
78
+ static void
79
+ cr_object_holder_free (void *ptr)
80
+ {
81
+ rb_cairo__object_holder_free (rb_cCairo_Context, ptr);
82
+ }
83
+
63
84
  static void
64
85
  cr_context_free (void *ptr)
65
86
  {
@@ -89,16 +110,43 @@ cr_allocate (VALUE klass)
89
110
  return Data_Wrap_Struct (klass, NULL, cr_context_free, NULL);
90
111
  }
91
112
 
113
+ static VALUE
114
+ cr_destroy (VALUE self)
115
+ {
116
+ cairo_t *cr;
117
+
118
+ cr = _SELF;
119
+ cairo_set_user_data (cr, &cr_object_holder_key, NULL, NULL); /* needed? */
120
+ cairo_destroy (cr);
121
+
122
+ DATA_PTR (self) = NULL;
123
+ return Qnil;
124
+ }
125
+
126
+ static VALUE
127
+ cr_destroy_with_destroy_check (VALUE self)
128
+ {
129
+ if (DATA_PTR (self))
130
+ cr_destroy (self);
131
+ return Qnil;
132
+ }
133
+
92
134
  static VALUE
93
135
  cr_initialize (VALUE self, VALUE target)
94
136
  {
95
137
  cairo_t *cr;
138
+ VALUE result = Qnil;
96
139
 
97
140
  cr = cairo_create (RVAL2CRSURFACE (target));
98
141
  cr_check_status (cr);
99
142
  rb_ivar_set (self, cr_id_surface, target);
143
+ cairo_set_user_data (cr, &cr_object_holder_key,
144
+ cr_object_holder_new(self),
145
+ cr_object_holder_free);
100
146
  DATA_PTR (self) = cr;
101
- return Qnil;
147
+ if (rb_block_given_p ())
148
+ result = rb_ensure (rb_yield, self, cr_destroy_with_destroy_check, self);
149
+ return result;
102
150
  }
103
151
 
104
152
  static VALUE
@@ -318,6 +366,12 @@ cr_set_source_generic (int argc, VALUE *argv, VALUE self)
318
366
  {
319
367
  return cr_set_source_rgba (argc, argv, self);
320
368
  }
369
+ else if (n == 1 && rb_cairo__is_kind_of (arg1, rb_cCairo_Surface))
370
+ {
371
+ return cr_set_source_surface (self, arg1,
372
+ rb_float_new (0),
373
+ rb_float_new (0));
374
+ }
321
375
  else if (n == 1)
322
376
  {
323
377
  return cr_set_source (self, arg1);
@@ -336,7 +390,7 @@ cr_set_source_generic (int argc, VALUE *argv, VALUE self)
336
390
  "invalid argument (expect "
337
391
  "(red, green, blue), (red, green, blue, alpha), "
338
392
  "([red, green, blue]), ([red, green, blue, alpha]), "
339
- "(pattern) or (surface, x, y))");
393
+ "(surface), (pattern) or (surface, x, y))");
340
394
  }
341
395
  }
342
396
 
@@ -1017,11 +1071,31 @@ cr_clip_rectangle_list (VALUE self)
1017
1071
  static VALUE
1018
1072
  cr_select_font_face (int argc, VALUE *argv, VALUE self)
1019
1073
  {
1020
- VALUE family, rb_slant, rb_weight;
1074
+ VALUE rb_family, rb_slant, rb_weight;
1075
+ const char *family;
1021
1076
  cairo_font_slant_t slant;
1022
1077
  cairo_font_weight_t weight;
1023
1078
 
1024
- rb_scan_args(argc, argv, "12", &family, &rb_slant, &rb_weight);
1079
+ rb_scan_args(argc, argv, "03", &rb_family, &rb_slant, &rb_weight);
1080
+
1081
+ if (NIL_P (rb_family))
1082
+ {
1083
+ family = "";
1084
+ }
1085
+ else if (rb_cairo__is_kind_of (rb_family, rb_cString))
1086
+ {
1087
+ family = RSTRING_PTR (rb_family);
1088
+ }
1089
+ else if (rb_cairo__is_kind_of (rb_family, rb_cSymbol))
1090
+ {
1091
+ family = rb_id2name (SYM2ID (rb_family));
1092
+ }
1093
+ else
1094
+ {
1095
+ rb_raise (rb_eArgError,
1096
+ "family name should be nil, String or Symbol: %s",
1097
+ rb_cairo__inspect (rb_family));
1098
+ }
1025
1099
 
1026
1100
  if (NIL_P (rb_slant))
1027
1101
  slant = CAIRO_FONT_SLANT_NORMAL;
@@ -1033,7 +1107,7 @@ cr_select_font_face (int argc, VALUE *argv, VALUE self)
1033
1107
  else
1034
1108
  weight = RVAL2CRFONTWEIGHT (rb_weight);
1035
1109
 
1036
- cairo_select_font_face (_SELF, RVAL2CSTR (family), slant, weight);
1110
+ cairo_select_font_face (_SELF, family, slant, weight);
1037
1111
  cr_check_status (_SELF);
1038
1112
  return self;
1039
1113
  }
@@ -1117,6 +1191,46 @@ cr_show_glyphs (VALUE self, VALUE rb_glyphs)
1117
1191
  return self;
1118
1192
  }
1119
1193
 
1194
+ #if CAIRO_CHECK_VERSION(1, 7, 2)
1195
+ static VALUE
1196
+ cr_has_show_text_glyphs (VALUE self)
1197
+ {
1198
+ return CBOOL2RVAL (cairo_has_show_text_glyphs (_SELF));
1199
+ }
1200
+
1201
+ static VALUE
1202
+ cr_show_text_glyphs (VALUE self, VALUE rb_utf8, VALUE rb_glyphs,
1203
+ VALUE rb_clusters, VALUE rb_backward)
1204
+ {
1205
+ cairo_t *cr;
1206
+ const char *utf8;
1207
+ int utf8_len;
1208
+ cairo_glyph_t *glyphs = NULL;
1209
+ int num_glyphs = 0;
1210
+ cairo_text_cluster_t *clusters = NULL;
1211
+ int num_clusters = 0;
1212
+ cairo_bool_t backward;
1213
+
1214
+ cr = _SELF;
1215
+ utf8 = RSTRING_PTR (rb_utf8);
1216
+ utf8_len = RSTRING_LEN (rb_utf8);
1217
+ rb_cairo__glyphs_from_ruby_object (rb_glyphs, &glyphs, &num_glyphs);
1218
+ rb_cairo__text_clusters_from_ruby_object (rb_clusters,
1219
+ &clusters, &num_clusters);
1220
+ backward = RVAL2CBOOL (rb_backward);
1221
+ cairo_show_text_glyphs (cr, utf8, utf8_len,
1222
+ glyphs, num_glyphs,
1223
+ clusters, num_clusters,
1224
+ backward);
1225
+ if (glyphs)
1226
+ cairo_glyph_free (glyphs);
1227
+ if (clusters)
1228
+ cairo_text_cluster_free (clusters);
1229
+
1230
+ return self;
1231
+ }
1232
+ #endif
1233
+
1120
1234
  static VALUE
1121
1235
  cr_get_font_face (VALUE self)
1122
1236
  {
@@ -1370,6 +1484,21 @@ cr_copy_append_path (VALUE self, VALUE path)
1370
1484
  return self;
1371
1485
  }
1372
1486
 
1487
+ static int
1488
+ cr_destroy_all_guarded_contexts_at_end_iter (VALUE key, VALUE value, VALUE data)
1489
+ {
1490
+ cr_destroy (key);
1491
+ return ST_CONTINUE;
1492
+ }
1493
+
1494
+ static void
1495
+ cr_destroy_all_guarded_contexts_at_end (VALUE data)
1496
+ {
1497
+ rb_hash_foreach (rb_cairo__gc_guarded_objects (rb_cCairo_Context),
1498
+ cr_destroy_all_guarded_contexts_at_end_iter,
1499
+ Qnil);
1500
+ }
1501
+
1373
1502
  void
1374
1503
  Init_cairo_context (void)
1375
1504
  {
@@ -1403,8 +1532,12 @@ Init_cairo_context (void)
1403
1532
 
1404
1533
  rb_define_alloc_func (rb_cCairo_Context, cr_allocate);
1405
1534
 
1535
+ rb_cairo__initialize_gc_guard_holder_class (rb_cCairo_Context);
1536
+ rb_set_end_proc(cr_destroy_all_guarded_contexts_at_end, Qnil);
1537
+
1406
1538
  /* Functions for manipulating state objects */
1407
1539
  rb_define_method (rb_cCairo_Context, "initialize", cr_initialize, 1);
1540
+ rb_define_method (rb_cCairo_Context, "destroy", cr_destroy, 0);
1408
1541
 
1409
1542
  rb_define_method (rb_cCairo_Context, "save", cr_save, 0);
1410
1543
  rb_define_method (rb_cCairo_Context, "restore", cr_restore, 0);
@@ -1507,6 +1640,14 @@ Init_cairo_context (void)
1507
1640
  #endif
1508
1641
  rb_define_method (rb_cCairo_Context, "show_text", cr_show_text, 1);
1509
1642
  rb_define_method (rb_cCairo_Context, "show_glyphs", cr_show_glyphs, 1);
1643
+ #if CAIRO_CHECK_VERSION(1, 7, 2)
1644
+ rb_define_method (rb_cCairo_Context, "have_show_text_glyphs?",
1645
+ cr_has_show_text_glyphs, 0);
1646
+ rb_define_alias (rb_cCairo_Context,
1647
+ "has_show_text_glyphs?", "have_show_text_glyphs?");
1648
+ rb_define_method (rb_cCairo_Context, "show_text_glyphs",
1649
+ cr_show_text_glyphs, 4);
1650
+ #endif
1510
1651
  rb_define_method (rb_cCairo_Context, "text_path", cr_text_path, 1);
1511
1652
  rb_define_method (rb_cCairo_Context, "glyph_path", cr_glyph_path, 1);
1512
1653
  rb_define_method (rb_cCairo_Context, "text_extents", cr_text_extents, 1);