cairo 1.14.0-x64-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 (636) hide show
  1. checksums.yaml +7 -0
  2. data/AUTHORS +7 -0
  3. data/COPYING +59 -0
  4. data/GPL +340 -0
  5. data/Gemfile +5 -0
  6. data/NEWS +429 -0
  7. data/README.rdoc +120 -0
  8. data/Rakefile +620 -0
  9. data/ext/cairo/cairo.def +140 -0
  10. data/ext/cairo/depend +3 -0
  11. data/ext/cairo/extconf.rb +202 -0
  12. data/ext/cairo/rb_cairo.c +111 -0
  13. data/ext/cairo/rb_cairo.h +348 -0
  14. data/ext/cairo/rb_cairo_constants.c +673 -0
  15. data/ext/cairo/rb_cairo_context.c +1741 -0
  16. data/ext/cairo/rb_cairo_device.c +475 -0
  17. data/ext/cairo/rb_cairo_exception.c +446 -0
  18. data/ext/cairo/rb_cairo_font_extents.c +200 -0
  19. data/ext/cairo/rb_cairo_font_face.c +726 -0
  20. data/ext/cairo/rb_cairo_font_options.c +197 -0
  21. data/ext/cairo/rb_cairo_glyph.c +161 -0
  22. data/ext/cairo/rb_cairo_io.c +166 -0
  23. data/ext/cairo/rb_cairo_io.h +44 -0
  24. data/ext/cairo/rb_cairo_matrix.c +366 -0
  25. data/ext/cairo/rb_cairo_path.c +459 -0
  26. data/ext/cairo/rb_cairo_pattern.c +1192 -0
  27. data/ext/cairo/rb_cairo_private.c +255 -0
  28. data/ext/cairo/rb_cairo_private.h +129 -0
  29. data/ext/cairo/rb_cairo_rectangle.c +83 -0
  30. data/ext/cairo/rb_cairo_region.c +385 -0
  31. data/ext/cairo/rb_cairo_scaled_font.c +235 -0
  32. data/ext/cairo/rb_cairo_surface.c +2284 -0
  33. data/ext/cairo/rb_cairo_text_cluster.c +151 -0
  34. data/ext/cairo/rb_cairo_text_extents.c +221 -0
  35. data/lib/2.0/cairo.so +0 -0
  36. data/lib/2.1/cairo.so +0 -0
  37. data/lib/2.2/cairo.so +0 -0
  38. data/lib/cairo.rb +154 -0
  39. data/lib/cairo/color.rb +267 -0
  40. data/lib/cairo/colors.rb +656 -0
  41. data/lib/cairo/constants.rb +24 -0
  42. data/lib/cairo/context.rb +29 -0
  43. data/lib/cairo/context/blur.rb +45 -0
  44. data/lib/cairo/context/circle.rb +9 -0
  45. data/lib/cairo/context/color.rb +11 -0
  46. data/lib/cairo/context/path.rb +117 -0
  47. data/lib/cairo/context/rectangle.rb +33 -0
  48. data/lib/cairo/context/triangle.rb +12 -0
  49. data/lib/cairo/device.rb +13 -0
  50. data/lib/cairo/paper.rb +183 -0
  51. data/lib/cairo/papers.rb +65 -0
  52. data/lib/cairo/path.rb +15 -0
  53. data/lib/cairo/pattern.rb +12 -0
  54. data/lib/cairo/point.rb +7 -0
  55. data/lib/cairo/surface.rb +13 -0
  56. data/samples/agg/aa_test.rb +304 -0
  57. data/samples/blur.rb +46 -0
  58. data/samples/pac-nomralize.rb +170 -0
  59. data/samples/pac-tee.rb +170 -0
  60. data/samples/pac.rb +98 -0
  61. data/samples/png.rb +44 -0
  62. data/samples/scalable.rb +55 -0
  63. data/samples/text-on-path.rb +59 -0
  64. data/samples/text2.rb +130 -0
  65. data/test/cairo-test-utils.rb +44 -0
  66. data/test/run-test.rb +29 -0
  67. data/test/test_color.rb +17 -0
  68. data/test/test_constants.rb +27 -0
  69. data/test/test_context.rb +105 -0
  70. data/test/test_exception.rb +36 -0
  71. data/test/test_font_extents.rb +36 -0
  72. data/test/test_font_face.rb +257 -0
  73. data/test/test_font_options.rb +13 -0
  74. data/test/test_image_surface.rb +28 -0
  75. data/test/test_paper.rb +81 -0
  76. data/test/test_quartz_image_surface.rb +13 -0
  77. data/test/test_raster_source_pattern.rb +162 -0
  78. data/test/test_recording_surface.rb +19 -0
  79. data/test/test_region.rb +102 -0
  80. data/test/test_scaled_font.rb +34 -0
  81. data/test/test_script_device.rb +46 -0
  82. data/test/test_script_surface.rb +13 -0
  83. data/test/test_surface.rb +61 -0
  84. data/test/test_tee_surface.rb +32 -0
  85. data/test/test_text_cluster.rb +32 -0
  86. data/test/test_text_extents.rb +40 -0
  87. data/test/test_text_to_glyphs_data.rb +51 -0
  88. data/test/test_xml_device.rb +22 -0
  89. data/test/test_xml_surface.rb +34 -0
  90. data/vendor/local/bin/fc-cache.exe +0 -0
  91. data/vendor/local/bin/fc-cat.exe +0 -0
  92. data/vendor/local/bin/fc-list.exe +0 -0
  93. data/vendor/local/bin/fc-match.exe +0 -0
  94. data/vendor/local/bin/fc-pattern.exe +0 -0
  95. data/vendor/local/bin/fc-query.exe +0 -0
  96. data/vendor/local/bin/fc-scan.exe +0 -0
  97. data/vendor/local/bin/fc-validate.exe +0 -0
  98. data/vendor/local/bin/freetype-config +163 -0
  99. data/vendor/local/bin/libcairo-2.dll +0 -0
  100. data/vendor/local/bin/libcairo-gobject-2.dll +0 -0
  101. data/vendor/local/bin/libcairo-script-interpreter-2.dll +0 -0
  102. data/vendor/local/bin/libfontconfig-1.dll +0 -0
  103. data/vendor/local/bin/libfreetype-6.dll +0 -0
  104. data/vendor/local/bin/libgcc_s_seh-1.dll +0 -0
  105. data/vendor/local/bin/libpixman-1-0.dll +0 -0
  106. data/vendor/local/bin/libpng-config +127 -0
  107. data/vendor/local/bin/libpng16-16.dll +0 -0
  108. data/vendor/local/bin/libpng16-config +127 -0
  109. data/vendor/local/bin/libstdc++-6.dll +0 -0
  110. data/vendor/local/bin/libwinpthread-1.dll +0 -0
  111. data/vendor/local/bin/libxml2-2.dll +0 -0
  112. data/vendor/local/bin/png-fix-itxt.exe +0 -0
  113. data/vendor/local/bin/pngfix.exe +0 -0
  114. data/vendor/local/bin/xml2-config +106 -0
  115. data/vendor/local/bin/xmlcatalog.exe +0 -0
  116. data/vendor/local/bin/xmllint.exe +0 -0
  117. data/vendor/local/bin/zlib1.dll +0 -0
  118. data/vendor/local/etc/fonts/conf.d/10-scale-bitmap-fonts.conf +81 -0
  119. data/vendor/local/etc/fonts/conf.d/20-unhint-small-vera.conf +48 -0
  120. data/vendor/local/etc/fonts/conf.d/30-metric-aliases.conf +546 -0
  121. data/vendor/local/etc/fonts/conf.d/30-urw-aliases.conf +24 -0
  122. data/vendor/local/etc/fonts/conf.d/40-nonlatin.conf +231 -0
  123. data/vendor/local/etc/fonts/conf.d/45-latin.conf +189 -0
  124. data/vendor/local/etc/fonts/conf.d/49-sansserif.conf +21 -0
  125. data/vendor/local/etc/fonts/conf.d/50-user.conf +15 -0
  126. data/vendor/local/etc/fonts/conf.d/51-local.conf +6 -0
  127. data/vendor/local/etc/fonts/conf.d/60-latin.conf +70 -0
  128. data/vendor/local/etc/fonts/conf.d/65-fonts-persian.conf +419 -0
  129. data/vendor/local/etc/fonts/conf.d/65-nonlatin.conf +196 -0
  130. data/vendor/local/etc/fonts/conf.d/69-unifont.conf +28 -0
  131. data/vendor/local/etc/fonts/conf.d/80-delicious.conf +19 -0
  132. data/vendor/local/etc/fonts/conf.d/90-synthetic.conf +64 -0
  133. data/vendor/local/etc/fonts/conf.d/README +23 -0
  134. data/vendor/local/etc/fonts/fonts.conf +155 -0
  135. data/vendor/local/include/cairo/cairo-deprecated.h +123 -0
  136. data/vendor/local/include/cairo/cairo-features.h +31 -0
  137. data/vendor/local/include/cairo/cairo-ft.h +118 -0
  138. data/vendor/local/include/cairo/cairo-gobject.h +192 -0
  139. data/vendor/local/include/cairo/cairo-pdf.h +94 -0
  140. data/vendor/local/include/cairo/cairo-ps.h +116 -0
  141. data/vendor/local/include/cairo/cairo-script-interpreter.h +124 -0
  142. data/vendor/local/include/cairo/cairo-script.h +98 -0
  143. data/vendor/local/include/cairo/cairo-svg.h +84 -0
  144. data/vendor/local/include/cairo/cairo-version.h +8 -0
  145. data/vendor/local/include/cairo/cairo-win32.h +112 -0
  146. data/vendor/local/include/cairo/cairo.h +3153 -0
  147. data/vendor/local/include/fontconfig/fcfreetype.h +59 -0
  148. data/vendor/local/include/fontconfig/fcprivate.h +124 -0
  149. data/vendor/local/include/fontconfig/fontconfig.h +1010 -0
  150. data/vendor/local/include/freetype2/config/ftconfig.h +706 -0
  151. data/vendor/local/include/freetype2/config/ftheader.h +832 -0
  152. data/vendor/local/include/freetype2/config/ftmodule.h +20 -0
  153. data/vendor/local/include/freetype2/config/ftoption.h +846 -0
  154. data/vendor/local/include/freetype2/config/ftstdlib.h +174 -0
  155. data/vendor/local/include/freetype2/freetype.h +4076 -0
  156. data/vendor/local/include/freetype2/ft2build.h +42 -0
  157. data/vendor/local/include/freetype2/ftadvanc.h +182 -0
  158. data/vendor/local/include/freetype2/ftautoh.h +402 -0
  159. data/vendor/local/include/freetype2/ftbbox.h +102 -0
  160. data/vendor/local/include/freetype2/ftbdf.h +210 -0
  161. data/vendor/local/include/freetype2/ftbitmap.h +227 -0
  162. data/vendor/local/include/freetype2/ftbzip2.h +102 -0
  163. data/vendor/local/include/freetype2/ftcache.h +1057 -0
  164. data/vendor/local/include/freetype2/ftcffdrv.h +254 -0
  165. data/vendor/local/include/freetype2/ftchapters.h +121 -0
  166. data/vendor/local/include/freetype2/ftcid.h +166 -0
  167. data/vendor/local/include/freetype2/fterrdef.h +249 -0
  168. data/vendor/local/include/freetype2/fterrors.h +198 -0
  169. data/vendor/local/include/freetype2/ftgasp.h +128 -0
  170. data/vendor/local/include/freetype2/ftglyph.h +620 -0
  171. data/vendor/local/include/freetype2/ftgxval.h +358 -0
  172. data/vendor/local/include/freetype2/ftgzip.h +149 -0
  173. data/vendor/local/include/freetype2/ftimage.h +1322 -0
  174. data/vendor/local/include/freetype2/ftincrem.h +353 -0
  175. data/vendor/local/include/freetype2/ftlcdfil.h +251 -0
  176. data/vendor/local/include/freetype2/ftlist.h +277 -0
  177. data/vendor/local/include/freetype2/ftlzw.h +99 -0
  178. data/vendor/local/include/freetype2/ftmac.h +274 -0
  179. data/vendor/local/include/freetype2/ftmm.h +377 -0
  180. data/vendor/local/include/freetype2/ftmodapi.h +641 -0
  181. data/vendor/local/include/freetype2/ftmoderr.h +194 -0
  182. data/vendor/local/include/freetype2/ftotval.h +203 -0
  183. data/vendor/local/include/freetype2/ftoutln.h +572 -0
  184. data/vendor/local/include/freetype2/ftpfr.h +172 -0
  185. data/vendor/local/include/freetype2/ftrender.h +238 -0
  186. data/vendor/local/include/freetype2/ftsizes.h +159 -0
  187. data/vendor/local/include/freetype2/ftsnames.h +200 -0
  188. data/vendor/local/include/freetype2/ftstroke.h +751 -0
  189. data/vendor/local/include/freetype2/ftsynth.h +81 -0
  190. data/vendor/local/include/freetype2/ftsystem.h +347 -0
  191. data/vendor/local/include/freetype2/fttrigon.h +350 -0
  192. data/vendor/local/include/freetype2/ftttdrv.h +170 -0
  193. data/vendor/local/include/freetype2/fttypes.h +598 -0
  194. data/vendor/local/include/freetype2/ftwinfnt.h +275 -0
  195. data/vendor/local/include/freetype2/ftxf86.h +83 -0
  196. data/vendor/local/include/freetype2/t1tables.h +662 -0
  197. data/vendor/local/include/freetype2/ttnameid.h +1237 -0
  198. data/vendor/local/include/freetype2/tttables.h +787 -0
  199. data/vendor/local/include/freetype2/tttags.h +111 -0
  200. data/vendor/local/include/freetype2/ttunpat.h +59 -0
  201. data/vendor/local/include/libpng16/png.h +3276 -0
  202. data/vendor/local/include/libpng16/pngconf.h +644 -0
  203. data/vendor/local/include/libpng16/pnglibconf.h +208 -0
  204. data/vendor/local/include/libxml2/libxml/DOCBparser.h +96 -0
  205. data/vendor/local/include/libxml2/libxml/HTMLparser.h +306 -0
  206. data/vendor/local/include/libxml2/libxml/HTMLtree.h +147 -0
  207. data/vendor/local/include/libxml2/libxml/SAX.h +173 -0
  208. data/vendor/local/include/libxml2/libxml/SAX2.h +178 -0
  209. data/vendor/local/include/libxml2/libxml/c14n.h +126 -0
  210. data/vendor/local/include/libxml2/libxml/catalog.h +182 -0
  211. data/vendor/local/include/libxml2/libxml/chvalid.h +230 -0
  212. data/vendor/local/include/libxml2/libxml/debugXML.h +217 -0
  213. data/vendor/local/include/libxml2/libxml/dict.h +80 -0
  214. data/vendor/local/include/libxml2/libxml/encoding.h +240 -0
  215. data/vendor/local/include/libxml2/libxml/entities.h +151 -0
  216. data/vendor/local/include/libxml2/libxml/globals.h +509 -0
  217. data/vendor/local/include/libxml2/libxml/hash.h +233 -0
  218. data/vendor/local/include/libxml2/libxml/list.h +137 -0
  219. data/vendor/local/include/libxml2/libxml/nanoftp.h +163 -0
  220. data/vendor/local/include/libxml2/libxml/nanohttp.h +81 -0
  221. data/vendor/local/include/libxml2/libxml/parser.h +1241 -0
  222. data/vendor/local/include/libxml2/libxml/parserInternals.h +644 -0
  223. data/vendor/local/include/libxml2/libxml/pattern.h +100 -0
  224. data/vendor/local/include/libxml2/libxml/relaxng.h +217 -0
  225. data/vendor/local/include/libxml2/libxml/schemasInternals.h +958 -0
  226. data/vendor/local/include/libxml2/libxml/schematron.h +142 -0
  227. data/vendor/local/include/libxml2/libxml/threads.h +84 -0
  228. data/vendor/local/include/libxml2/libxml/tree.h +1310 -0
  229. data/vendor/local/include/libxml2/libxml/uri.h +94 -0
  230. data/vendor/local/include/libxml2/libxml/valid.h +458 -0
  231. data/vendor/local/include/libxml2/libxml/xinclude.h +129 -0
  232. data/vendor/local/include/libxml2/libxml/xlink.h +189 -0
  233. data/vendor/local/include/libxml2/libxml/xmlIO.h +366 -0
  234. data/vendor/local/include/libxml2/libxml/xmlautomata.h +146 -0
  235. data/vendor/local/include/libxml2/libxml/xmlerror.h +945 -0
  236. data/vendor/local/include/libxml2/libxml/xmlexports.h +162 -0
  237. data/vendor/local/include/libxml2/libxml/xmlmemory.h +224 -0
  238. data/vendor/local/include/libxml2/libxml/xmlmodule.h +57 -0
  239. data/vendor/local/include/libxml2/libxml/xmlreader.h +428 -0
  240. data/vendor/local/include/libxml2/libxml/xmlregexp.h +222 -0
  241. data/vendor/local/include/libxml2/libxml/xmlsave.h +88 -0
  242. data/vendor/local/include/libxml2/libxml/xmlschemas.h +246 -0
  243. data/vendor/local/include/libxml2/libxml/xmlschemastypes.h +151 -0
  244. data/vendor/local/include/libxml2/libxml/xmlstring.h +140 -0
  245. data/vendor/local/include/libxml2/libxml/xmlunicode.h +202 -0
  246. data/vendor/local/include/libxml2/libxml/xmlversion.h +489 -0
  247. data/vendor/local/include/libxml2/libxml/xmlwriter.h +488 -0
  248. data/vendor/local/include/libxml2/libxml/xpath.h +557 -0
  249. data/vendor/local/include/libxml2/libxml/xpathInternals.h +632 -0
  250. data/vendor/local/include/libxml2/libxml/xpointer.h +114 -0
  251. data/vendor/local/include/pixman-1/pixman-version.h +50 -0
  252. data/vendor/local/include/pixman-1/pixman.h +1111 -0
  253. data/vendor/local/include/png.h +3276 -0
  254. data/vendor/local/include/pngconf.h +644 -0
  255. data/vendor/local/include/pnglibconf.h +208 -0
  256. data/vendor/local/include/zconf.h +511 -0
  257. data/vendor/local/include/zlib.h +1768 -0
  258. data/vendor/local/lib/cmake/libxml2/libxml2-config.cmake +50 -0
  259. data/vendor/local/lib/fontconfig.def +207 -0
  260. data/vendor/local/lib/libcairo-gobject.a +0 -0
  261. data/vendor/local/lib/libcairo-gobject.dll.a +0 -0
  262. data/vendor/local/lib/libcairo-gobject.la +41 -0
  263. data/vendor/local/lib/libcairo-script-interpreter.a +0 -0
  264. data/vendor/local/lib/libcairo-script-interpreter.dll.a +0 -0
  265. data/vendor/local/lib/libcairo-script-interpreter.la +41 -0
  266. data/vendor/local/lib/libcairo.a +0 -0
  267. data/vendor/local/lib/libcairo.dll.a +0 -0
  268. data/vendor/local/lib/libcairo.la +41 -0
  269. data/vendor/local/lib/libfontconfig.dll.a +0 -0
  270. data/vendor/local/lib/libfontconfig.la +41 -0
  271. data/vendor/local/lib/libfreetype.a +0 -0
  272. data/vendor/local/lib/libfreetype.dll.a +0 -0
  273. data/vendor/local/lib/libfreetype.la +41 -0
  274. data/vendor/local/lib/libpixman-1.a +0 -0
  275. data/vendor/local/lib/libpixman-1.dll.a +0 -0
  276. data/vendor/local/lib/libpixman-1.la +41 -0
  277. data/vendor/local/lib/libpng.a +0 -0
  278. data/vendor/local/lib/libpng.dll.a +0 -0
  279. data/vendor/local/lib/libpng.la +41 -0
  280. data/vendor/local/lib/libpng16.a +0 -0
  281. data/vendor/local/lib/libpng16.dll.a +0 -0
  282. data/vendor/local/lib/libpng16.la +41 -0
  283. data/vendor/local/lib/libxml2.a +0 -0
  284. data/vendor/local/lib/libxml2.dll.a +0 -0
  285. data/vendor/local/lib/libxml2.la +41 -0
  286. data/vendor/local/lib/libz.a +0 -0
  287. data/vendor/local/lib/libz.dll.a +0 -0
  288. data/vendor/local/lib/pkgconfig/cairo-fc.pc +12 -0
  289. data/vendor/local/lib/pkgconfig/cairo-ft.pc +12 -0
  290. data/vendor/local/lib/pkgconfig/cairo-gobject.pc +12 -0
  291. data/vendor/local/lib/pkgconfig/cairo-pdf.pc +12 -0
  292. data/vendor/local/lib/pkgconfig/cairo-png.pc +12 -0
  293. data/vendor/local/lib/pkgconfig/cairo-ps.pc +12 -0
  294. data/vendor/local/lib/pkgconfig/cairo-script.pc +12 -0
  295. data/vendor/local/lib/pkgconfig/cairo-svg.pc +12 -0
  296. data/vendor/local/lib/pkgconfig/cairo-win32-font.pc +12 -0
  297. data/vendor/local/lib/pkgconfig/cairo-win32.pc +12 -0
  298. data/vendor/local/lib/pkgconfig/cairo.pc +13 -0
  299. data/vendor/local/lib/pkgconfig/fontconfig.pc +18 -0
  300. data/vendor/local/lib/pkgconfig/freetype2.pc +14 -0
  301. data/vendor/local/lib/pkgconfig/libpng.pc +11 -0
  302. data/vendor/local/lib/pkgconfig/libpng16.pc +11 -0
  303. data/vendor/local/lib/pkgconfig/libxml-2.0.pc +13 -0
  304. data/vendor/local/lib/pkgconfig/pixman-1.pc +11 -0
  305. data/vendor/local/lib/pkgconfig/zlib.pc +13 -0
  306. data/vendor/local/lib/xml2Conf.sh +8 -0
  307. data/vendor/local/share/aclocal/freetype2.m4 +194 -0
  308. data/vendor/local/share/aclocal/libxml.m4 +188 -0
  309. data/vendor/local/share/doc/libxml2-2.9.2/Copyright +23 -0
  310. data/vendor/local/share/doc/libxml2-2.9.2/examples/testHTML.c +880 -0
  311. data/vendor/local/share/doc/libxml2-2.9.2/examples/testSAX.c +1198 -0
  312. data/vendor/local/share/doc/libxml2-2.9.2/examples/testXPath.c +229 -0
  313. data/vendor/local/share/doc/libxml2-2.9.2/examples/xmllint.c +3801 -0
  314. data/vendor/local/share/doc/libxml2-2.9.2/html/DOM.gif +0 -0
  315. data/vendor/local/share/doc/libxml2-2.9.2/html/FAQ.html +299 -0
  316. data/vendor/local/share/doc/libxml2-2.9.2/html/Libxml2-Logo-180x168.gif +0 -0
  317. data/vendor/local/share/doc/libxml2-2.9.2/html/Libxml2-Logo-90x34.gif +0 -0
  318. data/vendor/local/share/doc/libxml2-2.9.2/html/encoding.html +217 -0
  319. data/vendor/local/share/doc/libxml2-2.9.2/html/examples.xml +751 -0
  320. data/vendor/local/share/doc/libxml2-2.9.2/html/examples.xsl +174 -0
  321. data/vendor/local/share/doc/libxml2-2.9.2/html/html/book1.html +13 -0
  322. data/vendor/local/share/doc/libxml2-2.9.2/html/html/home.png +0 -0
  323. data/vendor/local/share/doc/libxml2-2.9.2/html/html/index.html +13 -0
  324. data/vendor/local/share/doc/libxml2-2.9.2/html/html/left.png +0 -0
  325. data/vendor/local/share/doc/libxml2-2.9.2/html/html/libxml-DOCBparser.html +51 -0
  326. data/vendor/local/share/doc/libxml2-2.9.2/html/html/libxml-HTMLparser.html +184 -0
  327. data/vendor/local/share/doc/libxml2-2.9.2/html/html/libxml-HTMLtree.html +73 -0
  328. data/vendor/local/share/doc/libxml2-2.9.2/html/html/libxml-SAX.html +125 -0
  329. data/vendor/local/share/doc/libxml2-2.9.2/html/html/libxml-SAX2.html +128 -0
  330. data/vendor/local/share/doc/libxml2-2.9.2/html/html/libxml-c14n.html +38 -0
  331. data/vendor/local/share/doc/libxml2-2.9.2/html/html/libxml-catalog.html +142 -0
  332. data/vendor/local/share/doc/libxml2-2.9.2/html/html/libxml-chvalid.html +72 -0
  333. data/vendor/local/share/doc/libxml2-2.9.2/html/html/libxml-debugXML.html +120 -0
  334. data/vendor/local/share/doc/libxml2-2.9.2/html/html/libxml-dict.html +58 -0
  335. data/vendor/local/share/doc/libxml2-2.9.2/html/html/libxml-encoding.html +124 -0
  336. data/vendor/local/share/doc/libxml2-2.9.2/html/html/libxml-entities.html +79 -0
  337. data/vendor/local/share/doc/libxml2-2.9.2/html/html/libxml-globals.html +152 -0
  338. data/vendor/local/share/doc/libxml2-2.9.2/html/html/libxml-hash.html +116 -0
  339. data/vendor/local/share/doc/libxml2-2.9.2/html/html/libxml-lib.html +13 -0
  340. data/vendor/local/share/doc/libxml2-2.9.2/html/html/libxml-list.html +120 -0
  341. data/vendor/local/share/doc/libxml2-2.9.2/html/html/libxml-nanoftp.html +94 -0
  342. data/vendor/local/share/doc/libxml2-2.9.2/html/html/libxml-nanohttp.html +65 -0
  343. data/vendor/local/share/doc/libxml2-2.9.2/html/html/libxml-parser.html +559 -0
  344. data/vendor/local/share/doc/libxml2-2.9.2/html/html/libxml-parserInternals.html +322 -0
  345. data/vendor/local/share/doc/libxml2-2.9.2/html/html/libxml-pattern.html +76 -0
  346. data/vendor/local/share/doc/libxml2-2.9.2/html/html/libxml-relaxng.html +162 -0
  347. data/vendor/local/share/doc/libxml2-2.9.2/html/html/libxml-schemasInternals.html +373 -0
  348. data/vendor/local/share/doc/libxml2-2.9.2/html/html/libxml-schematron.html +81 -0
  349. data/vendor/local/share/doc/libxml2-2.9.2/html/html/libxml-threads.html +72 -0
  350. data/vendor/local/share/doc/libxml2-2.9.2/html/html/libxml-tree.html +990 -0
  351. data/vendor/local/share/doc/libxml2-2.9.2/html/html/libxml-uri.html +73 -0
  352. data/vendor/local/share/doc/libxml2-2.9.2/html/html/libxml-valid.html +289 -0
  353. data/vendor/local/share/doc/libxml2-2.9.2/html/html/libxml-xinclude.html +59 -0
  354. data/vendor/local/share/doc/libxml2-2.9.2/html/html/libxml-xlink.html +82 -0
  355. data/vendor/local/share/doc/libxml2-2.9.2/html/html/libxml-xmlIO.html +212 -0
  356. data/vendor/local/share/doc/libxml2-2.9.2/html/html/libxml-xmlautomata.html +85 -0
  357. data/vendor/local/share/doc/libxml2-2.9.2/html/html/libxml-xmlerror.html +865 -0
  358. data/vendor/local/share/doc/libxml2-2.9.2/html/html/libxml-xmlexports.html +20 -0
  359. data/vendor/local/share/doc/libxml2-2.9.2/html/html/libxml-xmlmemory.html +107 -0
  360. data/vendor/local/share/doc/libxml2-2.9.2/html/html/libxml-xmlmodule.html +38 -0
  361. data/vendor/local/share/doc/libxml2-2.9.2/html/html/libxml-xmlreader.html +330 -0
  362. data/vendor/local/share/doc/libxml2-2.9.2/html/html/libxml-xmlregexp.html +143 -0
  363. data/vendor/local/share/doc/libxml2-2.9.2/html/html/libxml-xmlsave.html +60 -0
  364. data/vendor/local/share/doc/libxml2-2.9.2/html/html/libxml-xmlschemas.html +185 -0
  365. data/vendor/local/share/doc/libxml2-2.9.2/html/html/libxml-xmlschemastypes.html +123 -0
  366. data/vendor/local/share/doc/libxml2-2.9.2/html/html/libxml-xmlstring.html +108 -0
  367. data/vendor/local/share/doc/libxml2-2.9.2/html/html/libxml-xmlunicode.html +512 -0
  368. data/vendor/local/share/doc/libxml2-2.9.2/html/html/libxml-xmlversion.html +63 -0
  369. data/vendor/local/share/doc/libxml2-2.9.2/html/html/libxml-xmlwriter.html +261 -0
  370. data/vendor/local/share/doc/libxml2-2.9.2/html/html/libxml-xpath.html +316 -0
  371. data/vendor/local/share/doc/libxml2-2.9.2/html/html/libxml-xpathInternals.html +394 -0
  372. data/vendor/local/share/doc/libxml2-2.9.2/html/html/libxml-xpointer.html +83 -0
  373. data/vendor/local/share/doc/libxml2-2.9.2/html/html/libxml-xzlib.html +16 -0
  374. data/vendor/local/share/doc/libxml2-2.9.2/html/html/right.png +0 -0
  375. data/vendor/local/share/doc/libxml2-2.9.2/html/html/up.png +0 -0
  376. data/vendor/local/share/doc/libxml2-2.9.2/html/index.html +14 -0
  377. data/vendor/local/share/doc/libxml2-2.9.2/html/io1.c +166 -0
  378. data/vendor/local/share/doc/libxml2-2.9.2/html/io1.res +5 -0
  379. data/vendor/local/share/doc/libxml2-2.9.2/html/io2.c +58 -0
  380. data/vendor/local/share/doc/libxml2-2.9.2/html/io2.res +2 -0
  381. data/vendor/local/share/doc/libxml2-2.9.2/html/libxml.gif +0 -0
  382. data/vendor/local/share/doc/libxml2-2.9.2/html/parse1.c +56 -0
  383. data/vendor/local/share/doc/libxml2-2.9.2/html/parse2.c +72 -0
  384. data/vendor/local/share/doc/libxml2-2.9.2/html/parse3.c +60 -0
  385. data/vendor/local/share/doc/libxml2-2.9.2/html/parse4.c +143 -0
  386. data/vendor/local/share/doc/libxml2-2.9.2/html/reader1.c +107 -0
  387. data/vendor/local/share/doc/libxml2-2.9.2/html/reader1.res +14 -0
  388. data/vendor/local/share/doc/libxml2-2.9.2/html/reader2.c +122 -0
  389. data/vendor/local/share/doc/libxml2-2.9.2/html/reader3.c +120 -0
  390. data/vendor/local/share/doc/libxml2-2.9.2/html/reader3.res +13 -0
  391. data/vendor/local/share/doc/libxml2-2.9.2/html/reader4.c +122 -0
  392. data/vendor/local/share/doc/libxml2-2.9.2/html/reader4.res +3 -0
  393. data/vendor/local/share/doc/libxml2-2.9.2/html/redhat.gif +0 -0
  394. data/vendor/local/share/doc/libxml2-2.9.2/html/smallfootonly.gif +0 -0
  395. data/vendor/local/share/doc/libxml2-2.9.2/html/structure.gif +0 -0
  396. data/vendor/local/share/doc/libxml2-2.9.2/html/test1.xml +1 -0
  397. data/vendor/local/share/doc/libxml2-2.9.2/html/test2.xml +13 -0
  398. data/vendor/local/share/doc/libxml2-2.9.2/html/test3.xml +39 -0
  399. data/vendor/local/share/doc/libxml2-2.9.2/html/testWriter.c +1198 -0
  400. data/vendor/local/share/doc/libxml2-2.9.2/html/tree1.c +94 -0
  401. data/vendor/local/share/doc/libxml2-2.9.2/html/tree1.res +4 -0
  402. data/vendor/local/share/doc/libxml2-2.9.2/html/tree2.c +118 -0
  403. data/vendor/local/share/doc/libxml2-2.9.2/html/tree2.res +18 -0
  404. data/vendor/local/share/doc/libxml2-2.9.2/html/tst.xml +7 -0
  405. data/vendor/local/share/doc/libxml2-2.9.2/html/tutorial/apa.html +8 -0
  406. data/vendor/local/share/doc/libxml2-2.9.2/html/tutorial/apb.html +14 -0
  407. data/vendor/local/share/doc/libxml2-2.9.2/html/tutorial/apc.html +82 -0
  408. data/vendor/local/share/doc/libxml2-2.9.2/html/tutorial/apd.html +76 -0
  409. data/vendor/local/share/doc/libxml2-2.9.2/html/tutorial/ape.html +78 -0
  410. data/vendor/local/share/doc/libxml2-2.9.2/html/tutorial/apf.html +67 -0
  411. data/vendor/local/share/doc/libxml2-2.9.2/html/tutorial/apg.html +75 -0
  412. data/vendor/local/share/doc/libxml2-2.9.2/html/tutorial/aph.html +76 -0
  413. data/vendor/local/share/doc/libxml2-2.9.2/html/tutorial/api.html +4 -0
  414. data/vendor/local/share/doc/libxml2-2.9.2/html/tutorial/ar01s02.html +14 -0
  415. data/vendor/local/share/doc/libxml2-2.9.2/html/tutorial/ar01s03.html +47 -0
  416. data/vendor/local/share/doc/libxml2-2.9.2/html/tutorial/ar01s04.html +54 -0
  417. data/vendor/local/share/doc/libxml2-2.9.2/html/tutorial/ar01s05.html +55 -0
  418. data/vendor/local/share/doc/libxml2-2.9.2/html/tutorial/ar01s06.html +35 -0
  419. data/vendor/local/share/doc/libxml2-2.9.2/html/tutorial/ar01s07.html +30 -0
  420. data/vendor/local/share/doc/libxml2-2.9.2/html/tutorial/ar01s08.html +38 -0
  421. data/vendor/local/share/doc/libxml2-2.9.2/html/tutorial/ar01s09.html +63 -0
  422. data/vendor/local/share/doc/libxml2-2.9.2/html/tutorial/images/blank.png +0 -0
  423. data/vendor/local/share/doc/libxml2-2.9.2/html/tutorial/images/callouts/1.png +0 -0
  424. data/vendor/local/share/doc/libxml2-2.9.2/html/tutorial/images/callouts/10.png +0 -0
  425. data/vendor/local/share/doc/libxml2-2.9.2/html/tutorial/images/callouts/2.png +0 -0
  426. data/vendor/local/share/doc/libxml2-2.9.2/html/tutorial/images/callouts/3.png +0 -0
  427. data/vendor/local/share/doc/libxml2-2.9.2/html/tutorial/images/callouts/4.png +0 -0
  428. data/vendor/local/share/doc/libxml2-2.9.2/html/tutorial/images/callouts/5.png +0 -0
  429. data/vendor/local/share/doc/libxml2-2.9.2/html/tutorial/images/callouts/6.png +0 -0
  430. data/vendor/local/share/doc/libxml2-2.9.2/html/tutorial/images/callouts/7.png +0 -0
  431. data/vendor/local/share/doc/libxml2-2.9.2/html/tutorial/images/callouts/8.png +0 -0
  432. data/vendor/local/share/doc/libxml2-2.9.2/html/tutorial/images/callouts/9.png +0 -0
  433. data/vendor/local/share/doc/libxml2-2.9.2/html/tutorial/images/caution.png +0 -0
  434. data/vendor/local/share/doc/libxml2-2.9.2/html/tutorial/images/draft.png +0 -0
  435. data/vendor/local/share/doc/libxml2-2.9.2/html/tutorial/images/home.png +0 -0
  436. data/vendor/local/share/doc/libxml2-2.9.2/html/tutorial/images/important.png +0 -0
  437. data/vendor/local/share/doc/libxml2-2.9.2/html/tutorial/images/next.png +0 -0
  438. data/vendor/local/share/doc/libxml2-2.9.2/html/tutorial/images/note.png +0 -0
  439. data/vendor/local/share/doc/libxml2-2.9.2/html/tutorial/images/prev.png +0 -0
  440. data/vendor/local/share/doc/libxml2-2.9.2/html/tutorial/images/tip.png +0 -0
  441. data/vendor/local/share/doc/libxml2-2.9.2/html/tutorial/images/toc-blank.png +0 -0
  442. data/vendor/local/share/doc/libxml2-2.9.2/html/tutorial/images/toc-minus.png +0 -0
  443. data/vendor/local/share/doc/libxml2-2.9.2/html/tutorial/images/toc-plus.png +0 -0
  444. data/vendor/local/share/doc/libxml2-2.9.2/html/tutorial/images/up.png +0 -0
  445. data/vendor/local/share/doc/libxml2-2.9.2/html/tutorial/images/warning.png +0 -0
  446. data/vendor/local/share/doc/libxml2-2.9.2/html/tutorial/includeaddattribute.c +64 -0
  447. data/vendor/local/share/doc/libxml2-2.9.2/html/tutorial/includeaddkeyword.c +75 -0
  448. data/vendor/local/share/doc/libxml2-2.9.2/html/tutorial/includeconvert.c +73 -0
  449. data/vendor/local/share/doc/libxml2-2.9.2/html/tutorial/includegetattribute.c +72 -0
  450. data/vendor/local/share/doc/libxml2-2.9.2/html/tutorial/includekeyword.c +79 -0
  451. data/vendor/local/share/doc/libxml2-2.9.2/html/tutorial/includexpath.c +74 -0
  452. data/vendor/local/share/doc/libxml2-2.9.2/html/tutorial/index.html +14 -0
  453. data/vendor/local/share/doc/libxml2-2.9.2/html/tutorial/ix01.html +1 -0
  454. data/vendor/local/share/doc/libxml2-2.9.2/html/tutorial/xmltutorial.pdf +1336 -0
  455. data/vendor/local/share/doc/libxml2-2.9.2/html/w3c.png +0 -0
  456. data/vendor/local/share/doc/libxml2-2.9.2/html/writer.xml +2 -0
  457. data/vendor/local/share/doc/libxml2-2.9.2/html/xml.html +5995 -0
  458. data/vendor/local/share/doc/libxml2-2.9.2/html/xpath1.c +250 -0
  459. data/vendor/local/share/doc/libxml2-2.9.2/html/xpath1.res +5 -0
  460. data/vendor/local/share/doc/libxml2-2.9.2/html/xpath2.c +190 -0
  461. data/vendor/local/share/doc/libxml2-2.9.2/html/xpath2.res +30 -0
  462. data/vendor/local/share/fontconfig/conf.avail/10-autohint.conf +14 -0
  463. data/vendor/local/share/fontconfig/conf.avail/10-no-sub-pixel.conf +14 -0
  464. data/vendor/local/share/fontconfig/conf.avail/10-scale-bitmap-fonts.conf +81 -0
  465. data/vendor/local/share/fontconfig/conf.avail/10-sub-pixel-bgr.conf +14 -0
  466. data/vendor/local/share/fontconfig/conf.avail/10-sub-pixel-rgb.conf +14 -0
  467. data/vendor/local/share/fontconfig/conf.avail/10-sub-pixel-vbgr.conf +14 -0
  468. data/vendor/local/share/fontconfig/conf.avail/10-sub-pixel-vrgb.conf +14 -0
  469. data/vendor/local/share/fontconfig/conf.avail/10-unhinted.conf +14 -0
  470. data/vendor/local/share/fontconfig/conf.avail/11-lcdfilter-default.conf +16 -0
  471. data/vendor/local/share/fontconfig/conf.avail/11-lcdfilter-legacy.conf +16 -0
  472. data/vendor/local/share/fontconfig/conf.avail/11-lcdfilter-light.conf +16 -0
  473. data/vendor/local/share/fontconfig/conf.avail/20-unhint-small-vera.conf +48 -0
  474. data/vendor/local/share/fontconfig/conf.avail/25-unhint-nonlatin.conf +128 -0
  475. data/vendor/local/share/fontconfig/conf.avail/30-metric-aliases.conf +546 -0
  476. data/vendor/local/share/fontconfig/conf.avail/30-urw-aliases.conf +24 -0
  477. data/vendor/local/share/fontconfig/conf.avail/40-nonlatin.conf +231 -0
  478. data/vendor/local/share/fontconfig/conf.avail/45-latin.conf +189 -0
  479. data/vendor/local/share/fontconfig/conf.avail/49-sansserif.conf +21 -0
  480. data/vendor/local/share/fontconfig/conf.avail/50-user.conf +15 -0
  481. data/vendor/local/share/fontconfig/conf.avail/51-local.conf +6 -0
  482. data/vendor/local/share/fontconfig/conf.avail/60-latin.conf +70 -0
  483. data/vendor/local/share/fontconfig/conf.avail/65-fonts-persian.conf +419 -0
  484. data/vendor/local/share/fontconfig/conf.avail/65-khmer.conf +16 -0
  485. data/vendor/local/share/fontconfig/conf.avail/65-nonlatin.conf +196 -0
  486. data/vendor/local/share/fontconfig/conf.avail/69-unifont.conf +28 -0
  487. data/vendor/local/share/fontconfig/conf.avail/70-no-bitmaps.conf +12 -0
  488. data/vendor/local/share/fontconfig/conf.avail/70-yes-bitmaps.conf +12 -0
  489. data/vendor/local/share/fontconfig/conf.avail/80-delicious.conf +19 -0
  490. data/vendor/local/share/fontconfig/conf.avail/90-synthetic.conf +64 -0
  491. data/vendor/local/share/gtk-doc/html/cairo/bindings-errors.html +122 -0
  492. data/vendor/local/share/gtk-doc/html/cairo/bindings-fonts.html +53 -0
  493. data/vendor/local/share/gtk-doc/html/cairo/bindings-memory.html +123 -0
  494. data/vendor/local/share/gtk-doc/html/cairo/bindings-overloading.html +121 -0
  495. data/vendor/local/share/gtk-doc/html/cairo/bindings-path.html +117 -0
  496. data/vendor/local/share/gtk-doc/html/cairo/bindings-patterns.html +75 -0
  497. data/vendor/local/share/gtk-doc/html/cairo/bindings-return-values.html +120 -0
  498. data/vendor/local/share/gtk-doc/html/cairo/bindings-streams.html +92 -0
  499. data/vendor/local/share/gtk-doc/html/cairo/bindings-surfaces.html +93 -0
  500. data/vendor/local/share/gtk-doc/html/cairo/cairo-Error-handling.html +397 -0
  501. data/vendor/local/share/gtk-doc/html/cairo/cairo-FreeType-Fonts.html +428 -0
  502. data/vendor/local/share/gtk-doc/html/cairo/cairo-Image-Surfaces.html +452 -0
  503. data/vendor/local/share/gtk-doc/html/cairo/cairo-PDF-Surfaces.html +342 -0
  504. data/vendor/local/share/gtk-doc/html/cairo/cairo-PNG-Support.html +315 -0
  505. data/vendor/local/share/gtk-doc/html/cairo/cairo-Paths.html +1194 -0
  506. data/vendor/local/share/gtk-doc/html/cairo/cairo-PostScript-Surfaces.html +577 -0
  507. data/vendor/local/share/gtk-doc/html/cairo/cairo-Quartz-(CGFont)-Fonts.html +129 -0
  508. data/vendor/local/share/gtk-doc/html/cairo/cairo-Quartz-Surfaces.html +197 -0
  509. data/vendor/local/share/gtk-doc/html/cairo/cairo-Raster-Sources.html +600 -0
  510. data/vendor/local/share/gtk-doc/html/cairo/cairo-Recording-Surfaces.html +226 -0
  511. data/vendor/local/share/gtk-doc/html/cairo/cairo-Regions.html +810 -0
  512. data/vendor/local/share/gtk-doc/html/cairo/cairo-SVG-Surfaces.html +302 -0
  513. data/vendor/local/share/gtk-doc/html/cairo/cairo-Script-Surfaces.html +360 -0
  514. data/vendor/local/share/gtk-doc/html/cairo/cairo-Transformations.html +394 -0
  515. data/vendor/local/share/gtk-doc/html/cairo/cairo-Types.html +156 -0
  516. data/vendor/local/share/gtk-doc/html/cairo/cairo-User-Fonts.html +677 -0
  517. data/vendor/local/share/gtk-doc/html/cairo/cairo-Version-Information.html +342 -0
  518. data/vendor/local/share/gtk-doc/html/cairo/cairo-Win32-Fonts.html +326 -0
  519. data/vendor/local/share/gtk-doc/html/cairo/cairo-Win32-Surfaces.html +280 -0
  520. data/vendor/local/share/gtk-doc/html/cairo/cairo-XCB-Surfaces.html +527 -0
  521. data/vendor/local/share/gtk-doc/html/cairo/cairo-XLib-Surfaces.html +535 -0
  522. data/vendor/local/share/gtk-doc/html/cairo/cairo-XLib-XRender-Backend.html +170 -0
  523. data/vendor/local/share/gtk-doc/html/cairo/cairo-cairo-device-t.html +636 -0
  524. data/vendor/local/share/gtk-doc/html/cairo/cairo-cairo-font-face-t.html +380 -0
  525. data/vendor/local/share/gtk-doc/html/cairo/cairo-cairo-font-options-t.html +653 -0
  526. data/vendor/local/share/gtk-doc/html/cairo/cairo-cairo-matrix-t.html +559 -0
  527. data/vendor/local/share/gtk-doc/html/cairo/cairo-cairo-pattern-t.html +2231 -0
  528. data/vendor/local/share/gtk-doc/html/cairo/cairo-cairo-scaled-font-t.html +956 -0
  529. data/vendor/local/share/gtk-doc/html/cairo/cairo-cairo-surface-t.html +1637 -0
  530. data/vendor/local/share/gtk-doc/html/cairo/cairo-cairo-t.html +2695 -0
  531. data/vendor/local/share/gtk-doc/html/cairo/cairo-drawing.html +53 -0
  532. data/vendor/local/share/gtk-doc/html/cairo/cairo-fonts.html +53 -0
  533. data/vendor/local/share/gtk-doc/html/cairo/cairo-support.html +44 -0
  534. data/vendor/local/share/gtk-doc/html/cairo/cairo-surfaces.html +74 -0
  535. data/vendor/local/share/gtk-doc/html/cairo/cairo-text.html +1138 -0
  536. data/vendor/local/share/gtk-doc/html/cairo/cairo.devhelp2 +747 -0
  537. data/vendor/local/share/gtk-doc/html/cairo/home.png +0 -0
  538. data/vendor/local/share/gtk-doc/html/cairo/index-1.10.html +177 -0
  539. data/vendor/local/share/gtk-doc/html/cairo/index-1.12.html +193 -0
  540. data/vendor/local/share/gtk-doc/html/cairo/index-1.2.html +179 -0
  541. data/vendor/local/share/gtk-doc/html/cairo/index-1.4.html +123 -0
  542. data/vendor/local/share/gtk-doc/html/cairo/index-1.6.html +107 -0
  543. data/vendor/local/share/gtk-doc/html/cairo/index-1.8.html +128 -0
  544. data/vendor/local/share/gtk-doc/html/cairo/index-all.html +1122 -0
  545. data/vendor/local/share/gtk-doc/html/cairo/index.html +157 -0
  546. data/vendor/local/share/gtk-doc/html/cairo/index.sgml +833 -0
  547. data/vendor/local/share/gtk-doc/html/cairo/language-bindings.html +73 -0
  548. data/vendor/local/share/gtk-doc/html/cairo/left.png +0 -0
  549. data/vendor/local/share/gtk-doc/html/cairo/right.png +0 -0
  550. data/vendor/local/share/gtk-doc/html/cairo/style.css +266 -0
  551. data/vendor/local/share/gtk-doc/html/cairo/up.png +0 -0
  552. data/vendor/local/share/gtk-doc/html/libxml2/general.html +38 -0
  553. data/vendor/local/share/gtk-doc/html/libxml2/home.png +0 -0
  554. data/vendor/local/share/gtk-doc/html/libxml2/index.html +67 -0
  555. data/vendor/local/share/gtk-doc/html/libxml2/left.png +0 -0
  556. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-DOCBparser.html +138 -0
  557. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-HTMLparser.html +373 -0
  558. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-HTMLtree.html +172 -0
  559. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-SAX.html +243 -0
  560. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-SAX2.html +247 -0
  561. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-c14n.html +91 -0
  562. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-catalog.html +278 -0
  563. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-chvalid.html +241 -0
  564. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-debugXML.html +225 -0
  565. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-dict.html +134 -0
  566. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-encoding.html +218 -0
  567. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-entities.html +166 -0
  568. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-globals.html +383 -0
  569. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-hash.html +214 -0
  570. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-list.html +226 -0
  571. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-nanoftp.html +187 -0
  572. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-nanohttp.html +142 -0
  573. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-parser.html +766 -0
  574. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-parserInternals.html +688 -0
  575. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-pattern.html +166 -0
  576. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-relaxng.html +278 -0
  577. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-schemasInternals.html +860 -0
  578. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-schematron.html +166 -0
  579. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-threads.html +161 -0
  580. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-tree.html +1597 -0
  581. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-uri.html +154 -0
  582. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-valid.html +528 -0
  583. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-xinclude.html +169 -0
  584. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-xlink.html +160 -0
  585. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-xmlIO.html +347 -0
  586. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-xmlautomata.html +176 -0
  587. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-xmlerror.html +953 -0
  588. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-xmlexports.html +87 -0
  589. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-xmlmemory.html +186 -0
  590. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-xmlmodule.html +97 -0
  591. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-xmlreader.html +565 -0
  592. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-xmlregexp.html +280 -0
  593. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-xmlsave.html +133 -0
  594. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-xmlschemas.html +314 -0
  595. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-xmlschemastypes.html +237 -0
  596. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-xmlstring.html +217 -0
  597. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-xmlunicode.html +887 -0
  598. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-xmlversion.html +292 -0
  599. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-xmlwriter.html +479 -0
  600. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-xpath.html +542 -0
  601. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-xpathInternals.html +787 -0
  602. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-xpointer.html +171 -0
  603. data/vendor/local/share/gtk-doc/html/libxml2/libxml2.devhelp +3573 -0
  604. data/vendor/local/share/gtk-doc/html/libxml2/right.png +0 -0
  605. data/vendor/local/share/gtk-doc/html/libxml2/style.css +66 -0
  606. data/vendor/local/share/gtk-doc/html/libxml2/up.png +0 -0
  607. data/vendor/local/share/license/cairo/AUTHORS +115 -0
  608. data/vendor/local/share/license/cairo/COPYING +33 -0
  609. data/vendor/local/share/license/cairo/COPYING-LGPL-2.1 +510 -0
  610. data/vendor/local/share/license/cairo/COPYING-MPL-1.1 +470 -0
  611. data/vendor/local/share/license/cairo/README +204 -0
  612. data/vendor/local/share/license/cairo/README.win32 +66 -0
  613. data/vendor/local/share/license/fontconfig/AUTHORS +3 -0
  614. data/vendor/local/share/license/fontconfig/COPYING +28 -0
  615. data/vendor/local/share/license/fontconfig/README +1484 -0
  616. data/vendor/local/share/license/freetype/README +83 -0
  617. data/vendor/local/share/license/freetype/README.git +50 -0
  618. data/vendor/local/share/license/libpng/README +215 -0
  619. data/vendor/local/share/license/libxml2/AUTHORS +5 -0
  620. data/vendor/local/share/license/libxml2/COPYING +23 -0
  621. data/vendor/local/share/license/libxml2/README +39 -0
  622. data/vendor/local/share/license/libxml2/README.tests +39 -0
  623. data/vendor/local/share/license/pixman/AUTHORS +0 -0
  624. data/vendor/local/share/license/pixman/COPYING +42 -0
  625. data/vendor/local/share/license/pixman/README +116 -0
  626. data/vendor/local/share/license/zlib/README +115 -0
  627. data/vendor/local/share/man/man1/freetype-config.1 +108 -0
  628. data/vendor/local/share/man/man1/xml2-config.1 +30 -0
  629. data/vendor/local/share/man/man1/xmlcatalog.1 +340 -0
  630. data/vendor/local/share/man/man1/xmllint.1 +647 -0
  631. data/vendor/local/share/man/man3/libpng.3 +6217 -0
  632. data/vendor/local/share/man/man3/libpngpf.3 +18 -0
  633. data/vendor/local/share/man/man3/libxml.3 +71 -0
  634. data/vendor/local/share/man/man5/png.5 +74 -0
  635. data/vendor/local/share/xml/fontconfig/fonts.dtd +233 -0
  636. metadata +774 -0
@@ -0,0 +1,1741 @@
1
+ /* -*- c-file-style: "gnu"; indent-tabs-mode: nil -*- */
2
+ /*
3
+ * Ruby Cairo Binding
4
+ *
5
+ * $Author: kou $
6
+ * $Date: 2008-09-26 13:52:08 $
7
+ *
8
+ * Copyright 2005-2014 Kouhei Sutou <kou@cozmixng.org>
9
+ * Copyright 2005 Øyvind Kolås <pippin@freedesktop.org>
10
+ * Copyright 2004-2005 MenTaLguY <mental@rydia.com>
11
+ *
12
+ * This file is made available under the same terms as Ruby
13
+ *
14
+ */
15
+
16
+ #include "rb_cairo.h"
17
+ #include "rb_cairo_private.h"
18
+ #include "rb_cairo_io.h"
19
+
20
+ #ifdef HAVE_RUBY_ST_H
21
+ # include <ruby/st.h>
22
+ #else
23
+ # include <st.h>
24
+ #endif
25
+
26
+ VALUE rb_cCairo_Context;
27
+
28
+ static ID cr_id_surface, cr_id_source;
29
+ static ID cr_id_plus, cr_id_minus, cr_id_multi, cr_id_div;
30
+ static cairo_user_data_key_t cr_object_holder_key;
31
+
32
+ #define _SELF (RVAL2CRCONTEXT(self))
33
+
34
+ static VALUE cr_get_current_point (VALUE self);
35
+
36
+ static inline void
37
+ cr_check_status (cairo_t *context)
38
+ {
39
+ rb_cairo_check_status (cairo_status (context));
40
+ }
41
+
42
+ /* Functions for manipulating state objects */
43
+ cairo_t *
44
+ rb_cairo_context_from_ruby_object (VALUE obj)
45
+ {
46
+ cairo_t *context;
47
+ if (!rb_cairo__is_kind_of (obj, rb_cCairo_Context))
48
+ {
49
+ rb_raise (rb_eTypeError, "not a cairo graphics context");
50
+ }
51
+ Data_Get_Struct (obj, cairo_t, context);
52
+ if (!context)
53
+ rb_cairo_check_status (CAIRO_STATUS_NULL_POINTER);
54
+ return context;
55
+ }
56
+
57
+ static rb_cairo__object_holder_t *
58
+ cr_object_holder_new (VALUE object)
59
+ {
60
+ return rb_cairo__object_holder_new (rb_cCairo_Context, object);
61
+ }
62
+
63
+ static void
64
+ cr_object_holder_free (void *ptr)
65
+ {
66
+ rb_cairo__object_holder_free (rb_cCairo_Context, ptr);
67
+ }
68
+
69
+ static void
70
+ cr_context_free (void *ptr)
71
+ {
72
+ if (ptr)
73
+ {
74
+ cairo_destroy ((cairo_t *) ptr);
75
+ }
76
+ }
77
+
78
+ VALUE
79
+ rb_cairo_context_to_ruby_object (cairo_t *cr)
80
+ {
81
+ if (cr)
82
+ {
83
+ cairo_reference (cr);
84
+ return Data_Wrap_Struct (rb_cCairo_Context, NULL, cr_context_free, cr);
85
+ }
86
+ else
87
+ {
88
+ return Qnil;
89
+ }
90
+ }
91
+
92
+ static VALUE
93
+ cr_allocate (VALUE klass)
94
+ {
95
+ return Data_Wrap_Struct (klass, NULL, cr_context_free, NULL);
96
+ }
97
+
98
+ static void
99
+ cr_set_user_data (cairo_t *cr, const cairo_user_data_key_t *key,
100
+ void *user_data, cairo_destroy_func_t destroy)
101
+ {
102
+ #if CAIRO_CHECK_VERSION(1, 4, 0)
103
+ cairo_set_user_data (cr, key, user_data, destroy);
104
+ #else
105
+ cairo_surface_t *surface;
106
+ surface = cairo_get_target (cr);
107
+ cairo_surface_set_user_data (surface, key, user_data, destroy);
108
+ #endif
109
+ }
110
+
111
+ static VALUE
112
+ cr_destroy (VALUE self)
113
+ {
114
+ cairo_t *cr;
115
+
116
+ cr = _SELF;
117
+ cr_set_user_data (cr, &cr_object_holder_key, NULL, NULL);
118
+ cairo_destroy (cr);
119
+
120
+ DATA_PTR (self) = NULL;
121
+ return Qnil;
122
+ }
123
+
124
+ static VALUE
125
+ cr_destroy_with_destroy_check (VALUE self)
126
+ {
127
+ if (DATA_PTR (self))
128
+ cr_destroy (self);
129
+ return Qnil;
130
+ }
131
+
132
+ static VALUE
133
+ cr_s_wrap (VALUE self, VALUE pointer)
134
+ {
135
+ VALUE result;
136
+ VALUE rb_cr;
137
+ cairo_t *cr;
138
+
139
+ if (NIL_P (rb_cairo__cFFIPointer))
140
+ {
141
+ rb_raise (rb_eNotImpError,
142
+ "%s: FFI::Pointer is required",
143
+ rb_id2name (rb_frame_this_func ()));
144
+ }
145
+
146
+ if (!RTEST (rb_obj_is_kind_of (pointer, rb_cairo__cFFIPointer)))
147
+ {
148
+ rb_raise (rb_eArgError,
149
+ "must be FFI::Pointer: %s",
150
+ rb_cairo__inspect (pointer));
151
+ }
152
+
153
+ {
154
+ VALUE rb_cr_address;
155
+ rb_cr_address = rb_funcall (pointer, rb_intern ("address"), 0);
156
+ cr = NUM2PTR (rb_cr_address);
157
+ cr_check_status (cr);
158
+ }
159
+
160
+ rb_cr = rb_obj_alloc (self);
161
+ cairo_reference (cr);
162
+ DATA_PTR (rb_cr) = cr;
163
+ rb_ivar_set (rb_cr, cr_id_surface, Qnil);
164
+
165
+ if (rb_block_given_p ())
166
+ {
167
+ result = rb_ensure (rb_yield, rb_cr, cr_destroy_with_destroy_check, rb_cr);
168
+ }
169
+ else
170
+ {
171
+ result = rb_cr;
172
+ }
173
+
174
+ return result;
175
+ }
176
+
177
+ static VALUE
178
+ cr_initialize (VALUE self, VALUE target)
179
+ {
180
+ cairo_t *cr;
181
+ VALUE result = Qnil;
182
+
183
+ cr = cairo_create (RVAL2CRSURFACE (target));
184
+ cr_check_status (cr);
185
+ rb_ivar_set (self, cr_id_surface, target);
186
+ rb_ivar_set (self, cr_id_source, Qnil);
187
+ if (rb_ivar_defined (target, rb_cairo__io_id_output))
188
+ cr_set_user_data (cr,
189
+ &cr_object_holder_key,
190
+ cr_object_holder_new (self),
191
+ cr_object_holder_free);
192
+ DATA_PTR (self) = cr;
193
+ if (rb_block_given_p ())
194
+ result = rb_ensure (rb_yield, self, cr_destroy_with_destroy_check, self);
195
+ return result;
196
+ }
197
+
198
+ static VALUE
199
+ cr_to_ptr (VALUE self)
200
+ {
201
+ if (NIL_P (rb_cairo__cFFIPointer))
202
+ return Qnil;
203
+
204
+ return rb_funcall (rb_cairo__cFFIPointer, rb_intern ("new"),
205
+ 1, PTR2NUM (_SELF));
206
+ }
207
+
208
+
209
+ static VALUE
210
+ cr_restore (VALUE self)
211
+ {
212
+ cairo_restore (_SELF);
213
+ cr_check_status (_SELF);
214
+ return Qnil;
215
+ }
216
+
217
+ static VALUE
218
+ cr_save (VALUE self)
219
+ {
220
+ VALUE result = Qnil;
221
+ cairo_save (_SELF);
222
+ cr_check_status (_SELF);
223
+ if (rb_block_given_p ())
224
+ {
225
+ result = rb_ensure (rb_yield, self, cr_restore, self);
226
+ }
227
+ return result;
228
+ }
229
+
230
+ static VALUE
231
+ cr_pop_group (VALUE self)
232
+ {
233
+ VALUE rb_pattern;
234
+ cairo_pattern_t *pattern;
235
+
236
+ pattern = cairo_pop_group (_SELF);
237
+ cr_check_status (_SELF);
238
+ rb_pattern = CRPATTERN2RVAL (pattern);
239
+ cairo_pattern_destroy (pattern);
240
+ return rb_pattern;
241
+ }
242
+
243
+ static VALUE
244
+ cr_pop_group_to_source (VALUE self)
245
+ {
246
+ cairo_pop_group_to_source (_SELF);
247
+ cr_check_status (_SELF);
248
+ return Qnil;
249
+ }
250
+
251
+ static VALUE
252
+ cr_pop_group_generic (int argc, VALUE *argv, VALUE self)
253
+ {
254
+ VALUE to_source;
255
+ rb_scan_args (argc, argv, "01", &to_source);
256
+ if (RVAL2CBOOL (to_source))
257
+ return cr_pop_group_to_source (self);
258
+ else
259
+ return cr_pop_group (self);
260
+ }
261
+
262
+ static VALUE
263
+ cr_push_group (int argc, VALUE *argv, VALUE self)
264
+ {
265
+ VALUE result = Qnil;
266
+ VALUE content, pop_to_source;
267
+ rb_scan_args (argc, argv, "02", &content, &pop_to_source);
268
+
269
+ if (NIL_P(content))
270
+ cairo_push_group (_SELF);
271
+ else
272
+ cairo_push_group_with_content (_SELF, RVAL2CRCONTENT(content));
273
+ cr_check_status (_SELF);
274
+
275
+ if (rb_block_given_p ())
276
+ {
277
+ int state = 0;
278
+
279
+ if (NIL_P (pop_to_source))
280
+ pop_to_source = Qtrue;
281
+
282
+ result = rb_protect (rb_yield, self, &state);
283
+ if (cairo_status(_SELF) == CAIRO_STATUS_SUCCESS)
284
+ {
285
+ if (RVAL2CBOOL (pop_to_source))
286
+ cr_pop_group_to_source (self);
287
+ else
288
+ result = cr_pop_group (self);
289
+ }
290
+
291
+ if (state)
292
+ rb_jump_tag (state);
293
+ }
294
+
295
+ return result;
296
+ }
297
+
298
+
299
+ /* Modify state */
300
+ static VALUE
301
+ cr_set_operator (VALUE self, VALUE operator)
302
+ {
303
+ cairo_set_operator (_SELF, RVAL2CROPERATOR (operator));
304
+ cr_check_status (_SELF);
305
+ return self;
306
+ }
307
+
308
+ static VALUE
309
+ cr_set_source_rgb (int argc, VALUE *argv, VALUE self)
310
+ {
311
+ VALUE red, green, blue;
312
+ int n;
313
+
314
+ n = rb_scan_args (argc, argv, "12", &red, &green, &blue);
315
+
316
+ if (n == 1 && rb_cairo__is_kind_of (red, rb_cArray))
317
+ {
318
+ VALUE ary = red;
319
+ n = RARRAY_LEN (ary);
320
+ red = rb_ary_entry (ary, 0);
321
+ green = rb_ary_entry (ary, 1);
322
+ blue = rb_ary_entry (ary, 2);
323
+ }
324
+
325
+ if (n == 3)
326
+ {
327
+ cairo_set_source_rgb (_SELF,
328
+ NUM2DBL (red),
329
+ NUM2DBL (green),
330
+ NUM2DBL (blue));
331
+ }
332
+ else
333
+ {
334
+ VALUE inspected_arg = rb_inspect (rb_ary_new4 (argc, argv));
335
+ rb_raise (rb_eArgError,
336
+ "invalid RGB: %s (expect "
337
+ "(red, green, blue) or ([red, green, blue]))",
338
+ StringValuePtr (inspected_arg));
339
+ }
340
+ cr_check_status (_SELF);
341
+ rb_ivar_set (self, cr_id_source, Qnil);
342
+ return self;
343
+ }
344
+
345
+ static VALUE
346
+ cr_set_source_rgba (int argc, VALUE *argv, VALUE self)
347
+ {
348
+ VALUE red, green, blue, alpha;
349
+ int n;
350
+
351
+ n = rb_scan_args (argc, argv, "13", &red, &green, &blue, &alpha);
352
+
353
+ if (n == 1 && rb_cairo__is_kind_of (red, rb_cArray))
354
+ {
355
+ VALUE ary = red;
356
+ n = RARRAY_LEN (ary);
357
+ red = rb_ary_entry (ary, 0);
358
+ green = rb_ary_entry (ary, 1);
359
+ blue = rb_ary_entry (ary, 2);
360
+ alpha = rb_ary_entry (ary, 3);
361
+ }
362
+
363
+ if (n == 3)
364
+ {
365
+ cairo_set_source_rgb (_SELF,
366
+ NUM2DBL (red),
367
+ NUM2DBL (green),
368
+ NUM2DBL (blue));
369
+ }
370
+ else if (n == 4)
371
+ {
372
+ cairo_set_source_rgba (_SELF,
373
+ NUM2DBL (red),
374
+ NUM2DBL (green),
375
+ NUM2DBL (blue),
376
+ NUM2DBL (alpha));
377
+ }
378
+ else
379
+ {
380
+ VALUE inspected_arg = rb_inspect (rb_ary_new4 (argc, argv));
381
+ rb_raise (rb_eArgError,
382
+ "invalid RGB%s: %s (expect "
383
+ "(red, green, blue), (red, green, blue, alpha), "
384
+ "([red, green, blue]) or ([red, green, blue, alpha]))",
385
+ n == 4 ? "A" : "",
386
+ StringValuePtr (inspected_arg));
387
+ }
388
+ cr_check_status (_SELF);
389
+ rb_ivar_set (self, cr_id_source, Qnil);
390
+ return self;
391
+ }
392
+
393
+ static VALUE
394
+ cr_set_source_surface (VALUE self, VALUE surface, VALUE width, VALUE height)
395
+ {
396
+ cairo_set_source_surface (_SELF,
397
+ RVAL2CRSURFACE (surface),
398
+ NUM2DBL (width),
399
+ NUM2DBL (height));
400
+ cr_check_status (_SELF);
401
+ rb_ivar_set (self, cr_id_source, Qnil);
402
+ return self;
403
+ }
404
+
405
+ static VALUE
406
+ cr_set_source (VALUE self, VALUE pattern)
407
+ {
408
+ cairo_set_source (_SELF, RVAL2CRPATTERN (pattern));
409
+ cr_check_status (_SELF);
410
+ rb_ivar_set (self, cr_id_source, pattern);
411
+ return self;
412
+ }
413
+
414
+ static VALUE
415
+ cr_set_source_generic (int argc, VALUE *argv, VALUE self)
416
+ {
417
+ VALUE arg1, arg2, arg3, arg4;
418
+ int n;
419
+
420
+ n = rb_scan_args (argc, argv, "13", &arg1, &arg2, &arg3, &arg4);
421
+
422
+ if (n == 1 && rb_cairo__is_kind_of (arg1, rb_cArray))
423
+ {
424
+ return cr_set_source_rgba (argc, argv, self);
425
+ }
426
+ else if (n == 1 && rb_cairo__is_kind_of (arg1, rb_cCairo_Surface))
427
+ {
428
+ return cr_set_source_surface (self, arg1,
429
+ rb_float_new (0),
430
+ rb_float_new (0));
431
+ }
432
+ else if (n == 1)
433
+ {
434
+ return cr_set_source (self, arg1);
435
+ }
436
+ else if (n == 3 && rb_cairo__is_kind_of (arg1, rb_cCairo_Surface))
437
+ {
438
+ return cr_set_source_surface (self, arg1, arg2, arg3);
439
+ }
440
+ else if (n == 3 || n == 4)
441
+ {
442
+ return cr_set_source_rgba (argc, argv, self);
443
+ }
444
+ else
445
+ {
446
+ rb_raise (rb_eArgError,
447
+ "invalid argument (expect "
448
+ "(red, green, blue), (red, green, blue, alpha), "
449
+ "([red, green, blue]), ([red, green, blue, alpha]), "
450
+ "(surface), (pattern) or (surface, x, y))");
451
+ }
452
+ }
453
+
454
+ static VALUE
455
+ cr_set_tolerance (VALUE self, VALUE tolerance)
456
+ {
457
+ cairo_set_tolerance (_SELF, NUM2DBL (tolerance));
458
+ cr_check_status (_SELF);
459
+ return self;
460
+ }
461
+
462
+ static VALUE
463
+ cr_set_antialias(VALUE self, VALUE antialias)
464
+ {
465
+ cairo_set_antialias(_SELF, RVAL2CRANTIALIAS (antialias));
466
+ cr_check_status(_SELF);
467
+ return self;
468
+ }
469
+
470
+ static VALUE
471
+ cr_set_fill_rule (VALUE self, VALUE rule)
472
+ {
473
+ cairo_set_fill_rule (_SELF, RVAL2CRFILLRULE (rule));
474
+ cr_check_status (_SELF);
475
+ return self;
476
+ }
477
+
478
+ static VALUE
479
+ cr_set_line_width (VALUE self, VALUE width)
480
+ {
481
+ cairo_set_line_width (_SELF, NUM2DBL (width));
482
+ return self;
483
+ }
484
+
485
+ static VALUE
486
+ cr_set_line_cap (VALUE self, VALUE cap)
487
+ {
488
+ cairo_set_line_cap (_SELF, RVAL2CRLINECAP (cap));
489
+ cr_check_status (_SELF);
490
+ return self;
491
+ }
492
+
493
+ static VALUE
494
+ cr_set_line_join (VALUE self, VALUE join)
495
+ {
496
+ cairo_set_line_join (_SELF, RVAL2CRLINEJOIN (join));
497
+ cr_check_status (_SELF);
498
+ return self;
499
+ }
500
+
501
+ static VALUE
502
+ cr_set_dash (int argc, VALUE *argv, VALUE self)
503
+ {
504
+ VALUE dash_array, rb_offset;
505
+ double offset;
506
+ cairo_bool_t is_num;
507
+
508
+ rb_scan_args(argc, argv, "11", &dash_array, &rb_offset);
509
+
510
+ is_num = rb_cairo__is_kind_of (dash_array, rb_cNumeric);
511
+ if (!(NIL_P (dash_array) || is_num))
512
+ {
513
+ Check_Type (dash_array, T_ARRAY);
514
+ }
515
+
516
+ if (NIL_P (rb_offset))
517
+ offset = 0.0;
518
+ else
519
+ offset = NUM2DBL (rb_offset);
520
+
521
+ if (is_num)
522
+ {
523
+ double values[1];
524
+ values[0] = NUM2DBL (dash_array);
525
+ cairo_set_dash (_SELF, values, 1, offset);
526
+ }
527
+ else if (NIL_P (dash_array) || RARRAY_LEN (dash_array) == 0)
528
+ {
529
+ cairo_set_dash (_SELF, NULL, 0, offset);
530
+ }
531
+ else
532
+ {
533
+ int i, length;
534
+ double *values;
535
+ length = RARRAY_LEN (dash_array);
536
+ values = ALLOCA_N (double, length);
537
+ if (!values)
538
+ {
539
+ rb_cairo_check_status (CAIRO_STATUS_NO_MEMORY);
540
+ }
541
+ for (i = 0; i < length; i++)
542
+ {
543
+ values[i] = NUM2DBL (RARRAY_PTR (dash_array)[i]);
544
+ }
545
+ cairo_set_dash (_SELF, values, length, offset);
546
+ }
547
+
548
+ cr_check_status (_SELF);
549
+ return self;
550
+ }
551
+
552
+ static VALUE
553
+ cr_set_miter_limit (VALUE self, VALUE limit)
554
+ {
555
+ cairo_set_miter_limit (_SELF, NUM2DBL (limit));
556
+ cr_check_status (_SELF);
557
+ return self;
558
+ }
559
+
560
+ static VALUE
561
+ cr_translate (VALUE self, VALUE tx, VALUE ty)
562
+ {
563
+ cairo_translate (_SELF, NUM2DBL (tx), NUM2DBL (ty));
564
+ cr_check_status (_SELF);
565
+ return self;
566
+ }
567
+
568
+ static VALUE
569
+ cr_scale (VALUE self, VALUE sx, VALUE sy)
570
+ {
571
+ cairo_scale (_SELF, NUM2DBL (sx), NUM2DBL (sy));
572
+ cr_check_status (_SELF);
573
+ return self;
574
+ }
575
+
576
+ static VALUE
577
+ cr_rotate (VALUE self, VALUE radians)
578
+ {
579
+ cairo_rotate (_SELF, NUM2DBL (radians));
580
+ cr_check_status (_SELF);
581
+ return self;
582
+ }
583
+
584
+ static VALUE
585
+ cr_transform (VALUE self, VALUE matrix)
586
+ {
587
+ cairo_transform (_SELF, RVAL2CRMATRIX (matrix));
588
+ cr_check_status (_SELF);
589
+ return self;
590
+ }
591
+
592
+ static VALUE
593
+ cr_set_matrix (VALUE self, VALUE matrix)
594
+ {
595
+ cairo_set_matrix (_SELF, RVAL2CRMATRIX (matrix));
596
+ cr_check_status (_SELF);
597
+ return self;
598
+ }
599
+
600
+ static VALUE
601
+ cr_identity_matrix (VALUE self)
602
+ {
603
+ cairo_identity_matrix (_SELF);
604
+ cr_check_status (_SELF);
605
+ return self;
606
+ }
607
+
608
+ static VALUE
609
+ cr_user_to_device (VALUE self, VALUE x, VALUE y)
610
+ {
611
+ double pair[2];
612
+ pair[0] = NUM2DBL (x);
613
+ pair[1] = NUM2DBL (y);
614
+ cairo_user_to_device (_SELF, pair, pair + 1);
615
+ cr_check_status (_SELF);
616
+ return rb_cairo__float_array (pair, 2);
617
+ }
618
+
619
+ static VALUE
620
+ cr_user_to_device_distance (VALUE self, VALUE dx, VALUE dy)
621
+ {
622
+ double pair[2];
623
+ pair[0] = NUM2DBL (dx);
624
+ pair[1] = NUM2DBL (dy);
625
+ cairo_user_to_device_distance (_SELF, pair, pair + 1);
626
+ cr_check_status (_SELF);
627
+ return rb_cairo__float_array (pair, 2);
628
+ }
629
+
630
+ static VALUE
631
+ cr_device_to_user (VALUE self, VALUE x, VALUE y)
632
+ {
633
+ double pair[2];
634
+ pair[0] = NUM2DBL (x);
635
+ pair[1] = NUM2DBL (y);
636
+ cairo_device_to_user (_SELF, pair, pair + 1);
637
+ cr_check_status (_SELF);
638
+ return rb_cairo__float_array (pair, 2);
639
+ }
640
+
641
+ static VALUE
642
+ cr_device_to_user_distance (VALUE self, VALUE dx, VALUE dy)
643
+ {
644
+ double pair[2];
645
+ pair[0] = NUM2DBL (dx);
646
+ pair[1] = NUM2DBL (dy);
647
+ cairo_device_to_user_distance (_SELF, pair, pair + 1);
648
+ cr_check_status (_SELF);
649
+ return rb_cairo__float_array (pair, 2);
650
+ }
651
+
652
+
653
+ /* Path creation functions */
654
+ static VALUE
655
+ cr_new_path (VALUE self)
656
+ {
657
+ cairo_new_path (_SELF);
658
+ cr_check_status (_SELF);
659
+ return self;
660
+ }
661
+
662
+ static VALUE
663
+ cr_move_to (VALUE self, VALUE x, VALUE y)
664
+ {
665
+ cairo_move_to (_SELF, NUM2DBL (x), NUM2DBL (y));
666
+ cr_check_status (_SELF);
667
+ return self;
668
+ }
669
+
670
+ static VALUE
671
+ cr_new_sub_path (VALUE self)
672
+ {
673
+ cairo_new_sub_path (_SELF);
674
+ cr_check_status (_SELF);
675
+ return self;
676
+ }
677
+
678
+ static VALUE
679
+ cr_line_to (VALUE self, VALUE x, VALUE y)
680
+ {
681
+ cairo_line_to (_SELF, NUM2DBL (x), NUM2DBL (y));
682
+ cr_check_status (_SELF);
683
+ return self;
684
+ }
685
+
686
+ static VALUE
687
+ cr_curve_to (VALUE self, VALUE x1, VALUE y1,
688
+ VALUE x2, VALUE y2, VALUE x3, VALUE y3)
689
+ {
690
+ cairo_curve_to (_SELF, NUM2DBL (x1), NUM2DBL (y1),
691
+ NUM2DBL (x2), NUM2DBL (y2), NUM2DBL (x3), NUM2DBL (y3));
692
+ cr_check_status (_SELF);
693
+ return self;
694
+ }
695
+
696
+ static VALUE
697
+ cr_quadratic_curve_to (VALUE self, VALUE x1, VALUE y1, VALUE x2, VALUE y2)
698
+ {
699
+ VALUE current_point, x0, y0, cx1, cy1, cx2, cy2;
700
+
701
+ current_point = cr_get_current_point (self);
702
+ x0 = RARRAY_PTR (current_point)[0];
703
+ y0 = RARRAY_PTR (current_point)[1];
704
+
705
+ /* cx1 = x0 + 2 * ((x1 - x0) / 3.0) */
706
+ cx1 = rb_funcall (x0, cr_id_plus, 1,
707
+ rb_funcall (INT2NUM(2), cr_id_multi, 1,
708
+ rb_funcall (rb_funcall (x1, cr_id_minus, 1, x0),
709
+ cr_id_div, 1, rb_float_new (3.0))));
710
+ /* cy1 = y0 + 2 * ((y1 - y0) / 3.0) */
711
+ cy1 = rb_funcall (y0, cr_id_plus, 1,
712
+ rb_funcall (INT2NUM(2), cr_id_multi, 1,
713
+ rb_funcall (rb_funcall (y1, cr_id_minus, 1, y0),
714
+ cr_id_div, 1, rb_float_new (3.0))));
715
+ /* cx2 = cx1 + (x2 - x0) / 3.0 */
716
+ cx2 = rb_funcall (cx1, cr_id_plus, 1,
717
+ rb_funcall (rb_funcall (x2, cr_id_minus, 1, x0),
718
+ cr_id_div, 1, rb_float_new (3.0)));
719
+ /* cy2 = cy1 + (y2 - y0) / 3.0 */
720
+ cy2 = rb_funcall (cy1, cr_id_plus, 1,
721
+ rb_funcall (rb_funcall (y2, cr_id_minus, 1, y0),
722
+ cr_id_div, 1, rb_float_new (3.0)));
723
+ return cr_curve_to (self, cx1, cy1, cx2, cy2, x2, y2);
724
+ }
725
+
726
+ static VALUE
727
+ cr_curve_to_generic (int argc, VALUE *argv, VALUE self)
728
+ {
729
+ VALUE x1, y1, x2, y2, x3, y3;
730
+
731
+ rb_scan_args (argc, argv, "42", &x1, &y1, &x2, &y2, &x3, &y3);
732
+
733
+ if (!(argc == 4 || argc == 6))
734
+ {
735
+ VALUE inspected_arg = rb_inspect (rb_ary_new4 (argc, argv));
736
+ rb_raise (rb_eArgError,
737
+ "invalid argument: %s (expect "
738
+ "(x1, y1, x2, y2) (quadratic) or "
739
+ "(x1, y1, x2, y2, x3, y3) (cubic))",
740
+ StringValuePtr (inspected_arg));
741
+ }
742
+
743
+ if (argc == 4)
744
+ return cr_quadratic_curve_to (self, x1, y1, x2, y2);
745
+ else
746
+ return cr_curve_to (self, x1, y1, x2, y2, x3, y3);
747
+ }
748
+
749
+ static VALUE
750
+ cr_arc (VALUE self, VALUE xc, VALUE yc, VALUE radius,
751
+ VALUE angle1, VALUE angle2)
752
+ {
753
+ cairo_arc (_SELF, NUM2DBL (xc), NUM2DBL (yc), NUM2DBL (radius),
754
+ NUM2DBL (angle1), NUM2DBL (angle2));
755
+ cr_check_status (_SELF);
756
+ return self;
757
+ }
758
+
759
+ static VALUE
760
+ cr_arc_negative (VALUE self, VALUE xc, VALUE yc, VALUE radius,
761
+ VALUE angle1, VALUE angle2)
762
+ {
763
+ cairo_arc_negative (_SELF, NUM2DBL (xc), NUM2DBL (yc), NUM2DBL (radius),
764
+ NUM2DBL (angle1), NUM2DBL (angle2));
765
+ cr_check_status (_SELF);
766
+ return self;
767
+ }
768
+
769
+ static VALUE
770
+ cr_rel_move_to (VALUE self, VALUE x, VALUE y)
771
+ {
772
+ cairo_rel_move_to (_SELF, NUM2DBL (x), NUM2DBL (y));
773
+ cr_check_status (_SELF);
774
+ return self;
775
+ }
776
+
777
+ static VALUE
778
+ cr_rel_line_to (VALUE self, VALUE x, VALUE y)
779
+ {
780
+ cairo_rel_line_to (_SELF, NUM2DBL (x), NUM2DBL (y));
781
+ cr_check_status (_SELF);
782
+ return self;
783
+ }
784
+
785
+ static VALUE
786
+ cr_rel_curve_to (VALUE self, VALUE dx1, VALUE dy1,
787
+ VALUE dx2, VALUE dy2, VALUE dx3, VALUE dy3)
788
+ {
789
+ cairo_rel_curve_to (_SELF, NUM2DBL (dx1), NUM2DBL (dy1),
790
+ NUM2DBL (dx2), NUM2DBL (dy2),
791
+ NUM2DBL (dx3), NUM2DBL (dy3));
792
+ cr_check_status (_SELF);
793
+ return self;
794
+ }
795
+
796
+ static VALUE
797
+ cr_rel_quadratic_curve_to (VALUE self, VALUE dx1, VALUE dy1,
798
+ VALUE dx2, VALUE dy2)
799
+ {
800
+ VALUE current_point, x0, y0;
801
+
802
+ current_point = cr_get_current_point (self);
803
+ x0 = RARRAY_PTR (current_point)[0];
804
+ y0 = RARRAY_PTR (current_point)[1];
805
+ return cr_quadratic_curve_to (self,
806
+ rb_funcall (dx1, cr_id_plus, 1, x0),
807
+ rb_funcall (dy1, cr_id_plus, 1, y0),
808
+ rb_funcall (dx2, cr_id_plus, 1, x0),
809
+ rb_funcall (dy2, cr_id_plus, 1, y0));
810
+ }
811
+
812
+ static VALUE
813
+ cr_rel_curve_to_generic (int argc, VALUE *argv, VALUE self)
814
+ {
815
+ VALUE dx1, dy1, dx2, dy2, dx3, dy3;
816
+
817
+ rb_scan_args (argc, argv, "42", &dx1, &dy1, &dx2, &dy2, &dx3, &dy3);
818
+
819
+ if (!(argc == 4 || argc == 6))
820
+ {
821
+ VALUE inspected_arg = rb_inspect (rb_ary_new4 (argc, argv));
822
+ rb_raise (rb_eArgError,
823
+ "invalid argument: %s (expect "
824
+ "(dx1, dy1, dx2, dy2) (quadratic) or "
825
+ "(dx1, dy1, dx2, dy2, dx3, dy3) (cubic))",
826
+ StringValuePtr (inspected_arg));
827
+ }
828
+
829
+ if (argc == 4)
830
+ return cr_rel_quadratic_curve_to (self, dx1, dy1, dx2, dy2);
831
+ else
832
+ return cr_rel_curve_to (self, dx1, dy1, dx2, dy2, dx3, dy3);
833
+ }
834
+
835
+ static VALUE
836
+ cr_rectangle (VALUE self, VALUE x, VALUE y, VALUE width, VALUE height)
837
+ {
838
+ cairo_rectangle (_SELF, NUM2DBL (x), NUM2DBL (y),
839
+ NUM2DBL (width), NUM2DBL (height));
840
+ cr_check_status (_SELF);
841
+ return self;
842
+ }
843
+
844
+ static VALUE
845
+ cr_close_path (VALUE self)
846
+ {
847
+ cairo_close_path (_SELF);
848
+ cr_check_status (_SELF);
849
+ return self;
850
+ }
851
+
852
+ #if CAIRO_CHECK_VERSION(1, 5, 8)
853
+ static VALUE
854
+ cr_path_extents (VALUE self)
855
+ {
856
+ double x1, y1, x2, y2;
857
+ cairo_path_extents (_SELF, &x1, &y1, &x2, &y2);
858
+ cr_check_status (_SELF);
859
+ return rb_ary_new3 (4,
860
+ rb_float_new(x1), rb_float_new(y1),
861
+ rb_float_new(x2), rb_float_new(y2));
862
+ }
863
+ #endif
864
+
865
+ /* Painting functions */
866
+ static VALUE
867
+ cr_paint (VALUE self)
868
+ {
869
+ cairo_paint (_SELF);
870
+ cr_check_status (_SELF);
871
+ return self;
872
+ }
873
+
874
+ static VALUE
875
+ cr_paint_with_alpha (VALUE self, VALUE alpha)
876
+ {
877
+ cairo_paint_with_alpha (_SELF, NUM2DBL (alpha));
878
+ cr_check_status (_SELF);
879
+ return self;
880
+ }
881
+
882
+ static VALUE
883
+ cr_paint_generic(int argc, VALUE *argv, VALUE self)
884
+ {
885
+ VALUE alpha;
886
+ int n;
887
+
888
+ n = rb_scan_args (argc, argv, "01", &alpha);
889
+
890
+ if (n == 0 || (n == 1 && NIL_P (alpha)))
891
+ {
892
+ return cr_paint (self);
893
+ }
894
+ if (n == 1)
895
+ {
896
+ return cr_paint_with_alpha (self, alpha);
897
+ }
898
+ else
899
+ {
900
+ rb_raise (rb_eArgError,
901
+ "invalid argument (expect () or (alpha))");
902
+ }
903
+ }
904
+
905
+ static VALUE
906
+ cr_mask(VALUE self, VALUE pattern)
907
+ {
908
+ cairo_mask (_SELF, RVAL2CRPATTERN (pattern));
909
+ cr_check_status (_SELF);
910
+ return self;
911
+ }
912
+
913
+ static VALUE
914
+ cr_mask_surface (VALUE self, VALUE surface, VALUE x, VALUE y)
915
+ {
916
+ cairo_mask_surface (_SELF, RVAL2CRSURFACE (surface),
917
+ NUM2DBL (x), NUM2DBL (y));
918
+ cr_check_status (_SELF);
919
+ return self;
920
+ }
921
+
922
+ static VALUE
923
+ cr_mask_generic (int argc, VALUE *argv, VALUE self)
924
+ {
925
+ VALUE arg1, arg2, arg3;
926
+ int n;
927
+
928
+ n = rb_scan_args (argc, argv, "12", &arg1, &arg2, &arg3);
929
+
930
+ if (n == 1)
931
+ {
932
+ return cr_mask (self, arg1);
933
+ }
934
+ else if (n == 3)
935
+ {
936
+ return cr_mask_surface (self, arg1, arg2, arg3);
937
+ }
938
+ else
939
+ {
940
+ rb_raise (rb_eArgError,
941
+ "invalid argument (expect (pattern) or (surface, x, y))");
942
+ }
943
+ }
944
+
945
+ static VALUE
946
+ cr_stroke (int argc, VALUE *argv, VALUE self)
947
+ {
948
+ VALUE preserve;
949
+
950
+ rb_scan_args (argc, argv, "01", &preserve);
951
+
952
+ if (rb_block_given_p ())
953
+ {
954
+ cr_new_path (self);
955
+ rb_yield (self);
956
+ }
957
+
958
+ if (RVAL2CBOOL (preserve))
959
+ cairo_stroke_preserve (_SELF);
960
+ else
961
+ cairo_stroke (_SELF);
962
+
963
+ cr_check_status (_SELF);
964
+ return self;
965
+ }
966
+
967
+ static VALUE
968
+ cr_fill (int argc, VALUE *argv, VALUE self)
969
+ {
970
+ VALUE preserve;
971
+
972
+ rb_scan_args (argc, argv, "01", &preserve);
973
+
974
+ if (rb_block_given_p ())
975
+ {
976
+ cr_new_path (self);
977
+ rb_yield (self);
978
+ }
979
+
980
+ if (RVAL2CBOOL (preserve))
981
+ cairo_fill_preserve (_SELF);
982
+ else
983
+ cairo_fill (_SELF);
984
+
985
+ cr_check_status (_SELF);
986
+ return self;
987
+ }
988
+
989
+
990
+ static VALUE
991
+ cr_copy_page (VALUE self)
992
+ {
993
+ cairo_copy_page (_SELF);
994
+ cr_check_status (_SELF);
995
+ return self;
996
+ }
997
+
998
+ static VALUE
999
+ cr_show_page (VALUE self)
1000
+ {
1001
+ cairo_show_page (_SELF);
1002
+ cr_check_status (_SELF);
1003
+ return self;
1004
+ }
1005
+
1006
+ /* Insideness testing */
1007
+ static VALUE
1008
+ cr_in_stroke (VALUE self, VALUE x, VALUE y)
1009
+ {
1010
+ if (rb_block_given_p ())
1011
+ {
1012
+ cr_new_path (self);
1013
+ rb_yield (self);
1014
+ }
1015
+ return CBOOL2RVAL (cairo_in_stroke (_SELF, NUM2DBL (x), NUM2DBL (y)));
1016
+ }
1017
+
1018
+ static VALUE
1019
+ cr_in_fill (VALUE self, VALUE x, VALUE y)
1020
+ {
1021
+ if (rb_block_given_p ())
1022
+ {
1023
+ cr_new_path (self);
1024
+ rb_yield (self);
1025
+ }
1026
+ return CBOOL2RVAL (cairo_in_fill (_SELF, NUM2DBL (x), NUM2DBL (y)));
1027
+ }
1028
+
1029
+ #if CAIRO_CHECK_VERSION(1, 10, 0)
1030
+ static VALUE
1031
+ cr_in_clip (VALUE self, VALUE x, VALUE y)
1032
+ {
1033
+ if (rb_block_given_p ())
1034
+ {
1035
+ cr_new_path (self);
1036
+ rb_yield (self);
1037
+ }
1038
+ return CBOOL2RVAL (cairo_in_clip (_SELF, NUM2DBL (x), NUM2DBL (y)));
1039
+ }
1040
+ #endif
1041
+
1042
+ /* Rectangular extents */
1043
+ static VALUE
1044
+ cr_stroke_extents (VALUE self)
1045
+ {
1046
+ double extents[4];
1047
+ if (rb_block_given_p ())
1048
+ {
1049
+ cr_new_path (self);
1050
+ rb_yield (self);
1051
+ }
1052
+ cairo_stroke_extents (_SELF, extents, extents + 1, extents + 2, extents + 3);
1053
+ return rb_cairo__float_array (extents, 4);
1054
+ }
1055
+
1056
+ static VALUE
1057
+ cr_fill_extents (VALUE self)
1058
+ {
1059
+ double extents[4];
1060
+ if (rb_block_given_p ())
1061
+ {
1062
+ cr_new_path (self);
1063
+ rb_yield (self);
1064
+ }
1065
+ cairo_fill_extents (_SELF, extents, extents + 1, extents + 2, extents + 3);
1066
+ return rb_cairo__float_array (extents, 4);
1067
+ }
1068
+
1069
+ /* Clipping */
1070
+ static VALUE
1071
+ cr_reset_clip (VALUE self)
1072
+ {
1073
+ cairo_reset_clip (_SELF);
1074
+ cr_check_status (_SELF);
1075
+ return self;
1076
+ }
1077
+
1078
+ static VALUE
1079
+ cr_clip (int argc, VALUE *argv, VALUE self)
1080
+ {
1081
+ VALUE preserve;
1082
+
1083
+ rb_scan_args(argc, argv, "01", &preserve);
1084
+
1085
+ if (rb_block_given_p ())
1086
+ {
1087
+ cr_new_path (self);
1088
+ rb_yield (self);
1089
+ }
1090
+
1091
+ if (RVAL2CBOOL (preserve))
1092
+ cairo_clip_preserve(_SELF);
1093
+ else
1094
+ cairo_clip (_SELF);
1095
+
1096
+ cr_check_status (_SELF);
1097
+ return self;
1098
+ }
1099
+
1100
+ #if CAIRO_CHECK_VERSION(1, 3, 0)
1101
+ static VALUE
1102
+ cr_clip_extents (VALUE self)
1103
+ {
1104
+ double x1, y1, x2, y2;
1105
+ cairo_clip_extents (_SELF, &x1, &y1, &x2, &y2);
1106
+ cr_check_status (_SELF);
1107
+ return rb_ary_new3 (4,
1108
+ rb_float_new (x1), rb_float_new (y1),
1109
+ rb_float_new (x2), rb_float_new (y2));
1110
+ }
1111
+
1112
+ static VALUE
1113
+ cr_clip_rectangle_list (VALUE self)
1114
+ {
1115
+ VALUE rb_rectangles;
1116
+ cairo_rectangle_list_t *rectangles;
1117
+ int i;
1118
+
1119
+ rectangles = cairo_copy_clip_rectangle_list (_SELF);
1120
+ rb_cairo_check_status (rectangles->status);
1121
+
1122
+ rb_rectangles = rb_ary_new2 (rectangles->num_rectangles);
1123
+ for (i = 0; i < rectangles->num_rectangles; i++) {
1124
+ VALUE argv[4];
1125
+ cairo_rectangle_t rectangle = rectangles->rectangles[i];
1126
+
1127
+ argv[0] = rb_float_new (rectangle.x);
1128
+ argv[1] = rb_float_new (rectangle.y);
1129
+ argv[2] = rb_float_new (rectangle.width);
1130
+ argv[3] = rb_float_new (rectangle.height);
1131
+ rb_ary_push (rb_rectangles,
1132
+ rb_class_new_instance (4, argv, rb_cCairo_Rectangle));
1133
+ }
1134
+ cairo_rectangle_list_destroy (rectangles);
1135
+
1136
+ return rb_rectangles;
1137
+ }
1138
+ #endif
1139
+
1140
+ /* Font/Text functions */
1141
+ static VALUE
1142
+ cr_select_font_face (int argc, VALUE *argv, VALUE self)
1143
+ {
1144
+ VALUE rb_family, rb_slant, rb_weight;
1145
+ const char *family;
1146
+ cairo_font_slant_t slant;
1147
+ cairo_font_weight_t weight;
1148
+
1149
+ rb_scan_args(argc, argv, "03", &rb_family, &rb_slant, &rb_weight);
1150
+
1151
+ if (NIL_P (rb_family))
1152
+ {
1153
+ family = "";
1154
+ }
1155
+ else if (rb_cairo__is_kind_of (rb_family, rb_cString))
1156
+ {
1157
+ family = RSTRING_PTR (rb_family);
1158
+ }
1159
+ else if (rb_cairo__is_kind_of (rb_family, rb_cSymbol))
1160
+ {
1161
+ family = rb_id2name (SYM2ID (rb_family));
1162
+ }
1163
+ else
1164
+ {
1165
+ rb_raise (rb_eArgError,
1166
+ "family name should be nil, String or Symbol: %s",
1167
+ rb_cairo__inspect (rb_family));
1168
+ }
1169
+
1170
+ if (NIL_P (rb_slant))
1171
+ slant = CAIRO_FONT_SLANT_NORMAL;
1172
+ else
1173
+ slant = RVAL2CRFONTSLANT (rb_slant);
1174
+
1175
+ if (NIL_P (rb_weight))
1176
+ weight = CAIRO_FONT_WEIGHT_NORMAL;
1177
+ else
1178
+ weight = RVAL2CRFONTWEIGHT (rb_weight);
1179
+
1180
+ cairo_select_font_face (_SELF, family, slant, weight);
1181
+ cr_check_status (_SELF);
1182
+ return self;
1183
+ }
1184
+
1185
+ static VALUE
1186
+ cr_set_font_size (VALUE self, VALUE scale)
1187
+ {
1188
+ cairo_set_font_size (_SELF, NUM2DBL (scale));
1189
+ cr_check_status (_SELF);
1190
+ return self;
1191
+ }
1192
+
1193
+ static VALUE
1194
+ cr_set_font_matrix (VALUE self, VALUE matrix)
1195
+ {
1196
+ cairo_set_font_matrix (_SELF, RVAL2CRMATRIX (matrix));
1197
+ cr_check_status (_SELF);
1198
+ return self;
1199
+ }
1200
+
1201
+ static VALUE
1202
+ cr_get_font_matrix (VALUE self)
1203
+ {
1204
+ cairo_matrix_t matrix;
1205
+ cairo_get_font_matrix (_SELF, &matrix);
1206
+ cr_check_status (_SELF);
1207
+ return CRMATRIX2RVAL (&matrix);
1208
+ }
1209
+
1210
+ static VALUE
1211
+ cr_set_font_options (VALUE self, VALUE options)
1212
+ {
1213
+ cairo_set_font_options (_SELF, RVAL2CRFONTOPTIONS (options));
1214
+ cr_check_status (_SELF);
1215
+ return self;
1216
+ }
1217
+
1218
+ static VALUE
1219
+ cr_get_font_options (VALUE self)
1220
+ {
1221
+ cairo_font_options_t *options = cairo_font_options_create ();
1222
+ rb_cairo_check_status (cairo_font_options_status (options));
1223
+ cairo_get_font_options (_SELF, options);
1224
+ rb_cairo_check_status (cairo_font_options_status (options));
1225
+ return CRFONTOPTIONS2RVAL (options);
1226
+ }
1227
+
1228
+ static VALUE
1229
+ cr_set_scaled_font (VALUE self, VALUE scaled_font)
1230
+ {
1231
+ cairo_set_scaled_font (_SELF, RVAL2CRSCALEDFONT (scaled_font));
1232
+ cr_check_status (_SELF);
1233
+ return self;
1234
+ }
1235
+
1236
+ #if CAIRO_CHECK_VERSION(1, 3, 16)
1237
+ static VALUE
1238
+ cr_get_scaled_font (VALUE self)
1239
+ {
1240
+ return CRSCALEDFONT2RVAL (cairo_get_scaled_font (_SELF));
1241
+ }
1242
+ #endif
1243
+
1244
+ static VALUE
1245
+ cr_show_text (VALUE self, VALUE utf8)
1246
+ {
1247
+ cairo_show_text (_SELF, RVAL2CSTR (utf8));
1248
+ cr_check_status (_SELF);
1249
+ return self;
1250
+ }
1251
+
1252
+ static VALUE
1253
+ cr_show_glyphs (VALUE self, VALUE rb_glyphs)
1254
+ {
1255
+ int count;
1256
+ cairo_glyph_t *glyphs;
1257
+
1258
+ RB_CAIRO__GLYPHS_TO_ARRAY (rb_glyphs, glyphs, count);
1259
+ cairo_show_glyphs (_SELF, glyphs, count);
1260
+ cr_check_status (_SELF);
1261
+ return self;
1262
+ }
1263
+
1264
+ #if CAIRO_CHECK_VERSION(1, 8, 0)
1265
+ static VALUE
1266
+ cr_show_text_glyphs (VALUE self, VALUE rb_utf8, VALUE rb_glyphs,
1267
+ VALUE rb_clusters, VALUE rb_cluster_flags)
1268
+ {
1269
+ cairo_t *cr;
1270
+ const char *utf8;
1271
+ int utf8_len;
1272
+ cairo_glyph_t *glyphs = NULL;
1273
+ int num_glyphs = 0;
1274
+ cairo_text_cluster_t *clusters = NULL;
1275
+ int num_clusters = 0;
1276
+ cairo_text_cluster_flags_t cluster_flags;
1277
+
1278
+ cr = _SELF;
1279
+ utf8 = RSTRING_PTR (rb_utf8);
1280
+ utf8_len = RSTRING_LEN (rb_utf8);
1281
+ rb_cairo__glyphs_from_ruby_object (rb_glyphs, &glyphs, &num_glyphs);
1282
+ rb_cairo__text_clusters_from_ruby_object (rb_clusters,
1283
+ &clusters, &num_clusters);
1284
+ cluster_flags = RVAL2CRTEXTCLUSTERFLAGS (rb_cluster_flags);
1285
+ cairo_show_text_glyphs (cr, utf8, utf8_len,
1286
+ glyphs, num_glyphs,
1287
+ clusters, num_clusters,
1288
+ cluster_flags);
1289
+ if (glyphs)
1290
+ cairo_glyph_free (glyphs);
1291
+ if (clusters)
1292
+ cairo_text_cluster_free (clusters);
1293
+
1294
+ return self;
1295
+ }
1296
+ #endif
1297
+
1298
+ static VALUE
1299
+ cr_get_font_face (VALUE self)
1300
+ {
1301
+ cairo_font_face_t *face;
1302
+
1303
+ face = cairo_get_font_face (_SELF);
1304
+ rb_cairo_check_status (cairo_font_face_status (face));
1305
+ return CRFONTFACE2RVAL (face);
1306
+ }
1307
+
1308
+ static VALUE
1309
+ cr_font_extents (VALUE self)
1310
+ {
1311
+ cairo_font_extents_t extents;
1312
+ cairo_font_extents (_SELF, &extents);
1313
+ cr_check_status (_SELF);
1314
+ return CRFONTEXTENTS2RVAL (&extents);
1315
+ }
1316
+
1317
+ static VALUE
1318
+ cr_set_font_face (VALUE self, VALUE face)
1319
+ {
1320
+ cairo_set_font_face (_SELF, NIL_P (face) ? NULL : RVAL2CRFONTFACE (face));
1321
+ cr_check_status (_SELF);
1322
+ return self;
1323
+ }
1324
+
1325
+ static VALUE
1326
+ cr_text_extents (VALUE self, VALUE utf8)
1327
+ {
1328
+ cairo_text_extents_t extents;
1329
+ cairo_text_extents (_SELF, StringValuePtr (utf8), &extents);
1330
+ cr_check_status (_SELF);
1331
+ return CRTEXTEXTENTS2RVAL (&extents);
1332
+ }
1333
+
1334
+ static VALUE
1335
+ cr_glyph_extents (VALUE self, VALUE rb_glyphs)
1336
+ {
1337
+ cairo_text_extents_t extents;
1338
+ cairo_glyph_t *glyphs;
1339
+ int length;
1340
+
1341
+ RB_CAIRO__GLYPHS_TO_ARRAY (rb_glyphs, glyphs, length);
1342
+ cairo_glyph_extents (_SELF, glyphs, length, &extents);
1343
+ cr_check_status (_SELF);
1344
+ return CRTEXTEXTENTS2RVAL (&extents);
1345
+ }
1346
+
1347
+ static VALUE
1348
+ cr_text_path (VALUE self, VALUE utf8)
1349
+ {
1350
+ cairo_text_path (_SELF, StringValuePtr (utf8));
1351
+ cr_check_status (_SELF);
1352
+ return self;
1353
+ }
1354
+
1355
+ static VALUE
1356
+ cr_glyph_path (VALUE self, VALUE rb_glyphs)
1357
+ {
1358
+ int count;
1359
+ cairo_glyph_t *glyphs;
1360
+
1361
+ RB_CAIRO__GLYPHS_TO_ARRAY (rb_glyphs, glyphs, count);
1362
+ cairo_glyph_path (_SELF, glyphs, count);
1363
+ cr_check_status (_SELF);
1364
+
1365
+ return self;
1366
+ }
1367
+
1368
+ /* Query functions */
1369
+ static VALUE
1370
+ cr_get_operator (VALUE self)
1371
+ {
1372
+ return INT2FIX (cairo_get_operator (_SELF));
1373
+ }
1374
+
1375
+ static VALUE
1376
+ cr_get_source (VALUE self)
1377
+ {
1378
+ VALUE rb_source = Qnil;
1379
+ cairo_pattern_t *source;
1380
+ source = cairo_get_source (_SELF);
1381
+
1382
+ if (source)
1383
+ {
1384
+ rb_cairo_check_status (cairo_pattern_status (source));
1385
+ rb_source = rb_ivar_get (self, cr_id_source);
1386
+ if (NIL_P (rb_source) || RVAL2CRPATTERN (rb_source) != source)
1387
+ {
1388
+ rb_source = CRPATTERN2RVAL (source);
1389
+ rb_ivar_set (self, cr_id_source, rb_source);
1390
+ }
1391
+ }
1392
+ else
1393
+ {
1394
+ rb_source = Qnil;
1395
+ rb_ivar_set (self, cr_id_source, rb_source);
1396
+ }
1397
+
1398
+ return rb_source;
1399
+ }
1400
+
1401
+ static VALUE
1402
+ cr_get_tolerance (VALUE self)
1403
+ {
1404
+ return rb_float_new (cairo_get_tolerance (_SELF));
1405
+ }
1406
+
1407
+ static VALUE
1408
+ cr_get_antialias(VALUE self)
1409
+ {
1410
+ return INT2NUM (cairo_get_antialias (_SELF));
1411
+ }
1412
+
1413
+ #if CAIRO_CHECK_VERSION(1, 5, 10)
1414
+ static VALUE
1415
+ cr_has_current_point(VALUE self)
1416
+ {
1417
+ return RTEST (cairo_has_current_point (_SELF));
1418
+ }
1419
+ #endif
1420
+
1421
+ static VALUE
1422
+ cr_get_current_point (VALUE self)
1423
+ {
1424
+ double point[2];
1425
+ cairo_get_current_point (_SELF, point, point + 1);
1426
+ return rb_cairo__float_array (point, 2);
1427
+ }
1428
+
1429
+ static VALUE
1430
+ cr_get_fill_rule (VALUE self)
1431
+ {
1432
+ return INT2FIX (cairo_get_fill_rule (_SELF));
1433
+ }
1434
+
1435
+ static VALUE
1436
+ cr_get_line_width (VALUE self)
1437
+ {
1438
+ return rb_float_new (cairo_get_line_width (_SELF));
1439
+ }
1440
+
1441
+ static VALUE
1442
+ cr_get_line_cap (VALUE self)
1443
+ {
1444
+ return INT2FIX (cairo_get_line_cap (_SELF));
1445
+ }
1446
+
1447
+ static VALUE
1448
+ cr_get_line_join (VALUE self)
1449
+ {
1450
+ return INT2FIX (cairo_get_line_join (_SELF));
1451
+ }
1452
+
1453
+ static VALUE
1454
+ cr_get_miter_limit (VALUE self)
1455
+ {
1456
+ return rb_float_new (cairo_get_miter_limit (_SELF));
1457
+ }
1458
+
1459
+ #if CAIRO_CHECK_VERSION(1, 3, 0)
1460
+ static VALUE
1461
+ cr_get_dash_count (VALUE self)
1462
+ {
1463
+ return INT2NUM (cairo_get_dash_count (_SELF));
1464
+ }
1465
+
1466
+ static VALUE
1467
+ cr_get_dash (VALUE self)
1468
+ {
1469
+ int count;
1470
+ double *dashes, offset;
1471
+
1472
+ count = cairo_get_dash_count (_SELF);
1473
+ dashes = ALLOCA_N (double, count);
1474
+ cairo_get_dash (_SELF, dashes, &offset);
1475
+
1476
+ return rb_ary_new3 (2,
1477
+ rb_cairo__float_array (dashes, count),
1478
+ rb_float_new (offset));
1479
+ }
1480
+ #endif
1481
+
1482
+ static VALUE
1483
+ cr_get_matrix (VALUE self)
1484
+ {
1485
+ cairo_matrix_t matrix;
1486
+ cairo_get_matrix (_SELF, &matrix);
1487
+ cr_check_status (_SELF);
1488
+ return CRMATRIX2RVAL (&matrix);
1489
+ }
1490
+
1491
+ static VALUE
1492
+ cr_get_target (VALUE self)
1493
+ {
1494
+ cairo_surface_t *surface;
1495
+ VALUE rb_surface = Qnil;
1496
+
1497
+ surface = cairo_get_target (_SELF);
1498
+ rb_cairo_check_status (cairo_surface_status (surface));
1499
+
1500
+ if (RTEST (rb_ivar_defined (self, cr_id_surface)))
1501
+ rb_surface = rb_ivar_get (self, cr_id_surface);
1502
+ if (NIL_P (rb_surface) || RVAL2CRSURFACE (rb_surface) != surface)
1503
+ {
1504
+ rb_surface = CRSURFACE2RVAL (surface);
1505
+ rb_ivar_set (self, cr_id_surface, rb_surface);
1506
+ }
1507
+
1508
+ return rb_surface;
1509
+ }
1510
+
1511
+ static VALUE
1512
+ cr_get_group_target (VALUE self)
1513
+ {
1514
+ cairo_surface_t *surface;
1515
+
1516
+ surface = cairo_get_group_target (_SELF);
1517
+ if (!surface)
1518
+ return Qnil;
1519
+ rb_cairo_check_status (cairo_surface_status (surface));
1520
+ return CRSURFACE2RVAL (surface);
1521
+ }
1522
+
1523
+ /* Paths */
1524
+ static VALUE
1525
+ cr_copy_path (VALUE self)
1526
+ {
1527
+ cairo_path_t *path;
1528
+
1529
+ path = cairo_copy_path (_SELF);
1530
+ rb_cairo_check_status (path->status);
1531
+ return CRPATH2RVAL (path);
1532
+ }
1533
+
1534
+ static VALUE
1535
+ cr_copy_path_flat (VALUE self)
1536
+ {
1537
+ cairo_path_t *path;
1538
+
1539
+ path = cairo_copy_path_flat (_SELF);
1540
+ rb_cairo_check_status (path->status);
1541
+ return CRPATH2RVAL (path);
1542
+ }
1543
+
1544
+ static VALUE
1545
+ cr_copy_append_path (VALUE self, VALUE path)
1546
+ {
1547
+ cairo_append_path (_SELF, RVAL2CRPATH (path));
1548
+ cr_check_status (_SELF);
1549
+ return self;
1550
+ }
1551
+
1552
+ static int
1553
+ cr_destroy_all_guarded_contexts_at_end_iter (VALUE key, VALUE value, VALUE data)
1554
+ {
1555
+ cr_destroy (key);
1556
+ return ST_CONTINUE;
1557
+ }
1558
+
1559
+ static void
1560
+ cr_destroy_all_guarded_contexts_at_end (VALUE data)
1561
+ {
1562
+ rb_hash_foreach (rb_cairo__gc_guarded_objects (rb_cCairo_Context),
1563
+ cr_destroy_all_guarded_contexts_at_end_iter,
1564
+ Qnil);
1565
+ }
1566
+
1567
+ void
1568
+ Init_cairo_context (void)
1569
+ {
1570
+ cr_id_surface = rb_intern ("surface");
1571
+ cr_id_source = rb_intern ("source");
1572
+
1573
+ cr_id_plus = rb_intern ("+");
1574
+ cr_id_minus = rb_intern ("-");
1575
+ cr_id_multi = rb_intern ("*");
1576
+ cr_id_div = rb_intern ("/");
1577
+
1578
+ rb_cCairo_Context =
1579
+ rb_define_class_under (rb_mCairo, "Context", rb_cObject);
1580
+
1581
+ rb_define_alloc_func (rb_cCairo_Context, cr_allocate);
1582
+
1583
+ rb_cairo__initialize_gc_guard_holder_class (rb_cCairo_Context);
1584
+ rb_set_end_proc(cr_destroy_all_guarded_contexts_at_end, Qnil);
1585
+
1586
+ /* For integrate other libraries such as a FFI based library. */
1587
+ rb_define_singleton_method (rb_cCairo_Context, "wrap", cr_s_wrap, 1);
1588
+
1589
+ /* Functions for manipulating state objects */
1590
+ rb_define_method (rb_cCairo_Context, "initialize", cr_initialize, 1);
1591
+ rb_define_method (rb_cCairo_Context, "destroy", cr_destroy, 0);
1592
+
1593
+ rb_define_method (rb_cCairo_Context, "save", cr_save, 0);
1594
+ rb_define_method (rb_cCairo_Context, "restore", cr_restore, 0);
1595
+ rb_define_method (rb_cCairo_Context, "push_group", cr_push_group, -1);
1596
+ rb_define_method (rb_cCairo_Context, "pop_group", cr_pop_group_generic, -1);
1597
+ rb_define_method (rb_cCairo_Context, "pop_group_to_source",
1598
+ cr_pop_group_to_source, 0);
1599
+
1600
+ /* Modify state */
1601
+ rb_define_method (rb_cCairo_Context, "set_operator", cr_set_operator, 1);
1602
+ rb_define_method (rb_cCairo_Context, "set_source", cr_set_source_generic, -1);
1603
+ rb_define_method (rb_cCairo_Context, "set_source_rgb",
1604
+ cr_set_source_rgb, -1);
1605
+ rb_define_method (rb_cCairo_Context, "set_source_rgba",
1606
+ cr_set_source_rgba, -1);
1607
+ rb_define_method (rb_cCairo_Context, "set_tolerance", cr_set_tolerance, 1);
1608
+ rb_define_method (rb_cCairo_Context, "set_antialias", cr_set_antialias, 1);
1609
+ rb_define_method (rb_cCairo_Context, "set_fill_rule", cr_set_fill_rule, 1);
1610
+ rb_define_method (rb_cCairo_Context, "set_line_width", cr_set_line_width, 1);
1611
+ rb_define_method (rb_cCairo_Context, "set_line_cap", cr_set_line_cap, 1);
1612
+ rb_define_method (rb_cCairo_Context, "set_line_join", cr_set_line_join, 1);
1613
+ rb_define_method (rb_cCairo_Context, "set_dash", cr_set_dash, -1);
1614
+ rb_define_method (rb_cCairo_Context, "set_miter_limit",
1615
+ cr_set_miter_limit, 1);
1616
+
1617
+ rb_define_method (rb_cCairo_Context, "translate", cr_translate, 2);
1618
+ rb_define_method (rb_cCairo_Context, "scale", cr_scale, 2);
1619
+ rb_define_method (rb_cCairo_Context, "rotate", cr_rotate, 1);
1620
+ rb_define_method (rb_cCairo_Context, "transform", cr_transform, 1);
1621
+
1622
+ rb_define_method (rb_cCairo_Context, "set_matrix", cr_set_matrix, 1);
1623
+ rb_define_method (rb_cCairo_Context, "identity_matrix",
1624
+ cr_identity_matrix, 0);
1625
+ rb_define_method (rb_cCairo_Context, "user_to_device", cr_user_to_device, 2);
1626
+ rb_define_method (rb_cCairo_Context, "user_to_device_distance",
1627
+ cr_user_to_device_distance, 2);
1628
+ rb_define_method (rb_cCairo_Context, "device_to_user", cr_device_to_user, 2);
1629
+ rb_define_method (rb_cCairo_Context, "device_to_user_distance",
1630
+ cr_device_to_user_distance, 2);
1631
+
1632
+ /* Path creation functions */
1633
+ rb_define_method (rb_cCairo_Context, "new_path", cr_new_path, 0);
1634
+ rb_define_method (rb_cCairo_Context, "move_to", cr_move_to, 2);
1635
+ rb_define_method (rb_cCairo_Context, "new_sub_path", cr_new_sub_path, 0);
1636
+ rb_define_method (rb_cCairo_Context, "line_to", cr_line_to, 2);
1637
+ rb_define_method (rb_cCairo_Context, "curve_to", cr_curve_to_generic, -1);
1638
+ rb_define_method (rb_cCairo_Context, "arc", cr_arc, 5);
1639
+ rb_define_method (rb_cCairo_Context, "arc_negative", cr_arc_negative, 5);
1640
+ rb_define_method (rb_cCairo_Context, "rel_move_to", cr_rel_move_to, 2);
1641
+ rb_define_method (rb_cCairo_Context, "rel_line_to", cr_rel_line_to, 2);
1642
+ rb_define_method (rb_cCairo_Context, "rel_curve_to",
1643
+ cr_rel_curve_to_generic, -1);
1644
+ rb_define_method (rb_cCairo_Context, "rectangle", cr_rectangle, 4);
1645
+ rb_define_method (rb_cCairo_Context, "close_path", cr_close_path, 0);
1646
+ #if CAIRO_CHECK_VERSION(1, 5, 8)
1647
+ rb_define_method (rb_cCairo_Context, "path_extents", cr_path_extents, 0);
1648
+ #endif
1649
+
1650
+ /* Painting functions */
1651
+ rb_define_method (rb_cCairo_Context, "paint", cr_paint_generic, -1);
1652
+ rb_define_method (rb_cCairo_Context, "mask", cr_mask_generic, -1);
1653
+ rb_define_method (rb_cCairo_Context, "stroke", cr_stroke, -1);
1654
+ rb_define_method (rb_cCairo_Context, "fill", cr_fill, -1);
1655
+ rb_define_method (rb_cCairo_Context, "copy_page", cr_copy_page, 0);
1656
+ rb_define_method (rb_cCairo_Context, "show_page", cr_show_page, 0);
1657
+
1658
+ /* Insideness testing */
1659
+ rb_define_method (rb_cCairo_Context, "in_stroke?", cr_in_stroke, 2);
1660
+ rb_define_method (rb_cCairo_Context, "in_fill?", cr_in_fill, 2);
1661
+ #if CAIRO_CHECK_VERSION(1, 10, 0)
1662
+ rb_define_method (rb_cCairo_Context, "in_clip?", cr_in_clip, 2);
1663
+ #endif
1664
+
1665
+ /* Rectangular extents */
1666
+ rb_define_method (rb_cCairo_Context, "stroke_extents", cr_stroke_extents, 0);
1667
+ rb_define_method (rb_cCairo_Context, "fill_extents", cr_fill_extents, 0);
1668
+
1669
+ /* Clipping */
1670
+ rb_define_method (rb_cCairo_Context, "reset_clip", cr_reset_clip, 0);
1671
+ rb_define_method (rb_cCairo_Context, "clip", cr_clip, -1);
1672
+ #if CAIRO_CHECK_VERSION(1, 3, 0)
1673
+ rb_define_method (rb_cCairo_Context, "clip_extents", cr_clip_extents, 0);
1674
+ rb_define_method (rb_cCairo_Context, "clip_rectangle_list",
1675
+ cr_clip_rectangle_list, 0);
1676
+ #endif
1677
+
1678
+ /* Font/Text functions */
1679
+ rb_define_method (rb_cCairo_Context, "select_font_face",
1680
+ cr_select_font_face, -1);
1681
+ rb_define_method (rb_cCairo_Context, "set_font_size", cr_set_font_size, 1);
1682
+ rb_define_method (rb_cCairo_Context, "set_font_matrix",
1683
+ cr_set_font_matrix, 1);
1684
+ rb_define_method (rb_cCairo_Context, "font_matrix", cr_get_font_matrix, 0);
1685
+ rb_define_method (rb_cCairo_Context, "set_font_options",
1686
+ cr_set_font_options, 1);
1687
+ rb_define_method (rb_cCairo_Context, "font_options", cr_get_font_options, 0);
1688
+ rb_define_method (rb_cCairo_Context, "set_font_face", cr_set_font_face, 1);
1689
+ rb_define_method (rb_cCairo_Context, "font_face", cr_get_font_face, 0);
1690
+ rb_define_method (rb_cCairo_Context, "set_scaled_font",
1691
+ cr_set_scaled_font, 1);
1692
+ #if CAIRO_CHECK_VERSION(1, 3, 16)
1693
+ rb_define_method (rb_cCairo_Context, "scaled_font", cr_get_scaled_font, 0);
1694
+ #endif
1695
+ rb_define_method (rb_cCairo_Context, "show_text", cr_show_text, 1);
1696
+ rb_define_method (rb_cCairo_Context, "show_glyphs", cr_show_glyphs, 1);
1697
+ #if CAIRO_CHECK_VERSION(1, 8, 0)
1698
+ rb_define_method (rb_cCairo_Context, "show_text_glyphs",
1699
+ cr_show_text_glyphs, 4);
1700
+ #endif
1701
+ rb_define_method (rb_cCairo_Context, "text_path", cr_text_path, 1);
1702
+ rb_define_method (rb_cCairo_Context, "glyph_path", cr_glyph_path, 1);
1703
+ rb_define_method (rb_cCairo_Context, "text_extents", cr_text_extents, 1);
1704
+ rb_define_method (rb_cCairo_Context, "glyph_extents", cr_glyph_extents, 1);
1705
+ rb_define_method (rb_cCairo_Context, "font_extents", cr_font_extents, 0);
1706
+
1707
+ /* Query functions */
1708
+ rb_define_method (rb_cCairo_Context, "operator", cr_get_operator, 0);
1709
+ rb_define_method (rb_cCairo_Context, "source", cr_get_source, 0);
1710
+ rb_define_method (rb_cCairo_Context, "tolerance", cr_get_tolerance, 0);
1711
+ rb_define_method (rb_cCairo_Context, "antialias", cr_get_antialias, 0);
1712
+ #if CAIRO_CHECK_VERSION(1, 5, 10)
1713
+ rb_define_method (rb_cCairo_Context, "have_current_point?",
1714
+ cr_has_current_point, 0);
1715
+ rb_define_alias (rb_cCairo_Context,
1716
+ "has_current_point?", "have_current_point?");
1717
+ #endif
1718
+ rb_define_method (rb_cCairo_Context, "current_point",
1719
+ cr_get_current_point, 0);
1720
+ rb_define_method (rb_cCairo_Context, "fill_rule", cr_get_fill_rule, 0);
1721
+ rb_define_method (rb_cCairo_Context, "line_width", cr_get_line_width, 0);
1722
+ rb_define_method (rb_cCairo_Context, "line_cap", cr_get_line_cap, 0);
1723
+ rb_define_method (rb_cCairo_Context, "line_join", cr_get_line_join, 0);
1724
+ rb_define_method (rb_cCairo_Context, "miter_limit", cr_get_miter_limit, 0);
1725
+ #if CAIRO_CHECK_VERSION(1, 3, 0)
1726
+ rb_define_method (rb_cCairo_Context, "dash_count", cr_get_dash_count, 0);
1727
+ rb_define_method (rb_cCairo_Context, "dash", cr_get_dash, 0);
1728
+ #endif
1729
+ rb_define_method (rb_cCairo_Context, "matrix", cr_get_matrix, 0);
1730
+ rb_define_method (rb_cCairo_Context, "target", cr_get_target, 0);
1731
+ rb_define_method (rb_cCairo_Context, "group_target", cr_get_group_target, 0);
1732
+
1733
+ /* Paths */
1734
+ rb_define_method (rb_cCairo_Context, "copy_path", cr_copy_path, 0);
1735
+ rb_define_method (rb_cCairo_Context, "copy_path_flat", cr_copy_path_flat, 0);
1736
+ rb_define_method (rb_cCairo_Context, "append_path", cr_copy_append_path, 1);
1737
+
1738
+ rb_define_method (rb_cCairo_Context, "to_ptr", cr_to_ptr, 0);
1739
+
1740
+ RB_CAIRO_DEF_SETTERS (rb_cCairo_Context);
1741
+ }