cairo 1.8.3-x86-mingw32

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of cairo might be problematic. Click here for more details.

Files changed (352) hide show
  1. data/AUTHORS +4 -0
  2. data/COPYING +59 -0
  3. data/GPL +340 -0
  4. data/NEWS +163 -0
  5. data/Rakefile +190 -0
  6. data/doc/doc.css +91 -0
  7. data/doc/en/cairo-antialias.html +38 -0
  8. data/doc/en/cairo-clip-not-representable-error.html +47 -0
  9. data/doc/en/cairo-color-base.html +69 -0
  10. data/doc/en/cairo-color-cmyk.html +157 -0
  11. data/doc/en/cairo-color-hsv.html +137 -0
  12. data/doc/en/cairo-color-rgb.html +142 -0
  13. data/doc/en/cairo-color-x11.html +173 -0
  14. data/doc/en/cairo-color.html +238 -0
  15. data/doc/en/cairo-content.html +37 -0
  16. data/doc/en/cairo-context-blur.html +39 -0
  17. data/doc/en/cairo-context-circle.html +39 -0
  18. data/doc/en/cairo-context-color.html +39 -0
  19. data/doc/en/cairo-context-path.html +44 -0
  20. data/doc/en/cairo-context-rectangle.html +39 -0
  21. data/doc/en/cairo-context-triangle.html +39 -0
  22. data/doc/en/cairo-context.html +643 -0
  23. data/doc/en/cairo-error.html +44 -0
  24. data/doc/en/cairo-extend.html +38 -0
  25. data/doc/en/cairo-file-not-found.html +47 -0
  26. data/doc/en/cairo-fill-rule.html +36 -0
  27. data/doc/en/cairo-filter.html +40 -0
  28. data/doc/en/cairo-font-extents.html +129 -0
  29. data/doc/en/cairo-font-face.html +38 -0
  30. data/doc/en/cairo-font-options.html +139 -0
  31. data/doc/en/cairo-font-slant.html +37 -0
  32. data/doc/en/cairo-font-type-mismatch.html +47 -0
  33. data/doc/en/cairo-font-weight.html +36 -0
  34. data/doc/en/cairo-format.html +46 -0
  35. data/doc/en/cairo-glyph.html +99 -0
  36. data/doc/en/cairo-gradient-pattern.html +74 -0
  37. data/doc/en/cairo-hint-metrics.html +37 -0
  38. data/doc/en/cairo-hint-style.html +39 -0
  39. data/doc/en/cairo-image-surface.html +82 -0
  40. data/doc/en/cairo-invalid-clusters.html +47 -0
  41. data/doc/en/cairo-invalid-content-error.html +47 -0
  42. data/doc/en/cairo-invalid-dash-error.html +47 -0
  43. data/doc/en/cairo-invalid-dsc-comment-error.html +47 -0
  44. data/doc/en/cairo-invalid-format-error.html +47 -0
  45. data/doc/en/cairo-invalid-index-error.html +47 -0
  46. data/doc/en/cairo-invalid-matrix-error.html +47 -0
  47. data/doc/en/cairo-invalid-path-data-error.html +47 -0
  48. data/doc/en/cairo-invalid-pop-group-error.html +47 -0
  49. data/doc/en/cairo-invalid-restore-error.html +47 -0
  50. data/doc/en/cairo-invalid-slant.html +47 -0
  51. data/doc/en/cairo-invalid-status-error.html +47 -0
  52. data/doc/en/cairo-invalid-stride-error.html +47 -0
  53. data/doc/en/cairo-invalid-string-error.html +47 -0
  54. data/doc/en/cairo-invalid-visual-error.html +47 -0
  55. data/doc/en/cairo-invalid-weight.html +47 -0
  56. data/doc/en/cairo-line-cap.html +37 -0
  57. data/doc/en/cairo-line-join.html +37 -0
  58. data/doc/en/cairo-linear-pattern.html +60 -0
  59. data/doc/en/cairo-matrix.html +259 -0
  60. data/doc/en/cairo-negative-count.html +47 -0
  61. data/doc/en/cairo-no-current-point-error.html +47 -0
  62. data/doc/en/cairo-null-pointer-error.html +47 -0
  63. data/doc/en/cairo-operator.html +48 -0
  64. data/doc/en/cairo-paper-parse-error.html +47 -0
  65. data/doc/en/cairo-paper-unknown-paper-name.html +66 -0
  66. data/doc/en/cairo-paper-unknown-unit.html +66 -0
  67. data/doc/en/cairo-paper-unrecognized-paper-description.html +66 -0
  68. data/doc/en/cairo-paper.html +184 -0
  69. data/doc/en/cairo-path-close-path.html +49 -0
  70. data/doc/en/cairo-path-curve-to.html +49 -0
  71. data/doc/en/cairo-path-data-type.html +38 -0
  72. data/doc/en/cairo-path-data.html +98 -0
  73. data/doc/en/cairo-path-line-to.html +49 -0
  74. data/doc/en/cairo-path-move-to.html +49 -0
  75. data/doc/en/cairo-path.html +155 -0
  76. data/doc/en/cairo-pattern-type-mismatch-error.html +47 -0
  77. data/doc/en/cairo-pattern.html +99 -0
  78. data/doc/en/cairo-pdf-surface.html +57 -0
  79. data/doc/en/cairo-point.html +74 -0
  80. data/doc/en/cairo-ps-level.html +49 -0
  81. data/doc/en/cairo-ps-surface.html +92 -0
  82. data/doc/en/cairo-quartz-image-surface.html +57 -0
  83. data/doc/en/cairo-quartz-surface.html +57 -0
  84. data/doc/en/cairo-radial-pattern.html +60 -0
  85. data/doc/en/cairo-read-error.html +47 -0
  86. data/doc/en/cairo-rectangle.html +89 -0
  87. data/doc/en/cairo-scaled-font.html +94 -0
  88. data/doc/en/cairo-solid-pattern.html +62 -0
  89. data/doc/en/cairo-subpixel-order.html +39 -0
  90. data/doc/en/cairo-surface-finished-error.html +47 -0
  91. data/doc/en/cairo-surface-pattern.html +57 -0
  92. data/doc/en/cairo-surface-type-mismatch-error.html +47 -0
  93. data/doc/en/cairo-surface.html +121 -0
  94. data/doc/en/cairo-svg-surface.html +77 -0
  95. data/doc/en/cairo-svg-version.html +49 -0
  96. data/doc/en/cairo-temp-file-error.html +47 -0
  97. data/doc/en/cairo-text-cluster-flag.html +35 -0
  98. data/doc/en/cairo-text-cluster.html +84 -0
  99. data/doc/en/cairo-text-extents.html +144 -0
  100. data/doc/en/cairo-toy-font-face.html +67 -0
  101. data/doc/en/cairo-user-font-error.html +47 -0
  102. data/doc/en/cairo-user-font-face-text-to-glyphs-data.html +94 -0
  103. data/doc/en/cairo-user-font-face.html +72 -0
  104. data/doc/en/cairo-user-font-immutable.html +47 -0
  105. data/doc/en/cairo-win32-printing-surface.html +57 -0
  106. data/doc/en/cairo-win32-surface.html +62 -0
  107. data/doc/en/cairo-write-error.html +47 -0
  108. data/doc/en/cairo.html +131 -0
  109. data/doc/en/index.html +1154 -0
  110. data/doc/index.html +18 -0
  111. data/doc/ja/cairo-antialias.html +57 -0
  112. data/doc/ja/cairo-clip-not-representable-error.html +56 -0
  113. data/doc/ja/cairo-color-base.html +75 -0
  114. data/doc/ja/cairo-color-cmyk.html +152 -0
  115. data/doc/ja/cairo-color-hsv.html +135 -0
  116. data/doc/ja/cairo-color-rgb.html +145 -0
  117. data/doc/ja/cairo-color-x11.html +183 -0
  118. data/doc/ja/cairo-color.html +317 -0
  119. data/doc/ja/cairo-content.html +51 -0
  120. data/doc/ja/cairo-context-blur.html +53 -0
  121. data/doc/ja/cairo-context-circle.html +54 -0
  122. data/doc/ja/cairo-context-color.html +52 -0
  123. data/doc/ja/cairo-context-path.html +77 -0
  124. data/doc/ja/cairo-context-rectangle.html +60 -0
  125. data/doc/ja/cairo-context-triangle.html +47 -0
  126. data/doc/ja/cairo-context.html +1542 -0
  127. data/doc/ja/cairo-error.html +56 -0
  128. data/doc/ja/cairo-extend.html +56 -0
  129. data/doc/ja/cairo-file-not-found.html +51 -0
  130. data/doc/ja/cairo-fill-rule.html +58 -0
  131. data/doc/ja/cairo-filter.html +43 -0
  132. data/doc/ja/cairo-font-extents.html +164 -0
  133. data/doc/ja/cairo-font-face.html +55 -0
  134. data/doc/ja/cairo-font-options.html +189 -0
  135. data/doc/ja/cairo-font-slant.html +50 -0
  136. data/doc/ja/cairo-font-type-mismatch.html +52 -0
  137. data/doc/ja/cairo-font-weight.html +47 -0
  138. data/doc/ja/cairo-format.html +81 -0
  139. data/doc/ja/cairo-glyph.html +115 -0
  140. data/doc/ja/cairo-gradient-pattern.html +119 -0
  141. data/doc/ja/cairo-hint-metrics.html +57 -0
  142. data/doc/ja/cairo-hint-style.html +64 -0
  143. data/doc/ja/cairo-image-surface.html +131 -0
  144. data/doc/ja/cairo-invalid-clusters.html +55 -0
  145. data/doc/ja/cairo-invalid-content-error.html +54 -0
  146. data/doc/ja/cairo-invalid-dash-error.html +54 -0
  147. data/doc/ja/cairo-invalid-dsc-comment-error.html +54 -0
  148. data/doc/ja/cairo-invalid-format-error.html +54 -0
  149. data/doc/ja/cairo-invalid-index-error.html +54 -0
  150. data/doc/ja/cairo-invalid-matrix-error.html +54 -0
  151. data/doc/ja/cairo-invalid-path-data-error.html +54 -0
  152. data/doc/ja/cairo-invalid-pop-group-error.html +54 -0
  153. data/doc/ja/cairo-invalid-restore-error.html +55 -0
  154. data/doc/ja/cairo-invalid-slant.html +57 -0
  155. data/doc/ja/cairo-invalid-status-error.html +55 -0
  156. data/doc/ja/cairo-invalid-stride-error.html +55 -0
  157. data/doc/ja/cairo-invalid-string-error.html +54 -0
  158. data/doc/ja/cairo-invalid-visual-error.html +57 -0
  159. data/doc/ja/cairo-invalid-weight.html +57 -0
  160. data/doc/ja/cairo-line-cap.html +50 -0
  161. data/doc/ja/cairo-line-join.html +53 -0
  162. data/doc/ja/cairo-linear-pattern.html +87 -0
  163. data/doc/ja/cairo-matrix.html +354 -0
  164. data/doc/ja/cairo-negative-count.html +52 -0
  165. data/doc/ja/cairo-no-current-point-error.html +54 -0
  166. data/doc/ja/cairo-null-pointer-error.html +54 -0
  167. data/doc/ja/cairo-operator.html +51 -0
  168. data/doc/ja/cairo-paper-parse-error.html +55 -0
  169. data/doc/ja/cairo-paper-unknown-paper-name.html +76 -0
  170. data/doc/ja/cairo-paper-unknown-unit.html +75 -0
  171. data/doc/ja/cairo-paper-unrecognized-paper-description.html +76 -0
  172. data/doc/ja/cairo-paper.html +357 -0
  173. data/doc/ja/cairo-path-close-path.html +57 -0
  174. data/doc/ja/cairo-path-curve-to.html +70 -0
  175. data/doc/ja/cairo-path-data-type.html +53 -0
  176. data/doc/ja/cairo-path-data.html +127 -0
  177. data/doc/ja/cairo-path-line-to.html +62 -0
  178. data/doc/ja/cairo-path-move-to.html +62 -0
  179. data/doc/ja/cairo-path.html +144 -0
  180. data/doc/ja/cairo-pattern-type-mismatch-error.html +56 -0
  181. data/doc/ja/cairo-pattern.html +128 -0
  182. data/doc/ja/cairo-pdf-surface.html +86 -0
  183. data/doc/ja/cairo-point.html +90 -0
  184. data/doc/ja/cairo-ps-level.html +62 -0
  185. data/doc/ja/cairo-ps-surface.html +214 -0
  186. data/doc/ja/cairo-quartz-image-surface.html +75 -0
  187. data/doc/ja/cairo-quartz-surface.html +93 -0
  188. data/doc/ja/cairo-radial-pattern.html +93 -0
  189. data/doc/ja/cairo-read-error.html +55 -0
  190. data/doc/ja/cairo-rectangle.html +109 -0
  191. data/doc/ja/cairo-scaled-font.html +180 -0
  192. data/doc/ja/cairo-solid-pattern.html +87 -0
  193. data/doc/ja/cairo-subpixel-order.html +57 -0
  194. data/doc/ja/cairo-surface-finished-error.html +54 -0
  195. data/doc/ja/cairo-surface-pattern.html +68 -0
  196. data/doc/ja/cairo-surface-type-mismatch-error.html +56 -0
  197. data/doc/ja/cairo-surface.html +213 -0
  198. data/doc/ja/cairo-svg-surface.html +114 -0
  199. data/doc/ja/cairo-svg-version.html +66 -0
  200. data/doc/ja/cairo-temp-file-error.html +50 -0
  201. data/doc/ja/cairo-text-cluster-flag.html +46 -0
  202. data/doc/ja/cairo-text-cluster.html +102 -0
  203. data/doc/ja/cairo-text-extents.html +163 -0
  204. data/doc/ja/cairo-toy-font-face.html +107 -0
  205. data/doc/ja/cairo-user-font-error.html +55 -0
  206. data/doc/ja/cairo-user-font-face-text-to-glyphs-data.html +156 -0
  207. data/doc/ja/cairo-user-font-face.html +268 -0
  208. data/doc/ja/cairo-user-font-immutable.html +54 -0
  209. data/doc/ja/cairo-win32-printing-surface.html +80 -0
  210. data/doc/ja/cairo-win32-surface.html +100 -0
  211. data/doc/ja/cairo-write-error.html +55 -0
  212. data/doc/ja/cairo.html +177 -0
  213. data/doc/ja/index.html +1156 -0
  214. data/ext/cairo/cairo.def +104 -0
  215. data/ext/cairo/extconf.rb +80 -0
  216. data/ext/cairo/rb_cairo.c +104 -0
  217. data/ext/cairo/rb_cairo.h +275 -0
  218. data/ext/cairo/rb_cairo_constants.c +478 -0
  219. data/ext/cairo/rb_cairo_context.c +1693 -0
  220. data/ext/cairo/rb_cairo_exception.c +354 -0
  221. data/ext/cairo/rb_cairo_font_extents.c +200 -0
  222. data/ext/cairo/rb_cairo_font_face.c +713 -0
  223. data/ext/cairo/rb_cairo_font_options.c +197 -0
  224. data/ext/cairo/rb_cairo_glyph.c +161 -0
  225. data/ext/cairo/rb_cairo_matrix.c +366 -0
  226. data/ext/cairo/rb_cairo_path.c +459 -0
  227. data/ext/cairo/rb_cairo_pattern.c +540 -0
  228. data/ext/cairo/rb_cairo_private.c +242 -0
  229. data/ext/cairo/rb_cairo_private.h +114 -0
  230. data/ext/cairo/rb_cairo_scaled_font.c +235 -0
  231. data/ext/cairo/rb_cairo_surface.c +1371 -0
  232. data/ext/cairo/rb_cairo_text_cluster.c +151 -0
  233. data/ext/cairo/rb_cairo_text_extents.c +221 -0
  234. data/extconf.rb +45 -0
  235. data/lib/1.8/cairo.so +0 -0
  236. data/lib/1.9/cairo.so +0 -0
  237. data/lib/cairo.rb +151 -0
  238. data/lib/cairo/color.rb +267 -0
  239. data/lib/cairo/colors.rb +656 -0
  240. data/lib/cairo/constants.rb +24 -0
  241. data/lib/cairo/context.rb +29 -0
  242. data/lib/cairo/context/blur.rb +45 -0
  243. data/lib/cairo/context/circle.rb +9 -0
  244. data/lib/cairo/context/color.rb +11 -0
  245. data/lib/cairo/context/path.rb +116 -0
  246. data/lib/cairo/context/rectangle.rb +33 -0
  247. data/lib/cairo/context/triangle.rb +12 -0
  248. data/lib/cairo/paper.rb +183 -0
  249. data/lib/cairo/papers.rb +41 -0
  250. data/lib/cairo/path.rb +15 -0
  251. data/lib/cairo/point.rb +7 -0
  252. data/misc/update-colors.rb +143 -0
  253. data/pkg-config.rb +313 -0
  254. data/samples/agg/README +4 -0
  255. data/samples/agg/aa_test.rb +304 -0
  256. data/samples/blur.rb +47 -0
  257. data/samples/pac.rb +99 -0
  258. data/samples/pac2.rb +171 -0
  259. data/samples/png.rb +45 -0
  260. data/samples/scalable.rb +56 -0
  261. data/samples/text-on-path.rb +60 -0
  262. data/samples/text2.rb +131 -0
  263. data/test-unit/Rakefile +30 -0
  264. data/test-unit/bin/testrb +5 -0
  265. data/test-unit/lib/test/unit.rb +280 -0
  266. data/test-unit/lib/test/unit/assertionfailederror.rb +14 -0
  267. data/test-unit/lib/test/unit/assertions.rb +722 -0
  268. data/test-unit/lib/test/unit/attribute.rb +125 -0
  269. data/test-unit/lib/test/unit/autorunner.rb +254 -0
  270. data/test-unit/lib/test/unit/collector.rb +43 -0
  271. data/test-unit/lib/test/unit/collector/descendant.rb +23 -0
  272. data/test-unit/lib/test/unit/collector/dir.rb +108 -0
  273. data/test-unit/lib/test/unit/collector/load.rb +135 -0
  274. data/test-unit/lib/test/unit/collector/objectspace.rb +34 -0
  275. data/test-unit/lib/test/unit/color.rb +61 -0
  276. data/test-unit/lib/test/unit/diff.rb +524 -0
  277. data/test-unit/lib/test/unit/error.rb +124 -0
  278. data/test-unit/lib/test/unit/exceptionhandler.rb +39 -0
  279. data/test-unit/lib/test/unit/failure.rb +110 -0
  280. data/test-unit/lib/test/unit/fixture.rb +185 -0
  281. data/test-unit/lib/test/unit/notification.rb +125 -0
  282. data/test-unit/lib/test/unit/omission.rb +143 -0
  283. data/test-unit/lib/test/unit/pending.rb +146 -0
  284. data/test-unit/lib/test/unit/priority.rb +146 -0
  285. data/test-unit/lib/test/unit/runner/console.rb +46 -0
  286. data/test-unit/lib/test/unit/runner/emacs.rb +8 -0
  287. data/test-unit/lib/test/unit/testcase.rb +281 -0
  288. data/test-unit/lib/test/unit/testresult.rb +89 -0
  289. data/test-unit/lib/test/unit/testsuite.rb +110 -0
  290. data/test-unit/lib/test/unit/ui/console/outputlevel.rb +14 -0
  291. data/test-unit/lib/test/unit/ui/console/testrunner.rb +195 -0
  292. data/test-unit/lib/test/unit/ui/emacs/testrunner.rb +49 -0
  293. data/test-unit/lib/test/unit/ui/testrunner.rb +20 -0
  294. data/test-unit/lib/test/unit/ui/testrunnermediator.rb +77 -0
  295. data/test-unit/lib/test/unit/ui/testrunnerutilities.rb +41 -0
  296. data/test-unit/lib/test/unit/util/backtracefilter.rb +41 -0
  297. data/test-unit/lib/test/unit/util/observable.rb +90 -0
  298. data/test-unit/lib/test/unit/util/procwrapper.rb +48 -0
  299. data/test-unit/lib/test/unit/version.rb +7 -0
  300. data/test-unit/sample/adder.rb +13 -0
  301. data/test-unit/sample/subtracter.rb +12 -0
  302. data/test-unit/sample/tc_adder.rb +18 -0
  303. data/test-unit/sample/tc_subtracter.rb +18 -0
  304. data/test-unit/sample/ts_examples.rb +7 -0
  305. data/test-unit/test/collector/test_descendant.rb +135 -0
  306. data/test-unit/test/collector/test_dir.rb +406 -0
  307. data/test-unit/test/collector/test_load.rb +333 -0
  308. data/test-unit/test/collector/test_objectspace.rb +98 -0
  309. data/test-unit/test/run-test.rb +13 -0
  310. data/test-unit/test/test_assertions.rb +693 -0
  311. data/test-unit/test/test_attribute.rb +86 -0
  312. data/test-unit/test/test_color.rb +37 -0
  313. data/test-unit/test/test_diff.rb +477 -0
  314. data/test-unit/test/test_emacs_runner.rb +60 -0
  315. data/test-unit/test/test_error.rb +26 -0
  316. data/test-unit/test/test_failure.rb +33 -0
  317. data/test-unit/test/test_fixture.rb +252 -0
  318. data/test-unit/test/test_notification.rb +33 -0
  319. data/test-unit/test/test_omission.rb +81 -0
  320. data/test-unit/test/test_pending.rb +70 -0
  321. data/test-unit/test/test_priority.rb +89 -0
  322. data/test-unit/test/test_testcase.rb +430 -0
  323. data/test-unit/test/test_testresult.rb +113 -0
  324. data/test-unit/test/test_testsuite.rb +129 -0
  325. data/test-unit/test/testunit_test_util.rb +14 -0
  326. data/test-unit/test/ui/test_testrunmediator.rb +20 -0
  327. data/test-unit/test/util/test_backtracefilter.rb +41 -0
  328. data/test-unit/test/util/test_observable.rb +102 -0
  329. data/test-unit/test/util/test_procwrapper.rb +36 -0
  330. data/test/cairo-test-utils.rb +18 -0
  331. data/test/run-test.rb +28 -0
  332. data/test/test_color.rb +17 -0
  333. data/test/test_constants.rb +16 -0
  334. data/test/test_context.rb +105 -0
  335. data/test/test_exception.rb +27 -0
  336. data/test/test_font_extents.rb +36 -0
  337. data/test/test_font_face.rb +244 -0
  338. data/test/test_font_options.rb +13 -0
  339. data/test/test_paper.rb +81 -0
  340. data/test/test_pkg_config.rb +123 -0
  341. data/test/test_scaled_font.rb +34 -0
  342. data/test/test_surface.rb +41 -0
  343. data/test/test_text_cluster.rb +32 -0
  344. data/test/test_text_extents.rb +40 -0
  345. data/test/test_text_to_glyphs_data.rb +51 -0
  346. data/tmp/x86-mingw32/cairo/1.8.7/fake.rb +6 -0
  347. data/tmp/x86-mingw32/cairo/1.8.7/mkmf.rb +1836 -0
  348. data/tmp/x86-mingw32/cairo/1.8.7/rbconfig.rb +183 -0
  349. data/tmp/x86-mingw32/cairo/1.9.2/fake.rb +6 -0
  350. data/tmp/x86-mingw32/cairo/1.9.2/mkmf.rb +2079 -0
  351. data/tmp/x86-mingw32/cairo/1.9.2/rbconfig.rb +226 -0
  352. metadata +437 -0
@@ -0,0 +1,41 @@
1
+ require 'cairo/paper'
2
+
3
+ module Cairo
4
+ class Paper
5
+ [
6
+ [841, 1189, "A0"],
7
+ [594, 841, "A1"],
8
+ [420, 594, "A2"],
9
+ [297, 420, "A3"],
10
+ [210, 297, "A4"],
11
+ [148, 210, "A5"],
12
+ [105, 148, "A6"],
13
+ [74, 105, "A7"],
14
+ [52, 74, "A8"],
15
+ [37, 52, "A9"],
16
+ [26, 37, "A10"],
17
+
18
+ [1030, 1456, "B0"],
19
+ [728, 1030, "B1"],
20
+ [515, 728, "B2"],
21
+ [364, 515, "B3"],
22
+ [257, 364, "B4"],
23
+ [182, 257, "B5"],
24
+ [128, 182, "B6"],
25
+ [91, 128, "B7"],
26
+ [64, 91, "B8"],
27
+ [45, 64, "B9"],
28
+ [32, 45, "B10"],
29
+
30
+ [215.9, 279.4, "letter"],
31
+ [215.9, 355.6, "legal"],
32
+ [279.9, 431.8, "tabloid"],
33
+ [100, 148, "Japanese postcard"],
34
+ ].each do |width, height, name|
35
+ constant_name = name.upcase.gsub(/ +/, '_')
36
+ const_set(constant_name, new(width, height, "mm", name))
37
+ const_set("#{constant_name}_LANDSCAPE",
38
+ new(height, width, "mm", "#{name} (landscape)"))
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,15 @@
1
+ require 'forwardable'
2
+
3
+ module Cairo
4
+ class Path
5
+ extend Forwardable
6
+ methods = %w(new_path new_sub_path move_to line_to curve_to
7
+ arc arc_negative rel_move_to rel_line_to rel_curve_to
8
+ rectangle rounded_rectangle circle)
9
+ def_delegators :@context, *methods
10
+
11
+ def close
12
+ @context.close_path
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,7 @@
1
+ module Cairo
2
+ class Point
3
+ def distance(other)
4
+ Math.sqrt((other.x - x) ** 2 + (other.y - y) ** 2)
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,143 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ begin
4
+ require 'scrapi'
5
+ rescue LoadError
6
+ require 'rubygems'
7
+ require 'scrapi'
8
+ end
9
+
10
+ def collect_popular_colors(src=nil)
11
+ src ||= URI("http://en.wikipedia.org/wiki/List_of_colors")
12
+
13
+ row = Scraper.define do
14
+ process "th > a:first-child", :name => :text
15
+ process "td:nth-child(3)", :hex_triplet => :text
16
+ process "td:nth-child(4)", :red => :text
17
+ process "td:nth-child(5)", :green => :text
18
+ process "td:nth-child(6)", :blue => :text
19
+ result :name, :hex_triplet, :red, :green, :blue
20
+ end
21
+
22
+ scraper = Scraper.define do
23
+ process "table > tr", "rows[]" => row
24
+ result :rows
25
+ end
26
+
27
+ scraper.scrape(src)
28
+ end
29
+
30
+ def collect_x11_colors(src=nil)
31
+ src ||= URI("http://en.wikipedia.org/wiki/X11_color_names")
32
+
33
+ row = Scraper.define do
34
+ process "th", :name => :text
35
+ process "td:nth-child(2)", :hex_triplet => "@bgcolor"
36
+ process "td:nth-child(6)", :red => :text
37
+ process "td:nth-child(7)", :green => :text
38
+ process "td:nth-child(8)", :blue => :text
39
+ result :name, :hex_triplet, :red, :green, :blue
40
+ end
41
+
42
+ scraper = Scraper.define do
43
+ process "table > tr", "rows[]" => row
44
+ result :rows
45
+ end
46
+
47
+ x11_colors = scraper.scrape(src)
48
+ x11_colors.collect do |color|
49
+ if color.name
50
+ color.name = color.name.gsub(/([a-z]|[A-Z]+)([A-Z])/, "\\1 \\2")
51
+ end
52
+ color
53
+ end
54
+ end
55
+
56
+ def constanize_color_name(name)
57
+ names = name.gsub(/é/, "e").upcase.split(/(?:\s*\(|\)\s*)/)
58
+ names = names.collect {|name| name.gsub(/[ \-]/, "_")}
59
+ if names[1] and ["WEB", "COLOR_WHEEL", "X11"].include?(names[1])
60
+ real_names = [names.join("_")]
61
+ if names == ["ORANGE", "COLOR_WHEEL"]
62
+ real_names << names.first
63
+ end
64
+ names = real_names
65
+ end
66
+ names
67
+ end
68
+
69
+ colors = collect_popular_colors
70
+ x11_colors = collect_x11_colors
71
+
72
+ top_dir = File.expand_path(File.join(File.dirname(__FILE__), ".."))
73
+ colors_rb = File.join(top_dir, "src", "lib", "cairo", "colors.rb")
74
+ File.open(colors_rb, "w") do |rb|
75
+ rb.puts <<-HEADER
76
+ require 'cairo/color'
77
+
78
+ module Cairo
79
+ module Color
80
+ HEADER
81
+
82
+ [
83
+ [colors, nil],
84
+ [x11_colors, "X11"]
85
+ ].each do |colors, mod|
86
+ indent = " " * 2
87
+ if mod
88
+ rb.puts("#{indent}module #{mod}")
89
+ indent << " "
90
+ end
91
+ colors.each do |color|
92
+ if color.name and color.hex_triplet and
93
+ color.red and color.green and color.blue
94
+ begin
95
+ names = constanize_color_name(color.name)
96
+
97
+ hexes = color.hex_triplet.scan(/[\da-f]{2,2}/i)
98
+ red_hex, green_hex, blue_hex = hexes.collect {|hex| hex.hex}
99
+
100
+ red = Integer(color.red)
101
+ green = Integer(color.green)
102
+ blue = Integer(color.blue)
103
+
104
+ if [red_hex, green_hex, blue_hex] != [red, green, blue]
105
+ warning_message = "Hex triplet(#{color.hex_triplet}) of "
106
+ warning_message << "#{color.name} is difference from RGB"
107
+ warning_message << "(#{red}, #{green}, #{blue}). "
108
+ if ["Alice Blue", "Old Rose"].include?(color.name)
109
+ warning_message << "Use hex triplet value."
110
+ red, green, blue = red_hex, green_hex, blue_hex
111
+ else
112
+ warning_message << "Use RGB value."
113
+ end
114
+ puts warning_message
115
+ end
116
+
117
+ r, g, b = [red, green, blue].collect {|v| v / 255.0}
118
+
119
+ rb.puts("#{indent}# #{color.name}: #{color.hex_triplet}")
120
+ name, *alias_names = names
121
+ rb.puts("#{indent}#{name} = RGB.new(#{r}, #{g}, #{b})")
122
+ alias_names.each do |alias_name|
123
+ rb.puts("#{indent}#{alias_name} = #{name}")
124
+ end
125
+ rescue ArgumentError
126
+ next
127
+ end
128
+ end
129
+ end
130
+
131
+ if mod
132
+ indent = indent[0..-3]
133
+ rb.puts("#{indent}end")
134
+ rb.puts("#{indent}include #{mod}")
135
+ rb.puts
136
+ end
137
+ end
138
+
139
+ rb.puts <<-FOOTER
140
+ end
141
+ end
142
+ FOOTER
143
+ end
@@ -0,0 +1,313 @@
1
+ # Copyright 2008-2009 Kouhei Sutou <kou@cozmixng.org>
2
+ # This file is made available under the same terms as Ruby.
3
+
4
+ require "rbconfig"
5
+
6
+ require 'mkmf'
7
+ require 'shellwords'
8
+ require 'English'
9
+ require 'pathname'
10
+
11
+ class PackageConfig
12
+ attr_accessor :msvc_syntax
13
+ def initialize(name, path=nil, msvc_syntax=false)
14
+ @name = name
15
+ @path = path || ENV["PKG_CONFIG_PATH"]
16
+ @path = [@path, guess_default_path].compact.join(separator)
17
+ @msvc_syntax = msvc_syntax
18
+ @variables = @declarations = nil
19
+ override_variables = with_config("override-variables", "")
20
+ @override_variables = parse_override_variables(override_variables)
21
+ end
22
+
23
+ def exist?
24
+ not pc.nil?
25
+ end
26
+
27
+ def requires
28
+ parse_requires(declaration("Requires"))
29
+ end
30
+
31
+ def requires_private
32
+ parse_requires(declaration("Requires.private"))
33
+ end
34
+
35
+ def cflags
36
+ path_flags, other_flags = collect_cflags
37
+ (other_flags + path_flags).join(" ")
38
+ end
39
+
40
+ def cflags_only_I
41
+ collect_cflags[0].join(" ")
42
+ end
43
+
44
+ def libs
45
+ path_flags, other_flags = collect_libs
46
+ (other_flags + path_flags).join(" ")
47
+ end
48
+
49
+ def libs_only_l
50
+ collect_libs[1].find_all do |arg|
51
+ if @msvc_syntax
52
+ /\.lib\z/ =~ arg
53
+ else
54
+ /\A-l/ =~ arg
55
+ end
56
+ end.join(" ")
57
+ end
58
+
59
+ def version
60
+ declaration("Version")
61
+ end
62
+
63
+ def variable(name)
64
+ parse_pc if @variables.nil?
65
+ expand_value(@override_variables[name] || @variables[name])
66
+ end
67
+
68
+ def declaration(name)
69
+ parse_pc if @declarations.nil?
70
+ expand_value(@declarations[name])
71
+ end
72
+
73
+ private
74
+ def pc
75
+ @path.split(separator).each do |path|
76
+ pc_name = File.join(path, "#{@name}.pc")
77
+ return pc_name if File.exist?(pc_name)
78
+ end
79
+ return nil
80
+ end
81
+
82
+ def separator
83
+ File.expand_path(".").index(":") ? ";" : ":"
84
+ end
85
+
86
+ def collect_cflags
87
+ all_cflags = (requires_private + requires.reverse).collect do |package|
88
+ self.class.new(package, @path, @msvc_syntax).cflags
89
+ end
90
+ all_cflags = [declaration("Cflags")] + all_cflags
91
+ all_cflags = all_cflags.join(" ").gsub(/-I /, '-I').split.uniq
92
+ path_flags, other_flags = all_cflags.partition {|flag| /\A-I/ =~ flag}
93
+ path_flags = path_flags.reject do |flag|
94
+ flag == "-I/usr/include"
95
+ end
96
+ if @msvc_syntax
97
+ path_flags = path_flags.collect do |flag|
98
+ flag.gsub(/\A-I/, "/I")
99
+ end
100
+ end
101
+ [path_flags, other_flags]
102
+ end
103
+
104
+ def collect_libs
105
+ all_libs = requires.collect do |package|
106
+ self.class.new(package, @path, @msvc_syntax).libs
107
+ end
108
+ all_libs = [declaration("Libs")] + all_libs
109
+ all_libs = all_libs.join(" ").gsub(/-([Ll]) /, '\1').split.uniq
110
+ path_flags, other_flags = all_libs.partition {|flag| /\A-L/ =~ flag}
111
+ path_flags = path_flags.reject do |flag|
112
+ /\A-L\/usr\/lib(?:64)?\z/ =~ flag
113
+ end
114
+ if @msvc_syntax
115
+ path_flags = path_flags.collect do |flag|
116
+ flag.gsub(/\A-L/, "/libpath:")
117
+ end
118
+ other_flags = other_flags.collect do |flag|
119
+ if /\A-l/ =~ flag
120
+ "#{$POSTMATCH}.lib"
121
+ else
122
+ flag
123
+ end
124
+ end
125
+ end
126
+ [path_flags, other_flags]
127
+ end
128
+
129
+ IDENTIFIER_RE = /[\w\d_.]+/
130
+ def parse_pc
131
+ raise ".pc for #{@name} doesn't exist." unless exist?
132
+ @variables = {}
133
+ @declarations = {}
134
+ File.open(pc) do |input|
135
+ input.each_line do |line|
136
+ line = line.gsub(/#.*/, '').strip
137
+ next if line.empty?
138
+ case line
139
+ when /^(#{IDENTIFIER_RE})=/
140
+ @variables[$1] = $POSTMATCH.strip
141
+ when /^(#{IDENTIFIER_RE}):/
142
+ @declarations[$1] = $POSTMATCH.strip
143
+ end
144
+ end
145
+ end
146
+ end
147
+
148
+ def parse_requires(requires)
149
+ return [] if requires.nil?
150
+ requires_without_version = requires.gsub(/[<>]?=\s*[\d.]+\s*/, '')
151
+ requires_without_version.split(/[,\s]+/)
152
+ end
153
+
154
+ def parse_override_variables(override_variables)
155
+ variables = {}
156
+ override_variables.split(",").each do |variable|
157
+ name, value = variable.split("=", 2)
158
+ variables[name] = value
159
+ end
160
+ variables
161
+ end
162
+
163
+ def expand_value(value)
164
+ return nil if value.nil?
165
+ value.gsub(/\$\{(#{IDENTIFIER_RE})\}/) do
166
+ variable($1)
167
+ end
168
+ end
169
+
170
+ def search_pkg_config_from_path(pkg_config)
171
+ (ENV["PATH"] || "").split(separator).each do |path|
172
+ try_pkg_config = Pathname(path) + pkg_config
173
+ return try_pkg_config if try_pkg_config.exist?
174
+ end
175
+ nil
176
+ end
177
+
178
+ def search_pkg_config_by_dln_find_exe(pkg_config)
179
+ begin
180
+ require "dl/import"
181
+ rescue LoadError
182
+ return nil
183
+ end
184
+ dln = Module.new
185
+ dln.module_eval do
186
+ if DL.const_defined?(:Importer)
187
+ extend DL::Importer
188
+ else
189
+ extend DL::Importable
190
+ end
191
+ begin
192
+ dlload RbConfig::CONFIG["LIBRUBY"]
193
+ rescue RuntimeError
194
+ return nil if $!.message == "unknown error"
195
+ return nil if /: image not found\z/ =~ $!.message
196
+ raise
197
+ rescue DL::DLError
198
+ return nil
199
+ end
200
+ extern "const char *dln_find_exe(const char *, const char *)"
201
+ end
202
+ path = dln.dln_find_exe(pkg_config.to_s, nil)
203
+ if path.size.zero?
204
+ nil
205
+ else
206
+ Pathname(path.to_s)
207
+ end
208
+ end
209
+
210
+ def guess_default_path
211
+ default_path = ["/usr/local/lib64/pkgconfig",
212
+ "/usr/local/lib/pkgconfig",
213
+ "/usr/local/libdata/pkgconfig",
214
+ "/opt/local/lib/pkgconfig",
215
+ "/usr/lib64/pkgconfig",
216
+ "/usr/lib/pkgconfig",
217
+ "/usr/X11/lib/pkgconfig/",
218
+ "/usr/share/pkgconfig"].join(separator)
219
+ libdir = ENV["PKG_CONFIG_LIBDIR"]
220
+ default_path = [libdir, default_path].join(separator) if libdir
221
+
222
+ pkg_config = with_config("pkg-config", ENV["PKG_CONFIG"] || "pkg-config")
223
+ pkg_config = Pathname.new(pkg_config)
224
+ unless pkg_config.absolute?
225
+ found_pkg_config = search_pkg_config_from_path(pkg_config)
226
+ pkg_config = found_pkg_config if found_pkg_config
227
+ end
228
+ unless pkg_config.absolute?
229
+ found_pkg_config = search_pkg_config_by_dln_find_exe(pkg_config)
230
+ pkg_config = found_pkg_config if found_pkg_config
231
+ end
232
+
233
+ return default_path unless pkg_config.absolute?
234
+ [(pkg_config.parent.parent + "lib" + "pkgconfig").to_s,
235
+ (pkg_config.parent.parent + "libdata" + "pkgconfig").to_s,
236
+ default_path].join(separator)
237
+ end
238
+ end
239
+
240
+ module PKGConfig
241
+ module_function
242
+ def msvc?
243
+ /mswin32/.match(RUBY_PLATFORM) and /^cl\b/.match(Config::CONFIG['CC'])
244
+ end
245
+
246
+ def package_config(package)
247
+ PackageConfig.new(package, nil, msvc?)
248
+ end
249
+
250
+ def exist?(pkg)
251
+ package_config(pkg).exist?
252
+ end
253
+
254
+ def libs(pkg)
255
+ package_config(pkg).libs
256
+ end
257
+
258
+ def libs_only_l(pkg)
259
+ package_config(pkg).libs_only_l
260
+ end
261
+
262
+ def cflags(pkg)
263
+ package_config(pkg).cflags
264
+ end
265
+
266
+ def cflags_only_I(pkg)
267
+ package_config(pkg).cflags_only_I
268
+ end
269
+
270
+ def modversion(pkg)
271
+ package_config(pkg).version
272
+ end
273
+
274
+ def check_version?(pkg, major = 0, minor = 0, micro = 0)
275
+ return false unless exist?(pkg)
276
+ ver = modversion(pkg).split(".").collect{|item| item.to_i}
277
+ (0..2).each {|i| ver[i] = 0 unless ver[i]}
278
+
279
+ (ver[0] > major ||
280
+ (ver[0] == major && ver[1] > minor) ||
281
+ (ver[0] == major && ver[1] == minor &&
282
+ ver[2] >= micro))
283
+ end
284
+
285
+ def have_package(pkg, major = nil, minor = 0, micro = 0)
286
+ if major.nil?
287
+ STDOUT.print("checking for #{pkg}... ")
288
+ else
289
+ STDOUT.print("checking for #{pkg} version (>= #{major}.#{minor}.#{micro})... ")
290
+ end
291
+ major ||= 0
292
+ STDOUT.flush
293
+ if check_version?(pkg, major, minor, micro)
294
+ STDOUT.print "yes\n"
295
+ libraries = libs_only_l(pkg)
296
+ dldflags = libs(pkg)
297
+ dldflags = (Shellwords.shellwords(dldflags) -
298
+ Shellwords.shellwords(libraries))
299
+ dldflags = dldflags.map {|s| /\s/ =~ s ? "\"#{s}\"" : s }.join(' ')
300
+ $libs += ' ' + libraries
301
+ if /mswin32/ =~ RUBY_PLATFORM
302
+ $DLDFLAGS += ' ' + dldflags
303
+ else
304
+ $LDFLAGS += ' ' + dldflags
305
+ end
306
+ $CFLAGS += ' ' + cflags(pkg)
307
+ true
308
+ else
309
+ STDOUT.print "no\n"
310
+ false
311
+ end
312
+ end
313
+ end