prawn-layout 0.2.1 → 0.3.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 (297) hide show
  1. data/Rakefile +1 -1
  2. data/examples/example_helper.rb +5 -1
  3. data/examples/grid/bounding_boxes.rb +21 -0
  4. data/examples/grid/column_gutter_grid.rb +20 -0
  5. data/examples/grid/multi_boxes.rb +51 -0
  6. data/examples/grid/show_grid.rb +13 -0
  7. data/lib/prawn/layout.rb +1 -1
  8. data/lib/prawn/layout/grid.rb +36 -18
  9. data/lib/prawn/table.rb +20 -8
  10. data/lib/prawn/table/cell.rb +24 -15
  11. data/spec/spec_helper.rb +2 -1
  12. data/spec/table_spec.rb +32 -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 +142 -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/canvas_sets_y_to_0.rb +15 -0
  22. data/vendor/prawn-core/bugs/png_barcode_issue.rb +11 -0
  23. data/vendor/prawn-core/bugs/resolved/canvas_sets_y_to_0.rb +15 -0
  24. data/vendor/prawn-core/data/encodings/win_ansi.txt +29 -0
  25. data/vendor/prawn-core/data/fonts/Action Man.dfont +0 -0
  26. data/vendor/prawn-core/data/fonts/Activa.ttf +0 -0
  27. data/vendor/prawn-core/data/fonts/Chalkboard.ttf +0 -0
  28. data/vendor/prawn-core/data/fonts/Courier-Bold.afm +342 -0
  29. data/vendor/prawn-core/data/fonts/Courier-BoldOblique.afm +342 -0
  30. data/vendor/prawn-core/data/fonts/Courier-Oblique.afm +342 -0
  31. data/vendor/prawn-core/data/fonts/Courier.afm +342 -0
  32. data/vendor/prawn-core/data/fonts/DejaVuSans.ttf +0 -0
  33. data/vendor/prawn-core/data/fonts/Dustismo_Roman.ttf +0 -0
  34. data/vendor/prawn-core/data/fonts/Helvetica-Bold.afm +2827 -0
  35. data/vendor/prawn-core/data/fonts/Helvetica-BoldOblique.afm +2827 -0
  36. data/vendor/prawn-core/data/fonts/Helvetica-Oblique.afm +3051 -0
  37. data/vendor/prawn-core/data/fonts/Helvetica.afm +3051 -0
  38. data/vendor/prawn-core/data/fonts/MustRead.html +19 -0
  39. data/vendor/prawn-core/data/fonts/Symbol.afm +213 -0
  40. data/vendor/prawn-core/data/fonts/Times-Bold.afm +2588 -0
  41. data/vendor/prawn-core/data/fonts/Times-BoldItalic.afm +2384 -0
  42. data/vendor/prawn-core/data/fonts/Times-Italic.afm +2667 -0
  43. data/vendor/prawn-core/data/fonts/Times-Roman.afm +2419 -0
  44. data/vendor/prawn-core/data/fonts/ZapfDingbats.afm +225 -0
  45. data/vendor/prawn-core/data/fonts/comicsans.ttf +0 -0
  46. data/vendor/prawn-core/data/fonts/gkai00mp.ttf +0 -0
  47. data/vendor/prawn-core/data/images/16bit.alpha +0 -0
  48. data/vendor/prawn-core/data/images/16bit.dat +0 -0
  49. data/vendor/prawn-core/data/images/16bit.png +0 -0
  50. data/vendor/prawn-core/data/images/arrow.png +0 -0
  51. data/vendor/prawn-core/data/images/arrow2.png +0 -0
  52. data/vendor/prawn-core/data/images/barcode_issue.png +0 -0
  53. data/vendor/prawn-core/data/images/dice.alpha +0 -0
  54. data/vendor/prawn-core/data/images/dice.dat +0 -0
  55. data/vendor/prawn-core/data/images/dice.png +0 -0
  56. data/vendor/prawn-core/data/images/dice_interlaced.png +0 -0
  57. data/vendor/prawn-core/data/images/fractal.jpg +0 -0
  58. data/vendor/prawn-core/data/images/letterhead.jpg +0 -0
  59. data/vendor/prawn-core/data/images/page_white_text.alpha +0 -0
  60. data/vendor/prawn-core/data/images/page_white_text.dat +0 -0
  61. data/vendor/prawn-core/data/images/page_white_text.png +0 -0
  62. data/vendor/prawn-core/data/images/pigs.jpg +0 -0
  63. data/vendor/prawn-core/data/images/rails.dat +0 -0
  64. data/vendor/prawn-core/data/images/rails.png +0 -0
  65. data/vendor/prawn-core/data/images/ruport.png +0 -0
  66. data/vendor/prawn-core/data/images/ruport_data.dat +0 -0
  67. data/vendor/prawn-core/data/images/ruport_transparent.png +0 -0
  68. data/vendor/prawn-core/data/images/ruport_type0.png +0 -0
  69. data/vendor/prawn-core/data/images/stef.jpg +0 -0
  70. data/vendor/prawn-core/data/images/tru256.bmp +0 -0
  71. data/vendor/prawn-core/data/images/web-links.dat +1 -0
  72. data/vendor/prawn-core/data/images/web-links.png +0 -0
  73. data/vendor/prawn-core/data/shift_jis_text.txt +1 -0
  74. data/vendor/prawn-core/examples/bounding_box/bounding_boxes.rb +43 -0
  75. data/vendor/prawn-core/examples/bounding_box/indentation.rb +34 -0
  76. data/vendor/prawn-core/examples/bounding_box/russian_boxes.rb +36 -0
  77. data/vendor/prawn-core/examples/bounding_box/stretched_nesting.rb +67 -0
  78. data/vendor/prawn-core/examples/column_box/column_box_example.rb +43 -0
  79. data/vendor/prawn-core/examples/example_helper.rb +3 -0
  80. data/vendor/prawn-core/examples/general/background.rb +23 -0
  81. data/vendor/prawn-core/examples/general/canvas.rb +15 -0
  82. data/vendor/prawn-core/examples/general/margin.rb +36 -0
  83. data/vendor/prawn-core/examples/general/measurement_units.rb +51 -0
  84. data/vendor/prawn-core/examples/general/metadata-info.rb +16 -0
  85. data/vendor/prawn-core/examples/general/multi_page_layout.rb +18 -0
  86. data/vendor/prawn-core/examples/general/page_geometry.rb +31 -0
  87. data/vendor/prawn-core/examples/general/page_numbering.rb +15 -0
  88. data/vendor/prawn-core/examples/general/stamp.rb +45 -0
  89. data/vendor/prawn-core/examples/graphics/basic_images.rb +23 -0
  90. data/vendor/prawn-core/examples/graphics/cmyk.rb +12 -0
  91. data/vendor/prawn-core/examples/graphics/curves.rb +11 -0
  92. data/vendor/prawn-core/examples/graphics/hexagon.rb +13 -0
  93. data/vendor/prawn-core/examples/graphics/image_fit.rb +15 -0
  94. data/vendor/prawn-core/examples/graphics/image_flow.rb +37 -0
  95. data/vendor/prawn-core/examples/graphics/image_position.rb +17 -0
  96. data/vendor/prawn-core/examples/graphics/line.rb +32 -0
  97. data/vendor/prawn-core/examples/graphics/png_types.rb +22 -0
  98. data/vendor/prawn-core/examples/graphics/polygons.rb +16 -0
  99. data/vendor/prawn-core/examples/graphics/remote_images.rb +12 -0
  100. data/vendor/prawn-core/examples/graphics/ruport_style_helpers.rb +19 -0
  101. data/vendor/prawn-core/examples/graphics/stroke_bounds.rb +20 -0
  102. data/vendor/prawn-core/examples/graphics/stroke_cap_and_join.rb +45 -0
  103. data/vendor/prawn-core/examples/graphics/stroke_dash.rb +42 -0
  104. data/vendor/prawn-core/examples/graphics/transparency.rb +26 -0
  105. data/vendor/prawn-core/examples/m17n/chinese_text_wrapping.rb +19 -0
  106. data/vendor/prawn-core/examples/m17n/euro.rb +15 -0
  107. data/vendor/prawn-core/examples/m17n/sjis.rb +28 -0
  108. data/vendor/prawn-core/examples/m17n/utf8.rb +13 -0
  109. data/vendor/prawn-core/examples/m17n/win_ansi_charset.rb +54 -0
  110. data/vendor/prawn-core/examples/text/alignment.rb +18 -0
  111. data/vendor/prawn-core/examples/text/dfont.rb +48 -0
  112. data/vendor/prawn-core/examples/text/family_based_styling.rb +24 -0
  113. data/vendor/prawn-core/examples/text/font_calculations.rb +91 -0
  114. data/vendor/prawn-core/examples/text/font_size.rb +33 -0
  115. data/vendor/prawn-core/examples/text/kerning.rb +30 -0
  116. data/vendor/prawn-core/examples/text/simple_text.rb +17 -0
  117. data/vendor/prawn-core/examples/text/simple_text_ttf.rb +17 -0
  118. data/vendor/prawn-core/examples/text/span.rb +29 -0
  119. data/vendor/prawn-core/examples/text/text_box.rb +25 -0
  120. data/vendor/prawn-core/examples/text/text_box_returning_excess.rb +51 -0
  121. data/vendor/prawn-core/examples/text/text_flow.rb +67 -0
  122. data/vendor/prawn-core/lib/prawn/byte_string.rb +7 -0
  123. data/vendor/prawn-core/lib/prawn/compatibility.rb +38 -0
  124. data/vendor/prawn-core/lib/prawn/core.rb +85 -0
  125. data/vendor/prawn-core/lib/prawn/document.rb +534 -0
  126. data/vendor/prawn-core/lib/prawn/document/annotations.rb +65 -0
  127. data/vendor/prawn-core/lib/prawn/document/bounding_box.rb +390 -0
  128. data/vendor/prawn-core/lib/prawn/document/column_box.rb +102 -0
  129. data/vendor/prawn-core/lib/prawn/document/destinations.rb +92 -0
  130. data/vendor/prawn-core/lib/prawn/document/internals.rb +180 -0
  131. data/vendor/prawn-core/lib/prawn/document/page_geometry.rb +153 -0
  132. data/vendor/prawn-core/lib/prawn/document/snapshot.rb +71 -0
  133. data/vendor/prawn-core/lib/prawn/document/span.rb +55 -0
  134. data/vendor/prawn-core/lib/prawn/document/text.rb +184 -0
  135. data/vendor/prawn-core/lib/prawn/document/text/box.rb +90 -0
  136. data/vendor/prawn-core/lib/prawn/document/text/wrapping.rb +62 -0
  137. data/vendor/prawn-core/lib/prawn/encoding.rb +121 -0
  138. data/vendor/prawn-core/lib/prawn/errors.rb +61 -0
  139. data/vendor/prawn-core/lib/prawn/font.rb +297 -0
  140. data/vendor/prawn-core/lib/prawn/font/afm.rb +202 -0
  141. data/vendor/prawn-core/lib/prawn/font/dfont.rb +34 -0
  142. data/vendor/prawn-core/lib/prawn/font/ttf.rb +329 -0
  143. data/vendor/prawn-core/lib/prawn/graphics.rb +264 -0
  144. data/vendor/prawn-core/lib/prawn/graphics/cap_style.rb +35 -0
  145. data/vendor/prawn-core/lib/prawn/graphics/color.rb +141 -0
  146. data/vendor/prawn-core/lib/prawn/graphics/dash.rb +69 -0
  147. data/vendor/prawn-core/lib/prawn/graphics/join_style.rb +35 -0
  148. data/vendor/prawn-core/lib/prawn/graphics/transparency.rb +56 -0
  149. data/vendor/prawn-core/lib/prawn/images.rb +339 -0
  150. data/vendor/prawn-core/lib/prawn/images/jpg.rb +46 -0
  151. data/vendor/prawn-core/lib/prawn/images/png.rb +219 -0
  152. data/vendor/prawn-core/lib/prawn/literal_string.rb +14 -0
  153. data/vendor/prawn-core/lib/prawn/measurement_extensions.rb +46 -0
  154. data/vendor/prawn-core/lib/prawn/measurements.rb +71 -0
  155. data/vendor/prawn-core/lib/prawn/name_tree.rb +166 -0
  156. data/vendor/prawn-core/lib/prawn/object_store.rb +63 -0
  157. data/vendor/prawn-core/lib/prawn/pdf_object.rb +81 -0
  158. data/vendor/prawn-core/lib/prawn/reference.rb +72 -0
  159. data/vendor/prawn-core/lib/prawn/stamp.rb +87 -0
  160. data/vendor/prawn-core/meta/Rakefile +62 -0
  161. data/vendor/prawn-core/meta/lib/prawn.rb +2 -0
  162. data/vendor/prawn-core/reference_pdfs/alignment.pdf +229 -0
  163. data/vendor/prawn-core/reference_pdfs/background.pdf +0 -0
  164. data/vendor/prawn-core/reference_pdfs/basic_images.pdf +0 -0
  165. data/vendor/prawn-core/reference_pdfs/bounding_boxes.pdf +128 -0
  166. data/vendor/prawn-core/reference_pdfs/canvas.pdf +78 -0
  167. data/vendor/prawn-core/reference_pdfs/chinese_flow.pdf +0 -0
  168. data/vendor/prawn-core/reference_pdfs/cmyk.pdf +0 -0
  169. data/vendor/prawn-core/reference_pdfs/column_box.pdf +3671 -0
  170. data/vendor/prawn-core/reference_pdfs/curves.pdf +62 -0
  171. data/vendor/prawn-core/reference_pdfs/dfont.pdf +0 -0
  172. data/vendor/prawn-core/reference_pdfs/euro.pdf +75 -0
  173. data/vendor/prawn-core/reference_pdfs/family_style.pdf +286 -0
  174. data/vendor/prawn-core/reference_pdfs/flow.pdf +964 -0
  175. data/vendor/prawn-core/reference_pdfs/font_calculations.pdf +0 -0
  176. data/vendor/prawn-core/reference_pdfs/font_size.pdf +142 -0
  177. data/vendor/prawn-core/reference_pdfs/hexagon.pdf +61 -0
  178. data/vendor/prawn-core/reference_pdfs/image-flow.pdf +0 -0
  179. data/vendor/prawn-core/reference_pdfs/image_fit.pdf +0 -0
  180. data/vendor/prawn-core/reference_pdfs/image_position.pdf +0 -0
  181. data/vendor/prawn-core/reference_pdfs/indentation.pdf +124 -0
  182. data/vendor/prawn-core/reference_pdfs/kerning.pdf +0 -0
  183. data/vendor/prawn-core/reference_pdfs/landscape_a4.pdf +52 -0
  184. data/vendor/prawn-core/reference_pdfs/landscape_legal.pdf +52 -0
  185. data/vendor/prawn-core/reference_pdfs/landscape_letter.pdf +52 -0
  186. data/vendor/prawn-core/reference_pdfs/lines.pdf +116 -0
  187. data/vendor/prawn-core/reference_pdfs/margin.pdf +3850 -0
  188. data/vendor/prawn-core/reference_pdfs/measurement_units.pdf +4667 -0
  189. data/vendor/prawn-core/reference_pdfs/metadata-info.pdf +88 -0
  190. data/vendor/prawn-core/reference_pdfs/multi-layout.pdf +209 -0
  191. data/vendor/prawn-core/reference_pdfs/page_with_numbering.pdf +156 -0
  192. data/vendor/prawn-core/reference_pdfs/png_types.pdf +0 -0
  193. data/vendor/prawn-core/reference_pdfs/portrait_a4.pdf +52 -0
  194. data/vendor/prawn-core/reference_pdfs/portrait_legal.pdf +52 -0
  195. data/vendor/prawn-core/reference_pdfs/portrait_letter.pdf +52 -0
  196. data/vendor/prawn-core/reference_pdfs/pretty_polygons.pdf +122 -0
  197. data/vendor/prawn-core/reference_pdfs/remote_images.pdf +0 -0
  198. data/vendor/prawn-core/reference_pdfs/ruport.pdf +101 -0
  199. data/vendor/prawn-core/reference_pdfs/russian_boxes.pdf +2780 -0
  200. data/vendor/prawn-core/reference_pdfs/simple_text.pdf +136 -0
  201. data/vendor/prawn-core/reference_pdfs/simple_text_ttf.pdf +0 -0
  202. data/vendor/prawn-core/reference_pdfs/sjis.pdf +0 -0
  203. data/vendor/prawn-core/reference_pdfs/span.pdf +1975 -0
  204. data/vendor/prawn-core/reference_pdfs/stamp.pdf +696 -0
  205. data/vendor/prawn-core/reference_pdfs/stretched_nesting.pdf +200 -0
  206. data/vendor/prawn-core/reference_pdfs/stroke_bounds.pdf +135 -0
  207. data/vendor/prawn-core/reference_pdfs/stroke_cap_and_join.pdf +80 -0
  208. data/vendor/prawn-core/reference_pdfs/stroke_dash.pdf +457 -0
  209. data/vendor/prawn-core/reference_pdfs/text_box.pdf +315 -0
  210. data/vendor/prawn-core/reference_pdfs/text_box_returning_excess.pdf +271 -0
  211. data/vendor/prawn-core/reference_pdfs/transparency.pdf +347 -0
  212. data/vendor/prawn-core/reference_pdfs/utf8.pdf +0 -0
  213. data/vendor/prawn-core/reference_pdfs/win-ansi.pdf +6172 -0
  214. data/vendor/prawn-core/spec/annotations_spec.rb +90 -0
  215. data/vendor/prawn-core/spec/bounding_box_spec.rb +185 -0
  216. data/vendor/prawn-core/spec/destinations_spec.rb +15 -0
  217. data/vendor/prawn-core/spec/document_spec.rb +231 -0
  218. data/vendor/prawn-core/spec/font_spec.rb +273 -0
  219. data/vendor/prawn-core/spec/graphics_spec.rb +209 -0
  220. data/vendor/prawn-core/spec/images_spec.rb +79 -0
  221. data/vendor/prawn-core/spec/jpg_spec.rb +25 -0
  222. data/vendor/prawn-core/spec/measurement_units_spec.rb +23 -0
  223. data/vendor/prawn-core/spec/name_tree_spec.rb +112 -0
  224. data/vendor/prawn-core/spec/object_store_spec.rb +42 -0
  225. data/vendor/prawn-core/spec/pdf_object_spec.rb +122 -0
  226. data/vendor/prawn-core/spec/png_spec.rb +236 -0
  227. data/vendor/prawn-core/spec/reference_spec.rb +82 -0
  228. data/vendor/prawn-core/spec/snapshot_spec.rb +115 -0
  229. data/vendor/prawn-core/spec/span_spec.rb +45 -0
  230. data/vendor/prawn-core/spec/spec_helper.rb +20 -0
  231. data/vendor/prawn-core/spec/stamp_spec.rb +98 -0
  232. data/vendor/prawn-core/spec/stroke_styles_spec.rb +152 -0
  233. data/vendor/prawn-core/spec/text_box_spec.rb +109 -0
  234. data/vendor/prawn-core/spec/text_spec.rb +185 -0
  235. data/vendor/prawn-core/spec/transparency_spec.rb +61 -0
  236. data/vendor/prawn-core/vendor/pdf-inspector/README +18 -0
  237. data/vendor/prawn-core/vendor/pdf-inspector/lib/pdf/inspector.rb +26 -0
  238. data/vendor/prawn-core/vendor/pdf-inspector/lib/pdf/inspector/extgstate.rb +18 -0
  239. data/vendor/prawn-core/vendor/pdf-inspector/lib/pdf/inspector/graphics.rb +119 -0
  240. data/vendor/prawn-core/vendor/pdf-inspector/lib/pdf/inspector/page.rb +25 -0
  241. data/vendor/prawn-core/vendor/pdf-inspector/lib/pdf/inspector/text.rb +31 -0
  242. data/vendor/prawn-core/vendor/pdf-inspector/lib/pdf/inspector/xobject.rb +19 -0
  243. data/vendor/prawn-core/vendor/ttfunk/data/fonts/DejaVuSans.ttf +0 -0
  244. data/vendor/prawn-core/vendor/ttfunk/data/fonts/comicsans.ttf +0 -0
  245. data/vendor/prawn-core/vendor/ttfunk/example.rb +45 -0
  246. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk.rb +102 -0
  247. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/directory.rb +17 -0
  248. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/encoding/mac_roman.rb +88 -0
  249. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/encoding/windows_1252.rb +69 -0
  250. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/reader.rb +44 -0
  251. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/resource_file.rb +78 -0
  252. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/subset.rb +18 -0
  253. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/subset/base.rb +141 -0
  254. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/subset/mac_roman.rb +46 -0
  255. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/subset/unicode.rb +48 -0
  256. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/subset/unicode_8bit.rb +63 -0
  257. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/subset/windows_1252.rb +51 -0
  258. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/subset_collection.rb +72 -0
  259. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table.rb +46 -0
  260. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/cmap.rb +34 -0
  261. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/cmap/format00.rb +54 -0
  262. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/cmap/format04.rb +126 -0
  263. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/cmap/subtable.rb +79 -0
  264. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/glyf.rb +64 -0
  265. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/glyf/compound.rb +81 -0
  266. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/glyf/simple.rb +37 -0
  267. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/head.rb +44 -0
  268. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/hhea.rb +41 -0
  269. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/hmtx.rb +47 -0
  270. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/kern.rb +79 -0
  271. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/kern/format0.rb +62 -0
  272. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/loca.rb +43 -0
  273. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/maxp.rb +40 -0
  274. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/name.rb +119 -0
  275. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/os2.rb +78 -0
  276. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/post.rb +91 -0
  277. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/post/format10.rb +43 -0
  278. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/post/format20.rb +35 -0
  279. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/post/format25.rb +23 -0
  280. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/post/format30.rb +17 -0
  281. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/post/format40.rb +17 -0
  282. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/simple.rb +14 -0
  283. data/vendor/prawn-core/www/index.html +196 -0
  284. data/vendor/prawn-core/www/media/bounding_boxes.pdf +146 -0
  285. data/vendor/prawn-core/www/media/bounding_boxes.png +0 -0
  286. data/vendor/prawn-core/www/media/bounding_boxes_out.png +0 -0
  287. data/vendor/prawn-core/www/media/fancy_table.pdf +350 -0
  288. data/vendor/prawn-core/www/media/image.pdf +0 -0
  289. data/vendor/prawn-core/www/media/images.png +0 -0
  290. data/vendor/prawn-core/www/media/prawn_logo.png +0 -0
  291. data/vendor/prawn-core/www/media/tables.png +0 -0
  292. data/vendor/prawn-core/www/media/utf8.pdf +0 -0
  293. data/vendor/prawn-core/www/media/utf8.png +0 -0
  294. data/vendor/prawn-core/www/prawn-Chinese.html +113 -0
  295. data/vendor/prawn-core/www/prawn.css +86 -0
  296. data/vendor/prawn-core/www/twilight.css +266 -0
  297. metadata +291 -3
@@ -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
+ current_page.data[:Annots] ||= []
25
+ options = sanitize_annotation_hash(options)
26
+ current_page.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,390 @@
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
+ translate!(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
+ end
205
+
206
+ # The translated origin (x,y-height) which describes the location
207
+ # of the bottom left corner of the bounding box
208
+ #
209
+ def anchor
210
+ [@x, @y - height]
211
+ end
212
+
213
+ # Relative left x-coordinate of the bounding box. (Always 0)
214
+ #
215
+ # Example, position some text 3 pts from the left of the containing box:
216
+ #
217
+ # text('hello', :at => [(bounds.left + 3), 0])
218
+ #
219
+ def left
220
+ 0
221
+ end
222
+
223
+
224
+ # Temporarily adjust the @x coordinate to allow for left_padding
225
+ #
226
+ def indent(left_padding, &block)
227
+ @x += left_padding
228
+ @width -= left_padding
229
+ yield
230
+ ensure
231
+ @x -= left_padding
232
+ @width += left_padding
233
+ end
234
+
235
+ # Relative right x-coordinate of the bounding box. (Equal to the box width)
236
+ #
237
+ # Example, position some text 3 pts from the right of the containing box:
238
+ #
239
+ # text('hello', :at => [(bounds.right - 3), 0])
240
+ #
241
+ def right
242
+ @width
243
+ end
244
+
245
+ # Relative top y-coordinate of the bounding box. (Equal to the box height)
246
+ #
247
+ # Example, position some text 3 pts from the top of the containing box:
248
+ #
249
+ # text('hello', :at => [0, (bounds.top - 3)])
250
+ #
251
+ def top
252
+ height
253
+ end
254
+
255
+ # Relative bottom y-coordinate of the bounding box (Always 0)
256
+ #
257
+ # Example, position some text 3 pts from the bottom of the containing box:
258
+ #
259
+ # text('hello', :at => [0, (bounds.bottom + 3)])
260
+ #
261
+ def bottom
262
+ 0
263
+ end
264
+
265
+ # Relative top-left point of the bounding_box
266
+ #
267
+ # Example, draw a line from the top left of the box diagonally to the
268
+ # bottom right:
269
+ #
270
+ # stroke do
271
+ # line(bounds., bounds.bottom_right)
272
+ # end
273
+ #
274
+ def top_left
275
+ [left,top]
276
+ end
277
+
278
+ # Relative top-right point of the bounding box
279
+ #
280
+ # Example, draw a line from the top_right of the box diagonally to the
281
+ # bottom left:
282
+ #
283
+ # stroke do
284
+ # line(bounds.top_right, bounds.bottom_left)
285
+ # end
286
+ #
287
+ def top_right
288
+ [right,top]
289
+ end
290
+
291
+ # Relative bottom-right point of the bounding box
292
+ #
293
+ # Example, draw a line along the right hand side of the page:
294
+ #
295
+ # stroke do
296
+ # line(bounds.bottom_right, bounds.top_right)
297
+ # end
298
+ #
299
+ def bottom_right
300
+ [right,bottom]
301
+ end
302
+
303
+ # Relative bottom-left point of the bounding box
304
+ #
305
+ # Example, draw a line along the left hand side of the page:
306
+ #
307
+ # stroke do
308
+ # line(bounds.bottom_left, bounds.top_left)
309
+ # end
310
+ #
311
+ def bottom_left
312
+ [left,bottom]
313
+ end
314
+
315
+ # Absolute left x-coordinate of the bounding box
316
+ #
317
+ def absolute_left
318
+ @x
319
+ end
320
+
321
+ # Absolute right x-coordinate of the bounding box
322
+ #
323
+ def absolute_right
324
+ @x + width
325
+ end
326
+
327
+ # Absolute top y-coordinate of the bounding box
328
+ #
329
+ def absolute_top
330
+ @y
331
+ end
332
+
333
+ # Absolute bottom y-coordinate of the bottom box
334
+ #
335
+ def absolute_bottom
336
+ @y - height
337
+ end
338
+
339
+ # Absolute top-left point of the bounding box
340
+ #
341
+ def absolute_top_left
342
+ [absolute_left, absolute_top]
343
+ end
344
+
345
+ # Absolute top-right point of the bounding box
346
+ #
347
+ def absolute_top_right
348
+ [absolute_right, absolute_top]
349
+ end
350
+
351
+ # Absolute bottom-left point of the bounding box
352
+ #
353
+ def absolute_bottom_left
354
+ [absolute_left, absolute_bottom]
355
+ end
356
+
357
+ # Absolute bottom-left point of the bounding box
358
+ #
359
+ def absolute_bottom_right
360
+ [absolute_right, absolute_bottom]
361
+ end
362
+
363
+ # Width of the bounding box
364
+ #
365
+ def width
366
+ @width
367
+ end
368
+
369
+ # Height of the bounding box. If the box is 'stretchy' (unspecified
370
+ # height attribute), height is calculated as the distance from the top of
371
+ # the box to the current drawing position.
372
+ #
373
+ def height
374
+ return @height if @height
375
+ @stretched_height = [(absolute_top - @parent.y), @stretched_height.to_f].max
376
+ end
377
+
378
+ alias_method :update_height, :height
379
+
380
+ # Returns +false+ when the box has a defined height, +true+ when the height
381
+ # is being calculated on the fly based on the current vertical position.
382
+ #
383
+ def stretchy?
384
+ !@height
385
+ end
386
+
387
+ end
388
+
389
+ end
390
+ end