prawn-graph 0.0.1

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.
Files changed (317) hide show
  1. data/README.markdown +3 -0
  2. data/Rakefile +34 -0
  3. data/examples/example_helper.rb +10 -0
  4. data/examples/graph/advanced_bar_chart.rb +22 -0
  5. data/examples/graph/bar_chart.rb +18 -0
  6. data/examples/graph/line_chart.rb +18 -0
  7. data/lib/prawn/graph.rb +94 -0
  8. data/lib/prawn/graph/bar.rb +172 -0
  9. data/lib/prawn/graph/chart.rb +4 -0
  10. data/lib/prawn/graph/errors.rb +6 -0
  11. data/lib/prawn/graph/grid.rb +43 -0
  12. data/lib/prawn/graph/line.rb +43 -0
  13. data/vendor/prawn-core/COPYING +340 -0
  14. data/vendor/prawn-core/HACKING +46 -0
  15. data/vendor/prawn-core/LICENSE +56 -0
  16. data/vendor/prawn-core/README +138 -0
  17. data/vendor/prawn-core/Rakefile +75 -0
  18. data/vendor/prawn-core/bench/afm_text_bench.rb +18 -0
  19. data/vendor/prawn-core/bench/png_type_6.rb +15 -0
  20. data/vendor/prawn-core/bench/ttf_text_bench.rb +19 -0
  21. data/vendor/prawn-core/bugs/indentation_across_pagebreaks.rb +15 -0
  22. data/vendor/prawn-core/bugs/resolved/canvas_sets_y_to_0.rb +15 -0
  23. data/vendor/prawn-core/bugs/resolved/png_barcode_issue.rb +11 -0
  24. data/vendor/prawn-core/bugs/resolved/transaction_page_number_issue_79.rb +21 -0
  25. data/vendor/prawn-core/bugs/resolved/ttf_fails_in_transactions.rb +24 -0
  26. data/vendor/prawn-core/data/encodings/win_ansi.txt +29 -0
  27. data/vendor/prawn-core/data/fonts/Action Man.dfont +0 -0
  28. data/vendor/prawn-core/data/fonts/Activa.ttf +0 -0
  29. data/vendor/prawn-core/data/fonts/Chalkboard.ttf +0 -0
  30. data/vendor/prawn-core/data/fonts/Courier-Bold.afm +342 -0
  31. data/vendor/prawn-core/data/fonts/Courier-BoldOblique.afm +342 -0
  32. data/vendor/prawn-core/data/fonts/Courier-Oblique.afm +342 -0
  33. data/vendor/prawn-core/data/fonts/Courier.afm +342 -0
  34. data/vendor/prawn-core/data/fonts/DejaVuSans.ttf +0 -0
  35. data/vendor/prawn-core/data/fonts/Dustismo_Roman.ttf +0 -0
  36. data/vendor/prawn-core/data/fonts/Helvetica-Bold.afm +2827 -0
  37. data/vendor/prawn-core/data/fonts/Helvetica-BoldOblique.afm +2827 -0
  38. data/vendor/prawn-core/data/fonts/Helvetica-Oblique.afm +3051 -0
  39. data/vendor/prawn-core/data/fonts/Helvetica.afm +3051 -0
  40. data/vendor/prawn-core/data/fonts/MustRead.html +19 -0
  41. data/vendor/prawn-core/data/fonts/Symbol.afm +213 -0
  42. data/vendor/prawn-core/data/fonts/Times-Bold.afm +2588 -0
  43. data/vendor/prawn-core/data/fonts/Times-BoldItalic.afm +2384 -0
  44. data/vendor/prawn-core/data/fonts/Times-Italic.afm +2667 -0
  45. data/vendor/prawn-core/data/fonts/Times-Roman.afm +2419 -0
  46. data/vendor/prawn-core/data/fonts/ZapfDingbats.afm +225 -0
  47. data/vendor/prawn-core/data/fonts/comicsans.ttf +0 -0
  48. data/vendor/prawn-core/data/fonts/gkai00mp.ttf +0 -0
  49. data/vendor/prawn-core/data/images/16bit.alpha +0 -0
  50. data/vendor/prawn-core/data/images/16bit.dat +0 -0
  51. data/vendor/prawn-core/data/images/16bit.png +0 -0
  52. data/vendor/prawn-core/data/images/arrow.png +0 -0
  53. data/vendor/prawn-core/data/images/arrow2.png +0 -0
  54. data/vendor/prawn-core/data/images/barcode_issue.png +0 -0
  55. data/vendor/prawn-core/data/images/dice.alpha +0 -0
  56. data/vendor/prawn-core/data/images/dice.dat +0 -0
  57. data/vendor/prawn-core/data/images/dice.png +0 -0
  58. data/vendor/prawn-core/data/images/dice_interlaced.png +0 -0
  59. data/vendor/prawn-core/data/images/fractal.jpg +0 -0
  60. data/vendor/prawn-core/data/images/letterhead.jpg +0 -0
  61. data/vendor/prawn-core/data/images/page_white_text.alpha +0 -0
  62. data/vendor/prawn-core/data/images/page_white_text.dat +0 -0
  63. data/vendor/prawn-core/data/images/page_white_text.png +0 -0
  64. data/vendor/prawn-core/data/images/pigs.jpg +0 -0
  65. data/vendor/prawn-core/data/images/rails.dat +0 -0
  66. data/vendor/prawn-core/data/images/rails.png +0 -0
  67. data/vendor/prawn-core/data/images/ruport.png +0 -0
  68. data/vendor/prawn-core/data/images/ruport_data.dat +0 -0
  69. data/vendor/prawn-core/data/images/ruport_transparent.png +0 -0
  70. data/vendor/prawn-core/data/images/ruport_type0.png +0 -0
  71. data/vendor/prawn-core/data/images/stef.jpg +0 -0
  72. data/vendor/prawn-core/data/images/tru256.bmp +0 -0
  73. data/vendor/prawn-core/data/images/web-links.dat +1 -0
  74. data/vendor/prawn-core/data/images/web-links.png +0 -0
  75. data/vendor/prawn-core/data/shift_jis_text.txt +1 -0
  76. data/vendor/prawn-core/examples/bounding_box/bounding_boxes.rb +43 -0
  77. data/vendor/prawn-core/examples/bounding_box/indentation.rb +34 -0
  78. data/vendor/prawn-core/examples/bounding_box/russian_boxes.rb +36 -0
  79. data/vendor/prawn-core/examples/bounding_box/stretched_nesting.rb +67 -0
  80. data/vendor/prawn-core/examples/column_box/column_box_example.rb +43 -0
  81. data/vendor/prawn-core/examples/example_helper.rb +3 -0
  82. data/vendor/prawn-core/examples/general/background.rb +23 -0
  83. data/vendor/prawn-core/examples/general/canvas.rb +15 -0
  84. data/vendor/prawn-core/examples/general/context_sensitive_headers.rb +37 -0
  85. data/vendor/prawn-core/examples/general/float.rb +11 -0
  86. data/vendor/prawn-core/examples/general/margin.rb +36 -0
  87. data/vendor/prawn-core/examples/general/measurement_units.rb +51 -0
  88. data/vendor/prawn-core/examples/general/metadata-info.rb +16 -0
  89. data/vendor/prawn-core/examples/general/multi_page_layout.rb +18 -0
  90. data/vendor/prawn-core/examples/general/outlines.rb +50 -0
  91. data/vendor/prawn-core/examples/general/page_geometry.rb +31 -0
  92. data/vendor/prawn-core/examples/general/page_numbering.rb +15 -0
  93. data/vendor/prawn-core/examples/general/repeaters.rb +47 -0
  94. data/vendor/prawn-core/examples/general/stamp.rb +41 -0
  95. data/vendor/prawn-core/examples/graphics/basic_images.rb +23 -0
  96. data/vendor/prawn-core/examples/graphics/cmyk.rb +12 -0
  97. data/vendor/prawn-core/examples/graphics/curves.rb +11 -0
  98. data/vendor/prawn-core/examples/graphics/hexagon.rb +13 -0
  99. data/vendor/prawn-core/examples/graphics/image_fit.rb +15 -0
  100. data/vendor/prawn-core/examples/graphics/image_flow.rb +37 -0
  101. data/vendor/prawn-core/examples/graphics/image_position.rb +17 -0
  102. data/vendor/prawn-core/examples/graphics/line.rb +32 -0
  103. data/vendor/prawn-core/examples/graphics/png_types.rb +22 -0
  104. data/vendor/prawn-core/examples/graphics/polygons.rb +16 -0
  105. data/vendor/prawn-core/examples/graphics/remote_images.rb +12 -0
  106. data/vendor/prawn-core/examples/graphics/rounded_polygons.rb +19 -0
  107. data/vendor/prawn-core/examples/graphics/rounded_rectangle.rb +20 -0
  108. data/vendor/prawn-core/examples/graphics/ruport_style_helpers.rb +19 -0
  109. data/vendor/prawn-core/examples/graphics/stroke_bounds.rb +20 -0
  110. data/vendor/prawn-core/examples/graphics/stroke_cap_and_join.rb +45 -0
  111. data/vendor/prawn-core/examples/graphics/stroke_dash.rb +42 -0
  112. data/vendor/prawn-core/examples/graphics/transformations.rb +52 -0
  113. data/vendor/prawn-core/examples/graphics/transparency.rb +26 -0
  114. data/vendor/prawn-core/examples/m17n/chinese_text_wrapping.rb +17 -0
  115. data/vendor/prawn-core/examples/m17n/euro.rb +15 -0
  116. data/vendor/prawn-core/examples/m17n/sjis.rb +28 -0
  117. data/vendor/prawn-core/examples/m17n/utf8.rb +13 -0
  118. data/vendor/prawn-core/examples/m17n/win_ansi_charset.rb +54 -0
  119. data/vendor/prawn-core/examples/text/alignment.rb +18 -0
  120. data/vendor/prawn-core/examples/text/dfont.rb +48 -0
  121. data/vendor/prawn-core/examples/text/family_based_styling.rb +24 -0
  122. data/vendor/prawn-core/examples/text/font_calculations.rb +91 -0
  123. data/vendor/prawn-core/examples/text/font_size.rb +33 -0
  124. data/vendor/prawn-core/examples/text/indent_paragraphs.rb +18 -0
  125. data/vendor/prawn-core/examples/text/kerning.rb +30 -0
  126. data/vendor/prawn-core/examples/text/rotated.rb +98 -0
  127. data/vendor/prawn-core/examples/text/simple_text.rb +17 -0
  128. data/vendor/prawn-core/examples/text/simple_text_ttf.rb +17 -0
  129. data/vendor/prawn-core/examples/text/span.rb +29 -0
  130. data/vendor/prawn-core/examples/text/text_box.rb +88 -0
  131. data/vendor/prawn-core/examples/text/text_box_returning_excess.rb +51 -0
  132. data/vendor/prawn-core/examples/text/text_flow.rb +67 -0
  133. data/vendor/prawn-core/lib/prawn/byte_string.rb +7 -0
  134. data/vendor/prawn-core/lib/prawn/compatibility.rb +51 -0
  135. data/vendor/prawn-core/lib/prawn/core.rb +87 -0
  136. data/vendor/prawn-core/lib/prawn/core/page.rb +88 -0
  137. data/vendor/prawn-core/lib/prawn/core/text.rb +65 -0
  138. data/vendor/prawn-core/lib/prawn/document.rb +596 -0
  139. data/vendor/prawn-core/lib/prawn/document/annotations.rb +65 -0
  140. data/vendor/prawn-core/lib/prawn/document/bounding_box.rb +402 -0
  141. data/vendor/prawn-core/lib/prawn/document/column_box.rb +113 -0
  142. data/vendor/prawn-core/lib/prawn/document/destinations.rb +92 -0
  143. data/vendor/prawn-core/lib/prawn/document/graphics_state.rb +49 -0
  144. data/vendor/prawn-core/lib/prawn/document/internals.rb +153 -0
  145. data/vendor/prawn-core/lib/prawn/document/page_geometry.rb +136 -0
  146. data/vendor/prawn-core/lib/prawn/document/snapshot.rb +80 -0
  147. data/vendor/prawn-core/lib/prawn/document/span.rb +55 -0
  148. data/vendor/prawn-core/lib/prawn/encoding.rb +121 -0
  149. data/vendor/prawn-core/lib/prawn/errors.rb +83 -0
  150. data/vendor/prawn-core/lib/prawn/font.rb +329 -0
  151. data/vendor/prawn-core/lib/prawn/font/afm.rb +217 -0
  152. data/vendor/prawn-core/lib/prawn/font/dfont.rb +34 -0
  153. data/vendor/prawn-core/lib/prawn/font/ttf.rb +341 -0
  154. data/vendor/prawn-core/lib/prawn/graphics.rb +321 -0
  155. data/vendor/prawn-core/lib/prawn/graphics/cap_style.rb +38 -0
  156. data/vendor/prawn-core/lib/prawn/graphics/color.rb +205 -0
  157. data/vendor/prawn-core/lib/prawn/graphics/dash.rb +71 -0
  158. data/vendor/prawn-core/lib/prawn/graphics/join_style.rb +38 -0
  159. data/vendor/prawn-core/lib/prawn/graphics/transformation.rb +157 -0
  160. data/vendor/prawn-core/lib/prawn/graphics/transparency.rb +99 -0
  161. data/vendor/prawn-core/lib/prawn/images.rb +337 -0
  162. data/vendor/prawn-core/lib/prawn/images/jpg.rb +46 -0
  163. data/vendor/prawn-core/lib/prawn/images/png.rb +219 -0
  164. data/vendor/prawn-core/lib/prawn/literal_string.rb +14 -0
  165. data/vendor/prawn-core/lib/prawn/measurement_extensions.rb +46 -0
  166. data/vendor/prawn-core/lib/prawn/measurements.rb +71 -0
  167. data/vendor/prawn-core/lib/prawn/name_tree.rb +166 -0
  168. data/vendor/prawn-core/lib/prawn/object_store.rb +93 -0
  169. data/vendor/prawn-core/lib/prawn/outline.rb +278 -0
  170. data/vendor/prawn-core/lib/prawn/pdf_object.rb +83 -0
  171. data/vendor/prawn-core/lib/prawn/reference.rb +92 -0
  172. data/vendor/prawn-core/lib/prawn/repeater.rb +129 -0
  173. data/vendor/prawn-core/lib/prawn/stamp.rb +128 -0
  174. data/vendor/prawn-core/lib/prawn/text.rb +271 -0
  175. data/vendor/prawn-core/lib/prawn/text/box.rb +414 -0
  176. data/vendor/prawn-core/meta/Rakefile +36 -0
  177. data/vendor/prawn-core/meta/lib/prawn.rb +2 -0
  178. data/vendor/prawn-core/reference_pdfs/alignment.pdf +229 -0
  179. data/vendor/prawn-core/reference_pdfs/background.pdf +0 -0
  180. data/vendor/prawn-core/reference_pdfs/basic_images.pdf +0 -0
  181. data/vendor/prawn-core/reference_pdfs/bounding_boxes.pdf +128 -0
  182. data/vendor/prawn-core/reference_pdfs/canvas.pdf +78 -0
  183. data/vendor/prawn-core/reference_pdfs/chinese_flow.pdf +0 -0
  184. data/vendor/prawn-core/reference_pdfs/cmyk.pdf +0 -0
  185. data/vendor/prawn-core/reference_pdfs/column_box.pdf +3671 -0
  186. data/vendor/prawn-core/reference_pdfs/context_sensitive_headers.pdf +2331 -0
  187. data/vendor/prawn-core/reference_pdfs/curves.pdf +62 -0
  188. data/vendor/prawn-core/reference_pdfs/dfont.pdf +0 -0
  189. data/vendor/prawn-core/reference_pdfs/euro.pdf +75 -0
  190. data/vendor/prawn-core/reference_pdfs/family_style.pdf +286 -0
  191. data/vendor/prawn-core/reference_pdfs/flow.pdf +964 -0
  192. data/vendor/prawn-core/reference_pdfs/font_calculations.pdf +0 -0
  193. data/vendor/prawn-core/reference_pdfs/font_size.pdf +142 -0
  194. data/vendor/prawn-core/reference_pdfs/hexagon.pdf +61 -0
  195. data/vendor/prawn-core/reference_pdfs/image-flow.pdf +0 -0
  196. data/vendor/prawn-core/reference_pdfs/image_fit.pdf +0 -0
  197. data/vendor/prawn-core/reference_pdfs/image_position.pdf +0 -0
  198. data/vendor/prawn-core/reference_pdfs/indentation.pdf +124 -0
  199. data/vendor/prawn-core/reference_pdfs/kerning.pdf +0 -0
  200. data/vendor/prawn-core/reference_pdfs/landscape_a4.pdf +52 -0
  201. data/vendor/prawn-core/reference_pdfs/landscape_legal.pdf +52 -0
  202. data/vendor/prawn-core/reference_pdfs/landscape_letter.pdf +52 -0
  203. data/vendor/prawn-core/reference_pdfs/lines.pdf +116 -0
  204. data/vendor/prawn-core/reference_pdfs/margin.pdf +3850 -0
  205. data/vendor/prawn-core/reference_pdfs/measurement_units.pdf +4667 -0
  206. data/vendor/prawn-core/reference_pdfs/metadata-info.pdf +88 -0
  207. data/vendor/prawn-core/reference_pdfs/multi-layout.pdf +209 -0
  208. data/vendor/prawn-core/reference_pdfs/page_with_numbering.pdf +156 -0
  209. data/vendor/prawn-core/reference_pdfs/png_types.pdf +0 -0
  210. data/vendor/prawn-core/reference_pdfs/portrait_a4.pdf +52 -0
  211. data/vendor/prawn-core/reference_pdfs/portrait_legal.pdf +52 -0
  212. data/vendor/prawn-core/reference_pdfs/portrait_letter.pdf +52 -0
  213. data/vendor/prawn-core/reference_pdfs/pretty_polygons.pdf +122 -0
  214. data/vendor/prawn-core/reference_pdfs/remote_images.pdf +0 -0
  215. data/vendor/prawn-core/reference_pdfs/ruport.pdf +101 -0
  216. data/vendor/prawn-core/reference_pdfs/russian_boxes.pdf +2780 -0
  217. data/vendor/prawn-core/reference_pdfs/simple_text.pdf +136 -0
  218. data/vendor/prawn-core/reference_pdfs/simple_text_ttf.pdf +0 -0
  219. data/vendor/prawn-core/reference_pdfs/sjis.pdf +0 -0
  220. data/vendor/prawn-core/reference_pdfs/span.pdf +1975 -0
  221. data/vendor/prawn-core/reference_pdfs/stamp.pdf +649 -0
  222. data/vendor/prawn-core/reference_pdfs/stretched_nesting.pdf +200 -0
  223. data/vendor/prawn-core/reference_pdfs/stroke_bounds.pdf +135 -0
  224. data/vendor/prawn-core/reference_pdfs/stroke_cap_and_join.pdf +80 -0
  225. data/vendor/prawn-core/reference_pdfs/stroke_dash.pdf +457 -0
  226. data/vendor/prawn-core/reference_pdfs/text_box.pdf +962 -0
  227. data/vendor/prawn-core/reference_pdfs/text_box_returning_excess.pdf +271 -0
  228. data/vendor/prawn-core/reference_pdfs/transparency.pdf +347 -0
  229. data/vendor/prawn-core/reference_pdfs/utf8.pdf +0 -0
  230. data/vendor/prawn-core/reference_pdfs/win-ansi.pdf +6172 -0
  231. data/vendor/prawn-core/spec/annotations_spec.rb +90 -0
  232. data/vendor/prawn-core/spec/bounding_box_spec.rb +185 -0
  233. data/vendor/prawn-core/spec/destinations_spec.rb +15 -0
  234. data/vendor/prawn-core/spec/document_spec.rb +408 -0
  235. data/vendor/prawn-core/spec/font_spec.rb +314 -0
  236. data/vendor/prawn-core/spec/graphics_spec.rb +438 -0
  237. data/vendor/prawn-core/spec/images_spec.rb +79 -0
  238. data/vendor/prawn-core/spec/jpg_spec.rb +25 -0
  239. data/vendor/prawn-core/spec/measurement_units_spec.rb +23 -0
  240. data/vendor/prawn-core/spec/name_tree_spec.rb +112 -0
  241. data/vendor/prawn-core/spec/object_store_spec.rb +75 -0
  242. data/vendor/prawn-core/spec/outline_spec.rb +229 -0
  243. data/vendor/prawn-core/spec/pdf_object_spec.rb +122 -0
  244. data/vendor/prawn-core/spec/png_spec.rb +236 -0
  245. data/vendor/prawn-core/spec/reference_spec.rb +82 -0
  246. data/vendor/prawn-core/spec/repeater_spec.rb +96 -0
  247. data/vendor/prawn-core/spec/snapshot_spec.rb +138 -0
  248. data/vendor/prawn-core/spec/span_spec.rb +49 -0
  249. data/vendor/prawn-core/spec/spec_helper.rb +24 -0
  250. data/vendor/prawn-core/spec/stamp_spec.rb +108 -0
  251. data/vendor/prawn-core/spec/stroke_styles_spec.rb +152 -0
  252. data/vendor/prawn-core/spec/text_at_spec.rb +119 -0
  253. data/vendor/prawn-core/spec/text_box_spec.rb +603 -0
  254. data/vendor/prawn-core/spec/text_spec.rb +308 -0
  255. data/vendor/prawn-core/spec/transparency_spec.rb +75 -0
  256. data/vendor/prawn-core/vendor/pdf-inspector/README +18 -0
  257. data/vendor/prawn-core/vendor/pdf-inspector/lib/pdf/inspector.rb +26 -0
  258. data/vendor/prawn-core/vendor/pdf-inspector/lib/pdf/inspector/extgstate.rb +18 -0
  259. data/vendor/prawn-core/vendor/pdf-inspector/lib/pdf/inspector/graphics.rb +131 -0
  260. data/vendor/prawn-core/vendor/pdf-inspector/lib/pdf/inspector/page.rb +25 -0
  261. data/vendor/prawn-core/vendor/pdf-inspector/lib/pdf/inspector/text.rb +31 -0
  262. data/vendor/prawn-core/vendor/pdf-inspector/lib/pdf/inspector/xobject.rb +19 -0
  263. data/vendor/prawn-core/vendor/ttfunk/data/fonts/DejaVuSans.ttf +0 -0
  264. data/vendor/prawn-core/vendor/ttfunk/data/fonts/comicsans.ttf +0 -0
  265. data/vendor/prawn-core/vendor/ttfunk/example.rb +45 -0
  266. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk.rb +102 -0
  267. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/directory.rb +17 -0
  268. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/encoding/mac_roman.rb +88 -0
  269. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/encoding/windows_1252.rb +69 -0
  270. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/reader.rb +44 -0
  271. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/resource_file.rb +78 -0
  272. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/subset.rb +18 -0
  273. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/subset/base.rb +141 -0
  274. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/subset/mac_roman.rb +46 -0
  275. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/subset/unicode.rb +48 -0
  276. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/subset/unicode_8bit.rb +63 -0
  277. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/subset/windows_1252.rb +51 -0
  278. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/subset_collection.rb +72 -0
  279. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table.rb +46 -0
  280. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/cmap.rb +34 -0
  281. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/cmap/format00.rb +54 -0
  282. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/cmap/format04.rb +126 -0
  283. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/cmap/subtable.rb +79 -0
  284. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/glyf.rb +64 -0
  285. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/glyf/compound.rb +81 -0
  286. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/glyf/simple.rb +37 -0
  287. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/head.rb +44 -0
  288. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/hhea.rb +41 -0
  289. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/hmtx.rb +47 -0
  290. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/kern.rb +79 -0
  291. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/kern/format0.rb +62 -0
  292. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/loca.rb +43 -0
  293. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/maxp.rb +40 -0
  294. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/name.rb +119 -0
  295. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/os2.rb +78 -0
  296. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/post.rb +91 -0
  297. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/post/format10.rb +43 -0
  298. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/post/format20.rb +35 -0
  299. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/post/format25.rb +23 -0
  300. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/post/format30.rb +17 -0
  301. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/post/format40.rb +17 -0
  302. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/simple.rb +14 -0
  303. data/vendor/prawn-core/www/index.html +196 -0
  304. data/vendor/prawn-core/www/media/bounding_boxes.pdf +146 -0
  305. data/vendor/prawn-core/www/media/bounding_boxes.png +0 -0
  306. data/vendor/prawn-core/www/media/bounding_boxes_out.png +0 -0
  307. data/vendor/prawn-core/www/media/fancy_table.pdf +350 -0
  308. data/vendor/prawn-core/www/media/image.pdf +0 -0
  309. data/vendor/prawn-core/www/media/images.png +0 -0
  310. data/vendor/prawn-core/www/media/prawn_logo.png +0 -0
  311. data/vendor/prawn-core/www/media/tables.png +0 -0
  312. data/vendor/prawn-core/www/media/utf8.pdf +0 -0
  313. data/vendor/prawn-core/www/media/utf8.png +0 -0
  314. data/vendor/prawn-core/www/prawn-Chinese.html +113 -0
  315. data/vendor/prawn-core/www/prawn.css +86 -0
  316. data/vendor/prawn-core/www/twilight.css +266 -0
  317. metadata +374 -0
@@ -0,0 +1,321 @@
1
+ # encoding: utf-8
2
+
3
+ # graphics.rb : Implements PDF drawing primitives
4
+ #
5
+ # Copyright April 2008, Gregory Brown. All Rights Reserved.
6
+ #
7
+ # This is free software. Please see the LICENSE and COPYING files for details.
8
+
9
+ require "prawn/graphics/color"
10
+ require "prawn/graphics/dash"
11
+ require "prawn/graphics/cap_style"
12
+ require "prawn/graphics/join_style"
13
+ require "prawn/graphics/transparency"
14
+ require "prawn/graphics/transformation"
15
+
16
+ module Prawn
17
+
18
+ # Implements the drawing facilities for Prawn::Document.
19
+ # Use this to draw the most beautiful imaginable things.
20
+ #
21
+ # This file lifts and modifies several of PDF::Writer's graphics functions
22
+ # ruby-pdf.rubyforge.org
23
+ #
24
+ module Graphics
25
+
26
+ include Color
27
+ include Dash
28
+ include CapStyle
29
+ include JoinStyle
30
+ include Transparency
31
+ include Transformation
32
+
33
+ #######################################################################
34
+ # Low level drawing operations must map the point to absolute coords! #
35
+ #######################################################################
36
+
37
+ # Moves the drawing position to a given point. The point can be
38
+ # specified as a tuple or a flattened argument list
39
+ #
40
+ # pdf.move_to [100,50]
41
+ # pdf.move_to(100,50)
42
+ #
43
+ def move_to(*point)
44
+ x,y = map_to_absolute(point)
45
+ add_content("%.3f %.3f m" % [ x, y ])
46
+ end
47
+
48
+ # Draws a line from the current drawing position to the specified point.
49
+ # The destination may be described as a tuple or a flattened list:
50
+ #
51
+ # pdf.line_to [50,50]
52
+ # pdf.line_to(50,50)
53
+ #
54
+ def line_to(*point)
55
+ x,y = map_to_absolute(point)
56
+ add_content("%.3f %.3f l" % [ x, y ])
57
+ end
58
+
59
+ # Draws a Bezier curve from the current drawing position to the
60
+ # specified point, bounded by two additional points.
61
+ #
62
+ # pdf.curve_to [100,100], :bounds => [[90,90],[75,75]]
63
+ #
64
+ def curve_to(dest,options={})
65
+ options[:bounds] or raise Prawn::Errors::InvalidGraphicsPath,
66
+ "Bounding points for bezier curve must be specified "+
67
+ "as :bounds => [[x1,y1],[x2,y2]]"
68
+
69
+ curve_points = (options[:bounds] << dest).map { |e| map_to_absolute(e) }
70
+ add_content("%.3f %.3f %.3f %.3f %.3f %.3f c" %
71
+ curve_points.flatten )
72
+ end
73
+
74
+ # Draws a rectangle given <tt>point</tt>, <tt>width</tt> and
75
+ # <tt>height</tt>. The rectangle is bounded by its upper-left corner.
76
+ #
77
+ # pdf.rectangle [300,300], 100, 200
78
+ #
79
+ def rectangle(point,width,height)
80
+ x,y = map_to_absolute(point)
81
+ add_content("%.3f %.3f %.3f %.3f re" % [ x, y - height, width, height ])
82
+ end
83
+
84
+ # Draws a rounded rectangle given <tt>point</tt>, <tt>width</tt> and
85
+ # <tt>height</tt> and <tt>radius</tt> for the rounded corner. The rectangle
86
+ # is bounded by its upper-left corner.
87
+ #
88
+ # pdf.rounded_rectangle [300,300], 100, 200, 10
89
+ #
90
+ def rounded_rectangle(point,width,height,radius)
91
+ x, y = point
92
+ rounded_polygon(radius, point, [x + width, y], [x + width, y - height], [x, y - height])
93
+ end
94
+
95
+
96
+ ###########################################################
97
+ # Higher level functions: May use relative coords #
98
+ ###########################################################
99
+
100
+ # Sets line thickness to the <tt>width</tt> specified.
101
+ #
102
+ def line_width=(width)
103
+ @line_width = width
104
+ add_content("#{width} w")
105
+ end
106
+
107
+ # When called without an argument, returns the current line thickness.
108
+ # When called with an argument, sets the line thickness to the specified
109
+ # value (in PDF points)
110
+ #
111
+ # pdf.line_width #=> 1
112
+ # pdf.line_width(5)
113
+ # pdf.line_width #=> 5
114
+ #
115
+ def line_width(width=nil)
116
+ if width
117
+ self.line_width = width
118
+ else
119
+ (defined?(@line_width) && @line_width) || 1
120
+ end
121
+ end
122
+
123
+ # Draws a line from one point to another. Points may be specified as
124
+ # tuples or flattened argument list:
125
+ #
126
+ # pdf.line [100,100], [200,250]
127
+ # pdf.line(100,100,200,250)
128
+ #
129
+ def line(*points)
130
+ x0,y0,x1,y1 = points.flatten
131
+ move_to(x0, y0)
132
+ line_to(x1, y1)
133
+ end
134
+
135
+ # Draws a horizontal line from <tt>x1</tt> to <tt>x2</tt> at the
136
+ # current <tt>y</tt> position, or the position specified by the :at option.
137
+ #
138
+ # # draw a line from [25, 75] to [100, 75]
139
+ # horizontal_line 25, 100, :at => 75
140
+ #
141
+ def horizontal_line(x1,x2,options={})
142
+ if options[:at]
143
+ y1 = options[:at]
144
+ else
145
+ y1 = y - bounds.absolute_bottom
146
+ end
147
+
148
+ line(x1,y1,x2,y1)
149
+ end
150
+
151
+ # Draws a horizontal line from the left border to the right border of the
152
+ # bounding box at the current <tt>y</tt> position.
153
+ #
154
+ def horizontal_rule
155
+ horizontal_line(bounds.left, bounds.right)
156
+ end
157
+
158
+ # Draws a vertical line at the x cooordinate given by :at from y1 to y2.
159
+ #
160
+ # # draw a line from [25, 100] to [25, 300]
161
+ # vertical_line 100, 300, :at => 25
162
+ #
163
+ def vertical_line(y1,y2,params)
164
+ line(params[:at],y1,params[:at],y2)
165
+ end
166
+
167
+ # Draws a Bezier curve between two points, bounded by two additional
168
+ # points
169
+ #
170
+ # pdf.curve [50,100], [100,100], :bounds => [[90,90],[75,75]]
171
+ #
172
+ def curve(origin,dest, options={})
173
+ move_to(*origin)
174
+ curve_to(dest,options)
175
+ end
176
+
177
+ # This constant is used to approximate a symmetrical arc using a cubic
178
+ # Bezier curve.
179
+ #
180
+ KAPPA = 4.0 * ((Math.sqrt(2) - 1.0) / 3.0)
181
+
182
+ # Draws a circle of radius <tt>:radius</tt> with the centre-point at <tt>point</tt>
183
+ # as a complete subpath. The drawing point will be moved to the
184
+ # centre-point upon completion of the drawing the circle.
185
+ #
186
+ # pdf.circle_at [100,100], :radius => 25
187
+ #
188
+ def circle_at(point, options)
189
+ x,y = point
190
+ ellipse_at [x, y], options[:radius]
191
+ end
192
+
193
+ # Draws an ellipse of +x+ radius <tt>r1</tt> and +y+ radius <tt>r2</tt>
194
+ # with the centre-point at <tt>point</tt> as a complete subpath. The
195
+ # drawing point will be moved to the centre-point upon completion of the
196
+ # drawing the ellipse.
197
+ #
198
+ # # draws an ellipse with x-radius 25 and y-radius 50
199
+ # pdf.ellipse_at [100,100], 25, 50
200
+ #
201
+ def ellipse_at(point, r1, r2 = r1)
202
+ x, y = point
203
+ l1 = r1 * KAPPA
204
+ l2 = r2 * KAPPA
205
+
206
+ move_to(x + r1, y)
207
+
208
+ # Upper right hand corner
209
+ curve_to [x, y + r2],
210
+ :bounds => [[x + r1, y + l1], [x + l2, y + r2]]
211
+
212
+ # Upper left hand corner
213
+ curve_to [x - r1, y],
214
+ :bounds => [[x - l2, y + r2], [x - r1, y + l1]]
215
+
216
+ # Lower left hand corner
217
+ curve_to [x, y - r2],
218
+ :bounds => [[x - r1, y - l1], [x - l2, y - r2]]
219
+
220
+ # Lower right hand corner
221
+ curve_to [x + r1, y],
222
+ :bounds => [[x + l2, y - r2], [x + r1, y - l1]]
223
+
224
+ move_to(x, y)
225
+ end
226
+
227
+ # Draws a polygon from the specified points.
228
+ #
229
+ # # draws a snazzy triangle
230
+ # pdf.polygon [100,100], [100,200], [200,200]
231
+ #
232
+ def polygon(*points)
233
+ move_to points[0]
234
+ (points[1..-1] << points[0]).each do |point|
235
+ line_to(*point)
236
+ end
237
+ end
238
+
239
+ # Draws a rounded polygon from specified points using the radius to define bezier curves
240
+ #
241
+ # # draws a rounded filled in polygon
242
+ # pdf.fill_and_stroke_rounded_polygon(10, [100, 250], [200, 300], [300, 250],
243
+ # [300, 150], [200, 100], [100, 150])
244
+ def rounded_polygon(radius, *points)
245
+ move_to point_on_line(radius, points[1], points[0])
246
+ sides = points.size
247
+ points << points[0] << points[1]
248
+ (sides).times do |i|
249
+ rounded_vertex(radius, points[i], points[i + 1], points[i + 2])
250
+ end
251
+ end
252
+
253
+
254
+ # Creates a rounded vertex for a line segment used for building a rounded polygon
255
+ # requires a radius to define bezier curve and three points. The first two points define
256
+ # the line segment and the third point helps define the curve for the vertex.
257
+ def rounded_vertex(radius, *points)
258
+ x0,y0,x1,y1,x2,y2 = points.flatten
259
+ radial_point_1 = point_on_line(radius, points[0], points[1])
260
+ bezier_point_1 = point_on_line((radius - radius*KAPPA), points[0], points[1] )
261
+ radial_point_2 = point_on_line(radius, points[2], points[1])
262
+ bezier_point_2 = point_on_line((radius - radius*KAPPA), points[2], points[1])
263
+ line_to(radial_point_1)
264
+ curve_to(radial_point_2, :bounds => [bezier_point_1, bezier_point_2])
265
+ end
266
+
267
+ # Strokes and closes the current path. See Graphic::Color for color details
268
+ #
269
+ def stroke
270
+ yield if block_given?
271
+ add_content "S"
272
+ end
273
+
274
+ # Draws and strokes a rectangle represented by the current bounding box
275
+ #
276
+ def stroke_bounds
277
+ stroke_rectangle bounds.top_left, bounds.width, bounds.height
278
+ end
279
+
280
+ # Fills and closes the current path. See Graphic::Color for color details
281
+ #
282
+ def fill
283
+ yield if block_given?
284
+ add_content "f"
285
+ end
286
+
287
+ # Fills, strokes, and closes the current path. See Graphic::Color for color details
288
+ #
289
+ def fill_and_stroke
290
+ yield if block_given?
291
+ add_content "b"
292
+ end
293
+
294
+ private
295
+
296
+ def map_to_absolute(*point)
297
+ x,y = point.flatten
298
+ [@bounding_box.absolute_left + x, @bounding_box.absolute_bottom + y]
299
+ end
300
+
301
+ def map_to_absolute!(point)
302
+ point.replace(map_to_absolute(point))
303
+ end
304
+
305
+ def degree_to_rad(angle)
306
+ angle * Math::PI / 180
307
+ end
308
+
309
+ # Returns the coordinates for a point on a line that is a given distance away from the second
310
+ # point defining the line segement
311
+ def point_on_line(distance_from_end, *points)
312
+ x0,y0,x1,y1 = points.flatten
313
+ length = Math.sqrt((x1 - x0)**2 + (y1 - y0)**2)
314
+ p = (length - distance_from_end) / length
315
+ xr = x0 + p*(x1 - x0)
316
+ yr = y0 + p*(y1 - y0)
317
+ [xr, yr]
318
+ end
319
+
320
+ end
321
+ end
@@ -0,0 +1,38 @@
1
+ # encoding: utf-8
2
+
3
+ # cap_style.rb : Implements stroke cap styling
4
+ #
5
+ # Contributed by Daniel Nelson. October, 2009
6
+ #
7
+ # This is free software. Please see the LICENSE and COPYING files for details.
8
+ #
9
+ module Prawn
10
+ module Graphics
11
+ module CapStyle
12
+
13
+ CAP_STYLES = { :butt => 0, :round => 1, :projecting_square => 2 }
14
+
15
+ # Sets the cap style for stroked lines and curves
16
+ #
17
+ # style is one of :butt, :round, or :projecting_square
18
+ #
19
+ # NOTE: If this method is never called, :butt will be used by default.
20
+ #
21
+ def cap_style(style=nil)
22
+ return @cap_style || :butt if style.nil?
23
+
24
+ @cap_style = style
25
+
26
+ write_stroke_cap_style
27
+ end
28
+
29
+ alias_method :cap_style=, :cap_style
30
+
31
+ private
32
+
33
+ def write_stroke_cap_style
34
+ add_content "#{CAP_STYLES[@cap_style]} J"
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,205 @@
1
+ # encoding: utf-8
2
+
3
+ # color.rb : Implements color handling
4
+ #
5
+ # Copyright June 2008, Gregory Brown. All Rights Reserved.
6
+ #
7
+ # This is free software. Please see the LICENSE and COPYING files for details.
8
+ #
9
+ module Prawn
10
+ module Graphics
11
+ module Color
12
+
13
+ # Sets or returns the fill color.
14
+ #
15
+ # When called with no argument, it returns the current fill color.
16
+ #
17
+ # If a single argument is provided, it should be a 6 digit HTML color
18
+ # code.
19
+ #
20
+ # pdf.fill_color "f0ffc1"
21
+ #
22
+ # If 4 arguments are provided, the color is assumed to be a CMYK value
23
+ # Values range from 0 - 100.
24
+ #
25
+ # pdf.fill_color 0, 99, 95, 0
26
+ #
27
+ def fill_color(*color)
28
+ return @fill_color if color.empty?
29
+ @fill_color = process_color(*color)
30
+ set_fill_color
31
+ end
32
+
33
+ alias_method :fill_color=, :fill_color
34
+
35
+ # Sets or returns the line stroking color.
36
+ #
37
+ # When called with no argument, it returns the current stroking color.
38
+ #
39
+ # If a single argument is provided, it should be a 6 digit HTML color
40
+ # code.
41
+ #
42
+ # pdf.stroke_color "f0ffc1"
43
+ #
44
+ # If 4 arguments are provided, the color is assumed to be a CMYK value
45
+ # Values range from 0 - 100.
46
+ #
47
+ # pdf.stroke_color 0, 99, 95, 0
48
+ #
49
+ def stroke_color(*color)
50
+ return @stroke_color if color.empty?
51
+ @stroke_color = process_color(*color)
52
+ set_stroke_color
53
+ end
54
+
55
+ alias_method :stroke_color=, :stroke_color
56
+
57
+ # Provides the following shortcuts:
58
+ #
59
+ # stroke_some_method(*args) #=> some_method(*args); stroke
60
+ # fill_some_method(*args) #=> some_method(*args); fill
61
+ # fill_and_stroke_some_method(*args) #=> some_method(*args); fill_and_stroke
62
+ #
63
+ def method_missing(id,*args,&block)
64
+ case(id.to_s)
65
+ when /^fill_and_stroke_(.*)/
66
+ send($1,*args,&block); fill_and_stroke
67
+ when /^stroke_(.*)/
68
+ send($1,*args,&block); stroke
69
+ when /^fill_(.*)/
70
+ send($1,*args,&block); fill
71
+ else
72
+ super
73
+ end
74
+ end
75
+
76
+ module_function
77
+
78
+ # Converts RGB value array to hex string suitable for use with fill_color
79
+ # and stroke_color
80
+ #
81
+ # >> Prawn::Graphics::Color.rgb2hex([255,120,8])
82
+ # => "ff7808"
83
+ #
84
+ def rgb2hex(rgb)
85
+ rgb.map { |e| "%02x" % e }.join
86
+ end
87
+
88
+ # Converts hex string into RGB value array:
89
+ #
90
+ # >> Prawn::Graphics::Color.hex2rgb("ff7808")
91
+ # => [255, 120, 8]
92
+ #
93
+ def hex2rgb(hex)
94
+ r,g,b = hex[0..1], hex[2..3], hex[4..5]
95
+ [r,g,b].map { |e| e.to_i(16) }
96
+ end
97
+
98
+ private
99
+
100
+ def process_color(*color)
101
+ case(color.size)
102
+ when 1
103
+ color[0]
104
+ when 4
105
+ color
106
+ else
107
+ raise ArgumentError, 'wrong number of arguments supplied'
108
+ end
109
+ end
110
+
111
+ def color_type(color)
112
+ case color
113
+ when String
114
+ :RGB
115
+ when Array
116
+ :CMYK
117
+ end
118
+ end
119
+
120
+ def normalize_color(color)
121
+ case color_type(color)
122
+ when :RGB
123
+ r,g,b = hex2rgb(color)
124
+ [r / 255.0, g / 255.0, b / 255.0]
125
+ when :CMYK
126
+ c,m,y,k = *color
127
+ [c / 100.0, m / 100.0, y / 100.0, k / 100.0]
128
+ end
129
+ end
130
+
131
+ def color_to_s(color)
132
+ normalize_color(color).map { |c| '%.3f' % c }.join(' ')
133
+ end
134
+
135
+ def color_space(color)
136
+ case color_type(color)
137
+ when :RGB
138
+ :DeviceRGB
139
+ when :CMYK
140
+ :DeviceCMYK
141
+ end
142
+ end
143
+
144
+ COLOR_SPACES = [:DeviceRGB, :DeviceCMYK, :Pattern]
145
+
146
+ def set_color_space(type, color_space)
147
+ # don't set the same color space again
148
+ return if @color_space[type] == color_space
149
+ @color_space[type] = color_space
150
+
151
+ unless COLOR_SPACES.include?(color_space)
152
+ raise ArgumentError, "unknown color space: '#{color_space}'"
153
+ end
154
+
155
+ operator = case type
156
+ when :fill
157
+ 'cs'
158
+ when :stroke
159
+ 'CS'
160
+ else
161
+ raise ArgumentError, "unknown type '#{type}'"
162
+ end
163
+
164
+ add_content "/#{color_space} #{operator}"
165
+ end
166
+
167
+ def set_color(type, color, options = {})
168
+ operator = case type
169
+ when :fill
170
+ 'scn'
171
+ when :stroke
172
+ 'SCN'
173
+ else
174
+ raise ArgumentError, "unknown type '#{type}'"
175
+ end
176
+
177
+ if options[:pattern]
178
+ set_color_space type, :Pattern
179
+ add_content "/#{color} #{operator}"
180
+ else
181
+ set_color_space type, color_space(color)
182
+ color = color_to_s(color)
183
+ add_content "#{color} #{operator}"
184
+ end
185
+ end
186
+
187
+ def set_fill_color
188
+ set_color :fill, @fill_color
189
+ end
190
+
191
+ def set_stroke_color
192
+ set_color :stroke, @stroke_color
193
+ end
194
+
195
+ def update_colors
196
+ @color_space = {}
197
+ @fill_color ||= "000000"
198
+ @stroke_color ||= "000000"
199
+ set_fill_color
200
+ set_stroke_color
201
+ end
202
+ end
203
+ end
204
+ end
205
+