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,308 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require File.join(File.expand_path(File.dirname(__FILE__)), "spec_helper")
|
4
|
+
|
5
|
+
describe "#height_of" do
|
6
|
+
before(:each) { create_pdf }
|
7
|
+
|
8
|
+
it "should return the height that would be required to print a" +
|
9
|
+
"particular string of text" do
|
10
|
+
original_y = @pdf.y
|
11
|
+
@pdf.text("Foo")
|
12
|
+
new_y = @pdf.y
|
13
|
+
@pdf.height_of("Foo", :width => 300).should.be.close(original_y - new_y, 0.0001)
|
14
|
+
end
|
15
|
+
|
16
|
+
it "should raise CannotFit if a too-small width is given" do
|
17
|
+
lambda do
|
18
|
+
@pdf.height_of("text", :width => 1)
|
19
|
+
end.should.raise(Prawn::Errors::CannotFit)
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should raise Prawn::Errors::UnknownOption if :indent_paragraphs option is provided" do
|
23
|
+
lambda {
|
24
|
+
@pdf.height_of("hai", :width => 300,
|
25
|
+
:indent_paragraphs => 60)
|
26
|
+
}.should.raise(Prawn::Errors::UnknownOption)
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should not raise Prawn::Errors::UnknownOption if :final_gap option is provided" do
|
30
|
+
lambda {
|
31
|
+
@pdf.height_of("hai", :width => 300,
|
32
|
+
:final_gap => true)
|
33
|
+
}.should.not.raise(Prawn::Errors::UnknownOption)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
describe "#text" do
|
38
|
+
before(:each) { create_pdf }
|
39
|
+
|
40
|
+
it "should raise ArgumentError if :at option included" do
|
41
|
+
lambda { @pdf.text("hai", :at => [0, 0]) }.should.raise(ArgumentError)
|
42
|
+
end
|
43
|
+
|
44
|
+
it "should advance down the document based on font_height" do
|
45
|
+
position = @pdf.y
|
46
|
+
@pdf.text "Foo"
|
47
|
+
|
48
|
+
@pdf.y.should.be.close(position - @pdf.font.height, 0.0001)
|
49
|
+
|
50
|
+
position = @pdf.y
|
51
|
+
@pdf.text "Foo\nBar\nBaz"
|
52
|
+
@pdf.y.should.be.close(position - 3*@pdf.font.height, 0.0001)
|
53
|
+
end
|
54
|
+
|
55
|
+
it "should advance down the document based on font_height" +
|
56
|
+
" with size option" do
|
57
|
+
position = @pdf.y
|
58
|
+
@pdf.text "Foo", :size => 15
|
59
|
+
|
60
|
+
@pdf.font_size = 15
|
61
|
+
@pdf.y.should.be.close(position - @pdf.font.height, 0.0001)
|
62
|
+
|
63
|
+
position = @pdf.y
|
64
|
+
@pdf.text "Foo\nBar\nBaz"
|
65
|
+
@pdf.y.should.be.close(position - 3*@pdf.font.height, 0.0001)
|
66
|
+
end
|
67
|
+
|
68
|
+
it "should advance down the document based on font_height" +
|
69
|
+
" with leading option" do
|
70
|
+
position = @pdf.y
|
71
|
+
leading = 2
|
72
|
+
@pdf.text "Foo", :leading => leading
|
73
|
+
|
74
|
+
@pdf.y.should.be.close(position - @pdf.font.height - leading, 0.0001)
|
75
|
+
|
76
|
+
position = @pdf.y
|
77
|
+
@pdf.text "Foo\nBar\nBaz"
|
78
|
+
@pdf.y.should.be.close(position - 3*@pdf.font.height, 0.0001)
|
79
|
+
end
|
80
|
+
|
81
|
+
it "should advance down the document based on font ascender only "+
|
82
|
+
"if final_gap is given" do
|
83
|
+
position = @pdf.y
|
84
|
+
@pdf.text "Foo", :final_gap => false
|
85
|
+
|
86
|
+
@pdf.y.should.be.close(position - @pdf.font.ascender, 0.0001)
|
87
|
+
|
88
|
+
position = @pdf.y
|
89
|
+
@pdf.text "Foo\nBar\nBaz", :final_gap => false
|
90
|
+
@pdf.y.should.be.close(position - 2*@pdf.font.height - @pdf.font.ascender, 0.0001)
|
91
|
+
end
|
92
|
+
|
93
|
+
it "should default to 12 point helvetica" do
|
94
|
+
@pdf.text "Blah"
|
95
|
+
text = PDF::Inspector::Text.analyze(@pdf.render)
|
96
|
+
text.font_settings[0][:name].should == :Helvetica
|
97
|
+
text.font_settings[0][:size].should == 12
|
98
|
+
text.strings.first.should == "Blah"
|
99
|
+
end
|
100
|
+
|
101
|
+
it "should allow setting font size" do
|
102
|
+
@pdf.text "Blah", :size => 16
|
103
|
+
text = PDF::Inspector::Text.analyze(@pdf.render)
|
104
|
+
text.font_settings[0][:size].should == 16
|
105
|
+
end
|
106
|
+
|
107
|
+
it "should allow setting a default font size" do
|
108
|
+
@pdf.font_size = 16
|
109
|
+
@pdf.text "Blah"
|
110
|
+
text = PDF::Inspector::Text.analyze(@pdf.render)
|
111
|
+
text.font_settings[0][:size].should == 16
|
112
|
+
end
|
113
|
+
|
114
|
+
it "should allow overriding default font for a single instance" do
|
115
|
+
@pdf.font_size = 16
|
116
|
+
|
117
|
+
@pdf.text "Blah", :size => 11
|
118
|
+
@pdf.text "Blaz"
|
119
|
+
text = PDF::Inspector::Text.analyze(@pdf.render)
|
120
|
+
text.font_settings[0][:size].should == 11
|
121
|
+
text.font_settings[1][:size].should == 16
|
122
|
+
end
|
123
|
+
|
124
|
+
it "should allow setting a font size transaction with a block" do
|
125
|
+
@pdf.font_size 16 do
|
126
|
+
@pdf.text 'Blah'
|
127
|
+
end
|
128
|
+
|
129
|
+
@pdf.text 'blah'
|
130
|
+
|
131
|
+
text = PDF::Inspector::Text.analyze(@pdf.render)
|
132
|
+
text.font_settings[0][:size].should == 16
|
133
|
+
text.font_settings[1][:size].should == 12
|
134
|
+
end
|
135
|
+
|
136
|
+
it "should allow manual setting the font size " +
|
137
|
+
"when in a font size block" do
|
138
|
+
@pdf.font_size(16) do
|
139
|
+
@pdf.text 'Foo'
|
140
|
+
@pdf.text 'Blah', :size => 11
|
141
|
+
@pdf.text 'Blaz'
|
142
|
+
end
|
143
|
+
text = PDF::Inspector::Text.analyze(@pdf.render)
|
144
|
+
text.font_settings[0][:size].should == 16
|
145
|
+
text.font_settings[1][:size].should == 11
|
146
|
+
text.font_settings[2][:size].should == 16
|
147
|
+
end
|
148
|
+
|
149
|
+
it "should allow registering of built-in font_settings on the fly" do
|
150
|
+
@pdf.font "Times-Roman"
|
151
|
+
@pdf.text "Blah"
|
152
|
+
@pdf.font "Courier"
|
153
|
+
@pdf.text "Blaz"
|
154
|
+
text = PDF::Inspector::Text.analyze(@pdf.render)
|
155
|
+
text.font_settings[0][:name].should == :"Times-Roman"
|
156
|
+
text.font_settings[1][:name].should == :Courier
|
157
|
+
end
|
158
|
+
|
159
|
+
it "should utilise the same default font across multiple pages" do
|
160
|
+
@pdf.text "Blah"
|
161
|
+
@pdf.start_new_page
|
162
|
+
@pdf.text "Blaz"
|
163
|
+
text = PDF::Inspector::Text.analyze(@pdf.render)
|
164
|
+
|
165
|
+
text.font_settings.size.should == 2
|
166
|
+
text.font_settings[0][:name].should == :Helvetica
|
167
|
+
text.font_settings[1][:name].should == :Helvetica
|
168
|
+
end
|
169
|
+
|
170
|
+
it "should raise an exception when an unknown font is used" do
|
171
|
+
lambda { @pdf.font "Pao bu" }.should.raise(Prawn::Errors::UnknownFont)
|
172
|
+
end
|
173
|
+
|
174
|
+
it "should correctly render a utf-8 string when using a built-in font" do
|
175
|
+
str = "©" # copyright symbol
|
176
|
+
@pdf.text str
|
177
|
+
|
178
|
+
# grab the text from the rendered PDF and ensure it matches
|
179
|
+
text = PDF::Inspector::Text.analyze(@pdf.render)
|
180
|
+
text.strings.first.should == str
|
181
|
+
end
|
182
|
+
|
183
|
+
it "should correctly render a string with higher bit characters across" +
|
184
|
+
" a page break when using a built-in font" do
|
185
|
+
str = "©"
|
186
|
+
@pdf.move_cursor_to(@pdf.font.height)
|
187
|
+
@pdf.text(str + "\n" + str)
|
188
|
+
|
189
|
+
# grab the text from the rendered PDF and ensure it matches
|
190
|
+
text = PDF::Inspector::Text.analyze(@pdf.render)
|
191
|
+
text.strings[1].should == str.strip
|
192
|
+
end
|
193
|
+
|
194
|
+
it "should correctly render a string with higher bit characters across" +
|
195
|
+
" a page break when using a built-in font and :indent_paragraphs option" do
|
196
|
+
str = "©"
|
197
|
+
@pdf.move_cursor_to(@pdf.font.height)
|
198
|
+
@pdf.text(str + "\n" + str, :indent_paragraphs => 20)
|
199
|
+
|
200
|
+
# grab the text from the rendered PDF and ensure it matches
|
201
|
+
text = PDF::Inspector::Text.analyze(@pdf.render)
|
202
|
+
text.strings[1].should == str.strip
|
203
|
+
end
|
204
|
+
|
205
|
+
if "spec".respond_to?(:encode!)
|
206
|
+
# Handle non utf-8 string encodings in a sane way on M17N aware VMs
|
207
|
+
it "should raise an exception when a utf-8 incompatible string is rendered" do
|
208
|
+
str = "Blah \xDD"
|
209
|
+
str.force_encoding("ASCII-8BIT")
|
210
|
+
lambda { @pdf.text str }.should.raise(ArgumentError)
|
211
|
+
end
|
212
|
+
it "should not raise an exception when a shift-jis string is rendered" do
|
213
|
+
datafile = "#{Prawn::BASEDIR}/data/shift_jis_text.txt"
|
214
|
+
sjis_str = File.open(datafile, "r:shift_jis") { |f| f.gets }
|
215
|
+
@pdf.font("#{Prawn::BASEDIR}/data/fonts/gkai00mp.ttf")
|
216
|
+
lambda { @pdf.text sjis_str }.should.not.raise(ArgumentError)
|
217
|
+
end
|
218
|
+
else
|
219
|
+
# Handle non utf-8 string encodings in a sane way on non-M17N aware VMs
|
220
|
+
it "should raise an exception when a corrupt utf-8 string is rendered" do
|
221
|
+
str = "Blah \xDD"
|
222
|
+
lambda { @pdf.text str }.should.raise(ArgumentError)
|
223
|
+
end
|
224
|
+
it "should raise an exception when a shift-jis string is rendered" do
|
225
|
+
sjis_str = File.read("#{Prawn::BASEDIR}/data/shift_jis_text.txt")
|
226
|
+
lambda { @pdf.text sjis_str }.should.raise(ArgumentError)
|
227
|
+
end
|
228
|
+
end
|
229
|
+
|
230
|
+
it "should call move_past_bottom when printing more text than can fit" +
|
231
|
+
" between the current document.y and bounds.bottom" do
|
232
|
+
@pdf.y = @pdf.font.height
|
233
|
+
@pdf.text "Hello"
|
234
|
+
@pdf.text "World"
|
235
|
+
pages = PDF::Inspector::Page.analyze(@pdf.render).pages
|
236
|
+
pages.size.should == 2
|
237
|
+
pages[0][:strings].should == ["Hello"]
|
238
|
+
pages[1][:strings].should == ["World"]
|
239
|
+
end
|
240
|
+
|
241
|
+
it "should be able to use a custom word-wrap object" do
|
242
|
+
hello = "hello " * 25
|
243
|
+
world = "world " * 25
|
244
|
+
@pdf.text(hello + "\n" + world, :line_wrap => TestWordWrap.new)
|
245
|
+
text = PDF::Inspector::Text.analyze(@pdf.render)
|
246
|
+
text.strings[0].should == hello.strip
|
247
|
+
text.strings[1].should == world.strip
|
248
|
+
end
|
249
|
+
|
250
|
+
it "should be able to globally set the custom word-wrap object" do
|
251
|
+
hello = "hello " * 25
|
252
|
+
world = "world " * 25
|
253
|
+
@pdf.default_line_wrap = TestWordWrap.new
|
254
|
+
@pdf.text(hello + "\n" + world)
|
255
|
+
text = PDF::Inspector::Text.analyze(@pdf.render)
|
256
|
+
text.strings[0].should == hello.strip
|
257
|
+
text.strings[1].should == world.strip
|
258
|
+
end
|
259
|
+
|
260
|
+
describe "with :indent_paragraphs option" do
|
261
|
+
it "should indent the paragraphs" do
|
262
|
+
hello = "hello " * 50
|
263
|
+
hello2 = "hello " * 50
|
264
|
+
@pdf.text(hello + "\n" + hello2, :indent_paragraphs => 60)
|
265
|
+
text = PDF::Inspector::Text.analyze(@pdf.render)
|
266
|
+
text.strings[0].should == ("hello " * 19).strip
|
267
|
+
text.strings[1].should == ("hello " * 21).strip
|
268
|
+
text.strings[3].should == ("hello " * 19).strip
|
269
|
+
text.strings[4].should == ("hello " * 21).strip
|
270
|
+
end
|
271
|
+
describe "when wrap to new page, and first line of new page" +
|
272
|
+
" is not the start of a new paragraph, that line should" +
|
273
|
+
" not be indented" do
|
274
|
+
it "should indent the paragraphs" do
|
275
|
+
hello = "hello " * 50
|
276
|
+
hello2 = "hello " * 50
|
277
|
+
@pdf.move_cursor_to(@pdf.font.height)
|
278
|
+
@pdf.text(hello + "\n" + hello2, :indent_paragraphs => 60)
|
279
|
+
text = PDF::Inspector::Text.analyze(@pdf.render)
|
280
|
+
text.strings[0].should == ("hello " * 19).strip
|
281
|
+
text.strings[1].should == ("hello " * 21).strip
|
282
|
+
text.strings[3].should == ("hello " * 19).strip
|
283
|
+
text.strings[4].should == ("hello " * 21).strip
|
284
|
+
end
|
285
|
+
end
|
286
|
+
describe "when wrap to new page, and first line of new page" +
|
287
|
+
" is the start of a new paragraph, that line should" +
|
288
|
+
" be indented" do
|
289
|
+
it "should indent the paragraphs" do
|
290
|
+
hello = "hello " * 50
|
291
|
+
hello2 = "hello " * 50
|
292
|
+
@pdf.move_cursor_to(@pdf.font.height * 3)
|
293
|
+
@pdf.text(hello + "\n" + hello2, :indent_paragraphs => 60)
|
294
|
+
text = PDF::Inspector::Text.analyze(@pdf.render)
|
295
|
+
text.strings[0].should == ("hello " * 19).strip
|
296
|
+
text.strings[1].should == ("hello " * 21).strip
|
297
|
+
text.strings[3].should == ("hello " * 19).strip
|
298
|
+
text.strings[4].should == ("hello " * 21).strip
|
299
|
+
end
|
300
|
+
end
|
301
|
+
end
|
302
|
+
end
|
303
|
+
|
304
|
+
class TestWordWrap
|
305
|
+
def wrap_line(line, options)
|
306
|
+
line
|
307
|
+
end
|
308
|
+
end
|
@@ -0,0 +1,75 @@
|
|
1
|
+
require File.join(File.expand_path(File.dirname(__FILE__)), "spec_helper")
|
2
|
+
|
3
|
+
describe "Document with transparency" do
|
4
|
+
it "the PDF version should be at least 1.4" do
|
5
|
+
create_pdf
|
6
|
+
@pdf.transparent(0.5)
|
7
|
+
str = @pdf.render
|
8
|
+
str[0,8].should == "%PDF-1.4"
|
9
|
+
end
|
10
|
+
|
11
|
+
it "a new extended graphics state should be created for "+
|
12
|
+
"each unique transparency setting" do
|
13
|
+
create_pdf
|
14
|
+
@pdf.transparent(0.5, 0.2)
|
15
|
+
@pdf.transparent(0.5, 0.75)
|
16
|
+
extgstates = PDF::Inspector::ExtGState.analyze(@pdf.render).extgstates
|
17
|
+
extgstates.length.should == 2
|
18
|
+
end
|
19
|
+
|
20
|
+
it "a new extended graphics state should not be created for "+
|
21
|
+
"each duplicate transparency setting" do
|
22
|
+
create_pdf
|
23
|
+
@pdf.transparent(0.5, 0.75)
|
24
|
+
@pdf.transparent(0.5, 0.75)
|
25
|
+
extgstates = PDF::Inspector::ExtGState.analyze(@pdf.render).extgstates
|
26
|
+
extgstates.length.should == 1
|
27
|
+
end
|
28
|
+
|
29
|
+
it "setting the transparency with only one parameter sets the transparency"+
|
30
|
+
" for both the fill and the stroke" do
|
31
|
+
create_pdf
|
32
|
+
@pdf.transparent(0.5)
|
33
|
+
extgstate = PDF::Inspector::ExtGState.analyze(@pdf.render).extgstates[0]
|
34
|
+
extgstate[:opacity].should == 0.5
|
35
|
+
extgstate[:stroke_opacity].should == 0.5
|
36
|
+
end
|
37
|
+
|
38
|
+
it "setting the transparency with a numerical parameter and "+
|
39
|
+
"a :stroke should set the fill transparency to the numerical parameter "+
|
40
|
+
"and the stroke transparency to the option" do
|
41
|
+
create_pdf
|
42
|
+
@pdf.transparent(0.5, 0.2)
|
43
|
+
extgstate = PDF::Inspector::ExtGState.analyze(@pdf.render).extgstates[0]
|
44
|
+
extgstate[:opacity].should == 0.5
|
45
|
+
extgstate[:stroke_opacity].should == 0.2
|
46
|
+
end
|
47
|
+
|
48
|
+
it "should enforce the valid range of 0.0 to 1.0" do
|
49
|
+
create_pdf
|
50
|
+
@pdf.transparent(-0.5, -0.2)
|
51
|
+
extgstate = PDF::Inspector::ExtGState.analyze(@pdf.render).extgstates[0]
|
52
|
+
extgstate[:opacity].should == 0.0
|
53
|
+
extgstate[:stroke_opacity].should == 0.0
|
54
|
+
|
55
|
+
create_pdf
|
56
|
+
@pdf.transparent(2.0, 3.0)
|
57
|
+
extgstate = PDF::Inspector::ExtGState.analyze(@pdf.render).extgstates[0]
|
58
|
+
extgstate[:opacity].should == 1.0
|
59
|
+
extgstate[:stroke_opacity].should == 1.0
|
60
|
+
end
|
61
|
+
|
62
|
+
describe "with more than one page" do
|
63
|
+
it "the extended graphic state resource should be added to both pages" do
|
64
|
+
create_pdf
|
65
|
+
@pdf.transparent(0.5, 0.2)
|
66
|
+
@pdf.start_new_page
|
67
|
+
@pdf.transparent(0.5, 0.2)
|
68
|
+
extgstates = PDF::Inspector::ExtGState.analyze(@pdf.render).extgstates
|
69
|
+
extgstate = extgstates[0]
|
70
|
+
extgstates.length.should == 2
|
71
|
+
extgstate[:opacity].should == 0.5
|
72
|
+
extgstate[:stroke_opacity].should == 0.2
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
PDF::Inspector : A tool for analyzing PDF output
|
2
|
+
|
3
|
+
This library provides a number of PDF::Reader[0] based tools for use in testing
|
4
|
+
PDF output. Presently, the primary purpose of this tool is to support the
|
5
|
+
tests found in Prawn[1], a pure Ruby PDF generation library.
|
6
|
+
|
7
|
+
However, it may be useful to others, so we have made it available on Github[2]
|
8
|
+
|
9
|
+
Questions can be directed to the Prawn mailing list[3], but please remember
|
10
|
+
that this code is not necessarily suitable for production and has no officially
|
11
|
+
planned release date.
|
12
|
+
|
13
|
+
That having been said, patches are welcome!
|
14
|
+
|
15
|
+
[0] http://github.com/yob/pdf-reader
|
16
|
+
[1] http://github.com/sandal/prawn
|
17
|
+
[2] http://github.com/sandal/pdf-inspector
|
18
|
+
[3] http://groups.google.com/group/prawn-ruby
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require "rubygems"
|
2
|
+
require "pdf/reader"
|
3
|
+
require "pdf/inspector/text"
|
4
|
+
require "pdf/inspector/xobject"
|
5
|
+
require "pdf/inspector/extgstate"
|
6
|
+
require "pdf/inspector/graphics"
|
7
|
+
require "pdf/inspector/page"
|
8
|
+
|
9
|
+
module PDF
|
10
|
+
class Inspector
|
11
|
+
def self.analyze(output,*args,&block)
|
12
|
+
obs = self.new(*args, &block)
|
13
|
+
PDF::Reader.string(output,obs)
|
14
|
+
obs
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.analyze_file(filename,*args,&block)
|
18
|
+
analyze(File.open(filename, "rb") { |f| f.read },*args,&block)
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.parse(obj)
|
22
|
+
PDF::Reader::Parser.new(
|
23
|
+
PDF::Reader::Buffer.new(StringIO.new(obj)), nil).parse_token
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module PDF
|
2
|
+
class Inspector
|
3
|
+
class ExtGState < Inspector
|
4
|
+
attr_accessor :extgstates
|
5
|
+
|
6
|
+
def initialize
|
7
|
+
@extgstates = []
|
8
|
+
end
|
9
|
+
|
10
|
+
def resource_extgstate(*params)
|
11
|
+
@extgstates << {
|
12
|
+
:opacity => params[1][:ca],
|
13
|
+
:stroke_opacity => params[1][:CA]
|
14
|
+
}
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|