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,321 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
# graphics.rb : Implements PDF drawing primitives
|
4
|
+
#
|
5
|
+
# Copyright April 2008, Gregory Brown. All Rights Reserved.
|
6
|
+
#
|
7
|
+
# This is free software. Please see the LICENSE and COPYING files for details.
|
8
|
+
|
9
|
+
require "prawn/graphics/color"
|
10
|
+
require "prawn/graphics/dash"
|
11
|
+
require "prawn/graphics/cap_style"
|
12
|
+
require "prawn/graphics/join_style"
|
13
|
+
require "prawn/graphics/transparency"
|
14
|
+
require "prawn/graphics/transformation"
|
15
|
+
|
16
|
+
module Prawn
|
17
|
+
|
18
|
+
# Implements the drawing facilities for Prawn::Document.
|
19
|
+
# Use this to draw the most beautiful imaginable things.
|
20
|
+
#
|
21
|
+
# This file lifts and modifies several of PDF::Writer's graphics functions
|
22
|
+
# ruby-pdf.rubyforge.org
|
23
|
+
#
|
24
|
+
module Graphics
|
25
|
+
|
26
|
+
include Color
|
27
|
+
include Dash
|
28
|
+
include CapStyle
|
29
|
+
include JoinStyle
|
30
|
+
include Transparency
|
31
|
+
include Transformation
|
32
|
+
|
33
|
+
#######################################################################
|
34
|
+
# Low level drawing operations must map the point to absolute coords! #
|
35
|
+
#######################################################################
|
36
|
+
|
37
|
+
# Moves the drawing position to a given point. The point can be
|
38
|
+
# specified as a tuple or a flattened argument list
|
39
|
+
#
|
40
|
+
# pdf.move_to [100,50]
|
41
|
+
# pdf.move_to(100,50)
|
42
|
+
#
|
43
|
+
def move_to(*point)
|
44
|
+
x,y = map_to_absolute(point)
|
45
|
+
add_content("%.3f %.3f m" % [ x, y ])
|
46
|
+
end
|
47
|
+
|
48
|
+
# Draws a line from the current drawing position to the specified point.
|
49
|
+
# The destination may be described as a tuple or a flattened list:
|
50
|
+
#
|
51
|
+
# pdf.line_to [50,50]
|
52
|
+
# pdf.line_to(50,50)
|
53
|
+
#
|
54
|
+
def line_to(*point)
|
55
|
+
x,y = map_to_absolute(point)
|
56
|
+
add_content("%.3f %.3f l" % [ x, y ])
|
57
|
+
end
|
58
|
+
|
59
|
+
# Draws a Bezier curve from the current drawing position to the
|
60
|
+
# specified point, bounded by two additional points.
|
61
|
+
#
|
62
|
+
# pdf.curve_to [100,100], :bounds => [[90,90],[75,75]]
|
63
|
+
#
|
64
|
+
def curve_to(dest,options={})
|
65
|
+
options[:bounds] or raise Prawn::Errors::InvalidGraphicsPath,
|
66
|
+
"Bounding points for bezier curve must be specified "+
|
67
|
+
"as :bounds => [[x1,y1],[x2,y2]]"
|
68
|
+
|
69
|
+
curve_points = (options[:bounds] << dest).map { |e| map_to_absolute(e) }
|
70
|
+
add_content("%.3f %.3f %.3f %.3f %.3f %.3f c" %
|
71
|
+
curve_points.flatten )
|
72
|
+
end
|
73
|
+
|
74
|
+
# Draws a rectangle given <tt>point</tt>, <tt>width</tt> and
|
75
|
+
# <tt>height</tt>. The rectangle is bounded by its upper-left corner.
|
76
|
+
#
|
77
|
+
# pdf.rectangle [300,300], 100, 200
|
78
|
+
#
|
79
|
+
def rectangle(point,width,height)
|
80
|
+
x,y = map_to_absolute(point)
|
81
|
+
add_content("%.3f %.3f %.3f %.3f re" % [ x, y - height, width, height ])
|
82
|
+
end
|
83
|
+
|
84
|
+
# Draws a rounded rectangle given <tt>point</tt>, <tt>width</tt> and
|
85
|
+
# <tt>height</tt> and <tt>radius</tt> for the rounded corner. The rectangle
|
86
|
+
# is bounded by its upper-left corner.
|
87
|
+
#
|
88
|
+
# pdf.rounded_rectangle [300,300], 100, 200, 10
|
89
|
+
#
|
90
|
+
def rounded_rectangle(point,width,height,radius)
|
91
|
+
x, y = point
|
92
|
+
rounded_polygon(radius, point, [x + width, y], [x + width, y - height], [x, y - height])
|
93
|
+
end
|
94
|
+
|
95
|
+
|
96
|
+
###########################################################
|
97
|
+
# Higher level functions: May use relative coords #
|
98
|
+
###########################################################
|
99
|
+
|
100
|
+
# Sets line thickness to the <tt>width</tt> specified.
|
101
|
+
#
|
102
|
+
def line_width=(width)
|
103
|
+
@line_width = width
|
104
|
+
add_content("#{width} w")
|
105
|
+
end
|
106
|
+
|
107
|
+
# When called without an argument, returns the current line thickness.
|
108
|
+
# When called with an argument, sets the line thickness to the specified
|
109
|
+
# value (in PDF points)
|
110
|
+
#
|
111
|
+
# pdf.line_width #=> 1
|
112
|
+
# pdf.line_width(5)
|
113
|
+
# pdf.line_width #=> 5
|
114
|
+
#
|
115
|
+
def line_width(width=nil)
|
116
|
+
if width
|
117
|
+
self.line_width = width
|
118
|
+
else
|
119
|
+
(defined?(@line_width) && @line_width) || 1
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
# Draws a line from one point to another. Points may be specified as
|
124
|
+
# tuples or flattened argument list:
|
125
|
+
#
|
126
|
+
# pdf.line [100,100], [200,250]
|
127
|
+
# pdf.line(100,100,200,250)
|
128
|
+
#
|
129
|
+
def line(*points)
|
130
|
+
x0,y0,x1,y1 = points.flatten
|
131
|
+
move_to(x0, y0)
|
132
|
+
line_to(x1, y1)
|
133
|
+
end
|
134
|
+
|
135
|
+
# Draws a horizontal line from <tt>x1</tt> to <tt>x2</tt> at the
|
136
|
+
# current <tt>y</tt> position, or the position specified by the :at option.
|
137
|
+
#
|
138
|
+
# # draw a line from [25, 75] to [100, 75]
|
139
|
+
# horizontal_line 25, 100, :at => 75
|
140
|
+
#
|
141
|
+
def horizontal_line(x1,x2,options={})
|
142
|
+
if options[:at]
|
143
|
+
y1 = options[:at]
|
144
|
+
else
|
145
|
+
y1 = y - bounds.absolute_bottom
|
146
|
+
end
|
147
|
+
|
148
|
+
line(x1,y1,x2,y1)
|
149
|
+
end
|
150
|
+
|
151
|
+
# Draws a horizontal line from the left border to the right border of the
|
152
|
+
# bounding box at the current <tt>y</tt> position.
|
153
|
+
#
|
154
|
+
def horizontal_rule
|
155
|
+
horizontal_line(bounds.left, bounds.right)
|
156
|
+
end
|
157
|
+
|
158
|
+
# Draws a vertical line at the x cooordinate given by :at from y1 to y2.
|
159
|
+
#
|
160
|
+
# # draw a line from [25, 100] to [25, 300]
|
161
|
+
# vertical_line 100, 300, :at => 25
|
162
|
+
#
|
163
|
+
def vertical_line(y1,y2,params)
|
164
|
+
line(params[:at],y1,params[:at],y2)
|
165
|
+
end
|
166
|
+
|
167
|
+
# Draws a Bezier curve between two points, bounded by two additional
|
168
|
+
# points
|
169
|
+
#
|
170
|
+
# pdf.curve [50,100], [100,100], :bounds => [[90,90],[75,75]]
|
171
|
+
#
|
172
|
+
def curve(origin,dest, options={})
|
173
|
+
move_to(*origin)
|
174
|
+
curve_to(dest,options)
|
175
|
+
end
|
176
|
+
|
177
|
+
# This constant is used to approximate a symmetrical arc using a cubic
|
178
|
+
# Bezier curve.
|
179
|
+
#
|
180
|
+
KAPPA = 4.0 * ((Math.sqrt(2) - 1.0) / 3.0)
|
181
|
+
|
182
|
+
# Draws a circle of radius <tt>:radius</tt> with the centre-point at <tt>point</tt>
|
183
|
+
# as a complete subpath. The drawing point will be moved to the
|
184
|
+
# centre-point upon completion of the drawing the circle.
|
185
|
+
#
|
186
|
+
# pdf.circle_at [100,100], :radius => 25
|
187
|
+
#
|
188
|
+
def circle_at(point, options)
|
189
|
+
x,y = point
|
190
|
+
ellipse_at [x, y], options[:radius]
|
191
|
+
end
|
192
|
+
|
193
|
+
# Draws an ellipse of +x+ radius <tt>r1</tt> and +y+ radius <tt>r2</tt>
|
194
|
+
# with the centre-point at <tt>point</tt> as a complete subpath. The
|
195
|
+
# drawing point will be moved to the centre-point upon completion of the
|
196
|
+
# drawing the ellipse.
|
197
|
+
#
|
198
|
+
# # draws an ellipse with x-radius 25 and y-radius 50
|
199
|
+
# pdf.ellipse_at [100,100], 25, 50
|
200
|
+
#
|
201
|
+
def ellipse_at(point, r1, r2 = r1)
|
202
|
+
x, y = point
|
203
|
+
l1 = r1 * KAPPA
|
204
|
+
l2 = r2 * KAPPA
|
205
|
+
|
206
|
+
move_to(x + r1, y)
|
207
|
+
|
208
|
+
# Upper right hand corner
|
209
|
+
curve_to [x, y + r2],
|
210
|
+
:bounds => [[x + r1, y + l1], [x + l2, y + r2]]
|
211
|
+
|
212
|
+
# Upper left hand corner
|
213
|
+
curve_to [x - r1, y],
|
214
|
+
:bounds => [[x - l2, y + r2], [x - r1, y + l1]]
|
215
|
+
|
216
|
+
# Lower left hand corner
|
217
|
+
curve_to [x, y - r2],
|
218
|
+
:bounds => [[x - r1, y - l1], [x - l2, y - r2]]
|
219
|
+
|
220
|
+
# Lower right hand corner
|
221
|
+
curve_to [x + r1, y],
|
222
|
+
:bounds => [[x + l2, y - r2], [x + r1, y - l1]]
|
223
|
+
|
224
|
+
move_to(x, y)
|
225
|
+
end
|
226
|
+
|
227
|
+
# Draws a polygon from the specified points.
|
228
|
+
#
|
229
|
+
# # draws a snazzy triangle
|
230
|
+
# pdf.polygon [100,100], [100,200], [200,200]
|
231
|
+
#
|
232
|
+
def polygon(*points)
|
233
|
+
move_to points[0]
|
234
|
+
(points[1..-1] << points[0]).each do |point|
|
235
|
+
line_to(*point)
|
236
|
+
end
|
237
|
+
end
|
238
|
+
|
239
|
+
# Draws a rounded polygon from specified points using the radius to define bezier curves
|
240
|
+
#
|
241
|
+
# # draws a rounded filled in polygon
|
242
|
+
# pdf.fill_and_stroke_rounded_polygon(10, [100, 250], [200, 300], [300, 250],
|
243
|
+
# [300, 150], [200, 100], [100, 150])
|
244
|
+
def rounded_polygon(radius, *points)
|
245
|
+
move_to point_on_line(radius, points[1], points[0])
|
246
|
+
sides = points.size
|
247
|
+
points << points[0] << points[1]
|
248
|
+
(sides).times do |i|
|
249
|
+
rounded_vertex(radius, points[i], points[i + 1], points[i + 2])
|
250
|
+
end
|
251
|
+
end
|
252
|
+
|
253
|
+
|
254
|
+
# Creates a rounded vertex for a line segment used for building a rounded polygon
|
255
|
+
# requires a radius to define bezier curve and three points. The first two points define
|
256
|
+
# the line segment and the third point helps define the curve for the vertex.
|
257
|
+
def rounded_vertex(radius, *points)
|
258
|
+
x0,y0,x1,y1,x2,y2 = points.flatten
|
259
|
+
radial_point_1 = point_on_line(radius, points[0], points[1])
|
260
|
+
bezier_point_1 = point_on_line((radius - radius*KAPPA), points[0], points[1] )
|
261
|
+
radial_point_2 = point_on_line(radius, points[2], points[1])
|
262
|
+
bezier_point_2 = point_on_line((radius - radius*KAPPA), points[2], points[1])
|
263
|
+
line_to(radial_point_1)
|
264
|
+
curve_to(radial_point_2, :bounds => [bezier_point_1, bezier_point_2])
|
265
|
+
end
|
266
|
+
|
267
|
+
# Strokes and closes the current path. See Graphic::Color for color details
|
268
|
+
#
|
269
|
+
def stroke
|
270
|
+
yield if block_given?
|
271
|
+
add_content "S"
|
272
|
+
end
|
273
|
+
|
274
|
+
# Draws and strokes a rectangle represented by the current bounding box
|
275
|
+
#
|
276
|
+
def stroke_bounds
|
277
|
+
stroke_rectangle bounds.top_left, bounds.width, bounds.height
|
278
|
+
end
|
279
|
+
|
280
|
+
# Fills and closes the current path. See Graphic::Color for color details
|
281
|
+
#
|
282
|
+
def fill
|
283
|
+
yield if block_given?
|
284
|
+
add_content "f"
|
285
|
+
end
|
286
|
+
|
287
|
+
# Fills, strokes, and closes the current path. See Graphic::Color for color details
|
288
|
+
#
|
289
|
+
def fill_and_stroke
|
290
|
+
yield if block_given?
|
291
|
+
add_content "b"
|
292
|
+
end
|
293
|
+
|
294
|
+
private
|
295
|
+
|
296
|
+
def map_to_absolute(*point)
|
297
|
+
x,y = point.flatten
|
298
|
+
[@bounding_box.absolute_left + x, @bounding_box.absolute_bottom + y]
|
299
|
+
end
|
300
|
+
|
301
|
+
def map_to_absolute!(point)
|
302
|
+
point.replace(map_to_absolute(point))
|
303
|
+
end
|
304
|
+
|
305
|
+
def degree_to_rad(angle)
|
306
|
+
angle * Math::PI / 180
|
307
|
+
end
|
308
|
+
|
309
|
+
# Returns the coordinates for a point on a line that is a given distance away from the second
|
310
|
+
# point defining the line segement
|
311
|
+
def point_on_line(distance_from_end, *points)
|
312
|
+
x0,y0,x1,y1 = points.flatten
|
313
|
+
length = Math.sqrt((x1 - x0)**2 + (y1 - y0)**2)
|
314
|
+
p = (length - distance_from_end) / length
|
315
|
+
xr = x0 + p*(x1 - x0)
|
316
|
+
yr = y0 + p*(y1 - y0)
|
317
|
+
[xr, yr]
|
318
|
+
end
|
319
|
+
|
320
|
+
end
|
321
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
# cap_style.rb : Implements stroke cap styling
|
4
|
+
#
|
5
|
+
# Contributed by Daniel Nelson. October, 2009
|
6
|
+
#
|
7
|
+
# This is free software. Please see the LICENSE and COPYING files for details.
|
8
|
+
#
|
9
|
+
module Prawn
|
10
|
+
module Graphics
|
11
|
+
module CapStyle
|
12
|
+
|
13
|
+
CAP_STYLES = { :butt => 0, :round => 1, :projecting_square => 2 }
|
14
|
+
|
15
|
+
# Sets the cap style for stroked lines and curves
|
16
|
+
#
|
17
|
+
# style is one of :butt, :round, or :projecting_square
|
18
|
+
#
|
19
|
+
# NOTE: If this method is never called, :butt will be used by default.
|
20
|
+
#
|
21
|
+
def cap_style(style=nil)
|
22
|
+
return @cap_style || :butt if style.nil?
|
23
|
+
|
24
|
+
@cap_style = style
|
25
|
+
|
26
|
+
write_stroke_cap_style
|
27
|
+
end
|
28
|
+
|
29
|
+
alias_method :cap_style=, :cap_style
|
30
|
+
|
31
|
+
private
|
32
|
+
|
33
|
+
def write_stroke_cap_style
|
34
|
+
add_content "#{CAP_STYLES[@cap_style]} J"
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,205 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
# color.rb : Implements color handling
|
4
|
+
#
|
5
|
+
# Copyright June 2008, Gregory Brown. All Rights Reserved.
|
6
|
+
#
|
7
|
+
# This is free software. Please see the LICENSE and COPYING files for details.
|
8
|
+
#
|
9
|
+
module Prawn
|
10
|
+
module Graphics
|
11
|
+
module Color
|
12
|
+
|
13
|
+
# Sets or returns the fill color.
|
14
|
+
#
|
15
|
+
# When called with no argument, it returns the current fill color.
|
16
|
+
#
|
17
|
+
# If a single argument is provided, it should be a 6 digit HTML color
|
18
|
+
# code.
|
19
|
+
#
|
20
|
+
# pdf.fill_color "f0ffc1"
|
21
|
+
#
|
22
|
+
# If 4 arguments are provided, the color is assumed to be a CMYK value
|
23
|
+
# Values range from 0 - 100.
|
24
|
+
#
|
25
|
+
# pdf.fill_color 0, 99, 95, 0
|
26
|
+
#
|
27
|
+
def fill_color(*color)
|
28
|
+
return @fill_color if color.empty?
|
29
|
+
@fill_color = process_color(*color)
|
30
|
+
set_fill_color
|
31
|
+
end
|
32
|
+
|
33
|
+
alias_method :fill_color=, :fill_color
|
34
|
+
|
35
|
+
# Sets or returns the line stroking color.
|
36
|
+
#
|
37
|
+
# When called with no argument, it returns the current stroking color.
|
38
|
+
#
|
39
|
+
# If a single argument is provided, it should be a 6 digit HTML color
|
40
|
+
# code.
|
41
|
+
#
|
42
|
+
# pdf.stroke_color "f0ffc1"
|
43
|
+
#
|
44
|
+
# If 4 arguments are provided, the color is assumed to be a CMYK value
|
45
|
+
# Values range from 0 - 100.
|
46
|
+
#
|
47
|
+
# pdf.stroke_color 0, 99, 95, 0
|
48
|
+
#
|
49
|
+
def stroke_color(*color)
|
50
|
+
return @stroke_color if color.empty?
|
51
|
+
@stroke_color = process_color(*color)
|
52
|
+
set_stroke_color
|
53
|
+
end
|
54
|
+
|
55
|
+
alias_method :stroke_color=, :stroke_color
|
56
|
+
|
57
|
+
# Provides the following shortcuts:
|
58
|
+
#
|
59
|
+
# stroke_some_method(*args) #=> some_method(*args); stroke
|
60
|
+
# fill_some_method(*args) #=> some_method(*args); fill
|
61
|
+
# fill_and_stroke_some_method(*args) #=> some_method(*args); fill_and_stroke
|
62
|
+
#
|
63
|
+
def method_missing(id,*args,&block)
|
64
|
+
case(id.to_s)
|
65
|
+
when /^fill_and_stroke_(.*)/
|
66
|
+
send($1,*args,&block); fill_and_stroke
|
67
|
+
when /^stroke_(.*)/
|
68
|
+
send($1,*args,&block); stroke
|
69
|
+
when /^fill_(.*)/
|
70
|
+
send($1,*args,&block); fill
|
71
|
+
else
|
72
|
+
super
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
module_function
|
77
|
+
|
78
|
+
# Converts RGB value array to hex string suitable for use with fill_color
|
79
|
+
# and stroke_color
|
80
|
+
#
|
81
|
+
# >> Prawn::Graphics::Color.rgb2hex([255,120,8])
|
82
|
+
# => "ff7808"
|
83
|
+
#
|
84
|
+
def rgb2hex(rgb)
|
85
|
+
rgb.map { |e| "%02x" % e }.join
|
86
|
+
end
|
87
|
+
|
88
|
+
# Converts hex string into RGB value array:
|
89
|
+
#
|
90
|
+
# >> Prawn::Graphics::Color.hex2rgb("ff7808")
|
91
|
+
# => [255, 120, 8]
|
92
|
+
#
|
93
|
+
def hex2rgb(hex)
|
94
|
+
r,g,b = hex[0..1], hex[2..3], hex[4..5]
|
95
|
+
[r,g,b].map { |e| e.to_i(16) }
|
96
|
+
end
|
97
|
+
|
98
|
+
private
|
99
|
+
|
100
|
+
def process_color(*color)
|
101
|
+
case(color.size)
|
102
|
+
when 1
|
103
|
+
color[0]
|
104
|
+
when 4
|
105
|
+
color
|
106
|
+
else
|
107
|
+
raise ArgumentError, 'wrong number of arguments supplied'
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
def color_type(color)
|
112
|
+
case color
|
113
|
+
when String
|
114
|
+
:RGB
|
115
|
+
when Array
|
116
|
+
:CMYK
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
120
|
+
def normalize_color(color)
|
121
|
+
case color_type(color)
|
122
|
+
when :RGB
|
123
|
+
r,g,b = hex2rgb(color)
|
124
|
+
[r / 255.0, g / 255.0, b / 255.0]
|
125
|
+
when :CMYK
|
126
|
+
c,m,y,k = *color
|
127
|
+
[c / 100.0, m / 100.0, y / 100.0, k / 100.0]
|
128
|
+
end
|
129
|
+
end
|
130
|
+
|
131
|
+
def color_to_s(color)
|
132
|
+
normalize_color(color).map { |c| '%.3f' % c }.join(' ')
|
133
|
+
end
|
134
|
+
|
135
|
+
def color_space(color)
|
136
|
+
case color_type(color)
|
137
|
+
when :RGB
|
138
|
+
:DeviceRGB
|
139
|
+
when :CMYK
|
140
|
+
:DeviceCMYK
|
141
|
+
end
|
142
|
+
end
|
143
|
+
|
144
|
+
COLOR_SPACES = [:DeviceRGB, :DeviceCMYK, :Pattern]
|
145
|
+
|
146
|
+
def set_color_space(type, color_space)
|
147
|
+
# don't set the same color space again
|
148
|
+
return if @color_space[type] == color_space
|
149
|
+
@color_space[type] = color_space
|
150
|
+
|
151
|
+
unless COLOR_SPACES.include?(color_space)
|
152
|
+
raise ArgumentError, "unknown color space: '#{color_space}'"
|
153
|
+
end
|
154
|
+
|
155
|
+
operator = case type
|
156
|
+
when :fill
|
157
|
+
'cs'
|
158
|
+
when :stroke
|
159
|
+
'CS'
|
160
|
+
else
|
161
|
+
raise ArgumentError, "unknown type '#{type}'"
|
162
|
+
end
|
163
|
+
|
164
|
+
add_content "/#{color_space} #{operator}"
|
165
|
+
end
|
166
|
+
|
167
|
+
def set_color(type, color, options = {})
|
168
|
+
operator = case type
|
169
|
+
when :fill
|
170
|
+
'scn'
|
171
|
+
when :stroke
|
172
|
+
'SCN'
|
173
|
+
else
|
174
|
+
raise ArgumentError, "unknown type '#{type}'"
|
175
|
+
end
|
176
|
+
|
177
|
+
if options[:pattern]
|
178
|
+
set_color_space type, :Pattern
|
179
|
+
add_content "/#{color} #{operator}"
|
180
|
+
else
|
181
|
+
set_color_space type, color_space(color)
|
182
|
+
color = color_to_s(color)
|
183
|
+
add_content "#{color} #{operator}"
|
184
|
+
end
|
185
|
+
end
|
186
|
+
|
187
|
+
def set_fill_color
|
188
|
+
set_color :fill, @fill_color
|
189
|
+
end
|
190
|
+
|
191
|
+
def set_stroke_color
|
192
|
+
set_color :stroke, @stroke_color
|
193
|
+
end
|
194
|
+
|
195
|
+
def update_colors
|
196
|
+
@color_space = {}
|
197
|
+
@fill_color ||= "000000"
|
198
|
+
@stroke_color ||= "000000"
|
199
|
+
set_fill_color
|
200
|
+
set_stroke_color
|
201
|
+
end
|
202
|
+
end
|
203
|
+
end
|
204
|
+
end
|
205
|
+
|