cairo 1.8.5-x86-mingw32 → 1.10.0-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 (450) hide show
  1. data/NEWS +2 -2
  2. data/Rakefile +44 -7
  3. data/ext/cairo/cairo.def +28 -1
  4. data/ext/cairo/extconf.rb +14 -16
  5. data/ext/cairo/rb_cairo.c +4 -1
  6. data/ext/cairo/rb_cairo.h +65 -1
  7. data/ext/cairo/rb_cairo_constants.c +150 -3
  8. data/ext/cairo/rb_cairo_context.c +17 -0
  9. data/ext/cairo/rb_cairo_device.c +406 -0
  10. data/ext/cairo/rb_cairo_exception.c +83 -32
  11. data/ext/cairo/rb_cairo_io.c +166 -0
  12. data/ext/cairo/rb_cairo_io.h +44 -0
  13. data/ext/cairo/rb_cairo_matrix.c +1 -1
  14. data/ext/cairo/rb_cairo_private.h +3 -0
  15. data/ext/cairo/rb_cairo_region.c +385 -0
  16. data/ext/cairo/rb_cairo_surface.c +674 -199
  17. data/lib/1.8/cairo.so +0 -0
  18. data/lib/1.9/cairo.so +0 -0
  19. data/samples/blur.rb +2 -3
  20. data/samples/{pac2.rb → pac-nomralize.rb} +5 -6
  21. data/samples/pac-tee.rb +170 -0
  22. data/samples/pac.rb +2 -3
  23. data/samples/png.rb +2 -3
  24. data/samples/scalable.rb +2 -3
  25. data/samples/text-on-path.rb +2 -3
  26. data/samples/text2.rb +2 -3
  27. data/test/cairo-test-utils.rb +15 -0
  28. data/test/run-test.rb +5 -4
  29. data/test/test_context.rb +4 -4
  30. data/test/test_font_face.rb +34 -21
  31. data/test/test_recording_surface.rb +18 -0
  32. data/test/test_region.rb +102 -0
  33. data/test/test_script_device.rb +46 -0
  34. data/test/test_script_surface.rb +13 -0
  35. data/test/test_surface.rb +14 -4
  36. data/test/test_tee_surface.rb +32 -0
  37. data/test/test_xml_device.rb +22 -0
  38. data/test/test_xml_surface.rb +32 -0
  39. data/tmp/i386-mingw32/cairo/1.9.2/rbconfig.rb +1 -1
  40. data/vendor/local/bin/libcairo-2.dll +0 -0
  41. data/vendor/local/include/cairo/cairo-deprecated.h +1 -16
  42. data/vendor/local/include/cairo/cairo-features.h +7 -0
  43. data/vendor/local/include/cairo/cairo-ft.h +16 -9
  44. data/vendor/local/include/cairo/cairo-gobject.h +186 -0
  45. data/vendor/local/include/cairo/cairo-pdf.h +27 -1
  46. data/vendor/local/include/cairo/cairo-ps.h +1 -1
  47. data/vendor/local/include/cairo/cairo-script-interpreter.h +117 -0
  48. data/vendor/local/include/cairo/cairo-svg.h +1 -1
  49. data/vendor/local/include/cairo/cairo-version.h +2 -2
  50. data/vendor/local/include/cairo/cairo-win32.h +1 -1
  51. data/vendor/local/include/cairo/cairo.h +382 -26
  52. data/vendor/local/lib/cairo.def +44 -0
  53. data/vendor/local/lib/cairo.lib +0 -0
  54. data/vendor/local/lib/libcairo.dll.a +0 -0
  55. data/vendor/local/lib/pkgconfig/cairo-fc.pc +12 -0
  56. data/vendor/local/lib/pkgconfig/cairo-ft.pc +4 -4
  57. data/vendor/local/lib/pkgconfig/cairo-gobject.pc +12 -0
  58. data/vendor/local/lib/pkgconfig/cairo-pdf.pc +3 -3
  59. data/vendor/local/lib/pkgconfig/cairo-png.pc +3 -3
  60. data/vendor/local/lib/pkgconfig/cairo-ps.pc +3 -3
  61. data/vendor/local/lib/pkgconfig/cairo-svg.pc +3 -3
  62. data/vendor/local/lib/pkgconfig/cairo-win32-font.pc +3 -3
  63. data/vendor/local/lib/pkgconfig/cairo-win32.pc +3 -3
  64. data/vendor/local/lib/pkgconfig/cairo.pc +4 -4
  65. data/vendor/local/manifest/{cairo-dev_1.8.10-4_win32.mft → cairo-dev_1.10.0-1_win32.mft} +34 -27
  66. data/vendor/local/manifest/cairo_1.10.0-1_win32.mft +5 -0
  67. data/vendor/local/share/doc/{cairo_1.8.10-4_win32 → cairo_1.10.0-1_win32}/COPYING +9 -8
  68. data/vendor/local/share/doc/{cairo_1.8.10-4_win32 → cairo_1.10.0-1_win32}/COPYING-LGPL-2.1 +2 -2
  69. data/vendor/local/share/doc/{cairo_1.8.10-4_win32 → cairo_1.10.0-1_win32}/COPYING-MPL-1.1 +0 -0
  70. data/vendor/local/share/gtk-doc/html/cairo/bindings-errors.html +4 -14
  71. data/vendor/local/share/gtk-doc/html/cairo/bindings-fonts.html +5 -15
  72. data/vendor/local/share/gtk-doc/html/cairo/bindings-memory.html +7 -17
  73. data/vendor/local/share/gtk-doc/html/cairo/bindings-overloading.html +6 -16
  74. data/vendor/local/share/gtk-doc/html/cairo/bindings-path.html +6 -16
  75. data/vendor/local/share/gtk-doc/html/cairo/bindings-patterns.html +23 -28
  76. data/vendor/local/share/gtk-doc/html/cairo/bindings-return-values.html +3 -13
  77. data/vendor/local/share/gtk-doc/html/cairo/bindings-streams.html +3 -13
  78. data/vendor/local/share/gtk-doc/html/cairo/bindings-surfaces.html +7 -17
  79. data/vendor/local/share/gtk-doc/html/cairo/cairo-Error-handling.html +373 -0
  80. data/vendor/local/share/gtk-doc/html/cairo/cairo-FreeType-Fonts.html +330 -0
  81. data/vendor/local/share/gtk-doc/html/cairo/cairo-Image-Surfaces.html +478 -0
  82. data/vendor/local/share/gtk-doc/html/cairo/cairo-PDF-Surfaces.html +344 -0
  83. data/vendor/local/share/gtk-doc/html/cairo/cairo-PNG-Support.html +320 -0
  84. data/vendor/local/share/gtk-doc/html/cairo/cairo-Paths.html +1291 -0
  85. data/vendor/local/share/gtk-doc/html/cairo/cairo-PostScript-Surfaces.html +622 -0
  86. data/vendor/local/share/gtk-doc/html/cairo/cairo-Quartz-(CGFont)-Fonts.html +134 -0
  87. data/vendor/local/share/gtk-doc/html/cairo/cairo-Quartz-Surfaces.html +210 -0
  88. data/vendor/local/share/gtk-doc/html/cairo/cairo-Regions.html +834 -0
  89. data/vendor/local/share/gtk-doc/html/cairo/cairo-SVG-Surfaces.html +318 -0
  90. data/vendor/local/share/gtk-doc/html/cairo/cairo-Transformations.html +410 -0
  91. data/vendor/local/share/gtk-doc/html/cairo/cairo-Types.html +169 -0
  92. data/vendor/local/share/gtk-doc/html/cairo/cairo-User-Fonts.html +715 -0
  93. data/vendor/local/share/gtk-doc/html/cairo/cairo-Version-Information.html +410 -0
  94. data/vendor/local/share/gtk-doc/html/cairo/cairo-Win32-Fonts.html +335 -0
  95. data/vendor/local/share/gtk-doc/html/cairo/cairo-Win32-Surfaces.html +291 -0
  96. data/vendor/local/share/gtk-doc/html/cairo/cairo-XLib-Surfaces.html +470 -0
  97. data/vendor/local/share/gtk-doc/html/cairo/cairo-cairo-device-t.html +595 -0
  98. data/vendor/local/share/gtk-doc/html/cairo/cairo-cairo-font-face-t.html +384 -0
  99. data/vendor/local/share/gtk-doc/html/cairo/cairo-cairo-font-options-t.html +644 -0
  100. data/vendor/local/share/gtk-doc/html/cairo/cairo-cairo-matrix-t.html +574 -0
  101. data/vendor/local/share/gtk-doc/html/cairo/cairo-cairo-pattern-t.html +1457 -0
  102. data/vendor/local/share/gtk-doc/html/cairo/cairo-cairo-scaled-font-t.html +1076 -0
  103. data/vendor/local/share/gtk-doc/html/cairo/cairo-cairo-surface-t.html +1396 -0
  104. data/vendor/local/share/gtk-doc/html/cairo/cairo-cairo-t.html +2743 -0
  105. data/vendor/local/share/gtk-doc/html/cairo/cairo-drawing.html +13 -20
  106. data/vendor/local/share/gtk-doc/html/cairo/cairo-fonts.html +13 -23
  107. data/vendor/local/share/gtk-doc/html/cairo/cairo-support.html +11 -21
  108. data/vendor/local/share/gtk-doc/html/cairo/cairo-surfaces.html +19 -26
  109. data/vendor/local/share/gtk-doc/html/cairo/cairo-text.html +279 -326
  110. data/vendor/local/share/gtk-doc/html/cairo/cairo.devhelp +411 -355
  111. data/vendor/local/share/gtk-doc/html/cairo/cairo.devhelp2 +579 -480
  112. data/vendor/local/share/gtk-doc/html/cairo/index-1.10.html +147 -0
  113. data/vendor/local/share/gtk-doc/html/cairo/index-1.2.html +88 -65
  114. data/vendor/local/share/gtk-doc/html/cairo/index-1.4.html +72 -47
  115. data/vendor/local/share/gtk-doc/html/cairo/index-1.6.html +43 -32
  116. data/vendor/local/share/gtk-doc/html/cairo/index-1.8.html +42 -41
  117. data/vendor/local/share/gtk-doc/html/cairo/index-all.html +542 -345
  118. data/vendor/local/share/gtk-doc/html/cairo/index.html +36 -39
  119. data/vendor/local/share/gtk-doc/html/cairo/index.sgml +674 -444
  120. data/vendor/local/share/gtk-doc/html/cairo/language-bindings.html +6 -16
  121. data/vendor/local/share/gtk-doc/html/cairo/style.css +152 -54
  122. data/vendor/local/src/tml/packaging/cairo_1.10.0-1_win32.log +1262 -0
  123. data/vendor/local/src/tml/packaging/{cairo_1.8.10-4_win32.sh → cairo_1.10.0-1_win32.sh} +3 -3
  124. metadata +137 -389
  125. data/doc/doc.css +0 -91
  126. data/doc/en/cairo-antialias.html +0 -38
  127. data/doc/en/cairo-clip-not-representable-error.html +0 -47
  128. data/doc/en/cairo-color-base.html +0 -69
  129. data/doc/en/cairo-color-cmyk.html +0 -157
  130. data/doc/en/cairo-color-hsv.html +0 -137
  131. data/doc/en/cairo-color-rgb.html +0 -142
  132. data/doc/en/cairo-color-x11.html +0 -173
  133. data/doc/en/cairo-color.html +0 -238
  134. data/doc/en/cairo-content.html +0 -37
  135. data/doc/en/cairo-context-blur.html +0 -39
  136. data/doc/en/cairo-context-circle.html +0 -39
  137. data/doc/en/cairo-context-color.html +0 -39
  138. data/doc/en/cairo-context-path.html +0 -44
  139. data/doc/en/cairo-context-rectangle.html +0 -39
  140. data/doc/en/cairo-context-triangle.html +0 -39
  141. data/doc/en/cairo-context.html +0 -643
  142. data/doc/en/cairo-error.html +0 -44
  143. data/doc/en/cairo-extend.html +0 -38
  144. data/doc/en/cairo-file-not-found.html +0 -47
  145. data/doc/en/cairo-fill-rule.html +0 -36
  146. data/doc/en/cairo-filter.html +0 -40
  147. data/doc/en/cairo-font-extents.html +0 -129
  148. data/doc/en/cairo-font-face.html +0 -38
  149. data/doc/en/cairo-font-options.html +0 -139
  150. data/doc/en/cairo-font-slant.html +0 -37
  151. data/doc/en/cairo-font-type-mismatch.html +0 -47
  152. data/doc/en/cairo-font-weight.html +0 -36
  153. data/doc/en/cairo-format.html +0 -46
  154. data/doc/en/cairo-glyph.html +0 -99
  155. data/doc/en/cairo-gradient-pattern.html +0 -74
  156. data/doc/en/cairo-hint-metrics.html +0 -37
  157. data/doc/en/cairo-hint-style.html +0 -39
  158. data/doc/en/cairo-image-surface.html +0 -82
  159. data/doc/en/cairo-invalid-clusters.html +0 -47
  160. data/doc/en/cairo-invalid-content-error.html +0 -47
  161. data/doc/en/cairo-invalid-dash-error.html +0 -47
  162. data/doc/en/cairo-invalid-dsc-comment-error.html +0 -47
  163. data/doc/en/cairo-invalid-format-error.html +0 -47
  164. data/doc/en/cairo-invalid-index-error.html +0 -47
  165. data/doc/en/cairo-invalid-matrix-error.html +0 -47
  166. data/doc/en/cairo-invalid-path-data-error.html +0 -47
  167. data/doc/en/cairo-invalid-pop-group-error.html +0 -47
  168. data/doc/en/cairo-invalid-restore-error.html +0 -47
  169. data/doc/en/cairo-invalid-slant.html +0 -47
  170. data/doc/en/cairo-invalid-status-error.html +0 -47
  171. data/doc/en/cairo-invalid-stride-error.html +0 -47
  172. data/doc/en/cairo-invalid-string-error.html +0 -47
  173. data/doc/en/cairo-invalid-visual-error.html +0 -47
  174. data/doc/en/cairo-invalid-weight.html +0 -47
  175. data/doc/en/cairo-line-cap.html +0 -37
  176. data/doc/en/cairo-line-join.html +0 -37
  177. data/doc/en/cairo-linear-pattern.html +0 -60
  178. data/doc/en/cairo-matrix.html +0 -259
  179. data/doc/en/cairo-negative-count.html +0 -47
  180. data/doc/en/cairo-no-current-point-error.html +0 -47
  181. data/doc/en/cairo-null-pointer-error.html +0 -47
  182. data/doc/en/cairo-operator.html +0 -48
  183. data/doc/en/cairo-paper-parse-error.html +0 -47
  184. data/doc/en/cairo-paper-unknown-paper-name.html +0 -66
  185. data/doc/en/cairo-paper-unknown-unit.html +0 -66
  186. data/doc/en/cairo-paper-unrecognized-paper-description.html +0 -66
  187. data/doc/en/cairo-paper.html +0 -184
  188. data/doc/en/cairo-path-close-path.html +0 -49
  189. data/doc/en/cairo-path-curve-to.html +0 -49
  190. data/doc/en/cairo-path-data-type.html +0 -38
  191. data/doc/en/cairo-path-data.html +0 -98
  192. data/doc/en/cairo-path-line-to.html +0 -49
  193. data/doc/en/cairo-path-move-to.html +0 -49
  194. data/doc/en/cairo-path.html +0 -155
  195. data/doc/en/cairo-pattern-type-mismatch-error.html +0 -47
  196. data/doc/en/cairo-pattern.html +0 -99
  197. data/doc/en/cairo-pdf-surface.html +0 -57
  198. data/doc/en/cairo-point.html +0 -74
  199. data/doc/en/cairo-ps-level.html +0 -49
  200. data/doc/en/cairo-ps-surface.html +0 -92
  201. data/doc/en/cairo-quartz-image-surface.html +0 -57
  202. data/doc/en/cairo-quartz-surface.html +0 -57
  203. data/doc/en/cairo-radial-pattern.html +0 -60
  204. data/doc/en/cairo-read-error.html +0 -47
  205. data/doc/en/cairo-rectangle.html +0 -89
  206. data/doc/en/cairo-scaled-font.html +0 -94
  207. data/doc/en/cairo-solid-pattern.html +0 -62
  208. data/doc/en/cairo-subpixel-order.html +0 -39
  209. data/doc/en/cairo-surface-finished-error.html +0 -47
  210. data/doc/en/cairo-surface-pattern.html +0 -57
  211. data/doc/en/cairo-surface-type-mismatch-error.html +0 -47
  212. data/doc/en/cairo-surface.html +0 -121
  213. data/doc/en/cairo-svg-surface.html +0 -77
  214. data/doc/en/cairo-svg-version.html +0 -49
  215. data/doc/en/cairo-temp-file-error.html +0 -47
  216. data/doc/en/cairo-text-cluster-flag.html +0 -35
  217. data/doc/en/cairo-text-cluster.html +0 -84
  218. data/doc/en/cairo-text-extents.html +0 -144
  219. data/doc/en/cairo-toy-font-face.html +0 -67
  220. data/doc/en/cairo-user-font-error.html +0 -47
  221. data/doc/en/cairo-user-font-face-text-to-glyphs-data.html +0 -94
  222. data/doc/en/cairo-user-font-face.html +0 -72
  223. data/doc/en/cairo-user-font-immutable.html +0 -47
  224. data/doc/en/cairo-win32-printing-surface.html +0 -57
  225. data/doc/en/cairo-win32-surface.html +0 -62
  226. data/doc/en/cairo-write-error.html +0 -47
  227. data/doc/en/cairo.html +0 -131
  228. data/doc/en/index.html +0 -1154
  229. data/doc/index.html +0 -18
  230. data/doc/ja/cairo-antialias.html +0 -57
  231. data/doc/ja/cairo-clip-not-representable-error.html +0 -56
  232. data/doc/ja/cairo-color-base.html +0 -75
  233. data/doc/ja/cairo-color-cmyk.html +0 -152
  234. data/doc/ja/cairo-color-hsv.html +0 -135
  235. data/doc/ja/cairo-color-rgb.html +0 -145
  236. data/doc/ja/cairo-color-x11.html +0 -183
  237. data/doc/ja/cairo-color.html +0 -317
  238. data/doc/ja/cairo-content.html +0 -51
  239. data/doc/ja/cairo-context-blur.html +0 -53
  240. data/doc/ja/cairo-context-circle.html +0 -54
  241. data/doc/ja/cairo-context-color.html +0 -52
  242. data/doc/ja/cairo-context-path.html +0 -77
  243. data/doc/ja/cairo-context-rectangle.html +0 -60
  244. data/doc/ja/cairo-context-triangle.html +0 -47
  245. data/doc/ja/cairo-context.html +0 -1542
  246. data/doc/ja/cairo-error.html +0 -56
  247. data/doc/ja/cairo-extend.html +0 -56
  248. data/doc/ja/cairo-file-not-found.html +0 -51
  249. data/doc/ja/cairo-fill-rule.html +0 -58
  250. data/doc/ja/cairo-filter.html +0 -43
  251. data/doc/ja/cairo-font-extents.html +0 -164
  252. data/doc/ja/cairo-font-face.html +0 -55
  253. data/doc/ja/cairo-font-options.html +0 -189
  254. data/doc/ja/cairo-font-slant.html +0 -50
  255. data/doc/ja/cairo-font-type-mismatch.html +0 -52
  256. data/doc/ja/cairo-font-weight.html +0 -47
  257. data/doc/ja/cairo-format.html +0 -81
  258. data/doc/ja/cairo-glyph.html +0 -115
  259. data/doc/ja/cairo-gradient-pattern.html +0 -119
  260. data/doc/ja/cairo-hint-metrics.html +0 -57
  261. data/doc/ja/cairo-hint-style.html +0 -64
  262. data/doc/ja/cairo-image-surface.html +0 -131
  263. data/doc/ja/cairo-invalid-clusters.html +0 -55
  264. data/doc/ja/cairo-invalid-content-error.html +0 -54
  265. data/doc/ja/cairo-invalid-dash-error.html +0 -54
  266. data/doc/ja/cairo-invalid-dsc-comment-error.html +0 -54
  267. data/doc/ja/cairo-invalid-format-error.html +0 -54
  268. data/doc/ja/cairo-invalid-index-error.html +0 -54
  269. data/doc/ja/cairo-invalid-matrix-error.html +0 -54
  270. data/doc/ja/cairo-invalid-path-data-error.html +0 -54
  271. data/doc/ja/cairo-invalid-pop-group-error.html +0 -54
  272. data/doc/ja/cairo-invalid-restore-error.html +0 -55
  273. data/doc/ja/cairo-invalid-slant.html +0 -57
  274. data/doc/ja/cairo-invalid-status-error.html +0 -55
  275. data/doc/ja/cairo-invalid-stride-error.html +0 -55
  276. data/doc/ja/cairo-invalid-string-error.html +0 -54
  277. data/doc/ja/cairo-invalid-visual-error.html +0 -57
  278. data/doc/ja/cairo-invalid-weight.html +0 -57
  279. data/doc/ja/cairo-line-cap.html +0 -50
  280. data/doc/ja/cairo-line-join.html +0 -53
  281. data/doc/ja/cairo-linear-pattern.html +0 -87
  282. data/doc/ja/cairo-matrix.html +0 -354
  283. data/doc/ja/cairo-negative-count.html +0 -52
  284. data/doc/ja/cairo-no-current-point-error.html +0 -54
  285. data/doc/ja/cairo-null-pointer-error.html +0 -54
  286. data/doc/ja/cairo-operator.html +0 -51
  287. data/doc/ja/cairo-paper-parse-error.html +0 -55
  288. data/doc/ja/cairo-paper-unknown-paper-name.html +0 -76
  289. data/doc/ja/cairo-paper-unknown-unit.html +0 -75
  290. data/doc/ja/cairo-paper-unrecognized-paper-description.html +0 -76
  291. data/doc/ja/cairo-paper.html +0 -357
  292. data/doc/ja/cairo-path-close-path.html +0 -57
  293. data/doc/ja/cairo-path-curve-to.html +0 -70
  294. data/doc/ja/cairo-path-data-type.html +0 -53
  295. data/doc/ja/cairo-path-data.html +0 -127
  296. data/doc/ja/cairo-path-line-to.html +0 -62
  297. data/doc/ja/cairo-path-move-to.html +0 -62
  298. data/doc/ja/cairo-path.html +0 -144
  299. data/doc/ja/cairo-pattern-type-mismatch-error.html +0 -56
  300. data/doc/ja/cairo-pattern.html +0 -128
  301. data/doc/ja/cairo-pdf-surface.html +0 -86
  302. data/doc/ja/cairo-point.html +0 -90
  303. data/doc/ja/cairo-ps-level.html +0 -62
  304. data/doc/ja/cairo-ps-surface.html +0 -214
  305. data/doc/ja/cairo-quartz-image-surface.html +0 -75
  306. data/doc/ja/cairo-quartz-surface.html +0 -93
  307. data/doc/ja/cairo-radial-pattern.html +0 -93
  308. data/doc/ja/cairo-read-error.html +0 -55
  309. data/doc/ja/cairo-rectangle.html +0 -109
  310. data/doc/ja/cairo-scaled-font.html +0 -180
  311. data/doc/ja/cairo-solid-pattern.html +0 -87
  312. data/doc/ja/cairo-subpixel-order.html +0 -57
  313. data/doc/ja/cairo-surface-finished-error.html +0 -54
  314. data/doc/ja/cairo-surface-pattern.html +0 -68
  315. data/doc/ja/cairo-surface-type-mismatch-error.html +0 -56
  316. data/doc/ja/cairo-surface.html +0 -213
  317. data/doc/ja/cairo-svg-surface.html +0 -114
  318. data/doc/ja/cairo-svg-version.html +0 -66
  319. data/doc/ja/cairo-temp-file-error.html +0 -50
  320. data/doc/ja/cairo-text-cluster-flag.html +0 -46
  321. data/doc/ja/cairo-text-cluster.html +0 -102
  322. data/doc/ja/cairo-text-extents.html +0 -163
  323. data/doc/ja/cairo-toy-font-face.html +0 -107
  324. data/doc/ja/cairo-user-font-error.html +0 -55
  325. data/doc/ja/cairo-user-font-face-text-to-glyphs-data.html +0 -156
  326. data/doc/ja/cairo-user-font-face.html +0 -268
  327. data/doc/ja/cairo-user-font-immutable.html +0 -54
  328. data/doc/ja/cairo-win32-printing-surface.html +0 -80
  329. data/doc/ja/cairo-win32-surface.html +0 -100
  330. data/doc/ja/cairo-write-error.html +0 -55
  331. data/doc/ja/cairo.html +0 -177
  332. data/doc/ja/index.html +0 -1156
  333. data/pkg-config.rb +0 -313
  334. data/test-unit/Rakefile +0 -30
  335. data/test-unit/bin/testrb +0 -5
  336. data/test-unit/lib/test/unit.rb +0 -280
  337. data/test-unit/lib/test/unit/assertionfailederror.rb +0 -14
  338. data/test-unit/lib/test/unit/assertions.rb +0 -722
  339. data/test-unit/lib/test/unit/attribute.rb +0 -125
  340. data/test-unit/lib/test/unit/autorunner.rb +0 -254
  341. data/test-unit/lib/test/unit/collector.rb +0 -43
  342. data/test-unit/lib/test/unit/collector/descendant.rb +0 -23
  343. data/test-unit/lib/test/unit/collector/dir.rb +0 -108
  344. data/test-unit/lib/test/unit/collector/load.rb +0 -135
  345. data/test-unit/lib/test/unit/collector/objectspace.rb +0 -34
  346. data/test-unit/lib/test/unit/color.rb +0 -61
  347. data/test-unit/lib/test/unit/diff.rb +0 -524
  348. data/test-unit/lib/test/unit/error.rb +0 -124
  349. data/test-unit/lib/test/unit/exceptionhandler.rb +0 -39
  350. data/test-unit/lib/test/unit/failure.rb +0 -110
  351. data/test-unit/lib/test/unit/fixture.rb +0 -185
  352. data/test-unit/lib/test/unit/notification.rb +0 -125
  353. data/test-unit/lib/test/unit/omission.rb +0 -143
  354. data/test-unit/lib/test/unit/pending.rb +0 -146
  355. data/test-unit/lib/test/unit/priority.rb +0 -146
  356. data/test-unit/lib/test/unit/runner/console.rb +0 -46
  357. data/test-unit/lib/test/unit/runner/emacs.rb +0 -8
  358. data/test-unit/lib/test/unit/testcase.rb +0 -281
  359. data/test-unit/lib/test/unit/testresult.rb +0 -89
  360. data/test-unit/lib/test/unit/testsuite.rb +0 -110
  361. data/test-unit/lib/test/unit/ui/console/outputlevel.rb +0 -14
  362. data/test-unit/lib/test/unit/ui/console/testrunner.rb +0 -195
  363. data/test-unit/lib/test/unit/ui/emacs/testrunner.rb +0 -49
  364. data/test-unit/lib/test/unit/ui/testrunner.rb +0 -20
  365. data/test-unit/lib/test/unit/ui/testrunnermediator.rb +0 -77
  366. data/test-unit/lib/test/unit/ui/testrunnerutilities.rb +0 -41
  367. data/test-unit/lib/test/unit/util/backtracefilter.rb +0 -41
  368. data/test-unit/lib/test/unit/util/observable.rb +0 -90
  369. data/test-unit/lib/test/unit/util/procwrapper.rb +0 -48
  370. data/test-unit/lib/test/unit/version.rb +0 -7
  371. data/test-unit/sample/adder.rb +0 -13
  372. data/test-unit/sample/subtracter.rb +0 -12
  373. data/test-unit/sample/tc_adder.rb +0 -18
  374. data/test-unit/sample/tc_subtracter.rb +0 -18
  375. data/test-unit/sample/ts_examples.rb +0 -7
  376. data/test-unit/test/collector/test_descendant.rb +0 -135
  377. data/test-unit/test/collector/test_dir.rb +0 -406
  378. data/test-unit/test/collector/test_load.rb +0 -333
  379. data/test-unit/test/collector/test_objectspace.rb +0 -98
  380. data/test-unit/test/run-test.rb +0 -13
  381. data/test-unit/test/test_assertions.rb +0 -693
  382. data/test-unit/test/test_attribute.rb +0 -86
  383. data/test-unit/test/test_color.rb +0 -37
  384. data/test-unit/test/test_diff.rb +0 -477
  385. data/test-unit/test/test_emacs_runner.rb +0 -60
  386. data/test-unit/test/test_error.rb +0 -26
  387. data/test-unit/test/test_failure.rb +0 -33
  388. data/test-unit/test/test_fixture.rb +0 -252
  389. data/test-unit/test/test_notification.rb +0 -33
  390. data/test-unit/test/test_omission.rb +0 -81
  391. data/test-unit/test/test_pending.rb +0 -70
  392. data/test-unit/test/test_priority.rb +0 -89
  393. data/test-unit/test/test_testcase.rb +0 -430
  394. data/test-unit/test/test_testresult.rb +0 -113
  395. data/test-unit/test/test_testsuite.rb +0 -129
  396. data/test-unit/test/testunit_test_util.rb +0 -14
  397. data/test-unit/test/ui/test_testrunmediator.rb +0 -20
  398. data/test-unit/test/util/test_backtracefilter.rb +0 -41
  399. data/test-unit/test/util/test_observable.rb +0 -102
  400. data/test-unit/test/util/test_procwrapper.rb +0 -36
  401. data/test/test_pkg_config.rb +0 -123
  402. data/vendor/local/include/libpng14/png.h +0 -2701
  403. data/vendor/local/include/libpng14/pngconf.h +0 -1525
  404. data/vendor/local/include/png.h +0 -2701
  405. data/vendor/local/include/pngconf.h +0 -1525
  406. data/vendor/local/include/zconf.h +0 -461
  407. data/vendor/local/include/zlib.h +0 -1589
  408. data/vendor/local/lib/libpng.def +0 -192
  409. data/vendor/local/lib/libpng.lib +0 -0
  410. data/vendor/local/lib/libpng14.dll.a +0 -0
  411. data/vendor/local/lib/libz.dll.a +0 -0
  412. data/vendor/local/lib/pkgconfig/libpng.pc +0 -11
  413. data/vendor/local/lib/pkgconfig/libpng14.pc +0 -11
  414. data/vendor/local/lib/zdll.lib +0 -0
  415. data/vendor/local/lib/zlib.def +0 -67
  416. data/vendor/local/manifest/cairo_1.8.10-4_win32.mft +0 -5
  417. data/vendor/local/manifest/libpng-dev_1.4.3-1_win32.mft +0 -15
  418. data/vendor/local/manifest/zlib-dev_1.2.5-2_win32.mft +0 -8
  419. data/vendor/local/share/gtk-doc/html/cairo/cairo-context.html +0 -2643
  420. data/vendor/local/share/gtk-doc/html/cairo/cairo-error-status.html +0 -360
  421. data/vendor/local/share/gtk-doc/html/cairo/cairo-font-face.html +0 -408
  422. data/vendor/local/share/gtk-doc/html/cairo/cairo-font-options.html +0 -678
  423. data/vendor/local/share/gtk-doc/html/cairo/cairo-ft-font.html +0 -319
  424. data/vendor/local/share/gtk-doc/html/cairo/cairo-image-surface.html +0 -473
  425. data/vendor/local/share/gtk-doc/html/cairo/cairo-matrix.html +0 -596
  426. data/vendor/local/share/gtk-doc/html/cairo/cairo-paths.html +0 -1274
  427. data/vendor/local/share/gtk-doc/html/cairo/cairo-pattern.html +0 -1485
  428. data/vendor/local/share/gtk-doc/html/cairo/cairo-pdf-surface.html +0 -238
  429. data/vendor/local/share/gtk-doc/html/cairo/cairo-png-functions.html +0 -341
  430. data/vendor/local/share/gtk-doc/html/cairo/cairo-ps-surface.html +0 -622
  431. data/vendor/local/share/gtk-doc/html/cairo/cairo-quartz-font.html +0 -151
  432. data/vendor/local/share/gtk-doc/html/cairo/cairo-quartz-surface.html +0 -219
  433. data/vendor/local/share/gtk-doc/html/cairo/cairo-scaled-font.html +0 -1023
  434. data/vendor/local/share/gtk-doc/html/cairo/cairo-surface.html +0 -1026
  435. data/vendor/local/share/gtk-doc/html/cairo/cairo-svg-surface.html +0 -321
  436. data/vendor/local/share/gtk-doc/html/cairo/cairo-transformations.html +0 -436
  437. data/vendor/local/share/gtk-doc/html/cairo/cairo-types.html +0 -133
  438. data/vendor/local/share/gtk-doc/html/cairo/cairo-user-font.html +0 -735
  439. data/vendor/local/share/gtk-doc/html/cairo/cairo-version-info.html +0 -345
  440. data/vendor/local/share/gtk-doc/html/cairo/cairo-win32-font.html +0 -358
  441. data/vendor/local/share/gtk-doc/html/cairo/cairo-win32-surface.html +0 -312
  442. data/vendor/local/share/gtk-doc/html/cairo/cairo-xlib-surface.html +0 -492
  443. data/vendor/local/share/man/man3/libpng.3 +0 -4455
  444. data/vendor/local/share/man/man3/libpngpf.3 +0 -808
  445. data/vendor/local/share/man/man5/png.5 +0 -74
  446. data/vendor/local/src/tml/packaging/cairo_1.8.10-4_win32.log +0 -920
  447. data/vendor/local/src/tml/packaging/libpng_1.4.3-1_win32.log +0 -272
  448. data/vendor/local/src/tml/packaging/libpng_1.4.3-1_win32.sh +0 -71
  449. data/vendor/local/src/tml/packaging/zlib_1.2.5-2_win32.log +0 -42
  450. data/vendor/local/src/tml/packaging/zlib_1.2.5-2_win32.sh +0 -189
@@ -0,0 +1,166 @@
1
+ /* -*- c-file-style: "gnu"; indent-tabs-mode: nil -*- */
2
+ /*
3
+ * Ruby Cairo Binding
4
+ *
5
+ * Copyright 2005-2010 Kouhei Sutou <kou@cozmixng.org>
6
+ *
7
+ * This file is made available under the same terms as Ruby
8
+ *
9
+ */
10
+
11
+ #include "rb_cairo.h"
12
+ #include "rb_cairo_private.h"
13
+ #include "rb_cairo_io.h"
14
+
15
+ ID rb_cairo__io_id_read;
16
+ ID rb_cairo__io_id_write;
17
+ ID rb_cairo__io_id_output;
18
+
19
+ /* read/write callback */
20
+ rb_cairo__io_callback_closure_t *
21
+ rb_cairo__io_closure_new (VALUE target)
22
+ {
23
+ rb_cairo__io_callback_closure_t *closure;
24
+ closure = ALLOC (rb_cairo__io_callback_closure_t);
25
+
26
+ closure->target = target;
27
+ closure->error = Qnil;
28
+
29
+ return closure;
30
+ }
31
+
32
+ void
33
+ rb_cairo__io_closure_destroy (rb_cairo__io_callback_closure_t *closure)
34
+ {
35
+ xfree (closure);
36
+ }
37
+
38
+ void
39
+ rb_cairo__io_closure_free (void *closure)
40
+ {
41
+ rb_cairo__io_closure_destroy ((rb_cairo__io_callback_closure_t *) closure);
42
+ }
43
+
44
+ static VALUE
45
+ rb_cairo__io_func_rescue (VALUE io_closure)
46
+ {
47
+ rb_cairo__io_callback_closure_t *closure;
48
+ closure = (rb_cairo__io_callback_closure_t *)io_closure;
49
+ closure->error = RB_ERRINFO;
50
+ return Qnil;
51
+ }
52
+
53
+ static VALUE
54
+ rb_cairo__io_func_invoke (VALUE user_data)
55
+ {
56
+ rb_cairo__io_invoke_data_t *data;
57
+
58
+ data = (rb_cairo__io_invoke_data_t *)user_data;
59
+ return rb_rescue2 (data->func, data->data,
60
+ rb_cairo__io_func_rescue, data->data, rb_eException,
61
+ (VALUE)0);
62
+ }
63
+
64
+ /* write callback */
65
+ static VALUE
66
+ rb_cairo__io_write_func_invoke (VALUE write_closure)
67
+ {
68
+ VALUE output, data;
69
+ long written_bytes;
70
+ rb_cairo__io_callback_closure_t *closure;
71
+ unsigned int length;
72
+
73
+ closure = (rb_cairo__io_callback_closure_t *)write_closure;
74
+
75
+ output = closure->target;
76
+ data = rb_str_new ((const char *)closure->data, closure->length);
77
+
78
+ length = RSTRING_LEN (data);
79
+ while (length != 0)
80
+ {
81
+ VALUE rb_written_bytes = rb_funcall (output,
82
+ rb_cairo__io_id_write, 1, data);
83
+ written_bytes = NUM2LONG (rb_written_bytes);
84
+ data = rb_str_substr (data, written_bytes,
85
+ RSTRING_LEN (data) - written_bytes);
86
+ length -= written_bytes;
87
+ }
88
+
89
+ return Qnil;
90
+ }
91
+
92
+ cairo_status_t
93
+ rb_cairo__io_write_func (void *write_closure,
94
+ const unsigned char *data, unsigned int length)
95
+ {
96
+ rb_cairo__io_callback_closure_t *closure;
97
+ rb_cairo__io_invoke_data_t invoke_data;
98
+
99
+ closure = (rb_cairo__io_callback_closure_t *)write_closure;
100
+ closure->data = (unsigned char *)data;
101
+ closure->length = length;
102
+
103
+ invoke_data.func = rb_cairo__io_write_func_invoke;
104
+ invoke_data.data = (VALUE)closure;
105
+ rb_cairo__invoke_callback (rb_cairo__io_func_invoke, (VALUE)&invoke_data);
106
+
107
+ if (NIL_P (closure->error))
108
+ return CAIRO_STATUS_SUCCESS;
109
+ else
110
+ return CAIRO_STATUS_WRITE_ERROR;
111
+ }
112
+
113
+ /* read callback */
114
+ static VALUE
115
+ rb_cairo__io_read_func_invoke (VALUE read_closure)
116
+ {
117
+ VALUE input, result;
118
+ rb_cairo__io_callback_closure_t *closure;
119
+ unsigned int length, rest;
120
+
121
+ closure = (rb_cairo__io_callback_closure_t *)read_closure;
122
+ input = closure->target;
123
+ length = closure->length;
124
+
125
+ result = rb_str_new2 ("");
126
+
127
+ for (rest = length; rest != 0; rest = length - RSTRING_LEN (result))
128
+ {
129
+ rb_str_concat (result,
130
+ rb_funcall (input,
131
+ rb_cairo__io_id_read, 1, INT2NUM (rest)));
132
+ }
133
+
134
+ memcpy ((void *)closure->data, (const void *)StringValuePtr (result), length);
135
+
136
+ return Qnil;
137
+ }
138
+
139
+ cairo_status_t
140
+ rb_cairo__io_read_func (void *read_closure,
141
+ unsigned char *data, unsigned int length)
142
+ {
143
+ rb_cairo__io_callback_closure_t *closure;
144
+ rb_cairo__io_invoke_data_t invoke_data;
145
+
146
+ closure = (rb_cairo__io_callback_closure_t *)read_closure;
147
+ closure->data = data;
148
+ closure->length = length;
149
+
150
+ invoke_data.func = rb_cairo__io_read_func_invoke;
151
+ invoke_data.data = (VALUE)closure;
152
+ rb_cairo__invoke_callback (rb_cairo__io_func_invoke, (VALUE)&invoke_data);
153
+
154
+ if (NIL_P (closure->error))
155
+ return CAIRO_STATUS_SUCCESS;
156
+ else
157
+ return CAIRO_STATUS_READ_ERROR;
158
+ }
159
+
160
+ void
161
+ Init_cairo_io (void)
162
+ {
163
+ rb_cairo__io_id_read = rb_intern ("read");
164
+ rb_cairo__io_id_write = rb_intern ("write");
165
+ rb_cairo__io_id_output = rb_intern ("output");
166
+ }
@@ -0,0 +1,44 @@
1
+ /* -*- c-file-style: "gnu"; indent-tabs-mode: nil -*- */
2
+ /*
3
+ * Ruby Cairo Binding
4
+ *
5
+ * Copyright 2005-2010 Kouhei Sutou <kou@cozmixng.org>
6
+ *
7
+ * This file is made available under the same terms as Ruby
8
+ *
9
+ */
10
+
11
+ #ifndef RB_CAIRO_IO_H
12
+ #define RB_CAIRO_IO_H
13
+
14
+ #include <rb_cairo.h>
15
+
16
+ typedef struct rb_cairo__io_callback_closure {
17
+ VALUE target;
18
+ VALUE error;
19
+ unsigned char *data;
20
+ unsigned int length;
21
+ } rb_cairo__io_callback_closure_t;
22
+
23
+ typedef struct rb_cairo__io_invoke_data {
24
+ cr_callback_func_t func;
25
+ VALUE data;
26
+ } rb_cairo__io_invoke_data_t;
27
+
28
+ RB_CAIRO_VAR ID rb_cairo__io_id_read;
29
+ RB_CAIRO_VAR ID rb_cairo__io_id_write;
30
+ RB_CAIRO_VAR ID rb_cairo__io_id_output;
31
+
32
+ rb_cairo__io_callback_closure_t *
33
+ rb_cairo__io_closure_new (VALUE target);
34
+ void rb_cairo__io_closure_destroy (rb_cairo__io_callback_closure_t *closure);
35
+ void rb_cairo__io_closure_free (void *closure);
36
+ cairo_status_t rb_cairo__io_write_func (void *write_closure,
37
+ const unsigned char *data,
38
+ unsigned int length);
39
+ cairo_status_t rb_cairo__io_read_func (void *read_closure,
40
+ unsigned char *data,
41
+ unsigned int length);
42
+
43
+
44
+ #endif
@@ -40,7 +40,7 @@ cr_matrix_free (void *ptr)
40
40
  {
41
41
  if (ptr)
42
42
  {
43
- free ((cairo_matrix_t *) ptr);
43
+ xfree ((cairo_matrix_t *) ptr);
44
44
  }
45
45
  }
46
46
 
@@ -44,11 +44,14 @@
44
44
  #endif
45
45
 
46
46
  extern void Init_cairo_private (void);
47
+ extern void Init_cairo_io (void);
47
48
  extern void Init_cairo_constants (void);
48
49
 
49
50
  extern void Init_cairo_context (void);
50
51
  extern void Init_cairo_path (void);
51
52
  extern void Init_cairo_matrix (void);
53
+ extern void Init_cairo_region (void);
54
+ extern void Init_cairo_device (void);
52
55
  extern void Init_cairo_surface (void);
53
56
  extern void Init_cairo_quartz_surface (void);
54
57
  extern void Init_cairo_exception (void);
@@ -0,0 +1,385 @@
1
+ /* -*- c-file-style: "gnu"; indent-tabs-mode: nil -*- */
2
+ /*
3
+ * Ruby Cairo Binding
4
+ *
5
+ * Copyright 2010 Kouhei Sutou <kou@cozmixng.org>
6
+ *
7
+ * This file is made available under the same terms as Ruby
8
+ *
9
+ */
10
+
11
+
12
+ #include "rb_cairo.h"
13
+ #include "rb_cairo_private.h"
14
+
15
+ VALUE rb_cCairo_Region = Qnil;
16
+
17
+ #if CAIRO_CHECK_VERSION(1, 10, 0)
18
+
19
+ #define _SELF (RVAL2CRREGION(self))
20
+
21
+ static inline void
22
+ cr_region_check_status (cairo_region_t *region)
23
+ {
24
+ rb_cairo_check_status (cairo_region_status (region));
25
+ }
26
+
27
+ cairo_region_t *
28
+ rb_cairo_region_from_ruby_object (VALUE obj)
29
+ {
30
+ cairo_region_t *region;
31
+ if (!rb_cairo__is_kind_of (obj, rb_cCairo_Region))
32
+ {
33
+ rb_raise (rb_eTypeError, "not a cairo region");
34
+ }
35
+ Data_Get_Struct (obj, cairo_region_t, region);
36
+ return region;
37
+ }
38
+
39
+ static void
40
+ cr_region_free (void *ptr)
41
+ {
42
+ if (ptr)
43
+ {
44
+ cairo_region_destroy ((cairo_region_t *) ptr);
45
+ }
46
+ }
47
+
48
+ VALUE
49
+ rb_cairo_region_to_ruby_object (cairo_region_t *region)
50
+ {
51
+ if (region)
52
+ {
53
+ cairo_region_reference (region);
54
+ return Data_Wrap_Struct (rb_cCairo_Region, NULL, cr_region_free, region);
55
+ }
56
+ else
57
+ {
58
+ return Qnil;
59
+ }
60
+ }
61
+
62
+ static VALUE
63
+ cr_region_allocate (VALUE klass)
64
+ {
65
+ return Data_Wrap_Struct (klass, NULL, cr_region_free, NULL);
66
+ }
67
+
68
+ static VALUE
69
+ cr_region_initialize (int argc, VALUE *argv, VALUE self)
70
+ {
71
+ cairo_region_t *region;
72
+
73
+ if (argc == 0)
74
+ {
75
+ region = cairo_region_create ();
76
+ }
77
+ else
78
+ {
79
+ int i;
80
+ cairo_rectangle_int_t *rectangles;
81
+
82
+ rectangles = ALLOCA_N (cairo_rectangle_int_t, argc);
83
+ for (i = 0; i < argc; i++)
84
+ {
85
+ VALUE rb_rectangle;
86
+
87
+ rb_rectangle = rb_check_array_type (argv[i]);
88
+ if (RARRAY_LEN (rb_rectangle) != 4)
89
+ rb_raise (rb_eArgError,
90
+ "invalid argument (expect "
91
+ "() or ([x, y, width, height], ...): %s",
92
+ rb_cairo__inspect (rb_ary_new4 (argc, argv)));
93
+ rectangles[i].x = NUM2INT (RARRAY_PTR (rb_rectangle)[0]);
94
+ rectangles[i].y = NUM2INT (RARRAY_PTR (rb_rectangle)[1]);
95
+ rectangles[i].width = NUM2INT (RARRAY_PTR (rb_rectangle)[2]);
96
+ rectangles[i].height = NUM2INT (RARRAY_PTR (rb_rectangle)[3]);
97
+ }
98
+ region = cairo_region_create_rectangles (rectangles, argc);
99
+ }
100
+ cr_region_check_status (region);
101
+ DATA_PTR (self) = region;
102
+ return Qnil;
103
+ }
104
+
105
+ static VALUE
106
+ cr_region_dup (VALUE self)
107
+ {
108
+ cairo_region_t *copied_region;
109
+ VALUE rb_copied_region;
110
+
111
+ copied_region = cairo_region_copy (_SELF);
112
+ cr_region_check_status (copied_region);
113
+ rb_copied_region = CRREGION2RVAL (copied_region);
114
+ cairo_region_destroy (copied_region);
115
+ return rb_copied_region;
116
+ }
117
+
118
+ static VALUE
119
+ cr_region_equal (VALUE self, VALUE other)
120
+ {
121
+ cairo_region_t *region, *other_region;
122
+
123
+ if (!rb_cairo__is_kind_of (other, rb_cCairo_Region))
124
+ return Qfalse;
125
+
126
+ region = _SELF;
127
+ other_region = RVAL2CRREGION (other);
128
+ return CBOOL2RVAL (cairo_region_equal (region, other_region));
129
+ }
130
+
131
+ static VALUE
132
+ cr_region_get_extents (VALUE self)
133
+ {
134
+ cairo_region_t *region;
135
+ cairo_rectangle_int_t extents;
136
+
137
+ region = _SELF;
138
+ cairo_region_get_extents (region, &extents);
139
+ cr_region_check_status (region);
140
+ return rb_ary_new3 (4,
141
+ INT2NUM (extents.x), INT2NUM (extents.y),
142
+ INT2NUM (extents.width), INT2NUM (extents.height));
143
+ }
144
+
145
+ static VALUE
146
+ cr_region_num_rectangles (VALUE self)
147
+ {
148
+ cairo_region_t *region;
149
+ int num_rectangles;
150
+
151
+ region = _SELF;
152
+ num_rectangles = cairo_region_num_rectangles (region);
153
+ cr_region_check_status (region);
154
+ return INT2NUM (num_rectangles);
155
+ }
156
+
157
+ static VALUE
158
+ cr_region_get_rectangle (VALUE self, VALUE index)
159
+ {
160
+ cairo_region_t *region;
161
+ cairo_rectangle_int_t extents;
162
+
163
+ region = _SELF;
164
+ cairo_region_get_rectangle (region, NUM2INT (index), &extents);
165
+ cr_region_check_status (region);
166
+ return rb_ary_new3 (4,
167
+ INT2NUM (extents.x), INT2NUM (extents.y),
168
+ INT2NUM (extents.width), INT2NUM (extents.height));
169
+ }
170
+
171
+ static VALUE
172
+ cr_region_is_empty (VALUE self)
173
+ {
174
+ return CBOOL2RVAL (cairo_region_is_empty (_SELF));
175
+ }
176
+
177
+ static VALUE
178
+ cr_region_containts_rectangle (int argc, VALUE *argv, VALUE self)
179
+ {
180
+ cairo_region_t *region;
181
+ cairo_rectangle_int_t rectangle;
182
+ cairo_region_overlap_t overlap;
183
+ VALUE arg1, arg2, arg3, arg4;
184
+ const char *error_message =
185
+ "invalid argument (expect "
186
+ "(x, y, width, height) or ([x, y, width, height])): %s";
187
+
188
+ rb_scan_args (argc, argv, "13", &arg1, &arg2, &arg3, &arg4);
189
+
190
+ region = _SELF;
191
+ if (argc == 1)
192
+ {
193
+ VALUE rb_rectangle;
194
+
195
+ rb_rectangle = rb_check_array_type (arg1);
196
+ if (RARRAY_LEN (rb_rectangle) != 4)
197
+ rb_raise (rb_eArgError, error_message,
198
+ rb_cairo__inspect (rb_ary_new4 (argc, argv)));
199
+ rectangle.x = NUM2INT (RARRAY_PTR (rb_rectangle)[0]);
200
+ rectangle.y = NUM2INT (RARRAY_PTR (rb_rectangle)[1]);
201
+ rectangle.width = NUM2INT (RARRAY_PTR (rb_rectangle)[2]);
202
+ rectangle.height = NUM2INT (RARRAY_PTR (rb_rectangle)[3]);
203
+ }
204
+ else if (argc == 4)
205
+ {
206
+ rectangle.x = NUM2INT (arg1);
207
+ rectangle.y = NUM2INT (arg2);
208
+ rectangle.width = NUM2INT (arg3);
209
+ rectangle.height = NUM2INT (arg4);
210
+ }
211
+ else
212
+ {
213
+ rb_raise (rb_eArgError, error_message,
214
+ rb_cairo__inspect (rb_ary_new4 (argc, argv)));
215
+ }
216
+
217
+ overlap = cairo_region_contains_rectangle (region, &rectangle);
218
+ cr_region_check_status (region);
219
+ return INT2NUM (overlap);
220
+ }
221
+
222
+ static VALUE
223
+ cr_region_containts_point (int argc, VALUE *argv, VALUE self)
224
+ {
225
+ cairo_region_t *region;
226
+ int x, y;
227
+ VALUE arg1, arg2;
228
+ const char *error_message =
229
+ "invalid argument (expect "
230
+ "(x, y) or ([x, y])): %s";
231
+
232
+ rb_scan_args (argc, argv, "11", &arg1, &arg2);
233
+
234
+ region = _SELF;
235
+ if (argc == 1)
236
+ {
237
+ VALUE point;
238
+
239
+ point = rb_check_array_type (arg1);
240
+ if (RARRAY_LEN (point) != 4)
241
+ rb_raise (rb_eArgError, error_message,
242
+ rb_cairo__inspect (rb_ary_new4 (argc, argv)));
243
+ x = NUM2INT (RARRAY_PTR (point)[0]);
244
+ y = NUM2INT (RARRAY_PTR (point)[1]);
245
+ }
246
+ else
247
+ {
248
+ x = NUM2INT (arg1);
249
+ y = NUM2INT (arg2);
250
+ }
251
+ return CBOOL2RVAL (cairo_region_contains_point (region, x, y));
252
+ }
253
+
254
+ static VALUE
255
+ cr_region_translate (int argc, VALUE *argv, VALUE self)
256
+ {
257
+ cairo_region_t *region;
258
+ int x, y;
259
+ VALUE arg1, arg2;
260
+ const char *error_message =
261
+ "invalid argument (expect "
262
+ "(x, y) or ([x, y])): %s";
263
+
264
+ rb_scan_args (argc, argv, "11", &arg1, &arg2);
265
+
266
+ region = _SELF;
267
+ if (argc == 1)
268
+ {
269
+ VALUE point;
270
+
271
+ point = rb_check_array_type (arg1);
272
+ if (RARRAY_LEN (point) != 4)
273
+ rb_raise (rb_eArgError, error_message,
274
+ rb_cairo__inspect (rb_ary_new4 (argc, argv)));
275
+ x = NUM2INT (RARRAY_PTR (point)[0]);
276
+ y = NUM2INT (RARRAY_PTR (point)[1]);
277
+ }
278
+ else
279
+ {
280
+ x = NUM2INT (arg1);
281
+ y = NUM2INT (arg2);
282
+ }
283
+
284
+ cairo_region_translate (region, x, y);
285
+ cr_region_check_status (region);
286
+ return Qnil;
287
+ }
288
+
289
+ #define DEFINE_OPERATOR(type) \
290
+ static VALUE \
291
+ cr_region_ ## type (int argc, VALUE *argv, VALUE self) \
292
+ { \
293
+ cairo_status_t status; \
294
+ cairo_region_t *region, *other = NULL; \
295
+ cairo_rectangle_int_t rectangle; \
296
+ VALUE arg1, arg2, arg3, arg4; \
297
+ const char *error_message = \
298
+ "invalid argument (expect " \
299
+ "(region), (x, y, width, height) or ([x, y, width, height])): %s"; \
300
+ \
301
+ rb_scan_args (argc, argv, "13", &arg1, &arg2, &arg3, &arg4); \
302
+ \
303
+ region = _SELF; \
304
+ if (argc == 1) \
305
+ { \
306
+ if (rb_cairo__is_kind_of (arg1, rb_cCairo_Region)) \
307
+ { \
308
+ other = RVAL2CRREGION (arg1); \
309
+ } \
310
+ else \
311
+ { \
312
+ VALUE rb_rectangle; \
313
+ \
314
+ rb_rectangle = rb_check_array_type (arg1); \
315
+ if (RARRAY_LEN (rb_rectangle) != 4) \
316
+ rb_raise (rb_eArgError, error_message, \
317
+ rb_cairo__inspect (rb_ary_new4 (argc, argv))); \
318
+ rectangle.x = NUM2INT (RARRAY_PTR (rb_rectangle)[0]); \
319
+ rectangle.y = NUM2INT (RARRAY_PTR (rb_rectangle)[1]); \
320
+ rectangle.width = NUM2INT (RARRAY_PTR (rb_rectangle)[2]); \
321
+ rectangle.height = NUM2INT (RARRAY_PTR (rb_rectangle)[3]); \
322
+ } \
323
+ } \
324
+ else if (argc == 4) \
325
+ { \
326
+ rectangle.x = NUM2INT (arg1); \
327
+ rectangle.y = NUM2INT (arg2); \
328
+ rectangle.width = NUM2INT (arg3); \
329
+ rectangle.height = NUM2INT (arg4); \
330
+ } \
331
+ else \
332
+ { \
333
+ rb_raise (rb_eArgError, error_message, \
334
+ rb_cairo__inspect (rb_ary_new4 (argc, argv))); \
335
+ } \
336
+ \
337
+ if (other) \
338
+ status = cairo_region_ ## type (region, other); \
339
+ else \
340
+ status = cairo_region_ ## type ## _rectangle (region, &rectangle); \
341
+ rb_cairo_check_status (status); \
342
+ cr_region_check_status (region); \
343
+ return Qnil; \
344
+ }
345
+
346
+ DEFINE_OPERATOR(subtract)
347
+ DEFINE_OPERATOR(intersect)
348
+ DEFINE_OPERATOR(union)
349
+ DEFINE_OPERATOR(xor)
350
+ #endif
351
+
352
+ void
353
+ Init_cairo_region (void)
354
+ {
355
+ #if CAIRO_CHECK_VERSION(1, 10, 0)
356
+ rb_cCairo_Region =
357
+ rb_define_class_under (rb_mCairo, "Region", rb_cObject);
358
+
359
+ rb_define_alloc_func (rb_cCairo_Region, cr_region_allocate);
360
+
361
+ rb_define_method (rb_cCairo_Region, "initialize", cr_region_initialize, -1);
362
+
363
+ rb_define_method (rb_cCairo_Region, "dup", cr_region_dup, 0);
364
+ rb_define_method (rb_cCairo_Region, "==", cr_region_equal, 1);
365
+
366
+ rb_define_method (rb_cCairo_Region, "extents", cr_region_get_extents, 0);
367
+ rb_define_method (rb_cCairo_Region, "num_rectangles",
368
+ cr_region_num_rectangles, 0);
369
+ rb_define_method (rb_cCairo_Region, "[]",
370
+ cr_region_get_rectangle, 1);
371
+ rb_define_method (rb_cCairo_Region, "empty?", cr_region_is_empty, 0);
372
+ rb_define_method (rb_cCairo_Region, "contains_rectangle",
373
+ cr_region_containts_rectangle, -1);
374
+ rb_define_method (rb_cCairo_Region, "contains_point?",
375
+ cr_region_containts_point, -1);
376
+
377
+ rb_define_method (rb_cCairo_Region, "translate!", cr_region_translate, -1);
378
+ rb_define_method (rb_cCairo_Region, "subtract!", cr_region_subtract, -1);
379
+ rb_define_method (rb_cCairo_Region, "intersect!", cr_region_intersect, -1);
380
+ rb_define_method (rb_cCairo_Region, "union!", cr_region_union, -1);
381
+ rb_define_method (rb_cCairo_Region, "xor!", cr_region_xor, -1);
382
+
383
+ RB_CAIRO_DEF_SETTERS (rb_cCairo_Region);
384
+ #endif
385
+ }