cairo 1.14.0-x64-mingw32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

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
+ }