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,65 @@
1
+ # encoding: utf-8
2
+
3
+ # annotations.rb : Implements low-level annotation support for PDF
4
+ #
5
+ # Copyright November 2008, Jamis Buck. All Rights Reserved.
6
+ #
7
+ # This is free software. Please see the LICENSE and COPYING files for details.
8
+
9
+ require 'prawn/literal_string'
10
+
11
+ module Prawn
12
+ class Document
13
+
14
+ # Provides very low-level support for annotations. These extensions are
15
+ # mainly for use by prawn-format, so be sure to check that out if all
16
+ # you need is basic internal or external links.
17
+ #
18
+ module Annotations
19
+
20
+ # Adds a new annotation (section 8.4 in PDF spec) to the current page.
21
+ # +options+ must be a Hash describing the annotation.
22
+ #
23
+ def annotate(options)
24
+ page.dictionary.data[:Annots] ||= []
25
+ options = sanitize_annotation_hash(options)
26
+ page.dictionary.data[:Annots] << ref!(options)
27
+ return options
28
+ end
29
+
30
+ # A convenience method for creating Text annotations. +rect+ must be an array
31
+ # of four numbers, describing the bounds of the annotation. +contents+ should
32
+ # be a string, to be shown when the annotation is activated.
33
+ #
34
+ def text_annotation(rect, contents, options={})
35
+ options = options.merge(:Subtype => :Text, :Rect => rect, :Contents => contents)
36
+ annotate(options)
37
+ end
38
+
39
+ # A convenience method for creating Link annotations. +rect+ must be an array
40
+ # of four numbers, describing the bounds of the annotation. The +options+ hash
41
+ # should include either :Dest (describing the target destination, usually as a
42
+ # string that has been recorded in the document's Dests tree), or :A (describing
43
+ # an action to perform on clicking the link), or :PA (for describing a URL to
44
+ # link to).
45
+ #
46
+ def link_annotation(rect, options={})
47
+ options = options.merge(:Subtype => :Link, :Rect => rect)
48
+ annotate(options)
49
+ end
50
+
51
+ private
52
+
53
+ def sanitize_annotation_hash(options)
54
+ options = options.merge(:Type => :Annot)
55
+
56
+ if options[:Dest].is_a?(String)
57
+ options[:Dest] = Prawn::LiteralString.new(options[:Dest])
58
+ end
59
+
60
+ options
61
+ end
62
+
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,402 @@
1
+ # encoding: utf-8
2
+
3
+ # bounding_box.rb : Implements a mechanism for shifting the coordinate space
4
+ #
5
+ # Copyright May 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
+ class Document
11
+
12
+ # :call-seq:
13
+ # bounding_box(point, options={}, &block)
14
+ #
15
+ # A bounding box serves two important purposes:
16
+ # * Provide bounds for flowing text, starting at a given point
17
+ # * Translate the origin (0,0) for graphics primitives
18
+ #
19
+ # ==Positioning
20
+ #
21
+ # Bounding boxes are positioned relative to their top left corner and
22
+ # the width measurement is towards the right and height measurement is
23
+ # downwards.
24
+ #
25
+ # Usage:
26
+ #
27
+ # * Bounding box 100pt x 100pt in the absolute bottom left of the
28
+ # containing box:
29
+ #
30
+ # pdf.bounding_box([0,100], :width => 100, :height => 100)
31
+ # stroke_bounds
32
+ # end
33
+ #
34
+ # * Bounding box 200pt x 400pt high in the center of the page:
35
+ #
36
+ # x_pos = ((bounds.width / 2) - 150)
37
+ # y_pos = ((bounds.height / 2) + 200)
38
+ # pdf.bounding_box([x_pos, y_pos], :width => 300, :height => 400) do
39
+ # stroke_bounds
40
+ # end
41
+ #
42
+ # ==Flowing Text
43
+ #
44
+ # When flowing text, the usage of a bounding box is simple. Text will
45
+ # begin at the point specified, flowing the width of the bounding box.
46
+ # After the block exits, the cursor position will be moved to
47
+ # the bottom of the bounding box (y - height). If flowing text exceeds
48
+ # the height of the bounding box, the text will be continued on the next
49
+ # page, starting again at the top-left corner of the bounding box.
50
+ #
51
+ # Usage:
52
+ #
53
+ # pdf.bounding_box([100,500], :width => 100, :height => 300) do
54
+ # pdf.text "This text will flow in a very narrow box starting" +
55
+ # "from [100,500]. The pointer will then be moved to [100,200]" +
56
+ # "and return to the margin_box"
57
+ # end
58
+ #
59
+ # Note, this is a low level tool and is designed primarily for building
60
+ # other abstractions. If you just need to flow text on the page, you
61
+ # will want to look at span() and text_box() instead
62
+ #
63
+ # ==Translating Coordinates
64
+ #
65
+ # When translating coordinates, the idea is to allow the user to draw
66
+ # relative to the origin, and then translate their drawing to a specified
67
+ # area of the document, rather than adjust all their drawing coordinates
68
+ # to match this new region.
69
+ #
70
+ # Take for example two triangles which share one point, drawn from the
71
+ # origin:
72
+ #
73
+ # pdf.polygon [0,250], [0,0], [150,100]
74
+ # pdf.polygon [100,0], [150,100], [200,0]
75
+ #
76
+ # It would be easy enough to translate these triangles to another point,
77
+ # e.g [200,200]
78
+ #
79
+ # pdf.polygon [200,450], [200,200], [350,300]
80
+ # pdf.polygon [300,200], [350,300], [400,200]
81
+ #
82
+ # However, each time you want to move the drawing, you'd need to alter
83
+ # every point in the drawing calls, which as you might imagine, can become
84
+ # tedious.
85
+ #
86
+ # If instead, we think of the drawing as being bounded by a box, we can
87
+ # see that the image is 200 points wide by 250 points tall.
88
+ #
89
+ # To translate it to a new origin, we simply select a point at (x,y+height)
90
+ #
91
+ # Using the [200,200] example:
92
+ #
93
+ # pdf.bounding_box([200,450], :width => 200, :height => 250) do
94
+ # pdf.stroke do
95
+ # pdf.polygon [0,250], [0,0], [150,100]
96
+ # pdf.polygon [100,0], [150,100], [200,0]
97
+ # end
98
+ # end
99
+ #
100
+ # Notice that the drawing is still relative to the origin. If we want to
101
+ # move this drawing around the document, we simply need to recalculate the
102
+ # top-left corner of the rectangular bounding-box, and all of our graphics
103
+ # calls remain unmodified.
104
+ #
105
+ # ==Nesting Bounding Boxes
106
+ #
107
+ # At the top level, bounding boxes are specified relative to the document's
108
+ # margin_box (which is itself a bounding box). You can also nest bounding
109
+ # boxes, allowing you to build components which are relative to each other
110
+ #
111
+ # Usage:
112
+ #
113
+ # pdf.bounding_box([200,450], :width => 200, :height => 250) do
114
+ # pdf.stroke_bounds # Show the containing bounding box
115
+ # pdf.bounding_box([50,200], :width => 50, :height => 50) do
116
+ # # a 50x50 bounding box that starts 50 pixels left and 50 pixels down
117
+ # # the parent bounding box.
118
+ # pdf.stroke_bounds
119
+ # end
120
+ # end
121
+ #
122
+ # ==Stretchyness
123
+ #
124
+ # If you do not specify a height to a bounding box, it will become stretchy
125
+ # and its height will be calculated automatically as you stretch the box
126
+ # downwards.
127
+ #
128
+ # pdf.bounding_box([100,400], :width => 400) do
129
+ # pdf.text("The height of this box is #{pdf.bounds.height}")
130
+ # pdf.text('this is some text')
131
+ # pdf.text('this is some more text')
132
+ # pdf.text('and finally a bit more')
133
+ # pdf.text("Now the height of this box is #{pdf.bounds.height}")
134
+ # end
135
+ #
136
+ # ==Absolute Positioning
137
+ #
138
+ # If you wish to position the bounding boxes at absolute coordinates rather
139
+ # than relative to the margins or other bounding boxes, you can use canvas()
140
+ #
141
+ # pdf.bounding_box([50,500], :width => 200, :height => 300) do
142
+ # pdf.stroke_bounds
143
+ # pdf.canvas do
144
+ # Positioned outside the containing box at the 'real' (300,450)
145
+ # pdf.bounding_box([300,450], :width => 200, :height => 200) do
146
+ # pdf.stroke_bounds
147
+ # end
148
+ # end
149
+ # end
150
+ #
151
+ # Of course, if you use canvas, you will be responsible for ensuring that
152
+ # you remain within the printable area of your document.
153
+ #
154
+ def bounding_box(*args, &block)
155
+ init_bounding_box(block) do |_|
156
+ map_to_absolute!(args[0])
157
+ @bounding_box = BoundingBox.new(self, *args)
158
+ end
159
+ end
160
+
161
+ # A shortcut to produce a bounding box which is mapped to the document's
162
+ # absolute coordinates, regardless of how things are nested or margin sizes.
163
+ #
164
+ # pdf.canvas do
165
+ # pdf.line pdf.bounds.bottom_left, pdf.bounds.top_right
166
+ # end
167
+ #
168
+ def canvas(&block)
169
+ init_bounding_box(block, :hold_position => true) do |_|
170
+ @bounding_box = BoundingBox.new(self, [0,page.dimensions[3]],
171
+ :width => page.dimensions[2],
172
+ :height => page.dimensions[3]
173
+ )
174
+ end
175
+ end
176
+
177
+ private
178
+
179
+ def init_bounding_box(user_block, options={}, &init_block)
180
+ parent_box = @bounding_box
181
+
182
+ init_block.call(parent_box)
183
+
184
+ self.y = @bounding_box.absolute_top
185
+ user_block.call
186
+ self.y = @bounding_box.absolute_bottom unless options[:hold_position]
187
+
188
+ created_box, @bounding_box = @bounding_box, parent_box
189
+
190
+ return created_box
191
+ end
192
+
193
+ # Low level layout helper that simplifies coordinate math.
194
+ #
195
+ # See Prawn::Document#bounding_box for a description of what this class
196
+ # is used for.
197
+ #
198
+ class BoundingBox
199
+
200
+ def initialize(parent, point, options={}) #:nodoc:
201
+ @parent = parent
202
+ @x, @y = point
203
+ @width, @height = options[:width], options[:height]
204
+ @stretched_height = nil
205
+ end
206
+
207
+ attr_reader :parent
208
+
209
+ # The translated origin (x,y-height) which describes the location
210
+ # of the bottom left corner of the bounding box
211
+ #
212
+ def anchor
213
+ [@x, @y - height]
214
+ end
215
+
216
+ # Relative left x-coordinate of the bounding box. (Always 0)
217
+ #
218
+ # Example, position some text 3 pts from the left of the containing box:
219
+ #
220
+ # draw_text('hello', :at => [(bounds.left + 3), 0])
221
+ #
222
+ def left
223
+ 0
224
+ end
225
+
226
+
227
+ # Temporarily adjust the @x coordinate to allow for left_padding
228
+ #
229
+ # Example:
230
+ #
231
+ # indent 20 do
232
+ # text "20 points in"
233
+ # indent 30 do
234
+ # text "50 points in"
235
+ # end
236
+ # end
237
+ #
238
+ def indent(left_padding, &block)
239
+ @x += left_padding
240
+ @width -= left_padding
241
+ yield
242
+ ensure
243
+ @x -= left_padding
244
+ @width += left_padding
245
+ end
246
+
247
+ # Relative right x-coordinate of the bounding box. (Equal to the box width)
248
+ #
249
+ # Example, position some text 3 pts from the right of the containing box:
250
+ #
251
+ # draw_text('hello', :at => [(bounds.right - 3), 0])
252
+ #
253
+ def right
254
+ @width
255
+ end
256
+
257
+ # Relative top y-coordinate of the bounding box. (Equal to the box height)
258
+ #
259
+ # Example, position some text 3 pts from the top of the containing box:
260
+ #
261
+ # draw_text('hello', :at => [0, (bounds.top - 3)])
262
+ #
263
+ def top
264
+ height
265
+ end
266
+
267
+ # Relative bottom y-coordinate of the bounding box (Always 0)
268
+ #
269
+ # Example, position some text 3 pts from the bottom of the containing box:
270
+ #
271
+ # draw_text('hello', :at => [0, (bounds.bottom + 3)])
272
+ #
273
+ def bottom
274
+ 0
275
+ end
276
+
277
+ # Relative top-left point of the bounding_box
278
+ #
279
+ # Example, draw a line from the top left of the box diagonally to the
280
+ # bottom right:
281
+ #
282
+ # stroke do
283
+ # line(bounds., bounds.bottom_right)
284
+ # end
285
+ #
286
+ def top_left
287
+ [left,top]
288
+ end
289
+
290
+ # Relative top-right point of the bounding box
291
+ #
292
+ # Example, draw a line from the top_right of the box diagonally to the
293
+ # bottom left:
294
+ #
295
+ # stroke do
296
+ # line(bounds.top_right, bounds.bottom_left)
297
+ # end
298
+ #
299
+ def top_right
300
+ [right,top]
301
+ end
302
+
303
+ # Relative bottom-right point of the bounding box
304
+ #
305
+ # Example, draw a line along the right hand side of the page:
306
+ #
307
+ # stroke do
308
+ # line(bounds.bottom_right, bounds.top_right)
309
+ # end
310
+ #
311
+ def bottom_right
312
+ [right,bottom]
313
+ end
314
+
315
+ # Relative bottom-left point of the bounding box
316
+ #
317
+ # Example, draw a line along the left hand side of the page:
318
+ #
319
+ # stroke do
320
+ # line(bounds.bottom_left, bounds.top_left)
321
+ # end
322
+ #
323
+ def bottom_left
324
+ [left,bottom]
325
+ end
326
+
327
+ # Absolute left x-coordinate of the bounding box
328
+ #
329
+ def absolute_left
330
+ @x
331
+ end
332
+
333
+ # Absolute right x-coordinate of the bounding box
334
+ #
335
+ def absolute_right
336
+ @x + width
337
+ end
338
+
339
+ # Absolute top y-coordinate of the bounding box
340
+ #
341
+ def absolute_top
342
+ @y
343
+ end
344
+
345
+ # Absolute bottom y-coordinate of the bottom box
346
+ #
347
+ def absolute_bottom
348
+ @y - height
349
+ end
350
+
351
+ # Absolute top-left point of the bounding box
352
+ #
353
+ def absolute_top_left
354
+ [absolute_left, absolute_top]
355
+ end
356
+
357
+ # Absolute top-right point of the bounding box
358
+ #
359
+ def absolute_top_right
360
+ [absolute_right, absolute_top]
361
+ end
362
+
363
+ # Absolute bottom-left point of the bounding box
364
+ #
365
+ def absolute_bottom_left
366
+ [absolute_left, absolute_bottom]
367
+ end
368
+
369
+ # Absolute bottom-left point of the bounding box
370
+ #
371
+ def absolute_bottom_right
372
+ [absolute_right, absolute_bottom]
373
+ end
374
+
375
+ # Width of the bounding box
376
+ #
377
+ def width
378
+ @width
379
+ end
380
+
381
+ # Height of the bounding box. If the box is 'stretchy' (unspecified
382
+ # height attribute), height is calculated as the distance from the top of
383
+ # the box to the current drawing position.
384
+ #
385
+ def height
386
+ return @height if @height
387
+ @stretched_height = [(absolute_top - @parent.y), @stretched_height.to_f].max
388
+ end
389
+
390
+ alias_method :update_height, :height
391
+
392
+ # Returns +false+ when the box has a defined height, +true+ when the height
393
+ # is being calculated on the fly based on the current vertical position.
394
+ #
395
+ def stretchy?
396
+ !@height
397
+ end
398
+
399
+ end
400
+
401
+ end
402
+ end