prawn-layout 0.2.1 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
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