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,3 @@
1
+ # prawn-graph - Easy Graphing for Prawn
2
+
3
+ More content to come soon, I promise!
@@ -0,0 +1,34 @@
1
+ require 'rubygems'
2
+ require 'rake'
3
+ require "rake/gempackagetask"
4
+
5
+ PRAWN_GRAPH_VERSION = '0.0.1'
6
+
7
+ spec = Gem::Specification.new do |spec|
8
+ spec.name = "prawn-graph"
9
+ spec.version = PRAWN_GRAPH_VERSION
10
+ spec.platform = Gem::Platform::RUBY
11
+ spec.summary = "An extension to Prawn that provides the ability to draw basic graphs and charts natively in your PDFs."
12
+ spec.files = Dir.glob("{examples,lib,spec,vendor,data}/**/**/*") +
13
+ ["Rakefile"]
14
+ spec.require_path = "lib"
15
+
16
+ spec.test_files = Dir[ "test/*_test.rb" ]
17
+ spec.has_rdoc = true
18
+ spec.extra_rdoc_files = %w{README.markdown}
19
+ spec.rdoc_options << '--title' << 'Prawn Documentation' <<
20
+ '--main' << 'README' << '-q'
21
+ spec.author = "Ryan Stenhouse"
22
+ spec.email = " ryan@ryanstenhouse.eu"
23
+ spec.rubyforge_project = "prawn"
24
+ spec.homepage = "http://ryanstenhouse.eu"
25
+ spec.description = <<END_DESC
26
+ An extension to Prawn that provides the ability to draw basic graphs and charts natively in your PDFs.
27
+ END_DESC
28
+ end
29
+
30
+ Rake::GemPackageTask.new(spec) do |pkg|
31
+ pkg.need_zip = true
32
+ pkg.need_tar = true
33
+ end
34
+
@@ -0,0 +1,10 @@
1
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__),
2
+ %w[.. vendor prawn-core lib]))
3
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
4
+
5
+ require "rubygems"
6
+ require "prawn/core"
7
+ require "prawn/graph"
8
+
9
+ Prawn.debug = true
10
+
@@ -0,0 +1,22 @@
1
+
2
+ require "#{File.dirname(__FILE__)}/../example_helper.rb"
3
+
4
+ options = {
5
+ :title => 'Average litter size per kind of animal',
6
+ :label_x => 'Kind of animal',
7
+ :label_y => 'Average litter size',
8
+ :at => [10,10],
9
+ }
10
+
11
+ data = [
12
+ ['Raccoons', 4],
13
+ ['Mice', 11],
14
+ ['Dogs', 6],
15
+ ['Panda', 1],
16
+ ['Gorilla', 1],
17
+ ['Cats', 4]
18
+ ]
19
+
20
+ Prawn::Document.generate('advanced_bar_chart.pdf') do
21
+ bar_chart data, options
22
+ end
@@ -0,0 +1,18 @@
1
+ # encoding: utf-8
2
+ #
3
+ require "#{File.dirname(__FILE__)}/../example_helper.rb"
4
+
5
+ # Simplest bar chart example
6
+ #
7
+
8
+ data = [
9
+ ['Cats',20],
10
+ ['Dogs',36],
11
+ ['Hamsters',45],
12
+ ['Goldfish', 5]
13
+ ]
14
+
15
+ Prawn::Document.generate('bar_chart.pdf') do
16
+ bar_chart data, :at => [10, 10]
17
+ end
18
+
@@ -0,0 +1,18 @@
1
+ # encoding: utf-8
2
+ #
3
+ require "#{File.dirname(__FILE__)}/../example_helper.rb"
4
+
5
+ # Simplest line chart example
6
+ #
7
+
8
+ data = [
9
+ ['January',20],
10
+ ['February',36],
11
+ ['March',45],
12
+ ['April', 5]
13
+ ]
14
+
15
+ Prawn::Document.generate('line_chart.pdf') do
16
+ line_chart data, :at => [10, 10]
17
+ end
18
+
@@ -0,0 +1,94 @@
1
+ require 'bigdecimal'
2
+
3
+ require File.dirname(__FILE__) + '/graph/errors'
4
+ require File.dirname(__FILE__) + '/graph/chart'
5
+ require File.dirname(__FILE__) + '/graph/grid'
6
+ require File.dirname(__FILE__) + '/graph/bar'
7
+ require File.dirname(__FILE__) + '/graph/line'
8
+
9
+ module Prawn
10
+
11
+ class Document
12
+
13
+ # Adds compatibility with the current stable version of prawn
14
+ #
15
+ alias text draw_text
16
+
17
+ # Draws a fairly simple bar chart. Data should be passed in as an array of
18
+ # arrays, much like how Tables are dealt with:
19
+ #
20
+ # [
21
+ # [ 'Field Title', 10 ],
22
+ # [ 'Another Title', 20]
23
+ # ]
24
+ #
25
+ # options[:at] MUST be specified, as the coordinates where you want your
26
+ # bar chart to be drawn.
27
+ #
28
+ # options[:width] Sets the width of the chart, defaults to 500
29
+ # options[:height] Sets the height of the chart, defaults to 200
30
+ # options[:spacing] Sets the spacing between the grid squares of the chart, defaults to 20
31
+ #
32
+ # It will do its best to try and size content to fit the available size; but at
33
+ # the moment it's not too clever. If your graph looks squashed; make it bigger.
34
+ #
35
+ # Other available options are:
36
+ #
37
+ # :label_x Which sets a label to be shown along the X Axis.
38
+ # :label_y Which sets a label to be shown along the Y Axis.
39
+ # :title Which sets a Title for the chart
40
+ #
41
+ # For now, these values DO NOT scale in size. X/Y labels are always 8 points and Titles
42
+ # are always 10 points.
43
+ #
44
+ def bar_chart(data, options = {})
45
+ if data.nil? || data.empty?
46
+ raise Prawn::Errors::NoGraphData,
47
+ "data must be a non-empty, non-nil, two dimensional array " +
48
+ "in the form [ [ 'Title', SomeValue ] ]"
49
+ end
50
+ Prawn::Chart::Bar.new(data, self, options).draw
51
+ end
52
+ alias :bar_graph :bar_chart
53
+
54
+ # Draws a fairly simple line chart. Data should be passed in as an array of
55
+ # arrays, much like how Tables are dealt with:
56
+ #
57
+ # [
58
+ # [ 'Field Title', 10 ],
59
+ # [ 'Another Title', 20]
60
+ # ]
61
+ #
62
+ # options[:at] MUST be specified, as the coordinates where you want your
63
+ # bar chart to be drawn.
64
+ #
65
+ # options[:width] Sets the width of the chart, defaults to 500
66
+ # options[:height] Sets the height of the chart, defaults to 200
67
+ # options[:spacing] Sets the spacing between the grid squares of the chart, defaults to 20
68
+ #
69
+ # It will do its best to try and size content to fit the available size; but at
70
+ # the moment it's not too clever. If your graph looks squashed; make it bigger.
71
+ #
72
+ # Other available options are:
73
+ #
74
+ # :label_x Which sets a label to be shown along the X Axis.
75
+ # :label_y Which sets a label to be shown along the Y Axis.
76
+ # :title Which sets a Title for the chart
77
+ #
78
+ # For now, these values DO NOT scale in size. X/Y labels are always 8 points and Titles
79
+ # are always 10 points.
80
+ #
81
+ def line_chart(data, options = {})
82
+ if data.nil? || data.empty?
83
+ raise Prawn::Errors::NoGraphData,
84
+ "data must be a non-empty, non-nil, two dimensional array " +
85
+ "in the form [ [ 'Title', SomeValue ] ]"
86
+ end
87
+ Prawn::Chart::Line.new(data, self, options).draw
88
+ end
89
+ alias :line_graph :line_chart
90
+
91
+
92
+ end
93
+
94
+ end
@@ -0,0 +1,172 @@
1
+ module Prawn
2
+ module Chart
3
+ class Bar
4
+
5
+ attr_accessor :grid, :headings, :values, :highest_value, :document, :colour
6
+
7
+ def initialize(data, document, options = {})
8
+ if options[:at].nil? || options[:at].empty?
9
+ raise Prawn::Errors::NoGraphStartSet,
10
+ "you must specify options[:at] as the coordinates wher you" +
11
+ " wish this graph to be drawn from."
12
+ end
13
+ opts = { :width => 500, :height => 200, :spacing => 20 }.merge(options)
14
+ (@headings, @values, @highest_value) = process_the data
15
+ (grid_x_start, grid_y_start, grid_width, grid_height) = parse_sizing_from opts
16
+ @colour = (!opts[:use_color].nil? || !opts[:use_colour].nil?)
17
+ @document = document
18
+ @grid = Prawn::Chart::Grid.new(grid_x_start, grid_y_start, grid_width, grid_height, opts[:spacing], document)
19
+ end
20
+
21
+ def draw
22
+ @grid.draw
23
+ label_axes
24
+ if @title
25
+ draw_title
26
+ end
27
+ plot_values
28
+ if @x_label
29
+ draw_x_axis_label
30
+ end
31
+ if @y_label
32
+ draw_y_axis_label
33
+ end
34
+ reset
35
+ end
36
+
37
+ private
38
+
39
+ def reset
40
+ @document.line_width 1
41
+ @document.stroke_color '000000'
42
+ @document.fill_color '000000'
43
+ @document.move_to @grid.point
44
+ end
45
+
46
+ def plot_values
47
+ base_x = @grid.start_x + 1
48
+ base_y = @grid.start_y + 1
49
+ bar_width = calculate_bar_width
50
+ @document.line_width bar_width
51
+ last_position = base_x
52
+ point_spacing = calculate_plot_spacing
53
+ @values.each do |value|
54
+ @document.move_to [base_x + last_position, base_y]
55
+ bar_height = calculate_point_height_from value
56
+ if @colour
57
+ @document.stroke_color [rand(255), rand(255), rand(255), 0]
58
+ else
59
+ @document.stroke_color 'AAAAAA'
60
+ end
61
+ @document.stroke_line_to [base_x + last_position, base_y + bar_height]
62
+ last_position += point_spacing
63
+ end
64
+ end
65
+
66
+ def label_axes
67
+ base_x = @grid.start_x + 1
68
+ base_y = @grid.start_y + 1
69
+
70
+ # Put the values up the Y Axis
71
+ #
72
+ @document.draw_text @highest_value, :at => [base_x - 15, base_y + @grid.height], :size => 5
73
+ @document.draw_text '0', :at => [base_x - 15, base_y ], :size => 5
74
+
75
+ # Put the column headings along the X Axis
76
+ #
77
+ point_spacing = calculate_plot_spacing
78
+ last_position = base_x + (point_spacing / 2)
79
+ @headings.each do |heading|
80
+ @document.draw_text heading, :at => [last_position, base_y - 15 ], :size => 5
81
+ last_position += point_spacing
82
+ end
83
+ end
84
+
85
+ def draw_x_axis_label
86
+ x_coord = calculate_x_axis_center_point(@x_label, 8)
87
+ y_coord = @grid.start_y - 30
88
+ @document.draw_text @x_label, :at => [x_coord, y_coord] ,:size => 8
89
+ end
90
+
91
+ def draw_y_axis_label
92
+ y_coord = calculate_y_axis_center_point(@y_label, 8)
93
+ x_coord = @grid.start_x - 30
94
+ @document.draw_text @y_label, :at => [x_coord, y_coord] ,:size => 8, :rotate => 90
95
+ end
96
+
97
+ def draw_title
98
+ x_coord = calculate_x_axis_center_point(@title, 10)
99
+ y_coord = @grid.start_y + @grid.height + 10
100
+ @document.draw_text @title, :at => [x_coord, y_coord] ,:size => 10
101
+ end
102
+
103
+ def parse_sizing_from(o)
104
+ x_offset = 15
105
+ y_offset = 0
106
+ move_y_up = 0
107
+ grid_width = o[:width]
108
+ grid_height = o[:height]
109
+
110
+ # Make room for the title if we're choosing to Render it.
111
+ #
112
+ if o[:title]
113
+ @title = o[:title]
114
+ y_offset += 10
115
+ end
116
+
117
+ # Make room for X Axis labels if we're using them.
118
+ #
119
+ if o[:label_x]
120
+ y_offset += 30
121
+ move_y_up += 30
122
+ @x_label = o[:label_x]
123
+ end
124
+
125
+ # Make room for Y Axis labels if we're using them.
126
+ #
127
+ if o[:label_y]
128
+ @y_label = o[:label_y]
129
+ x_offset += 15
130
+ end
131
+
132
+ # Return the values calculated here.
133
+ #
134
+ [ (o[:at][0] + x_offset), (o[:at][1] + move_y_up), (grid_width - x_offset), (grid_height - y_offset) ]
135
+ end
136
+
137
+ def process_the(data_array)
138
+ col = []
139
+ val = []
140
+ data_array.each { |i| val << i[1]; col << i[0] }
141
+ [ col, val ,val.sort.last ]
142
+ end
143
+
144
+ def calculate_x_axis_center_point(text, text_size, graph_start_x = @grid.start_x, graph_width = @grid.width)
145
+ ((graph_start_x + (graph_width / 2)) - ((text.length * text_size) / 4))
146
+ end
147
+ alias calculate_x_axis_centre_point calculate_x_axis_center_point
148
+
149
+ def calculate_y_axis_center_point(text, text_size, graph_start_y = @grid.start_y, graph_height = @grid.height)
150
+ ((graph_start_y + (graph_height / 2)) - ((text.length * text_size) / 4))
151
+ end
152
+ alias calculate_y_axis_centre_point calculate_y_axis_center_point
153
+
154
+ def calculate_plot_spacing
155
+ (@grid.width / @values.nitems)
156
+ end
157
+
158
+ def calculate_bar_width
159
+ calculate_plot_spacing / 2
160
+ end
161
+
162
+ def calculate_point_height_from(column_value)
163
+ cv = BigDecimal("#{column_value}")
164
+ hv = BigDecimal("#{@highest_value}")
165
+ gh = BigDecimal("#{@grid.height}")
166
+ percentage = (cv / (hv / 100))
167
+ ((gh / 100) * percentage).to_i
168
+ end
169
+
170
+ end
171
+ end
172
+ end
@@ -0,0 +1,4 @@
1
+ module Prawn
2
+ module Chart
3
+ end
4
+ end
@@ -0,0 +1,6 @@
1
+ module Prawn
2
+ module Errors
3
+ NoGraphData = Class.new(StandardError)
4
+ NoGraphStartSet = Class.new(StandardError)
5
+ end
6
+ end
@@ -0,0 +1,43 @@
1
+ module Prawn
2
+ module Chart
3
+ class Grid
4
+
5
+ attr_accessor :width, :height, :point, :spacing, :document
6
+
7
+ def initialize(grid_x_start, grid_y_start, grid_width, grid_height, spacing, document)
8
+ @point = [grid_x_start, grid_y_start]
9
+ @width = grid_width
10
+ @height = grid_height
11
+ @spacing = spacing
12
+ @document = document
13
+ end
14
+
15
+ def start_x; @point.first; end
16
+ def start_y; @point.last; end
17
+
18
+ # Draws the Grid on the specified Prawn::Document
19
+ #
20
+ def draw
21
+ @document.stroke_color 'CCCCCC'
22
+ (@height / @spacing).times do |x|
23
+ offset = @spacing * (x + 1)
24
+ @document.move_to [@point.first, (@point.last + offset)]
25
+ @document.line_width(0.5)
26
+ @document.stroke_line_to([(@point.first + @width), (@point.last + offset)])
27
+ end
28
+ @document.move_to @point
29
+ @document.line_width(2)
30
+ @document.stroke_color '000000'
31
+ @document.stroke_line_to([@point.first, @point.last + @height])
32
+ @document.move_to @point
33
+ @document.line_width(2)
34
+ @document.stroke_line_to([(@point.first + @width), @point.last])
35
+ @document.move_to @point.first, (@point.last + height)
36
+ @document.stroke_color '000000'
37
+ @document.line_width(1)
38
+ @document.move_to @point
39
+ end
40
+
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,43 @@
1
+ module Prawn
2
+ module Chart
3
+ class Line < Bar
4
+
5
+ private
6
+
7
+ def plot_values
8
+ base_x = @grid.start_x + 1
9
+ base_y = @grid.start_y + 1
10
+ p = [ [base_x, base_y] ]
11
+ bar_width = calculate_bar_width
12
+ @document.line_width bar_width
13
+ last_position = base_x + bar_width
14
+ point_spacing = calculate_plot_spacing
15
+ @values.each do |value|
16
+ @document.move_to [base_x + last_position, base_y]
17
+ bar_height = calculate_point_height_from value
18
+ point = [base_x + last_position, base_y + bar_height]
19
+ p << point
20
+ if @colour
21
+ @document.fill_color '00DD00'
22
+ else
23
+ @document.fill_color 'AAAAAA'
24
+ end
25
+ @document.fill_circle_at point, :radius => 1
26
+ last_position += point_spacing
27
+ end
28
+ @document.line_width 2
29
+ if @colour
30
+ @document.stroke_color '00DD00'
31
+ else
32
+ @document.stroke_color 'AAAAAA'
33
+ end
34
+ p.each_with_index do |point,i|
35
+ next if point == p.last
36
+ @document.move_to point
37
+ @document.stroke_line_to p[i+1]
38
+ end
39
+ end
40
+
41
+ end
42
+ end
43
+ end