prawn-graph 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.markdown +3 -0
- data/Rakefile +34 -0
- data/examples/example_helper.rb +10 -0
- data/examples/graph/advanced_bar_chart.rb +22 -0
- data/examples/graph/bar_chart.rb +18 -0
- data/examples/graph/line_chart.rb +18 -0
- data/lib/prawn/graph.rb +94 -0
- data/lib/prawn/graph/bar.rb +172 -0
- data/lib/prawn/graph/chart.rb +4 -0
- data/lib/prawn/graph/errors.rb +6 -0
- data/lib/prawn/graph/grid.rb +43 -0
- data/lib/prawn/graph/line.rb +43 -0
- data/vendor/prawn-core/COPYING +340 -0
- data/vendor/prawn-core/HACKING +46 -0
- data/vendor/prawn-core/LICENSE +56 -0
- data/vendor/prawn-core/README +138 -0
- data/vendor/prawn-core/Rakefile +75 -0
- data/vendor/prawn-core/bench/afm_text_bench.rb +18 -0
- data/vendor/prawn-core/bench/png_type_6.rb +15 -0
- data/vendor/prawn-core/bench/ttf_text_bench.rb +19 -0
- data/vendor/prawn-core/bugs/indentation_across_pagebreaks.rb +15 -0
- data/vendor/prawn-core/bugs/resolved/canvas_sets_y_to_0.rb +15 -0
- data/vendor/prawn-core/bugs/resolved/png_barcode_issue.rb +11 -0
- data/vendor/prawn-core/bugs/resolved/transaction_page_number_issue_79.rb +21 -0
- data/vendor/prawn-core/bugs/resolved/ttf_fails_in_transactions.rb +24 -0
- data/vendor/prawn-core/data/encodings/win_ansi.txt +29 -0
- data/vendor/prawn-core/data/fonts/Action Man.dfont +0 -0
- data/vendor/prawn-core/data/fonts/Activa.ttf +0 -0
- data/vendor/prawn-core/data/fonts/Chalkboard.ttf +0 -0
- data/vendor/prawn-core/data/fonts/Courier-Bold.afm +342 -0
- data/vendor/prawn-core/data/fonts/Courier-BoldOblique.afm +342 -0
- data/vendor/prawn-core/data/fonts/Courier-Oblique.afm +342 -0
- data/vendor/prawn-core/data/fonts/Courier.afm +342 -0
- data/vendor/prawn-core/data/fonts/DejaVuSans.ttf +0 -0
- data/vendor/prawn-core/data/fonts/Dustismo_Roman.ttf +0 -0
- data/vendor/prawn-core/data/fonts/Helvetica-Bold.afm +2827 -0
- data/vendor/prawn-core/data/fonts/Helvetica-BoldOblique.afm +2827 -0
- data/vendor/prawn-core/data/fonts/Helvetica-Oblique.afm +3051 -0
- data/vendor/prawn-core/data/fonts/Helvetica.afm +3051 -0
- data/vendor/prawn-core/data/fonts/MustRead.html +19 -0
- data/vendor/prawn-core/data/fonts/Symbol.afm +213 -0
- data/vendor/prawn-core/data/fonts/Times-Bold.afm +2588 -0
- data/vendor/prawn-core/data/fonts/Times-BoldItalic.afm +2384 -0
- data/vendor/prawn-core/data/fonts/Times-Italic.afm +2667 -0
- data/vendor/prawn-core/data/fonts/Times-Roman.afm +2419 -0
- data/vendor/prawn-core/data/fonts/ZapfDingbats.afm +225 -0
- data/vendor/prawn-core/data/fonts/comicsans.ttf +0 -0
- data/vendor/prawn-core/data/fonts/gkai00mp.ttf +0 -0
- data/vendor/prawn-core/data/images/16bit.alpha +0 -0
- data/vendor/prawn-core/data/images/16bit.dat +0 -0
- data/vendor/prawn-core/data/images/16bit.png +0 -0
- data/vendor/prawn-core/data/images/arrow.png +0 -0
- data/vendor/prawn-core/data/images/arrow2.png +0 -0
- data/vendor/prawn-core/data/images/barcode_issue.png +0 -0
- data/vendor/prawn-core/data/images/dice.alpha +0 -0
- data/vendor/prawn-core/data/images/dice.dat +0 -0
- data/vendor/prawn-core/data/images/dice.png +0 -0
- data/vendor/prawn-core/data/images/dice_interlaced.png +0 -0
- data/vendor/prawn-core/data/images/fractal.jpg +0 -0
- data/vendor/prawn-core/data/images/letterhead.jpg +0 -0
- data/vendor/prawn-core/data/images/page_white_text.alpha +0 -0
- data/vendor/prawn-core/data/images/page_white_text.dat +0 -0
- data/vendor/prawn-core/data/images/page_white_text.png +0 -0
- data/vendor/prawn-core/data/images/pigs.jpg +0 -0
- data/vendor/prawn-core/data/images/rails.dat +0 -0
- data/vendor/prawn-core/data/images/rails.png +0 -0
- data/vendor/prawn-core/data/images/ruport.png +0 -0
- data/vendor/prawn-core/data/images/ruport_data.dat +0 -0
- data/vendor/prawn-core/data/images/ruport_transparent.png +0 -0
- data/vendor/prawn-core/data/images/ruport_type0.png +0 -0
- data/vendor/prawn-core/data/images/stef.jpg +0 -0
- data/vendor/prawn-core/data/images/tru256.bmp +0 -0
- data/vendor/prawn-core/data/images/web-links.dat +1 -0
- data/vendor/prawn-core/data/images/web-links.png +0 -0
- data/vendor/prawn-core/data/shift_jis_text.txt +1 -0
- data/vendor/prawn-core/examples/bounding_box/bounding_boxes.rb +43 -0
- data/vendor/prawn-core/examples/bounding_box/indentation.rb +34 -0
- data/vendor/prawn-core/examples/bounding_box/russian_boxes.rb +36 -0
- data/vendor/prawn-core/examples/bounding_box/stretched_nesting.rb +67 -0
- data/vendor/prawn-core/examples/column_box/column_box_example.rb +43 -0
- data/vendor/prawn-core/examples/example_helper.rb +3 -0
- data/vendor/prawn-core/examples/general/background.rb +23 -0
- data/vendor/prawn-core/examples/general/canvas.rb +15 -0
- data/vendor/prawn-core/examples/general/context_sensitive_headers.rb +37 -0
- data/vendor/prawn-core/examples/general/float.rb +11 -0
- data/vendor/prawn-core/examples/general/margin.rb +36 -0
- data/vendor/prawn-core/examples/general/measurement_units.rb +51 -0
- data/vendor/prawn-core/examples/general/metadata-info.rb +16 -0
- data/vendor/prawn-core/examples/general/multi_page_layout.rb +18 -0
- data/vendor/prawn-core/examples/general/outlines.rb +50 -0
- data/vendor/prawn-core/examples/general/page_geometry.rb +31 -0
- data/vendor/prawn-core/examples/general/page_numbering.rb +15 -0
- data/vendor/prawn-core/examples/general/repeaters.rb +47 -0
- data/vendor/prawn-core/examples/general/stamp.rb +41 -0
- data/vendor/prawn-core/examples/graphics/basic_images.rb +23 -0
- data/vendor/prawn-core/examples/graphics/cmyk.rb +12 -0
- data/vendor/prawn-core/examples/graphics/curves.rb +11 -0
- data/vendor/prawn-core/examples/graphics/hexagon.rb +13 -0
- data/vendor/prawn-core/examples/graphics/image_fit.rb +15 -0
- data/vendor/prawn-core/examples/graphics/image_flow.rb +37 -0
- data/vendor/prawn-core/examples/graphics/image_position.rb +17 -0
- data/vendor/prawn-core/examples/graphics/line.rb +32 -0
- data/vendor/prawn-core/examples/graphics/png_types.rb +22 -0
- data/vendor/prawn-core/examples/graphics/polygons.rb +16 -0
- data/vendor/prawn-core/examples/graphics/remote_images.rb +12 -0
- data/vendor/prawn-core/examples/graphics/rounded_polygons.rb +19 -0
- data/vendor/prawn-core/examples/graphics/rounded_rectangle.rb +20 -0
- data/vendor/prawn-core/examples/graphics/ruport_style_helpers.rb +19 -0
- data/vendor/prawn-core/examples/graphics/stroke_bounds.rb +20 -0
- data/vendor/prawn-core/examples/graphics/stroke_cap_and_join.rb +45 -0
- data/vendor/prawn-core/examples/graphics/stroke_dash.rb +42 -0
- data/vendor/prawn-core/examples/graphics/transformations.rb +52 -0
- data/vendor/prawn-core/examples/graphics/transparency.rb +26 -0
- data/vendor/prawn-core/examples/m17n/chinese_text_wrapping.rb +17 -0
- data/vendor/prawn-core/examples/m17n/euro.rb +15 -0
- data/vendor/prawn-core/examples/m17n/sjis.rb +28 -0
- data/vendor/prawn-core/examples/m17n/utf8.rb +13 -0
- data/vendor/prawn-core/examples/m17n/win_ansi_charset.rb +54 -0
- data/vendor/prawn-core/examples/text/alignment.rb +18 -0
- data/vendor/prawn-core/examples/text/dfont.rb +48 -0
- data/vendor/prawn-core/examples/text/family_based_styling.rb +24 -0
- data/vendor/prawn-core/examples/text/font_calculations.rb +91 -0
- data/vendor/prawn-core/examples/text/font_size.rb +33 -0
- data/vendor/prawn-core/examples/text/indent_paragraphs.rb +18 -0
- data/vendor/prawn-core/examples/text/kerning.rb +30 -0
- data/vendor/prawn-core/examples/text/rotated.rb +98 -0
- data/vendor/prawn-core/examples/text/simple_text.rb +17 -0
- data/vendor/prawn-core/examples/text/simple_text_ttf.rb +17 -0
- data/vendor/prawn-core/examples/text/span.rb +29 -0
- data/vendor/prawn-core/examples/text/text_box.rb +88 -0
- data/vendor/prawn-core/examples/text/text_box_returning_excess.rb +51 -0
- data/vendor/prawn-core/examples/text/text_flow.rb +67 -0
- data/vendor/prawn-core/lib/prawn/byte_string.rb +7 -0
- data/vendor/prawn-core/lib/prawn/compatibility.rb +51 -0
- data/vendor/prawn-core/lib/prawn/core.rb +87 -0
- data/vendor/prawn-core/lib/prawn/core/page.rb +88 -0
- data/vendor/prawn-core/lib/prawn/core/text.rb +65 -0
- data/vendor/prawn-core/lib/prawn/document.rb +596 -0
- data/vendor/prawn-core/lib/prawn/document/annotations.rb +65 -0
- data/vendor/prawn-core/lib/prawn/document/bounding_box.rb +402 -0
- data/vendor/prawn-core/lib/prawn/document/column_box.rb +113 -0
- data/vendor/prawn-core/lib/prawn/document/destinations.rb +92 -0
- data/vendor/prawn-core/lib/prawn/document/graphics_state.rb +49 -0
- data/vendor/prawn-core/lib/prawn/document/internals.rb +153 -0
- data/vendor/prawn-core/lib/prawn/document/page_geometry.rb +136 -0
- data/vendor/prawn-core/lib/prawn/document/snapshot.rb +80 -0
- data/vendor/prawn-core/lib/prawn/document/span.rb +55 -0
- data/vendor/prawn-core/lib/prawn/encoding.rb +121 -0
- data/vendor/prawn-core/lib/prawn/errors.rb +83 -0
- data/vendor/prawn-core/lib/prawn/font.rb +329 -0
- data/vendor/prawn-core/lib/prawn/font/afm.rb +217 -0
- data/vendor/prawn-core/lib/prawn/font/dfont.rb +34 -0
- data/vendor/prawn-core/lib/prawn/font/ttf.rb +341 -0
- data/vendor/prawn-core/lib/prawn/graphics.rb +321 -0
- data/vendor/prawn-core/lib/prawn/graphics/cap_style.rb +38 -0
- data/vendor/prawn-core/lib/prawn/graphics/color.rb +205 -0
- data/vendor/prawn-core/lib/prawn/graphics/dash.rb +71 -0
- data/vendor/prawn-core/lib/prawn/graphics/join_style.rb +38 -0
- data/vendor/prawn-core/lib/prawn/graphics/transformation.rb +157 -0
- data/vendor/prawn-core/lib/prawn/graphics/transparency.rb +99 -0
- data/vendor/prawn-core/lib/prawn/images.rb +337 -0
- data/vendor/prawn-core/lib/prawn/images/jpg.rb +46 -0
- data/vendor/prawn-core/lib/prawn/images/png.rb +219 -0
- data/vendor/prawn-core/lib/prawn/literal_string.rb +14 -0
- data/vendor/prawn-core/lib/prawn/measurement_extensions.rb +46 -0
- data/vendor/prawn-core/lib/prawn/measurements.rb +71 -0
- data/vendor/prawn-core/lib/prawn/name_tree.rb +166 -0
- data/vendor/prawn-core/lib/prawn/object_store.rb +93 -0
- data/vendor/prawn-core/lib/prawn/outline.rb +278 -0
- data/vendor/prawn-core/lib/prawn/pdf_object.rb +83 -0
- data/vendor/prawn-core/lib/prawn/reference.rb +92 -0
- data/vendor/prawn-core/lib/prawn/repeater.rb +129 -0
- data/vendor/prawn-core/lib/prawn/stamp.rb +128 -0
- data/vendor/prawn-core/lib/prawn/text.rb +271 -0
- data/vendor/prawn-core/lib/prawn/text/box.rb +414 -0
- data/vendor/prawn-core/meta/Rakefile +36 -0
- data/vendor/prawn-core/meta/lib/prawn.rb +2 -0
- data/vendor/prawn-core/reference_pdfs/alignment.pdf +229 -0
- data/vendor/prawn-core/reference_pdfs/background.pdf +0 -0
- data/vendor/prawn-core/reference_pdfs/basic_images.pdf +0 -0
- data/vendor/prawn-core/reference_pdfs/bounding_boxes.pdf +128 -0
- data/vendor/prawn-core/reference_pdfs/canvas.pdf +78 -0
- data/vendor/prawn-core/reference_pdfs/chinese_flow.pdf +0 -0
- data/vendor/prawn-core/reference_pdfs/cmyk.pdf +0 -0
- data/vendor/prawn-core/reference_pdfs/column_box.pdf +3671 -0
- data/vendor/prawn-core/reference_pdfs/context_sensitive_headers.pdf +2331 -0
- data/vendor/prawn-core/reference_pdfs/curves.pdf +62 -0
- data/vendor/prawn-core/reference_pdfs/dfont.pdf +0 -0
- data/vendor/prawn-core/reference_pdfs/euro.pdf +75 -0
- data/vendor/prawn-core/reference_pdfs/family_style.pdf +286 -0
- data/vendor/prawn-core/reference_pdfs/flow.pdf +964 -0
- data/vendor/prawn-core/reference_pdfs/font_calculations.pdf +0 -0
- data/vendor/prawn-core/reference_pdfs/font_size.pdf +142 -0
- data/vendor/prawn-core/reference_pdfs/hexagon.pdf +61 -0
- data/vendor/prawn-core/reference_pdfs/image-flow.pdf +0 -0
- data/vendor/prawn-core/reference_pdfs/image_fit.pdf +0 -0
- data/vendor/prawn-core/reference_pdfs/image_position.pdf +0 -0
- data/vendor/prawn-core/reference_pdfs/indentation.pdf +124 -0
- data/vendor/prawn-core/reference_pdfs/kerning.pdf +0 -0
- data/vendor/prawn-core/reference_pdfs/landscape_a4.pdf +52 -0
- data/vendor/prawn-core/reference_pdfs/landscape_legal.pdf +52 -0
- data/vendor/prawn-core/reference_pdfs/landscape_letter.pdf +52 -0
- data/vendor/prawn-core/reference_pdfs/lines.pdf +116 -0
- data/vendor/prawn-core/reference_pdfs/margin.pdf +3850 -0
- data/vendor/prawn-core/reference_pdfs/measurement_units.pdf +4667 -0
- data/vendor/prawn-core/reference_pdfs/metadata-info.pdf +88 -0
- data/vendor/prawn-core/reference_pdfs/multi-layout.pdf +209 -0
- data/vendor/prawn-core/reference_pdfs/page_with_numbering.pdf +156 -0
- data/vendor/prawn-core/reference_pdfs/png_types.pdf +0 -0
- data/vendor/prawn-core/reference_pdfs/portrait_a4.pdf +52 -0
- data/vendor/prawn-core/reference_pdfs/portrait_legal.pdf +52 -0
- data/vendor/prawn-core/reference_pdfs/portrait_letter.pdf +52 -0
- data/vendor/prawn-core/reference_pdfs/pretty_polygons.pdf +122 -0
- data/vendor/prawn-core/reference_pdfs/remote_images.pdf +0 -0
- data/vendor/prawn-core/reference_pdfs/ruport.pdf +101 -0
- data/vendor/prawn-core/reference_pdfs/russian_boxes.pdf +2780 -0
- data/vendor/prawn-core/reference_pdfs/simple_text.pdf +136 -0
- data/vendor/prawn-core/reference_pdfs/simple_text_ttf.pdf +0 -0
- data/vendor/prawn-core/reference_pdfs/sjis.pdf +0 -0
- data/vendor/prawn-core/reference_pdfs/span.pdf +1975 -0
- data/vendor/prawn-core/reference_pdfs/stamp.pdf +649 -0
- data/vendor/prawn-core/reference_pdfs/stretched_nesting.pdf +200 -0
- data/vendor/prawn-core/reference_pdfs/stroke_bounds.pdf +135 -0
- data/vendor/prawn-core/reference_pdfs/stroke_cap_and_join.pdf +80 -0
- data/vendor/prawn-core/reference_pdfs/stroke_dash.pdf +457 -0
- data/vendor/prawn-core/reference_pdfs/text_box.pdf +962 -0
- data/vendor/prawn-core/reference_pdfs/text_box_returning_excess.pdf +271 -0
- data/vendor/prawn-core/reference_pdfs/transparency.pdf +347 -0
- data/vendor/prawn-core/reference_pdfs/utf8.pdf +0 -0
- data/vendor/prawn-core/reference_pdfs/win-ansi.pdf +6172 -0
- data/vendor/prawn-core/spec/annotations_spec.rb +90 -0
- data/vendor/prawn-core/spec/bounding_box_spec.rb +185 -0
- data/vendor/prawn-core/spec/destinations_spec.rb +15 -0
- data/vendor/prawn-core/spec/document_spec.rb +408 -0
- data/vendor/prawn-core/spec/font_spec.rb +314 -0
- data/vendor/prawn-core/spec/graphics_spec.rb +438 -0
- data/vendor/prawn-core/spec/images_spec.rb +79 -0
- data/vendor/prawn-core/spec/jpg_spec.rb +25 -0
- data/vendor/prawn-core/spec/measurement_units_spec.rb +23 -0
- data/vendor/prawn-core/spec/name_tree_spec.rb +112 -0
- data/vendor/prawn-core/spec/object_store_spec.rb +75 -0
- data/vendor/prawn-core/spec/outline_spec.rb +229 -0
- data/vendor/prawn-core/spec/pdf_object_spec.rb +122 -0
- data/vendor/prawn-core/spec/png_spec.rb +236 -0
- data/vendor/prawn-core/spec/reference_spec.rb +82 -0
- data/vendor/prawn-core/spec/repeater_spec.rb +96 -0
- data/vendor/prawn-core/spec/snapshot_spec.rb +138 -0
- data/vendor/prawn-core/spec/span_spec.rb +49 -0
- data/vendor/prawn-core/spec/spec_helper.rb +24 -0
- data/vendor/prawn-core/spec/stamp_spec.rb +108 -0
- data/vendor/prawn-core/spec/stroke_styles_spec.rb +152 -0
- data/vendor/prawn-core/spec/text_at_spec.rb +119 -0
- data/vendor/prawn-core/spec/text_box_spec.rb +603 -0
- data/vendor/prawn-core/spec/text_spec.rb +308 -0
- data/vendor/prawn-core/spec/transparency_spec.rb +75 -0
- data/vendor/prawn-core/vendor/pdf-inspector/README +18 -0
- data/vendor/prawn-core/vendor/pdf-inspector/lib/pdf/inspector.rb +26 -0
- data/vendor/prawn-core/vendor/pdf-inspector/lib/pdf/inspector/extgstate.rb +18 -0
- data/vendor/prawn-core/vendor/pdf-inspector/lib/pdf/inspector/graphics.rb +131 -0
- data/vendor/prawn-core/vendor/pdf-inspector/lib/pdf/inspector/page.rb +25 -0
- data/vendor/prawn-core/vendor/pdf-inspector/lib/pdf/inspector/text.rb +31 -0
- data/vendor/prawn-core/vendor/pdf-inspector/lib/pdf/inspector/xobject.rb +19 -0
- data/vendor/prawn-core/vendor/ttfunk/data/fonts/DejaVuSans.ttf +0 -0
- data/vendor/prawn-core/vendor/ttfunk/data/fonts/comicsans.ttf +0 -0
- data/vendor/prawn-core/vendor/ttfunk/example.rb +45 -0
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk.rb +102 -0
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/directory.rb +17 -0
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/encoding/mac_roman.rb +88 -0
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/encoding/windows_1252.rb +69 -0
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/reader.rb +44 -0
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/resource_file.rb +78 -0
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/subset.rb +18 -0
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/subset/base.rb +141 -0
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/subset/mac_roman.rb +46 -0
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/subset/unicode.rb +48 -0
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/subset/unicode_8bit.rb +63 -0
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/subset/windows_1252.rb +51 -0
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/subset_collection.rb +72 -0
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table.rb +46 -0
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/cmap.rb +34 -0
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/cmap/format00.rb +54 -0
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/cmap/format04.rb +126 -0
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/cmap/subtable.rb +79 -0
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/glyf.rb +64 -0
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/glyf/compound.rb +81 -0
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/glyf/simple.rb +37 -0
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/head.rb +44 -0
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/hhea.rb +41 -0
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/hmtx.rb +47 -0
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/kern.rb +79 -0
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/kern/format0.rb +62 -0
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/loca.rb +43 -0
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/maxp.rb +40 -0
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/name.rb +119 -0
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/os2.rb +78 -0
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/post.rb +91 -0
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/post/format10.rb +43 -0
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/post/format20.rb +35 -0
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/post/format25.rb +23 -0
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/post/format30.rb +17 -0
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/post/format40.rb +17 -0
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/simple.rb +14 -0
- data/vendor/prawn-core/www/index.html +196 -0
- data/vendor/prawn-core/www/media/bounding_boxes.pdf +146 -0
- data/vendor/prawn-core/www/media/bounding_boxes.png +0 -0
- data/vendor/prawn-core/www/media/bounding_boxes_out.png +0 -0
- data/vendor/prawn-core/www/media/fancy_table.pdf +350 -0
- data/vendor/prawn-core/www/media/image.pdf +0 -0
- data/vendor/prawn-core/www/media/images.png +0 -0
- data/vendor/prawn-core/www/media/prawn_logo.png +0 -0
- data/vendor/prawn-core/www/media/tables.png +0 -0
- data/vendor/prawn-core/www/media/utf8.pdf +0 -0
- data/vendor/prawn-core/www/media/utf8.png +0 -0
- data/vendor/prawn-core/www/prawn-Chinese.html +113 -0
- data/vendor/prawn-core/www/prawn.css +86 -0
- data/vendor/prawn-core/www/twilight.css +266 -0
- metadata +374 -0
@@ -0,0 +1,414 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
# text/rectangle.rb : Implements text boxes
|
4
|
+
#
|
5
|
+
# Copyright November 2009, Daniel Nelson. All Rights Reserved.
|
6
|
+
#
|
7
|
+
# This is free software. Please see the LICENSE and COPYING files for details.
|
8
|
+
|
9
|
+
module Prawn
|
10
|
+
module Text
|
11
|
+
|
12
|
+
# Draws the requested text into a box. When the text overflows
|
13
|
+
# the rectangle, you can display ellipses, shrink to fit, or
|
14
|
+
# truncate the text. Text boxes are independent of the document
|
15
|
+
# y position.
|
16
|
+
#
|
17
|
+
# == Encoding
|
18
|
+
#
|
19
|
+
# Note that strings passed to this function should be encoded as UTF-8.
|
20
|
+
# If you get unexpected characters appearing in your rendered document,
|
21
|
+
# check this.
|
22
|
+
#
|
23
|
+
# If the current font is a built-in one, although the string must be
|
24
|
+
# encoded as UTF-8, only characters that are available in WinAnsi
|
25
|
+
# are allowed.
|
26
|
+
#
|
27
|
+
# If an empty box is rendered to your PDF instead of the character you
|
28
|
+
# wanted it usually means the current font doesn't include that character.
|
29
|
+
#
|
30
|
+
# == Options (default values marked in [])
|
31
|
+
#
|
32
|
+
# <tt>:kerning</tt>:: <tt>boolean</tt>. Whether or not to use kerning (if it
|
33
|
+
# is available with the current font) [true]
|
34
|
+
# <tt>:size</tt>:: <tt>number</tt>. The font size to use. [current font
|
35
|
+
# size]
|
36
|
+
# <tt>:style</tt>:: The style to use. The requested style must be part of
|
37
|
+
# the current font familly. [current style]
|
38
|
+
#
|
39
|
+
# <tt>:at</tt>:: <tt>[x, y]</tt>. The upper left corner of the box
|
40
|
+
# [@document.bounds.left, @document.bounds.top]
|
41
|
+
# <tt>:width</tt>:: <tt>number</tt>. The width of the box
|
42
|
+
# [@document.bounds.right - @at[0]]
|
43
|
+
# <tt>:height</tt>:: <tt>number</tt>. The height of the box [@at[1] -
|
44
|
+
# @document.bounds.bottom]
|
45
|
+
# <tt>:align</tt>:: <tt>:left</tt>, <tt>:center</tt>, or <tt>:right</tt>.
|
46
|
+
# Alignment within the bounding box [:left]
|
47
|
+
# <tt>:valign</tt>:: <tt>:top</tt>, <tt>:center</tt>, or <tt>:bottom</tt>.
|
48
|
+
# Vertical alignment within the bounding box [:top]
|
49
|
+
# <tt>:rotation</tt>:: <tt>number</tt>. The angle to rotate the text
|
50
|
+
# <tt>:rotate_around</tt>:: <tt>:center</tt>, <tt>:upper_left</tt>,
|
51
|
+
# <tt>:upper_right</tt>, <tt>:lower_right</tt>,
|
52
|
+
# or <tt>:lower_left</tt>. The point around which
|
53
|
+
# to rotate the text [:upper_left]
|
54
|
+
# <tt>:leading</tt>:: <tt>number</tt>. Additional space between lines [0]
|
55
|
+
# <tt>:single_line</tt>:: <tt>boolean</tt>. If true, then only the first
|
56
|
+
# line will be drawn [false]
|
57
|
+
# <tt>:skip_encoding</tt>:: <tt>boolean</tt> [false]
|
58
|
+
# <tt>:overflow</tt>:: <tt>:truncate</tt>, <tt>:shrink_to_fit</tt>,
|
59
|
+
# <tt>:expand</tt>, or <tt>:ellipses</tt>. This
|
60
|
+
# controls the behavior when
|
61
|
+
# the amount of text exceeds the available space
|
62
|
+
# [:truncate]
|
63
|
+
# <tt>:min_font_size</tt>:: <tt>number</tt>. The minimum font size to use
|
64
|
+
# when :overflow is set to :shrink_to_fit (that is
|
65
|
+
# the font size will not be
|
66
|
+
# reduced to less than this value, even if it
|
67
|
+
# means that some text will be cut off). [5]
|
68
|
+
# <tt>:line_wrap</tt>:: <tt>object</tt>. An object used for custom line
|
69
|
+
# wrapping on a case by case basis. Note that if you
|
70
|
+
# want to change wrapping document-wide, do
|
71
|
+
# pdf.default_line_wrap = MyLineWrap.new. Your custom
|
72
|
+
# object must have a wrap_line method that accept a
|
73
|
+
# single <tt>line</tt> of text and an
|
74
|
+
# <tt>options</tt> hash and returns the string from
|
75
|
+
# that single line that can fit on the line under
|
76
|
+
# the conditions defined by <tt>options</tt>. If
|
77
|
+
# omitted, the line wrap object is used.
|
78
|
+
# The options hash passed into the wrap_object proc
|
79
|
+
# includes the following options:
|
80
|
+
# <tt>:width</tt>:: the width available for the
|
81
|
+
# current line of text
|
82
|
+
# <tt>:document</tt>:: the pdf object
|
83
|
+
# <tt>:kerning</tt>:: boolean
|
84
|
+
# <tt>:size</tt>:: the font size
|
85
|
+
#
|
86
|
+
# Returns any text that did not print under the current settings.
|
87
|
+
# NOTE: if an AFM font is used, then the returned text is encoded in
|
88
|
+
# WinAnsi. Subsequent calls to text_box that pass this returned text back
|
89
|
+
# into text box must include a :skip_encoding => true option. This is
|
90
|
+
# unnecessary when using TTF fonts because those operate on UTF-8 encoding.
|
91
|
+
#
|
92
|
+
def text_box(string, options)
|
93
|
+
Text::Box.new(string, options.merge(:document => self)).render
|
94
|
+
end
|
95
|
+
|
96
|
+
# Generally, one would use the text_box convenience method. However, using
|
97
|
+
# Text::Box.new in conjunction with render() enables one to do look-ahead
|
98
|
+
# calculations prior to placing text on the page, or to determine how much
|
99
|
+
# vertical space was consumed by the printed text
|
100
|
+
#
|
101
|
+
class Box
|
102
|
+
|
103
|
+
# The text that was successfully printed (or, if <tt>dry_run</tt> was
|
104
|
+
# used, the test that would have been successfully printed)
|
105
|
+
attr_reader :text
|
106
|
+
# The upper left corner of the text box
|
107
|
+
attr_reader :at
|
108
|
+
# The line height of the last line printed
|
109
|
+
attr_reader :line_height
|
110
|
+
# The height of the ascender of the last line printed
|
111
|
+
attr_reader :ascender
|
112
|
+
# The height of the descender of the last line printed
|
113
|
+
attr_reader :descender
|
114
|
+
# The leading used during printing
|
115
|
+
attr_reader :leading
|
116
|
+
|
117
|
+
# See Prawn::Text#text_box for valid options
|
118
|
+
#
|
119
|
+
def initialize(string, options={})
|
120
|
+
@inked = false
|
121
|
+
Prawn.verify_options(valid_options, options)
|
122
|
+
options = options.dup
|
123
|
+
@overflow = options[:overflow] || :truncate
|
124
|
+
@original_string = string
|
125
|
+
@text = nil
|
126
|
+
|
127
|
+
@document = options[:document]
|
128
|
+
@at = options[:at] ||
|
129
|
+
[@document.bounds.left, @document.bounds.top]
|
130
|
+
@width = options[:width] ||
|
131
|
+
@document.bounds.right - @at[0]
|
132
|
+
@height = options[:height] ||
|
133
|
+
@at[1] - @document.bounds.bottom
|
134
|
+
@align = options[:align] || :left
|
135
|
+
@vertical_align = options[:valign] || :top
|
136
|
+
@leading = options[:leading] || 0
|
137
|
+
@rotation = options[:rotation] || 0
|
138
|
+
@rotate_around = options[:rotate_around] || :upper_left
|
139
|
+
@single_line = options[:single_line]
|
140
|
+
@skip_encoding = options[:skip_encoding] || @document.skip_encoding
|
141
|
+
|
142
|
+
if @overflow == :expand
|
143
|
+
# if set to expand, then we simply set the bottom
|
144
|
+
# as the bottom of the document bounds, since that
|
145
|
+
# is the maximum we should expand to
|
146
|
+
@height = @at[1] - @document.bounds.bottom
|
147
|
+
@overflow = :truncate
|
148
|
+
end
|
149
|
+
@min_font_size = options[:min_font_size] || 5
|
150
|
+
@line_wrap = options [:line_wrap] || @document.default_line_wrap
|
151
|
+
@options = @document.text_options.merge(:kerning => options[:kerning],
|
152
|
+
:size => options[:size],
|
153
|
+
:style => options[:style])
|
154
|
+
end
|
155
|
+
|
156
|
+
# Render text to the document based on the settings defined in initialize.
|
157
|
+
#
|
158
|
+
# In order to facilitate look-ahead calculations, <tt>render</tt> accepts
|
159
|
+
# a <tt>:dry_run => true</tt> option. If provided then everything is
|
160
|
+
# executed as if rendering, with the exception that nothing is drawn on
|
161
|
+
# the page. Useful for look-ahead computations of height, unprinted text,
|
162
|
+
# etc.
|
163
|
+
#
|
164
|
+
# Returns any text that did not print under the current settings
|
165
|
+
#
|
166
|
+
def render(flags={})
|
167
|
+
# dup because normalize_encoding changes the string
|
168
|
+
string = @original_string.dup
|
169
|
+
unprinted_text = ''
|
170
|
+
@document.save_font do
|
171
|
+
process_options
|
172
|
+
|
173
|
+
unless @skip_encoding
|
174
|
+
@document.font.normalize_encoding!(string)
|
175
|
+
end
|
176
|
+
|
177
|
+
@document.font_size(@font_size) do
|
178
|
+
shrink_to_fit(string) if @overflow == :shrink_to_fit
|
179
|
+
process_vertical_alignment(string)
|
180
|
+
@inked = true unless flags[:dry_run]
|
181
|
+
if @rotation != 0 && @inked
|
182
|
+
unprinted_text = render_rotated(string)
|
183
|
+
else
|
184
|
+
unprinted_text = _render(string)
|
185
|
+
end
|
186
|
+
@inked = false
|
187
|
+
end
|
188
|
+
end
|
189
|
+
unprinted_text
|
190
|
+
end
|
191
|
+
|
192
|
+
# The height actually used during the previous <tt>render</tt>
|
193
|
+
#
|
194
|
+
def height
|
195
|
+
return 0 if @baseline_y.nil? || @descender.nil?
|
196
|
+
# baseline is already pushed down one line below the current
|
197
|
+
# line, so we need to subtract line line_height and leading,
|
198
|
+
# but we need to add in the descender since baseline is
|
199
|
+
# above the descender
|
200
|
+
@baseline_y.abs + @descender - @line_height - @leading
|
201
|
+
end
|
202
|
+
|
203
|
+
private
|
204
|
+
|
205
|
+
def valid_options
|
206
|
+
Text::VALID_TEXT_OPTIONS.dup.concat([:at, :height, :width,
|
207
|
+
:align, :valign,
|
208
|
+
:overflow, :min_font_size,
|
209
|
+
:line_wrap,
|
210
|
+
:leading,
|
211
|
+
:document,
|
212
|
+
:rotation,
|
213
|
+
:rotate_around,
|
214
|
+
:single_line,
|
215
|
+
:skip_encoding])
|
216
|
+
end
|
217
|
+
|
218
|
+
def process_vertical_alignment(string)
|
219
|
+
return if @vertical_align == :top
|
220
|
+
_render(string)
|
221
|
+
case @vertical_align
|
222
|
+
when :center
|
223
|
+
@at[1] = @at[1] - (@height - height) * 0.5
|
224
|
+
when :bottom
|
225
|
+
@at[1] = @at[1] - (@height - height)
|
226
|
+
end
|
227
|
+
@height = height
|
228
|
+
end
|
229
|
+
|
230
|
+
# Decrease the font size until the text fits or the min font
|
231
|
+
# size is reached
|
232
|
+
def shrink_to_fit(string)
|
233
|
+
while (unprinted_text = _render(string)).length > 0 &&
|
234
|
+
@font_size > @min_font_size
|
235
|
+
@font_size -= 0.5
|
236
|
+
@document.font_size = @font_size
|
237
|
+
end
|
238
|
+
end
|
239
|
+
|
240
|
+
def process_options
|
241
|
+
# must be performed within a save_font bock because
|
242
|
+
# document.process_text_options sets the font
|
243
|
+
@document.process_text_options(@options)
|
244
|
+
@font_size = @options[:size]
|
245
|
+
@kerning = @options[:kerning]
|
246
|
+
end
|
247
|
+
|
248
|
+
def render_rotated(string)
|
249
|
+
unprinted_text = ''
|
250
|
+
|
251
|
+
case @rotate_around
|
252
|
+
when :center
|
253
|
+
x = @at[0] + @width * 0.5
|
254
|
+
y = @at[1] - @height * 0.5
|
255
|
+
when :upper_right
|
256
|
+
x = @at[0] + @width
|
257
|
+
y = @at[1]
|
258
|
+
when :lower_right
|
259
|
+
x = @at[0] + @width
|
260
|
+
y = @at[1] - @height
|
261
|
+
when :lower_left
|
262
|
+
x = @at[0]
|
263
|
+
y = @at[1] - @height
|
264
|
+
else
|
265
|
+
x = @at[0]
|
266
|
+
y = @at[1]
|
267
|
+
end
|
268
|
+
|
269
|
+
@document.rotate(@rotation, :origin => [x, y]) do
|
270
|
+
unprinted_text = _render(string)
|
271
|
+
end
|
272
|
+
unprinted_text
|
273
|
+
end
|
274
|
+
|
275
|
+
def _render(remaining_text)
|
276
|
+
@line_height = @document.font.height
|
277
|
+
@descender = @document.font.descender
|
278
|
+
@ascender = @document.font.ascender
|
279
|
+
@baseline_y = -@ascender
|
280
|
+
|
281
|
+
printed_text = []
|
282
|
+
|
283
|
+
while remaining_text &&
|
284
|
+
remaining_text.length > 0 &&
|
285
|
+
@baseline_y.abs + @descender <= @height
|
286
|
+
line_to_print = @line_wrap.wrap_line(remaining_text.first_line,
|
287
|
+
:document => @document,
|
288
|
+
:kerning => @kerning,
|
289
|
+
:size => @font_size,
|
290
|
+
:width => @width)
|
291
|
+
|
292
|
+
if line_to_print.empty? && remaining_text.length > 0
|
293
|
+
raise Errors::CannotFit
|
294
|
+
end
|
295
|
+
|
296
|
+
remaining_text = remaining_text.slice(line_to_print.length..
|
297
|
+
remaining_text.length)
|
298
|
+
print_ellipses = (@overflow == :ellipses && last_line? &&
|
299
|
+
remaining_text.length > 0)
|
300
|
+
printed_text << print_line(line_to_print, print_ellipses)
|
301
|
+
@baseline_y -= (@line_height + @leading)
|
302
|
+
break if @single_line
|
303
|
+
end
|
304
|
+
|
305
|
+
@text = printed_text.join("\n") if @inked
|
306
|
+
|
307
|
+
remaining_text
|
308
|
+
end
|
309
|
+
|
310
|
+
def print_line(line_to_print, print_ellipses)
|
311
|
+
# strip so that trailing and preceding white space don't
|
312
|
+
# interfere with alignment
|
313
|
+
line_to_print.strip!
|
314
|
+
|
315
|
+
insert_ellipses(line_to_print) if print_ellipses
|
316
|
+
|
317
|
+
case(@align)
|
318
|
+
when :left
|
319
|
+
x = @at[0]
|
320
|
+
when :center
|
321
|
+
line_width = @document.width_of(line_to_print, :kerning => @kerning)
|
322
|
+
x = @at[0] + @width * 0.5 - line_width * 0.5
|
323
|
+
when :right
|
324
|
+
line_width = @document.width_of(line_to_print, :kerning => @kerning)
|
325
|
+
x = @at[0] + @width - line_width
|
326
|
+
end
|
327
|
+
|
328
|
+
y = @at[1] + @baseline_y
|
329
|
+
|
330
|
+
if @inked
|
331
|
+
@document.draw_text!(line_to_print, :at => [x, y],
|
332
|
+
:size => @font_size, :kerning => @kerning)
|
333
|
+
end
|
334
|
+
|
335
|
+
line_to_print
|
336
|
+
end
|
337
|
+
|
338
|
+
def last_line?
|
339
|
+
@baseline_y.abs + @descender > @height - @line_height
|
340
|
+
end
|
341
|
+
|
342
|
+
def insert_ellipses(line_to_print)
|
343
|
+
if @document.width_of(line_to_print + "...",
|
344
|
+
:kerning => @kerning) < @width
|
345
|
+
line_to_print.insert(-1, "...")
|
346
|
+
else
|
347
|
+
line_to_print[-3..-1] = "..." if line_to_print.length > 3
|
348
|
+
end
|
349
|
+
end
|
350
|
+
end
|
351
|
+
|
352
|
+
class LineWrap
|
353
|
+
def wrap_line(line, options)
|
354
|
+
@document = options[:document]
|
355
|
+
@size = options[:size]
|
356
|
+
@kerning = options[:kerning]
|
357
|
+
@width = options[:width]
|
358
|
+
@accumulated_width = 0
|
359
|
+
@output = ""
|
360
|
+
|
361
|
+
scan_pattern = @document.font.unicode? ? /\S+|\s+/ : /\S+|\s+/n
|
362
|
+
space_scan_pattern = @document.font.unicode? ? /\s/ : /\s/n
|
363
|
+
|
364
|
+
line.scan(scan_pattern).each do |segment|
|
365
|
+
# yes, this block could be split out into another method, but it is
|
366
|
+
# called on every word printed, so I'm keeping it here for speed
|
367
|
+
|
368
|
+
segment_width = @document.width_of(segment,
|
369
|
+
:size => @size,
|
370
|
+
:kerning => @kerning)
|
371
|
+
|
372
|
+
if @accumulated_width + segment_width <= @width
|
373
|
+
@accumulated_width += segment_width
|
374
|
+
@output << segment
|
375
|
+
else
|
376
|
+
# if the line contains white space, don't split the
|
377
|
+
# final word that doesn't fit, just return what fits nicely
|
378
|
+
break if @output =~ space_scan_pattern
|
379
|
+
wrap_by_char(segment)
|
380
|
+
break
|
381
|
+
end
|
382
|
+
end
|
383
|
+
@output
|
384
|
+
end
|
385
|
+
|
386
|
+
private
|
387
|
+
|
388
|
+
def wrap_by_char(segment)
|
389
|
+
if @document.font.unicode?
|
390
|
+
segment.unpack("U*").each do |char_int|
|
391
|
+
return unless append_char([char_int].pack("U"))
|
392
|
+
end
|
393
|
+
else
|
394
|
+
segment.each_char do |char|
|
395
|
+
return unless append_char(char)
|
396
|
+
end
|
397
|
+
end
|
398
|
+
end
|
399
|
+
|
400
|
+
def append_char(char)
|
401
|
+
@accumulated_width += @document.width_of(char,
|
402
|
+
:size => @size,
|
403
|
+
:kerning => @kerning)
|
404
|
+
if @accumulated_width >= @width
|
405
|
+
false
|
406
|
+
else
|
407
|
+
@output << char
|
408
|
+
true
|
409
|
+
end
|
410
|
+
end
|
411
|
+
end
|
412
|
+
|
413
|
+
end
|
414
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require "rubygems"
|
2
|
+
require "rake"
|
3
|
+
require "rake/gempackagetask"
|
4
|
+
|
5
|
+
# This is to be used to generate the prawn meta-gem only. You probably want to
|
6
|
+
# build prawn-core unless you know exactly what you are doing, so do rake gem
|
7
|
+
# instead.
|
8
|
+
|
9
|
+
spec = Gem::Specification.new do |spec|
|
10
|
+
spec.name = "prawn"
|
11
|
+
spec.version = "0.8.0"
|
12
|
+
spec.platform = Gem::Platform::RUBY
|
13
|
+
spec.summary = "A fast and nimble PDF generator for Ruby"
|
14
|
+
spec.add_dependency('prawn-core', '= 0.8.0')
|
15
|
+
spec.add_dependency('prawn-layout', '= 0.8.0')
|
16
|
+
spec.add_dependency('prawn-security''= 0.8.0')
|
17
|
+
spec.files = Dir.glob("lib/*")
|
18
|
+
spec.require_path = "lib"
|
19
|
+
spec.author = "Gregory Brown"
|
20
|
+
spec.email = " gregory.t.brown@gmail.com"
|
21
|
+
spec.rubyforge_project = "prawn"
|
22
|
+
spec.homepage = "http://prawn.majesticseacreature.com"
|
23
|
+
spec.description = "Prawn is a fast, tiny, and nimble PDF generator for Ruby"
|
24
|
+
spec.post_install_message = %{
|
25
|
+
Welcome to Prawn, the best pure-Ruby PDF solution ever!
|
26
|
+
This is the bleeding edge of 0.8. You probably shouldn't be using it.
|
27
|
+
|
28
|
+
Try the latest stable release instead, or the stable branch at:
|
29
|
+
http://github.com/sandal/prawn
|
30
|
+
}
|
31
|
+
end
|
32
|
+
|
33
|
+
Rake::GemPackageTask.new(spec) do |pkg|
|
34
|
+
pkg.need_zip = true
|
35
|
+
pkg.need_tar = true
|
36
|
+
end
|