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
data/Rakefile CHANGED
@@ -4,7 +4,7 @@ require 'rake/testtask'
4
4
  require "rake/rdoctask"
5
5
  require "rake/gempackagetask"
6
6
 
7
- PRAWN_LAYOUT_VERSION = "0.2.1"
7
+ PRAWN_LAYOUT_VERSION = "0.3.1"
8
8
 
9
9
  task :default => [:test]
10
10
 
@@ -1,6 +1,10 @@
1
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__),
2
+ %w[.. vendor prawn-core lib]))
1
3
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
4
+
2
5
  require "rubygems"
3
- require "prawn"
6
+
7
+ require "prawn/core"
4
8
  require "prawn/layout"
5
9
 
6
10
  Prawn.debug = true
@@ -0,0 +1,21 @@
1
+ # encoding: utf-8
2
+
3
+ require "#{File.dirname(__FILE__)}/../example_helper.rb"
4
+
5
+ Prawn::Document.generate('bounding_box_grid.pdf') do |p|
6
+ p.define_grid(:columns => 5, :rows => 8, :gutter => 10)
7
+
8
+ p.stroke_color = "ff0000"
9
+
10
+ p.grid.rows.times do |i|
11
+ p.grid.columns.times do |j|
12
+ p.grid(i,j).bounding_box do
13
+ p.text p.grid(i,j).name
14
+ p.stroke do
15
+ p.rectangle(p.bounds.top_left, p.bounds.width, p.bounds.height)
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
21
+
@@ -0,0 +1,20 @@
1
+ # encoding: utf-8
2
+
3
+ require "#{File.dirname(__FILE__)}/../example_helper.rb"
4
+
5
+ Prawn::Document.generate('column_gutter_grid.pdf') do |p|
6
+ p.define_grid(:columns => 3, :rows => 10, :column_gutter => 10)
7
+
8
+ p.grid.rows.times do |i|
9
+ p.grid.columns.times do |j|
10
+ b = p.grid(i,j)
11
+ p.bounding_box b.top_left, :width => b.width, :height => b.height do
12
+ p.text b.name
13
+ p.stroke do
14
+ p.rectangle(p.bounds.top_left, b.width, b.height)
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
20
+
@@ -0,0 +1,51 @@
1
+ # encoding: utf-8
2
+
3
+ require "#{File.dirname(__FILE__)}/../example_helper.rb"
4
+
5
+ Prawn::Document.generate('multi_boxes.pdf') do |p|
6
+ p.define_grid(:columns => 5, :rows => 8, :gutter => 10)
7
+
8
+ p.grid.rows.times do |i|
9
+ p.grid.columns.times do |j|
10
+ p.grid(i,j).bounding_box do
11
+ p.text p.grid(i,j).name
12
+ p.stroke_color = "cccccc"
13
+ p.stroke do
14
+ p.rectangle(p.bounds.top_left, p.bounds.width, p.bounds.height)
15
+ end
16
+ end
17
+ end
18
+ end
19
+
20
+ g = p.grid([0,0], [1,1])
21
+ g.bounding_box do
22
+ p.move_down 12
23
+ p.text g.name
24
+ p.stroke_color = "333333"
25
+ p.stroke do
26
+ p.rectangle(p.bounds.top_left, p.bounds.width, p.bounds.height)
27
+ end
28
+ end
29
+
30
+ g = p.grid([3,0], [3,3])
31
+ g.bounding_box do
32
+ p.move_down 12
33
+ p.text g.name
34
+ p.stroke_color = "333333"
35
+ p.stroke do
36
+ p.rectangle(p.bounds.top_left, p.bounds.width, p.bounds.height)
37
+ end
38
+ end
39
+
40
+ g = p.grid([4,0], [5,1])
41
+ g.bounding_box do
42
+ p.move_down 12
43
+ p.text g.name
44
+ p.stroke_color = "333333"
45
+ p.stroke do
46
+ p.rectangle(p.bounds.top_left, p.bounds.width, p.bounds.height)
47
+ end
48
+ end
49
+
50
+ end
51
+
@@ -0,0 +1,13 @@
1
+ # encoding: utf-8
2
+
3
+ require "#{File.dirname(__FILE__)}/../example_helper.rb"
4
+
5
+ Prawn::Document.generate('show_grid.pdf') do |p|
6
+ p.define_grid(:columns => 5, :rows => 8, :gutter => 10)
7
+
8
+ p.grid.show_all
9
+
10
+ p.grid(2,4).show("FF0000")
11
+ p.grid([3,0], [5,3]).show("0000FF")
12
+ end
13
+
@@ -16,6 +16,6 @@ module Prawn
16
16
  end
17
17
 
18
18
  module Layout
19
- VERSION = "0.2.1"
19
+ VERSION = "0.3.1"
20
20
  end
21
21
  end
@@ -1,18 +1,21 @@
1
1
  module Prawn
2
2
  class Document
3
- # Defines the grid system for a particular document. Takes the number of rows and columns and the
4
- # width to use for the gutter as the keys :rows, :columns, :gutter
3
+
4
+ # Defines the grid system for a particular document. Takes the number of
5
+ # rows and columns and the width to use for the gutter as the
6
+ # keys :rows, :columns, :gutter
5
7
  #
6
8
  def define_grid(options = {})
7
9
  @grid = Grid.new(self, options)
8
10
  end
9
11
 
10
- # A method that can either be used to access a particular grid on the page or interogate the grid
11
- # system directly.
12
+ # A method that can either be used to access a particular grid on the page
13
+ # or work with the grid system directly.
12
14
  #
13
15
  # @pdf.grid # Get the Grid directly
14
16
  # @pdf.grid([0,1]) # Get the box at [0,1]
15
17
  # @pdf.grid([0,1], [1,2]) # Get a multi-box spanning from [0,1] to [1,2]
18
+ #
16
19
  def grid(*args)
17
20
  @boxes ||= {}
18
21
  @boxes[args] ||= if args.empty?
@@ -28,28 +31,29 @@ module Prawn
28
31
  end
29
32
  end
30
33
 
31
- # A Grid represents the entire grid system of a Page and calculates the column width and row height
32
- # of the base box.
34
+ # A Grid represents the entire grid system of a Page and calculates
35
+ # the column width and row height of the base box.
33
36
  class Grid
34
- attr_reader :pdf, :columns, :rows, :gutter
37
+ attr_reader :pdf, :columns, :rows, :gutter, :row_gutter, :column_gutter
35
38
  # :nodoc
36
39
  def initialize(pdf, options = {})
37
- Prawn.verify_options([:columns, :rows, :gutter], options)
40
+ valid_options = [:columns, :rows, :gutter, :row_gutter, :column_gutter]
41
+ Prawn.verify_options valid_options, options
38
42
 
39
43
  @pdf = pdf
40
44
  @columns = options[:columns]
41
45
  @rows = options[:rows]
42
- @gutter = options[:gutter].to_f
46
+ set_gutter(options)
43
47
  end
44
48
 
45
49
  # Calculates the base width of boxes.
46
50
  def column_width
47
- @column_width ||= subdivide(pdf.bounds.width, columns)
51
+ @column_width ||= subdivide(pdf.bounds.width, columns, column_gutter)
48
52
  end
49
53
 
50
54
  # Calculates the base height of boxes.
51
55
  def row_height
52
- @row_height ||= subdivide(pdf.bounds.height, rows)
56
+ @row_height ||= subdivide(pdf.bounds.height, rows, row_gutter)
53
57
  end
54
58
 
55
59
  # Diagnostic tool to show all of the grids. Defaults to gray.
@@ -62,14 +66,26 @@ module Prawn
62
66
  end
63
67
 
64
68
  private
65
- def subdivide(total, num)
69
+
70
+ def subdivide(total, num, gutter)
66
71
  (total.to_f - (gutter * (num - 1).to_f)) / num.to_f
67
72
  end
73
+
74
+ def set_gutter(options)
75
+ if options.has_key?(:gutter)
76
+ @gutter = options[:gutter].to_f
77
+ @row_gutter, @column_gutter = @gutter, @gutter
78
+ else
79
+ @row_gutter = options[:row_gutter].to_f
80
+ @column_gutter = options[:column_gutter].to_f
81
+ @gutter = 0
82
+ end
83
+ end
68
84
  end
69
85
 
70
- # A Box is a class that represents a bounded area of a page. A Grid object has methods that allow
71
- # easy access to the coordinates of its corners, which can be plugged into most existing prawn
72
- # methods.
86
+ # A Box is a class that represents a bounded area of a page.
87
+ # A Grid object has methods that allow easy access to the coordinates of
88
+ # its corners, which can be plugged into most existing prawnmethods.
73
89
  #
74
90
  class Box
75
91
  attr_reader :pdf
@@ -80,7 +96,9 @@ module Prawn
80
96
  @j = j
81
97
  end
82
98
 
83
- # Mostly diagnostic method that outputs the name of a box as col_num, row_num
99
+ # Mostly diagnostic method that outputs the name of a box as
100
+ # col_num, row_num
101
+ #
84
102
  def name
85
103
  "#{@i.to_s},#{@j.to_s}"
86
104
  end
@@ -107,7 +125,7 @@ module Prawn
107
125
 
108
126
  # x-coordinate of left side
109
127
  def left
110
- @left ||= (width + gutter) * @j.to_f
128
+ @left ||= (width + grid.column_gutter) * @j.to_f
111
129
  end
112
130
 
113
131
  # x-coordinate of right side
@@ -117,7 +135,7 @@ module Prawn
117
135
 
118
136
  # y-coordinate of the top
119
137
  def top
120
- @top ||= total_height - ((height + gutter) * @i.to_f)
138
+ @top ||= total_height - ((height + grid.row_gutter) * @i.to_f)
121
139
  end
122
140
 
123
141
  # y-coordinate of the bottom
@@ -45,7 +45,8 @@ module Prawn
45
45
  def table(data, options={})
46
46
  if data.nil? || data.empty?
47
47
  raise Prawn::Errors::EmptyTable,
48
- "data must be a non-empty, non-nil, two dimensional array of Prawn::Cells or strings"
48
+ "data must be a non-empty, non-nil, two dimensional array " +
49
+ "of Prawn::Cells or strings"
49
50
  end
50
51
  Prawn::Table.new(data,self,options).draw
51
52
  end
@@ -103,15 +104,17 @@ module Prawn
103
104
  # <tt>:border_style</tt>:: If set to :grid, fills in all borders. If set to :underline_header, underline header only. Otherwise, borders are drawn on columns only, not rows
104
105
  # <tt>:border_color</tt>:: Sets the color of the borders.
105
106
  # <tt>:position</tt>:: One of <tt>:left</tt>, <tt>:center</tt> or <tt>n</tt>, where <tt>n</tt> is an x-offset from the left edge of the current bounding box
106
- # <tt>:width:</tt> A set width for the table, defaults to the sum of all column widths
107
- # <tt>:column_widths:</tt> A hash of indices and widths in PDF points. E.g. <tt>{ 0 => 50, 1 => 100 }</tt>
108
- # <tt>:row_colors</tt>:: An array of row background colors which are used cyclicly.
107
+ # <tt>:width</tt>:: A set width for the table, defaults to the sum of all column widths
108
+ # <tt>:column_widths</tt>:: A hash of indices and widths in PDF points. E.g. <tt>{ 0 => 50, 1 => 100 }</tt>
109
+ # <tt>:row_colors</tt>:: Used to specify background colors for rows. See below for usage.
109
110
  # <tt>:align</tt>:: Alignment of text in columns, for entire table (<tt>:center</tt>) or by column (<tt>{ 0 => :left, 1 => :center}</tt>)
110
111
  #
111
- # Row colors are specified as html encoded values, e.g.
112
- # ["ffffff","aaaaaa","ccaaff"]. You can also specify
113
- # <tt>:row_colors => :pdf_writer</tt> if you wish to use the default color
114
- # scheme from the PDF::Writer library.
112
+ # Row colors (<tt>:row_colors</tt>) are specified as HTML hex color values,
113
+ # e.g., "ccaaff". They can take several forms:
114
+ #
115
+ # * An array of colors, used cyclically to "zebra stripe" the table: <tt>['ffffff', 'cccccc', '336699']</tt>.
116
+ # * A hash taking 0-based row numbers to colors: <tt>{ 0 => 'ffffff', 2 => 'cccccc'}</tt>.
117
+ # * The symbol <tt>:pdf_writer</tt>, for PDF::Writer's default color scheme.
115
118
  #
116
119
  # See Document#table for typical usage, as directly using this class is
117
120
  # not recommended unless you know why you want to do it.
@@ -252,6 +255,13 @@ module Prawn
252
255
  renderable_data.each_with_index do |row,index|
253
256
  c = Prawn::Table::CellBlock.new(@document)
254
257
 
258
+ if C(:row_colors).is_a?(Hash)
259
+ real_index = index
260
+ real_index -= 1 if C(:headers)
261
+ color = C(:row_colors)[real_index]
262
+ c.background_color = color if color
263
+ end
264
+
255
265
  col_index = 0
256
266
  row.each do |e|
257
267
  case C(:align)
@@ -379,6 +389,8 @@ module Prawn
379
389
 
380
390
 
381
391
  def next_row_color
392
+ return if C(:row_colors).is_a?(Hash)
393
+
382
394
  color = C(:row_colors).shift
383
395
  C(:row_colors).push(color)
384
396
  color
@@ -76,6 +76,7 @@ module Prawn
76
76
  if options[:padding]
77
77
  @horizontal_padding = @vertical_padding = options[:padding]
78
78
  end
79
+
79
80
  end
80
81
 
81
82
  attr_accessor :point, :border_style, :border_width, :background_color,
@@ -125,16 +126,14 @@ module Prawn
125
126
  # Draws the cell onto the PDF document
126
127
  #
127
128
  def draw
128
- rel_point = @point
129
+ margin = @border_width / 2.0
129
130
 
130
131
  if @background_color
131
132
  @document.mask(:fill_color) do
132
133
  @document.fill_color @background_color
133
134
  h = borders.include?(:bottom) ?
134
- height - border_width : height + border_width / 2.0
135
- @document.fill_rectangle [rel_point[0] + border_width / 2.0,
136
- rel_point[1] - border_width / 2.0 ],
137
- width - border_width, h
135
+ height - ( 2 * margin ) : height + margin
136
+ @document.fill_rectangle [x, y ], width, h
138
137
  end
139
138
  end
140
139
 
@@ -146,25 +145,25 @@ module Prawn
146
145
  @document.stroke_color @border_color if @border_color
147
146
 
148
147
  if borders.include?(:left)
149
- @document.stroke_line [rel_point[0], rel_point[1] + (@border_width / 2.0)],
150
- [rel_point[0], rel_point[1] - height - @border_width / 2.0 ]
148
+ @document.stroke_line [x, y + margin],
149
+ [x, y - height - margin ]
151
150
  end
152
151
 
153
152
  if borders.include?(:right)
154
153
  @document.stroke_line(
155
- [rel_point[0] + width, rel_point[1] + (@border_width / 2.0)],
156
- [rel_point[0] + width, rel_point[1] - height - @border_width / 2.0] )
154
+ [x + width, y + margin],
155
+ [x + width, y - height - margin] )
157
156
  end
158
157
 
159
158
  if borders.include?(:top)
160
159
  @document.stroke_line(
161
- [ rel_point[0] + @border_width / 2.0, rel_point[1] ],
162
- [ rel_point[0] - @border_width / 2.0 + width, rel_point[1] ])
160
+ [ x, y ],
161
+ [ x + width, y ])
163
162
  end
164
163
 
165
164
  if borders.include?(:bottom)
166
- @document.stroke_line [rel_point[0], rel_point[1] - height ],
167
- [rel_point[0] + width, rel_point[1] - height]
165
+ @document.stroke_line [x, y - height ],
166
+ [x + width, y - height]
168
167
  end
169
168
  end
170
169
 
@@ -174,8 +173,8 @@ module Prawn
174
173
 
175
174
  end
176
175
 
177
- @document.bounding_box( [@point[0] + @horizontal_padding,
178
- @point[1] - @vertical_padding],
176
+ @document.bounding_box( [x + @horizontal_padding,
177
+ y - @vertical_padding],
179
178
  :width => text_area_width,
180
179
  :height => height - @vertical_padding) do
181
180
  @document.move_down((@document.font.line_gap - @document.font.descender)/2)
@@ -193,6 +192,16 @@ module Prawn
193
192
  end
194
193
 
195
194
  private
195
+
196
+ # x-position of the cell
197
+ def x
198
+ @point[0]
199
+ end
200
+
201
+ # y-position of the cell
202
+ def y
203
+ @point[1]
204
+ end
196
205
 
197
206
  def borders
198
207
  @borders ||= case @border_style
@@ -7,7 +7,8 @@ require "test/spec"
7
7
  require "mocha"
8
8
  $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', 'lib')
9
9
 
10
- require "prawn"
10
+ $LOAD_PATH << File.join(File.dirname(__FILE__), %w[.. vendor prawn-core lib])
11
+ require "prawn/core"
11
12
  require "prawn/layout"
12
13
  $LOAD_PATH << File.join(Prawn::BASEDIR, 'vendor','pdf-inspector','lib')
13
14
 
@@ -254,7 +254,39 @@ describe "A table's content" do
254
254
  table = Prawn::Table.new data, pdf
255
255
  table.column_widths.length.should == 6
256
256
  end
257
+
258
+ it "should allow array syntax for :row_colors" do
259
+ data = [["foo"], ["bar"], ['baz']]
260
+ pdf = Prawn::Document.new
261
+
262
+ # fill_color() is used to retrieve fill color; ignore it
263
+ pdf.stubs(:fill_color)
264
+
265
+ # Verify that fill_color is called in proper sequence for row colors.
266
+ seq = sequence('row_colors')
267
+ %w[cccccc ffffff cccccc].each do |color|
268
+ pdf.expects(:fill_color).with(color).in_sequence(seq)
269
+ end
270
+
271
+ pdf.table(data, :row_colors => ['cccccc', 'ffffff'])
272
+ end
257
273
 
274
+ it "should allow hash syntax for :row_colors" do
275
+ data = [["foo"], ["bar"], ['baz']]
276
+ pdf = Prawn::Document.new
277
+
278
+ # fill_color() is used to retrieve fill color; ignore it
279
+ pdf.stubs(:fill_color)
280
+
281
+ # Verify that fill_color is called in proper sequence for row colors.
282
+ seq = sequence('row_colors')
283
+ %w[cccccc dddddd eeeeee].each do |color|
284
+ pdf.expects(:fill_color).with(color).in_sequence(seq)
285
+ end
286
+
287
+ pdf.table(data, :row_colors => {0 => 'cccccc', 1 => 'dddddd',
288
+ 2 => 'eeeeee'})
289
+ end
258
290
  end
259
291
 
260
292
  describe "An invalid table" do