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
data/README.markdown
ADDED
data/Rakefile
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'rake'
|
3
|
+
require "rake/gempackagetask"
|
4
|
+
|
5
|
+
PRAWN_GRAPH_VERSION = '0.0.1'
|
6
|
+
|
7
|
+
spec = Gem::Specification.new do |spec|
|
8
|
+
spec.name = "prawn-graph"
|
9
|
+
spec.version = PRAWN_GRAPH_VERSION
|
10
|
+
spec.platform = Gem::Platform::RUBY
|
11
|
+
spec.summary = "An extension to Prawn that provides the ability to draw basic graphs and charts natively in your PDFs."
|
12
|
+
spec.files = Dir.glob("{examples,lib,spec,vendor,data}/**/**/*") +
|
13
|
+
["Rakefile"]
|
14
|
+
spec.require_path = "lib"
|
15
|
+
|
16
|
+
spec.test_files = Dir[ "test/*_test.rb" ]
|
17
|
+
spec.has_rdoc = true
|
18
|
+
spec.extra_rdoc_files = %w{README.markdown}
|
19
|
+
spec.rdoc_options << '--title' << 'Prawn Documentation' <<
|
20
|
+
'--main' << 'README' << '-q'
|
21
|
+
spec.author = "Ryan Stenhouse"
|
22
|
+
spec.email = " ryan@ryanstenhouse.eu"
|
23
|
+
spec.rubyforge_project = "prawn"
|
24
|
+
spec.homepage = "http://ryanstenhouse.eu"
|
25
|
+
spec.description = <<END_DESC
|
26
|
+
An extension to Prawn that provides the ability to draw basic graphs and charts natively in your PDFs.
|
27
|
+
END_DESC
|
28
|
+
end
|
29
|
+
|
30
|
+
Rake::GemPackageTask.new(spec) do |pkg|
|
31
|
+
pkg.need_zip = true
|
32
|
+
pkg.need_tar = true
|
33
|
+
end
|
34
|
+
|
@@ -0,0 +1,22 @@
|
|
1
|
+
|
2
|
+
require "#{File.dirname(__FILE__)}/../example_helper.rb"
|
3
|
+
|
4
|
+
options = {
|
5
|
+
:title => 'Average litter size per kind of animal',
|
6
|
+
:label_x => 'Kind of animal',
|
7
|
+
:label_y => 'Average litter size',
|
8
|
+
:at => [10,10],
|
9
|
+
}
|
10
|
+
|
11
|
+
data = [
|
12
|
+
['Raccoons', 4],
|
13
|
+
['Mice', 11],
|
14
|
+
['Dogs', 6],
|
15
|
+
['Panda', 1],
|
16
|
+
['Gorilla', 1],
|
17
|
+
['Cats', 4]
|
18
|
+
]
|
19
|
+
|
20
|
+
Prawn::Document.generate('advanced_bar_chart.pdf') do
|
21
|
+
bar_chart data, options
|
22
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
#
|
3
|
+
require "#{File.dirname(__FILE__)}/../example_helper.rb"
|
4
|
+
|
5
|
+
# Simplest bar chart example
|
6
|
+
#
|
7
|
+
|
8
|
+
data = [
|
9
|
+
['Cats',20],
|
10
|
+
['Dogs',36],
|
11
|
+
['Hamsters',45],
|
12
|
+
['Goldfish', 5]
|
13
|
+
]
|
14
|
+
|
15
|
+
Prawn::Document.generate('bar_chart.pdf') do
|
16
|
+
bar_chart data, :at => [10, 10]
|
17
|
+
end
|
18
|
+
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
#
|
3
|
+
require "#{File.dirname(__FILE__)}/../example_helper.rb"
|
4
|
+
|
5
|
+
# Simplest line chart example
|
6
|
+
#
|
7
|
+
|
8
|
+
data = [
|
9
|
+
['January',20],
|
10
|
+
['February',36],
|
11
|
+
['March',45],
|
12
|
+
['April', 5]
|
13
|
+
]
|
14
|
+
|
15
|
+
Prawn::Document.generate('line_chart.pdf') do
|
16
|
+
line_chart data, :at => [10, 10]
|
17
|
+
end
|
18
|
+
|
data/lib/prawn/graph.rb
ADDED
@@ -0,0 +1,94 @@
|
|
1
|
+
require 'bigdecimal'
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/graph/errors'
|
4
|
+
require File.dirname(__FILE__) + '/graph/chart'
|
5
|
+
require File.dirname(__FILE__) + '/graph/grid'
|
6
|
+
require File.dirname(__FILE__) + '/graph/bar'
|
7
|
+
require File.dirname(__FILE__) + '/graph/line'
|
8
|
+
|
9
|
+
module Prawn
|
10
|
+
|
11
|
+
class Document
|
12
|
+
|
13
|
+
# Adds compatibility with the current stable version of prawn
|
14
|
+
#
|
15
|
+
alias text draw_text
|
16
|
+
|
17
|
+
# Draws a fairly simple bar chart. Data should be passed in as an array of
|
18
|
+
# arrays, much like how Tables are dealt with:
|
19
|
+
#
|
20
|
+
# [
|
21
|
+
# [ 'Field Title', 10 ],
|
22
|
+
# [ 'Another Title', 20]
|
23
|
+
# ]
|
24
|
+
#
|
25
|
+
# options[:at] MUST be specified, as the coordinates where you want your
|
26
|
+
# bar chart to be drawn.
|
27
|
+
#
|
28
|
+
# options[:width] Sets the width of the chart, defaults to 500
|
29
|
+
# options[:height] Sets the height of the chart, defaults to 200
|
30
|
+
# options[:spacing] Sets the spacing between the grid squares of the chart, defaults to 20
|
31
|
+
#
|
32
|
+
# It will do its best to try and size content to fit the available size; but at
|
33
|
+
# the moment it's not too clever. If your graph looks squashed; make it bigger.
|
34
|
+
#
|
35
|
+
# Other available options are:
|
36
|
+
#
|
37
|
+
# :label_x Which sets a label to be shown along the X Axis.
|
38
|
+
# :label_y Which sets a label to be shown along the Y Axis.
|
39
|
+
# :title Which sets a Title for the chart
|
40
|
+
#
|
41
|
+
# For now, these values DO NOT scale in size. X/Y labels are always 8 points and Titles
|
42
|
+
# are always 10 points.
|
43
|
+
#
|
44
|
+
def bar_chart(data, options = {})
|
45
|
+
if data.nil? || data.empty?
|
46
|
+
raise Prawn::Errors::NoGraphData,
|
47
|
+
"data must be a non-empty, non-nil, two dimensional array " +
|
48
|
+
"in the form [ [ 'Title', SomeValue ] ]"
|
49
|
+
end
|
50
|
+
Prawn::Chart::Bar.new(data, self, options).draw
|
51
|
+
end
|
52
|
+
alias :bar_graph :bar_chart
|
53
|
+
|
54
|
+
# Draws a fairly simple line chart. Data should be passed in as an array of
|
55
|
+
# arrays, much like how Tables are dealt with:
|
56
|
+
#
|
57
|
+
# [
|
58
|
+
# [ 'Field Title', 10 ],
|
59
|
+
# [ 'Another Title', 20]
|
60
|
+
# ]
|
61
|
+
#
|
62
|
+
# options[:at] MUST be specified, as the coordinates where you want your
|
63
|
+
# bar chart to be drawn.
|
64
|
+
#
|
65
|
+
# options[:width] Sets the width of the chart, defaults to 500
|
66
|
+
# options[:height] Sets the height of the chart, defaults to 200
|
67
|
+
# options[:spacing] Sets the spacing between the grid squares of the chart, defaults to 20
|
68
|
+
#
|
69
|
+
# It will do its best to try and size content to fit the available size; but at
|
70
|
+
# the moment it's not too clever. If your graph looks squashed; make it bigger.
|
71
|
+
#
|
72
|
+
# Other available options are:
|
73
|
+
#
|
74
|
+
# :label_x Which sets a label to be shown along the X Axis.
|
75
|
+
# :label_y Which sets a label to be shown along the Y Axis.
|
76
|
+
# :title Which sets a Title for the chart
|
77
|
+
#
|
78
|
+
# For now, these values DO NOT scale in size. X/Y labels are always 8 points and Titles
|
79
|
+
# are always 10 points.
|
80
|
+
#
|
81
|
+
def line_chart(data, options = {})
|
82
|
+
if data.nil? || data.empty?
|
83
|
+
raise Prawn::Errors::NoGraphData,
|
84
|
+
"data must be a non-empty, non-nil, two dimensional array " +
|
85
|
+
"in the form [ [ 'Title', SomeValue ] ]"
|
86
|
+
end
|
87
|
+
Prawn::Chart::Line.new(data, self, options).draw
|
88
|
+
end
|
89
|
+
alias :line_graph :line_chart
|
90
|
+
|
91
|
+
|
92
|
+
end
|
93
|
+
|
94
|
+
end
|
@@ -0,0 +1,172 @@
|
|
1
|
+
module Prawn
|
2
|
+
module Chart
|
3
|
+
class Bar
|
4
|
+
|
5
|
+
attr_accessor :grid, :headings, :values, :highest_value, :document, :colour
|
6
|
+
|
7
|
+
def initialize(data, document, options = {})
|
8
|
+
if options[:at].nil? || options[:at].empty?
|
9
|
+
raise Prawn::Errors::NoGraphStartSet,
|
10
|
+
"you must specify options[:at] as the coordinates wher you" +
|
11
|
+
" wish this graph to be drawn from."
|
12
|
+
end
|
13
|
+
opts = { :width => 500, :height => 200, :spacing => 20 }.merge(options)
|
14
|
+
(@headings, @values, @highest_value) = process_the data
|
15
|
+
(grid_x_start, grid_y_start, grid_width, grid_height) = parse_sizing_from opts
|
16
|
+
@colour = (!opts[:use_color].nil? || !opts[:use_colour].nil?)
|
17
|
+
@document = document
|
18
|
+
@grid = Prawn::Chart::Grid.new(grid_x_start, grid_y_start, grid_width, grid_height, opts[:spacing], document)
|
19
|
+
end
|
20
|
+
|
21
|
+
def draw
|
22
|
+
@grid.draw
|
23
|
+
label_axes
|
24
|
+
if @title
|
25
|
+
draw_title
|
26
|
+
end
|
27
|
+
plot_values
|
28
|
+
if @x_label
|
29
|
+
draw_x_axis_label
|
30
|
+
end
|
31
|
+
if @y_label
|
32
|
+
draw_y_axis_label
|
33
|
+
end
|
34
|
+
reset
|
35
|
+
end
|
36
|
+
|
37
|
+
private
|
38
|
+
|
39
|
+
def reset
|
40
|
+
@document.line_width 1
|
41
|
+
@document.stroke_color '000000'
|
42
|
+
@document.fill_color '000000'
|
43
|
+
@document.move_to @grid.point
|
44
|
+
end
|
45
|
+
|
46
|
+
def plot_values
|
47
|
+
base_x = @grid.start_x + 1
|
48
|
+
base_y = @grid.start_y + 1
|
49
|
+
bar_width = calculate_bar_width
|
50
|
+
@document.line_width bar_width
|
51
|
+
last_position = base_x
|
52
|
+
point_spacing = calculate_plot_spacing
|
53
|
+
@values.each do |value|
|
54
|
+
@document.move_to [base_x + last_position, base_y]
|
55
|
+
bar_height = calculate_point_height_from value
|
56
|
+
if @colour
|
57
|
+
@document.stroke_color [rand(255), rand(255), rand(255), 0]
|
58
|
+
else
|
59
|
+
@document.stroke_color 'AAAAAA'
|
60
|
+
end
|
61
|
+
@document.stroke_line_to [base_x + last_position, base_y + bar_height]
|
62
|
+
last_position += point_spacing
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
def label_axes
|
67
|
+
base_x = @grid.start_x + 1
|
68
|
+
base_y = @grid.start_y + 1
|
69
|
+
|
70
|
+
# Put the values up the Y Axis
|
71
|
+
#
|
72
|
+
@document.draw_text @highest_value, :at => [base_x - 15, base_y + @grid.height], :size => 5
|
73
|
+
@document.draw_text '0', :at => [base_x - 15, base_y ], :size => 5
|
74
|
+
|
75
|
+
# Put the column headings along the X Axis
|
76
|
+
#
|
77
|
+
point_spacing = calculate_plot_spacing
|
78
|
+
last_position = base_x + (point_spacing / 2)
|
79
|
+
@headings.each do |heading|
|
80
|
+
@document.draw_text heading, :at => [last_position, base_y - 15 ], :size => 5
|
81
|
+
last_position += point_spacing
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
def draw_x_axis_label
|
86
|
+
x_coord = calculate_x_axis_center_point(@x_label, 8)
|
87
|
+
y_coord = @grid.start_y - 30
|
88
|
+
@document.draw_text @x_label, :at => [x_coord, y_coord] ,:size => 8
|
89
|
+
end
|
90
|
+
|
91
|
+
def draw_y_axis_label
|
92
|
+
y_coord = calculate_y_axis_center_point(@y_label, 8)
|
93
|
+
x_coord = @grid.start_x - 30
|
94
|
+
@document.draw_text @y_label, :at => [x_coord, y_coord] ,:size => 8, :rotate => 90
|
95
|
+
end
|
96
|
+
|
97
|
+
def draw_title
|
98
|
+
x_coord = calculate_x_axis_center_point(@title, 10)
|
99
|
+
y_coord = @grid.start_y + @grid.height + 10
|
100
|
+
@document.draw_text @title, :at => [x_coord, y_coord] ,:size => 10
|
101
|
+
end
|
102
|
+
|
103
|
+
def parse_sizing_from(o)
|
104
|
+
x_offset = 15
|
105
|
+
y_offset = 0
|
106
|
+
move_y_up = 0
|
107
|
+
grid_width = o[:width]
|
108
|
+
grid_height = o[:height]
|
109
|
+
|
110
|
+
# Make room for the title if we're choosing to Render it.
|
111
|
+
#
|
112
|
+
if o[:title]
|
113
|
+
@title = o[:title]
|
114
|
+
y_offset += 10
|
115
|
+
end
|
116
|
+
|
117
|
+
# Make room for X Axis labels if we're using them.
|
118
|
+
#
|
119
|
+
if o[:label_x]
|
120
|
+
y_offset += 30
|
121
|
+
move_y_up += 30
|
122
|
+
@x_label = o[:label_x]
|
123
|
+
end
|
124
|
+
|
125
|
+
# Make room for Y Axis labels if we're using them.
|
126
|
+
#
|
127
|
+
if o[:label_y]
|
128
|
+
@y_label = o[:label_y]
|
129
|
+
x_offset += 15
|
130
|
+
end
|
131
|
+
|
132
|
+
# Return the values calculated here.
|
133
|
+
#
|
134
|
+
[ (o[:at][0] + x_offset), (o[:at][1] + move_y_up), (grid_width - x_offset), (grid_height - y_offset) ]
|
135
|
+
end
|
136
|
+
|
137
|
+
def process_the(data_array)
|
138
|
+
col = []
|
139
|
+
val = []
|
140
|
+
data_array.each { |i| val << i[1]; col << i[0] }
|
141
|
+
[ col, val ,val.sort.last ]
|
142
|
+
end
|
143
|
+
|
144
|
+
def calculate_x_axis_center_point(text, text_size, graph_start_x = @grid.start_x, graph_width = @grid.width)
|
145
|
+
((graph_start_x + (graph_width / 2)) - ((text.length * text_size) / 4))
|
146
|
+
end
|
147
|
+
alias calculate_x_axis_centre_point calculate_x_axis_center_point
|
148
|
+
|
149
|
+
def calculate_y_axis_center_point(text, text_size, graph_start_y = @grid.start_y, graph_height = @grid.height)
|
150
|
+
((graph_start_y + (graph_height / 2)) - ((text.length * text_size) / 4))
|
151
|
+
end
|
152
|
+
alias calculate_y_axis_centre_point calculate_y_axis_center_point
|
153
|
+
|
154
|
+
def calculate_plot_spacing
|
155
|
+
(@grid.width / @values.nitems)
|
156
|
+
end
|
157
|
+
|
158
|
+
def calculate_bar_width
|
159
|
+
calculate_plot_spacing / 2
|
160
|
+
end
|
161
|
+
|
162
|
+
def calculate_point_height_from(column_value)
|
163
|
+
cv = BigDecimal("#{column_value}")
|
164
|
+
hv = BigDecimal("#{@highest_value}")
|
165
|
+
gh = BigDecimal("#{@grid.height}")
|
166
|
+
percentage = (cv / (hv / 100))
|
167
|
+
((gh / 100) * percentage).to_i
|
168
|
+
end
|
169
|
+
|
170
|
+
end
|
171
|
+
end
|
172
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
module Prawn
|
2
|
+
module Chart
|
3
|
+
class Grid
|
4
|
+
|
5
|
+
attr_accessor :width, :height, :point, :spacing, :document
|
6
|
+
|
7
|
+
def initialize(grid_x_start, grid_y_start, grid_width, grid_height, spacing, document)
|
8
|
+
@point = [grid_x_start, grid_y_start]
|
9
|
+
@width = grid_width
|
10
|
+
@height = grid_height
|
11
|
+
@spacing = spacing
|
12
|
+
@document = document
|
13
|
+
end
|
14
|
+
|
15
|
+
def start_x; @point.first; end
|
16
|
+
def start_y; @point.last; end
|
17
|
+
|
18
|
+
# Draws the Grid on the specified Prawn::Document
|
19
|
+
#
|
20
|
+
def draw
|
21
|
+
@document.stroke_color 'CCCCCC'
|
22
|
+
(@height / @spacing).times do |x|
|
23
|
+
offset = @spacing * (x + 1)
|
24
|
+
@document.move_to [@point.first, (@point.last + offset)]
|
25
|
+
@document.line_width(0.5)
|
26
|
+
@document.stroke_line_to([(@point.first + @width), (@point.last + offset)])
|
27
|
+
end
|
28
|
+
@document.move_to @point
|
29
|
+
@document.line_width(2)
|
30
|
+
@document.stroke_color '000000'
|
31
|
+
@document.stroke_line_to([@point.first, @point.last + @height])
|
32
|
+
@document.move_to @point
|
33
|
+
@document.line_width(2)
|
34
|
+
@document.stroke_line_to([(@point.first + @width), @point.last])
|
35
|
+
@document.move_to @point.first, (@point.last + height)
|
36
|
+
@document.stroke_color '000000'
|
37
|
+
@document.line_width(1)
|
38
|
+
@document.move_to @point
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
module Prawn
|
2
|
+
module Chart
|
3
|
+
class Line < Bar
|
4
|
+
|
5
|
+
private
|
6
|
+
|
7
|
+
def plot_values
|
8
|
+
base_x = @grid.start_x + 1
|
9
|
+
base_y = @grid.start_y + 1
|
10
|
+
p = [ [base_x, base_y] ]
|
11
|
+
bar_width = calculate_bar_width
|
12
|
+
@document.line_width bar_width
|
13
|
+
last_position = base_x + bar_width
|
14
|
+
point_spacing = calculate_plot_spacing
|
15
|
+
@values.each do |value|
|
16
|
+
@document.move_to [base_x + last_position, base_y]
|
17
|
+
bar_height = calculate_point_height_from value
|
18
|
+
point = [base_x + last_position, base_y + bar_height]
|
19
|
+
p << point
|
20
|
+
if @colour
|
21
|
+
@document.fill_color '00DD00'
|
22
|
+
else
|
23
|
+
@document.fill_color 'AAAAAA'
|
24
|
+
end
|
25
|
+
@document.fill_circle_at point, :radius => 1
|
26
|
+
last_position += point_spacing
|
27
|
+
end
|
28
|
+
@document.line_width 2
|
29
|
+
if @colour
|
30
|
+
@document.stroke_color '00DD00'
|
31
|
+
else
|
32
|
+
@document.stroke_color 'AAAAAA'
|
33
|
+
end
|
34
|
+
p.each_with_index do |point,i|
|
35
|
+
next if point == p.last
|
36
|
+
@document.move_to point
|
37
|
+
@document.stroke_line_to p[i+1]
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|