prawn-layout 0.3.2 → 0.7.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 +1 -0
- data/Rakefile +6 -3
- data/lib/prawn/layout.rb +1 -1
- data/lib/prawn/layout/page.rb +0 -40
- data/lib/prawn/table/cell.rb +15 -13
- metadata +31 -309
- data/examples/page_layout/flowing_text_with_header_and_footer.rb +0 -36
- data/spec/page_layout_spec.rb +0 -41
- data/vendor/prawn-core/COPYING +0 -340
- data/vendor/prawn-core/HACKING +0 -46
- data/vendor/prawn-core/LICENSE +0 -56
- data/vendor/prawn-core/README +0 -142
- data/vendor/prawn-core/Rakefile +0 -75
- data/vendor/prawn-core/bench/afm_text_bench.rb +0 -18
- data/vendor/prawn-core/bench/png_type_6.rb +0 -15
- data/vendor/prawn-core/bench/ttf_text_bench.rb +0 -19
- data/vendor/prawn-core/bugs/canvas_sets_y_to_0.rb +0 -15
- data/vendor/prawn-core/bugs/png_barcode_issue.rb +0 -11
- data/vendor/prawn-core/bugs/resolved/canvas_sets_y_to_0.rb +0 -15
- data/vendor/prawn-core/data/encodings/win_ansi.txt +0 -29
- 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 +0 -342
- data/vendor/prawn-core/data/fonts/Courier-BoldOblique.afm +0 -342
- data/vendor/prawn-core/data/fonts/Courier-Oblique.afm +0 -342
- data/vendor/prawn-core/data/fonts/Courier.afm +0 -342
- 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 +0 -2827
- data/vendor/prawn-core/data/fonts/Helvetica-BoldOblique.afm +0 -2827
- data/vendor/prawn-core/data/fonts/Helvetica-Oblique.afm +0 -3051
- data/vendor/prawn-core/data/fonts/Helvetica.afm +0 -3051
- data/vendor/prawn-core/data/fonts/MustRead.html +0 -19
- data/vendor/prawn-core/data/fonts/Symbol.afm +0 -213
- data/vendor/prawn-core/data/fonts/Times-Bold.afm +0 -2588
- data/vendor/prawn-core/data/fonts/Times-BoldItalic.afm +0 -2384
- data/vendor/prawn-core/data/fonts/Times-Italic.afm +0 -2667
- data/vendor/prawn-core/data/fonts/Times-Roman.afm +0 -2419
- data/vendor/prawn-core/data/fonts/ZapfDingbats.afm +0 -225
- 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 +0 -1
- data/vendor/prawn-core/data/images/web-links.png +0 -0
- data/vendor/prawn-core/data/shift_jis_text.txt +0 -1
- data/vendor/prawn-core/examples/bounding_box/bounding_boxes.rb +0 -43
- data/vendor/prawn-core/examples/bounding_box/indentation.rb +0 -34
- data/vendor/prawn-core/examples/bounding_box/russian_boxes.rb +0 -36
- data/vendor/prawn-core/examples/bounding_box/stretched_nesting.rb +0 -67
- data/vendor/prawn-core/examples/column_box/column_box_example.rb +0 -43
- data/vendor/prawn-core/examples/example_helper.rb +0 -3
- data/vendor/prawn-core/examples/general/background.rb +0 -23
- data/vendor/prawn-core/examples/general/canvas.rb +0 -15
- data/vendor/prawn-core/examples/general/margin.rb +0 -36
- data/vendor/prawn-core/examples/general/measurement_units.rb +0 -51
- data/vendor/prawn-core/examples/general/metadata-info.rb +0 -16
- data/vendor/prawn-core/examples/general/multi_page_layout.rb +0 -18
- data/vendor/prawn-core/examples/general/page_geometry.rb +0 -31
- data/vendor/prawn-core/examples/general/page_numbering.rb +0 -15
- data/vendor/prawn-core/examples/general/stamp.rb +0 -45
- data/vendor/prawn-core/examples/graphics/basic_images.rb +0 -23
- data/vendor/prawn-core/examples/graphics/cmyk.rb +0 -12
- data/vendor/prawn-core/examples/graphics/curves.rb +0 -11
- data/vendor/prawn-core/examples/graphics/hexagon.rb +0 -13
- data/vendor/prawn-core/examples/graphics/image_fit.rb +0 -15
- data/vendor/prawn-core/examples/graphics/image_flow.rb +0 -37
- data/vendor/prawn-core/examples/graphics/image_position.rb +0 -17
- data/vendor/prawn-core/examples/graphics/line.rb +0 -32
- data/vendor/prawn-core/examples/graphics/png_types.rb +0 -22
- data/vendor/prawn-core/examples/graphics/polygons.rb +0 -16
- data/vendor/prawn-core/examples/graphics/remote_images.rb +0 -12
- data/vendor/prawn-core/examples/graphics/ruport_style_helpers.rb +0 -19
- data/vendor/prawn-core/examples/graphics/stroke_bounds.rb +0 -20
- data/vendor/prawn-core/examples/graphics/stroke_cap_and_join.rb +0 -45
- data/vendor/prawn-core/examples/graphics/stroke_dash.rb +0 -42
- data/vendor/prawn-core/examples/graphics/transparency.rb +0 -26
- data/vendor/prawn-core/examples/m17n/chinese_text_wrapping.rb +0 -19
- data/vendor/prawn-core/examples/m17n/euro.rb +0 -15
- data/vendor/prawn-core/examples/m17n/sjis.rb +0 -28
- data/vendor/prawn-core/examples/m17n/utf8.rb +0 -13
- data/vendor/prawn-core/examples/m17n/win_ansi_charset.rb +0 -54
- data/vendor/prawn-core/examples/text/alignment.rb +0 -18
- data/vendor/prawn-core/examples/text/dfont.rb +0 -48
- data/vendor/prawn-core/examples/text/family_based_styling.rb +0 -24
- data/vendor/prawn-core/examples/text/font_calculations.rb +0 -91
- data/vendor/prawn-core/examples/text/font_size.rb +0 -33
- data/vendor/prawn-core/examples/text/kerning.rb +0 -30
- data/vendor/prawn-core/examples/text/simple_text.rb +0 -17
- data/vendor/prawn-core/examples/text/simple_text_ttf.rb +0 -17
- data/vendor/prawn-core/examples/text/span.rb +0 -29
- data/vendor/prawn-core/examples/text/text_box.rb +0 -25
- data/vendor/prawn-core/examples/text/text_box_returning_excess.rb +0 -51
- data/vendor/prawn-core/examples/text/text_flow.rb +0 -67
- data/vendor/prawn-core/lib/prawn/byte_string.rb +0 -7
- data/vendor/prawn-core/lib/prawn/compatibility.rb +0 -38
- data/vendor/prawn-core/lib/prawn/core.rb +0 -85
- data/vendor/prawn-core/lib/prawn/document.rb +0 -534
- data/vendor/prawn-core/lib/prawn/document/annotations.rb +0 -65
- data/vendor/prawn-core/lib/prawn/document/bounding_box.rb +0 -390
- data/vendor/prawn-core/lib/prawn/document/column_box.rb +0 -102
- data/vendor/prawn-core/lib/prawn/document/destinations.rb +0 -92
- data/vendor/prawn-core/lib/prawn/document/internals.rb +0 -180
- data/vendor/prawn-core/lib/prawn/document/page_geometry.rb +0 -153
- data/vendor/prawn-core/lib/prawn/document/snapshot.rb +0 -71
- data/vendor/prawn-core/lib/prawn/document/span.rb +0 -55
- data/vendor/prawn-core/lib/prawn/document/text.rb +0 -184
- data/vendor/prawn-core/lib/prawn/document/text/box.rb +0 -90
- data/vendor/prawn-core/lib/prawn/document/text/wrapping.rb +0 -62
- data/vendor/prawn-core/lib/prawn/encoding.rb +0 -121
- data/vendor/prawn-core/lib/prawn/errors.rb +0 -61
- data/vendor/prawn-core/lib/prawn/font.rb +0 -297
- data/vendor/prawn-core/lib/prawn/font/afm.rb +0 -202
- data/vendor/prawn-core/lib/prawn/font/dfont.rb +0 -34
- data/vendor/prawn-core/lib/prawn/font/ttf.rb +0 -329
- data/vendor/prawn-core/lib/prawn/graphics.rb +0 -264
- data/vendor/prawn-core/lib/prawn/graphics/cap_style.rb +0 -35
- data/vendor/prawn-core/lib/prawn/graphics/color.rb +0 -141
- data/vendor/prawn-core/lib/prawn/graphics/dash.rb +0 -69
- data/vendor/prawn-core/lib/prawn/graphics/join_style.rb +0 -35
- data/vendor/prawn-core/lib/prawn/graphics/transparency.rb +0 -56
- data/vendor/prawn-core/lib/prawn/images.rb +0 -339
- data/vendor/prawn-core/lib/prawn/images/jpg.rb +0 -46
- data/vendor/prawn-core/lib/prawn/images/png.rb +0 -219
- data/vendor/prawn-core/lib/prawn/literal_string.rb +0 -14
- data/vendor/prawn-core/lib/prawn/measurement_extensions.rb +0 -46
- data/vendor/prawn-core/lib/prawn/measurements.rb +0 -71
- data/vendor/prawn-core/lib/prawn/name_tree.rb +0 -166
- data/vendor/prawn-core/lib/prawn/object_store.rb +0 -63
- data/vendor/prawn-core/lib/prawn/pdf_object.rb +0 -81
- data/vendor/prawn-core/lib/prawn/reference.rb +0 -72
- data/vendor/prawn-core/lib/prawn/stamp.rb +0 -87
- data/vendor/prawn-core/meta/Rakefile +0 -62
- data/vendor/prawn-core/meta/lib/prawn.rb +0 -2
- data/vendor/prawn-core/reference_pdfs/alignment.pdf +0 -229
- 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 +0 -128
- data/vendor/prawn-core/reference_pdfs/canvas.pdf +0 -78
- 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 +0 -3671
- data/vendor/prawn-core/reference_pdfs/curves.pdf +0 -62
- data/vendor/prawn-core/reference_pdfs/dfont.pdf +0 -0
- data/vendor/prawn-core/reference_pdfs/euro.pdf +0 -75
- data/vendor/prawn-core/reference_pdfs/family_style.pdf +0 -286
- data/vendor/prawn-core/reference_pdfs/flow.pdf +0 -964
- data/vendor/prawn-core/reference_pdfs/font_calculations.pdf +0 -0
- data/vendor/prawn-core/reference_pdfs/font_size.pdf +0 -142
- data/vendor/prawn-core/reference_pdfs/hexagon.pdf +0 -61
- 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 +0 -124
- data/vendor/prawn-core/reference_pdfs/kerning.pdf +0 -0
- data/vendor/prawn-core/reference_pdfs/landscape_a4.pdf +0 -52
- data/vendor/prawn-core/reference_pdfs/landscape_legal.pdf +0 -52
- data/vendor/prawn-core/reference_pdfs/landscape_letter.pdf +0 -52
- data/vendor/prawn-core/reference_pdfs/lines.pdf +0 -116
- data/vendor/prawn-core/reference_pdfs/margin.pdf +0 -3850
- data/vendor/prawn-core/reference_pdfs/measurement_units.pdf +0 -4667
- data/vendor/prawn-core/reference_pdfs/metadata-info.pdf +0 -88
- data/vendor/prawn-core/reference_pdfs/multi-layout.pdf +0 -209
- data/vendor/prawn-core/reference_pdfs/page_with_numbering.pdf +0 -156
- data/vendor/prawn-core/reference_pdfs/png_types.pdf +0 -0
- data/vendor/prawn-core/reference_pdfs/portrait_a4.pdf +0 -52
- data/vendor/prawn-core/reference_pdfs/portrait_legal.pdf +0 -52
- data/vendor/prawn-core/reference_pdfs/portrait_letter.pdf +0 -52
- data/vendor/prawn-core/reference_pdfs/pretty_polygons.pdf +0 -122
- data/vendor/prawn-core/reference_pdfs/remote_images.pdf +0 -0
- data/vendor/prawn-core/reference_pdfs/ruport.pdf +0 -101
- data/vendor/prawn-core/reference_pdfs/russian_boxes.pdf +0 -2780
- data/vendor/prawn-core/reference_pdfs/simple_text.pdf +0 -136
- 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 +0 -1975
- data/vendor/prawn-core/reference_pdfs/stamp.pdf +0 -696
- data/vendor/prawn-core/reference_pdfs/stretched_nesting.pdf +0 -200
- data/vendor/prawn-core/reference_pdfs/stroke_bounds.pdf +0 -135
- data/vendor/prawn-core/reference_pdfs/stroke_cap_and_join.pdf +0 -80
- data/vendor/prawn-core/reference_pdfs/stroke_dash.pdf +0 -457
- data/vendor/prawn-core/reference_pdfs/text_box.pdf +0 -315
- data/vendor/prawn-core/reference_pdfs/text_box_returning_excess.pdf +0 -271
- data/vendor/prawn-core/reference_pdfs/transparency.pdf +0 -347
- data/vendor/prawn-core/reference_pdfs/utf8.pdf +0 -0
- data/vendor/prawn-core/reference_pdfs/win-ansi.pdf +0 -6172
- data/vendor/prawn-core/spec/annotations_spec.rb +0 -90
- data/vendor/prawn-core/spec/bounding_box_spec.rb +0 -185
- data/vendor/prawn-core/spec/destinations_spec.rb +0 -15
- data/vendor/prawn-core/spec/document_spec.rb +0 -231
- data/vendor/prawn-core/spec/font_spec.rb +0 -273
- data/vendor/prawn-core/spec/graphics_spec.rb +0 -209
- data/vendor/prawn-core/spec/images_spec.rb +0 -79
- data/vendor/prawn-core/spec/jpg_spec.rb +0 -25
- data/vendor/prawn-core/spec/measurement_units_spec.rb +0 -23
- data/vendor/prawn-core/spec/name_tree_spec.rb +0 -112
- data/vendor/prawn-core/spec/object_store_spec.rb +0 -42
- data/vendor/prawn-core/spec/pdf_object_spec.rb +0 -122
- data/vendor/prawn-core/spec/png_spec.rb +0 -236
- data/vendor/prawn-core/spec/reference_spec.rb +0 -82
- data/vendor/prawn-core/spec/snapshot_spec.rb +0 -115
- data/vendor/prawn-core/spec/span_spec.rb +0 -45
- data/vendor/prawn-core/spec/spec_helper.rb +0 -20
- data/vendor/prawn-core/spec/stamp_spec.rb +0 -98
- data/vendor/prawn-core/spec/stroke_styles_spec.rb +0 -152
- data/vendor/prawn-core/spec/text_box_spec.rb +0 -109
- data/vendor/prawn-core/spec/text_spec.rb +0 -185
- data/vendor/prawn-core/spec/transparency_spec.rb +0 -61
- data/vendor/prawn-core/vendor/pdf-inspector/README +0 -18
- data/vendor/prawn-core/vendor/pdf-inspector/lib/pdf/inspector.rb +0 -26
- data/vendor/prawn-core/vendor/pdf-inspector/lib/pdf/inspector/extgstate.rb +0 -18
- data/vendor/prawn-core/vendor/pdf-inspector/lib/pdf/inspector/graphics.rb +0 -119
- data/vendor/prawn-core/vendor/pdf-inspector/lib/pdf/inspector/page.rb +0 -25
- data/vendor/prawn-core/vendor/pdf-inspector/lib/pdf/inspector/text.rb +0 -31
- data/vendor/prawn-core/vendor/pdf-inspector/lib/pdf/inspector/xobject.rb +0 -19
- 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 +0 -45
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk.rb +0 -102
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/directory.rb +0 -17
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/encoding/mac_roman.rb +0 -88
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/encoding/windows_1252.rb +0 -69
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/reader.rb +0 -44
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/resource_file.rb +0 -78
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/subset.rb +0 -18
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/subset/base.rb +0 -141
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/subset/mac_roman.rb +0 -46
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/subset/unicode.rb +0 -48
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/subset/unicode_8bit.rb +0 -63
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/subset/windows_1252.rb +0 -51
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/subset_collection.rb +0 -72
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table.rb +0 -46
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/cmap.rb +0 -34
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/cmap/format00.rb +0 -54
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/cmap/format04.rb +0 -126
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/cmap/subtable.rb +0 -79
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/glyf.rb +0 -64
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/glyf/compound.rb +0 -81
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/glyf/simple.rb +0 -37
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/head.rb +0 -44
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/hhea.rb +0 -41
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/hmtx.rb +0 -47
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/kern.rb +0 -79
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/kern/format0.rb +0 -62
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/loca.rb +0 -43
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/maxp.rb +0 -40
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/name.rb +0 -119
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/os2.rb +0 -78
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/post.rb +0 -91
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/post/format10.rb +0 -43
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/post/format20.rb +0 -35
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/post/format25.rb +0 -23
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/post/format30.rb +0 -17
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/post/format40.rb +0 -17
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/simple.rb +0 -14
- data/vendor/prawn-core/www/index.html +0 -196
- data/vendor/prawn-core/www/media/bounding_boxes.pdf +0 -146
- 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 +0 -350
- 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 +0 -113
- data/vendor/prawn-core/www/prawn.css +0 -86
- data/vendor/prawn-core/www/twilight.css +0 -266
@@ -1,79 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
require File.join(File.expand_path(File.dirname(__FILE__)), "spec_helper")
|
4
|
-
|
5
|
-
describe "the image() function" do
|
6
|
-
|
7
|
-
before(:each) do
|
8
|
-
@filename = "#{Prawn::BASEDIR}/data/images/pigs.jpg"
|
9
|
-
create_pdf
|
10
|
-
end
|
11
|
-
|
12
|
-
it "should only embed an image once, even if it's added multiple times" do
|
13
|
-
@pdf.image @filename, :at => [100,100]
|
14
|
-
@pdf.image @filename, :at => [300,300]
|
15
|
-
|
16
|
-
output = @pdf.render
|
17
|
-
images = PDF::Inspector::XObject.analyze(output)
|
18
|
-
# there should be 2 images in the page resources
|
19
|
-
images.page_xobjects.first.size.should == 2
|
20
|
-
# but only 1 image xobject
|
21
|
-
output.scan(/\/Type \/XObject/).size.should == 1
|
22
|
-
end
|
23
|
-
|
24
|
-
it "should return the image info object" do
|
25
|
-
info = @pdf.image(@filename)
|
26
|
-
|
27
|
-
info.should.be.kind_of(Prawn::Images::JPG)
|
28
|
-
|
29
|
-
info.height.should == 453
|
30
|
-
end
|
31
|
-
|
32
|
-
it "should accept IO objects" do
|
33
|
-
file = File.open(@filename, "rb")
|
34
|
-
info = @pdf.image(file)
|
35
|
-
|
36
|
-
info.height.should == 453
|
37
|
-
end
|
38
|
-
|
39
|
-
it "should raise an UnsupportedImageType if passed a BMP" do
|
40
|
-
filename = "#{Prawn::BASEDIR}/data/images/tru256.bmp"
|
41
|
-
lambda { @pdf.image filename, :at => [100,100] }.should.raise(Prawn::Errors::UnsupportedImageType)
|
42
|
-
end
|
43
|
-
|
44
|
-
it "should raise an UnsupportedImageType if passed an interlaced PNG" do
|
45
|
-
filename = "#{Prawn::BASEDIR}/data/images/dice_interlaced.png"
|
46
|
-
lambda { @pdf.image filename, :at => [100,100] }.should.raise(Prawn::Errors::UnsupportedImageType)
|
47
|
-
end
|
48
|
-
|
49
|
-
describe ":fit option" do
|
50
|
-
it "should fit inside the defined constraints" do
|
51
|
-
info = @pdf.image @filename, :fit => [100,400]
|
52
|
-
info.scaled_width.should <= 100
|
53
|
-
info.scaled_height.should <= 400
|
54
|
-
|
55
|
-
info = @pdf.image @filename, :fit => [400,100]
|
56
|
-
info.scaled_width.should <= 400
|
57
|
-
info.scaled_height.should <= 100
|
58
|
-
|
59
|
-
info = @pdf.image @filename, :fit => [604,453]
|
60
|
-
info.scaled_width.should == 604
|
61
|
-
info.scaled_height.should == 453
|
62
|
-
end
|
63
|
-
it "should move text position" do
|
64
|
-
@y = @pdf.y
|
65
|
-
info = @pdf.image @filename, :fit => [100,400]
|
66
|
-
@pdf.y.should < @y
|
67
|
-
end
|
68
|
-
end
|
69
|
-
|
70
|
-
describe ":at option" do
|
71
|
-
it "should not move text position" do
|
72
|
-
@y = @pdf.y
|
73
|
-
info = @pdf.image @filename, :at => [100,400]
|
74
|
-
@pdf.y.should == @y
|
75
|
-
end
|
76
|
-
end
|
77
|
-
|
78
|
-
end
|
79
|
-
|
@@ -1,25 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
# Spec'ing the PNG class. Not complete yet - still needs to check the
|
4
|
-
# contents of palette and transparency to ensure they're correct.
|
5
|
-
# Need to find files that have these sections first.
|
6
|
-
|
7
|
-
require File.join(File.expand_path(File.dirname(__FILE__)), "spec_helper")
|
8
|
-
|
9
|
-
describe "When reading a JPEG file" do
|
10
|
-
|
11
|
-
before(:each) do
|
12
|
-
@filename = "#{Prawn::BASEDIR}/data/images/pigs.jpg"
|
13
|
-
@img_data = File.open(@filename, "rb") { |f| f.read }
|
14
|
-
end
|
15
|
-
|
16
|
-
it "should read the basic attributes correctly" do
|
17
|
-
jpg = Prawn::Images::JPG.new(@img_data)
|
18
|
-
|
19
|
-
jpg.width.should == 604
|
20
|
-
jpg.height.should == 453
|
21
|
-
jpg.bits.should == 8
|
22
|
-
jpg.channels.should == 3
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
@@ -1,23 +0,0 @@
|
|
1
|
-
require File.join(File.expand_path(File.dirname(__FILE__)), "spec_helper")
|
2
|
-
require "prawn/measurement_extensions"
|
3
|
-
|
4
|
-
describe "Measurement units" do
|
5
|
-
|
6
|
-
it "should convert units to PostScriptPoints" do
|
7
|
-
1.mm.should.be.close(2.834645669, 0.000000001)
|
8
|
-
1.mm.should == (72 / 25.4)
|
9
|
-
2.mm.should == (2 * 72 / 25.4)
|
10
|
-
3.mm.should == 3 * 72 / 25.4
|
11
|
-
-3.mm.should == -3 * 72/25.4
|
12
|
-
1.cm.should == 10 * 72 / 25.4
|
13
|
-
1.dm.should == 100 * 72 / 25.4
|
14
|
-
1.m.should == 1000 * 72 / 25.4
|
15
|
-
|
16
|
-
1.in.should == 72
|
17
|
-
1.ft.should == 72 * 12
|
18
|
-
1.yd.should == 72 * 12 * 3
|
19
|
-
1.pt.should == 1
|
20
|
-
end
|
21
|
-
|
22
|
-
end
|
23
|
-
|
@@ -1,112 +0,0 @@
|
|
1
|
-
require File.join(File.expand_path(File.dirname(__FILE__)), "spec_helper")
|
2
|
-
|
3
|
-
def tree_dump(tree)
|
4
|
-
if tree.is_a?(Prawn::NameTree::Node)
|
5
|
-
"[" + tree.children.map { |child| tree_dump(child) }.join(",") + "]"
|
6
|
-
else
|
7
|
-
"#{tree.name}=#{tree.value}"
|
8
|
-
end
|
9
|
-
end
|
10
|
-
|
11
|
-
def tree_add(tree, *args)
|
12
|
-
args.each do |(name, value)|
|
13
|
-
tree.add(name, value)
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
def tree_value(name, value)
|
18
|
-
Prawn::NameTree::Value.new(name, value)
|
19
|
-
end
|
20
|
-
|
21
|
-
class RefExposingDocument < Prawn::Document
|
22
|
-
def object_store
|
23
|
-
@store
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
describe "Name Tree" do
|
28
|
-
before(:each) { create_pdf(RefExposingDocument) }
|
29
|
-
|
30
|
-
it "should have no children when first initialized" do
|
31
|
-
node = Prawn::NameTree::Node.new(@pdf, 3)
|
32
|
-
node.children.length.should == 0
|
33
|
-
end
|
34
|
-
|
35
|
-
it "should have no subtrees while child limit is not reached" do
|
36
|
-
node = Prawn::NameTree::Node.new(@pdf, 3)
|
37
|
-
tree_add(node, ["one", 1], ["two", 2], ["three", 3])
|
38
|
-
tree_dump(node).should == "[one=1,three=3,two=2]"
|
39
|
-
end
|
40
|
-
|
41
|
-
it "should split into subtrees when limit is exceeded" do
|
42
|
-
node = Prawn::NameTree::Node.new(@pdf, 3)
|
43
|
-
tree_add(node, ["one", 1], ["two", 2], ["three", 3], ["four", 4])
|
44
|
-
tree_dump(node).should == "[[four=4,one=1],[three=3,two=2]]"
|
45
|
-
end
|
46
|
-
|
47
|
-
it "should create a two new references when root is split" do
|
48
|
-
ref_count = @pdf.object_store.length
|
49
|
-
node = Prawn::NameTree::Node.new(@pdf, 3)
|
50
|
-
tree_add(node, ["one", 1], ["two", 2], ["three", 3], ["four", 4])
|
51
|
-
@pdf.object_store.length.should.equal ref_count+2
|
52
|
-
end
|
53
|
-
|
54
|
-
it "should create a one new reference when subtree is split" do
|
55
|
-
node = Prawn::NameTree::Node.new(@pdf, 3)
|
56
|
-
tree_add(node, ["one", 1], ["two", 2], ["three", 3], ["four", 4])
|
57
|
-
|
58
|
-
ref_count = @pdf.object_store.length # save when root is split
|
59
|
-
tree_add(node, ["five", 5], ["six", 6], ["seven", 7])
|
60
|
-
tree_dump(node).should == "[[five=5,four=4,one=1],[seven=7,six=6],[three=3,two=2]]"
|
61
|
-
@pdf.object_store.length.should.equal ref_count+1
|
62
|
-
end
|
63
|
-
|
64
|
-
it "should keep tree balanced when subtree split cascades to root" do
|
65
|
-
node = Prawn::NameTree::Node.new(@pdf, 3)
|
66
|
-
tree_add(node, ["one", 1], ["two", 2], ["three", 3], ["four", 4])
|
67
|
-
tree_add(node, ["five", 5], ["six", 6], ["seven", 7], ["eight", 8])
|
68
|
-
tree_dump(node).should == "[[[eight=8,five=5],[four=4,one=1]],[[seven=7,six=6],[three=3,two=2]]]"
|
69
|
-
end
|
70
|
-
|
71
|
-
it "should maintain order of already properly ordered nodes" do
|
72
|
-
node = Prawn::NameTree::Node.new(@pdf, 3)
|
73
|
-
tree_add(node, ["eight", 8], ["five", 5], ["four", 4], ["one", 1])
|
74
|
-
tree_add(node, ['seven', 7], ['six', 6], ['three', 3], ['two', 2])
|
75
|
-
tree_dump(node).should == "[[[eight=8,five=5],[four=4,one=1]],[[seven=7,six=6],[three=3,two=2]]]"
|
76
|
-
end
|
77
|
-
|
78
|
-
it "should emit only :Names key with to_hash if root is only node" do
|
79
|
-
node = Prawn::NameTree::Node.new(@pdf, 3)
|
80
|
-
tree_add(node, ["one", 1], ["two", 2], ["three", 3])
|
81
|
-
node.to_hash.should.equal(
|
82
|
-
{ :Names => [tree_value("one", 1), tree_value("three", 3), tree_value("two", 2)] }
|
83
|
-
)
|
84
|
-
end
|
85
|
-
|
86
|
-
it "should emit only :Kids key with to_hash if root has children" do
|
87
|
-
node = Prawn::NameTree::Node.new(@pdf, 3)
|
88
|
-
tree_add(node, ["one", 1], ["two", 2], ["three", 3], ["four", 4])
|
89
|
-
node.to_hash.should.equal({ :Kids => node.children.map { |child| child.ref } })
|
90
|
-
end
|
91
|
-
|
92
|
-
it "should emit :Limits and :Names keys with to_hash for leaf node" do
|
93
|
-
node = Prawn::NameTree::Node.new(@pdf, 3)
|
94
|
-
tree_add(node, ["one", 1], ["two", 2], ["three", 3], ["four", 4])
|
95
|
-
node.children.first.to_hash.should.equal(
|
96
|
-
{ :Limits => %w(four one),
|
97
|
-
:Names => [tree_value("four", 4), tree_value("one", 1)] }
|
98
|
-
)
|
99
|
-
end
|
100
|
-
|
101
|
-
it "should emit :Limits and :Kids keys with to_hash for inner node" do
|
102
|
-
node = Prawn::NameTree::Node.new(@pdf, 3)
|
103
|
-
tree_add(node, ["one", 1], ["two", 2], ["three", 3], ["four", 4])
|
104
|
-
tree_add(node, ["five", 5], ["six", 6], ["seven", 7], ["eight", 8])
|
105
|
-
tree_add(node, ["nine", 9], ["ten", 10], ["eleven", 11], ["twelve", 12])
|
106
|
-
tree_add(node, ["thirteen", 13], ["fourteen", 14], ["fifteen", 15], ["sixteen", 16])
|
107
|
-
node.children.first.to_hash.should.equal(
|
108
|
-
{ :Limits => %w(eight one),
|
109
|
-
:Kids => node.children.first.children.map { |child| child.ref } }
|
110
|
-
)
|
111
|
-
end
|
112
|
-
end
|
@@ -1,42 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
require File.join(File.expand_path(File.dirname(__FILE__)), "spec_helper")
|
4
|
-
|
5
|
-
describe "Prawn::ObjectStore" do
|
6
|
-
before(:each) do
|
7
|
-
@store = Prawn::ObjectStore.new
|
8
|
-
end
|
9
|
-
|
10
|
-
it "should create required roots by default, including info passed to new" do
|
11
|
-
store = Prawn::ObjectStore.new(:Test => 3)
|
12
|
-
store.size.should == 3 # 3 default roots
|
13
|
-
store.info.data[:Test].should == 3
|
14
|
-
store.pages.data[:Count].should == 0
|
15
|
-
store.root.data[:Pages].should == store.pages
|
16
|
-
end
|
17
|
-
|
18
|
-
it "should add to its objects when ref() is called" do
|
19
|
-
count = @store.size
|
20
|
-
@store.ref("blah")
|
21
|
-
@store.size.should == count + 1
|
22
|
-
end
|
23
|
-
|
24
|
-
it "should accept push with a Prawn::Reference" do
|
25
|
-
r = Prawn::Reference(123, "blah")
|
26
|
-
@store.push(r)
|
27
|
-
@store[r.identifier].should == r
|
28
|
-
end
|
29
|
-
|
30
|
-
it "should accept arbitrary data and use it to create a Prawn::Reference" do
|
31
|
-
@store.push(123, "blahblah")
|
32
|
-
@store[123].data.should == "blahblah"
|
33
|
-
end
|
34
|
-
|
35
|
-
it "should be Enumerable, yielding in order of submission" do
|
36
|
-
# higher IDs to bypass the default roots
|
37
|
-
[10, 11, 12].each do |id|
|
38
|
-
@store.push(id, "some data #{id}")
|
39
|
-
end
|
40
|
-
@store.map{|ref| ref.identifier}[-3..-1].should == [10, 11, 12]
|
41
|
-
end
|
42
|
-
end
|
@@ -1,122 +0,0 @@
|
|
1
|
-
# encoding: ASCII-8BIT
|
2
|
-
|
3
|
-
require File.join(File.expand_path(File.dirname(__FILE__)), "spec_helper")
|
4
|
-
|
5
|
-
# See PDF Reference, Sixth Edition (1.7) pp51-60 for details
|
6
|
-
describe "PDF Object Serialization" do
|
7
|
-
|
8
|
-
it "should convert Ruby's nil to PDF null" do
|
9
|
-
Prawn::PdfObject(nil).should == "null"
|
10
|
-
end
|
11
|
-
|
12
|
-
it "should convert Ruby booleans to PDF booleans" do
|
13
|
-
Prawn::PdfObject(true).should == "true"
|
14
|
-
Prawn::PdfObject(false).should == "false"
|
15
|
-
end
|
16
|
-
|
17
|
-
it "should convert a Ruby number to PDF number" do
|
18
|
-
Prawn::PdfObject(1).should == "1"
|
19
|
-
Prawn::PdfObject(1.214112421).should == "1.214112421"
|
20
|
-
end
|
21
|
-
|
22
|
-
it "should convert a Ruby time object to a PDF timestamp" do
|
23
|
-
t = Time.now
|
24
|
-
Prawn::PdfObject(t).should == t.strftime("(D:%Y%m%d%H%M%S%z").chop.chop + "'00')"
|
25
|
-
end
|
26
|
-
|
27
|
-
it "should convert a Ruby string to PDF string when inside a content stream" do
|
28
|
-
s = "I can has a string"
|
29
|
-
PDF::Inspector.parse(Prawn::PdfObject(s, true)).should == s
|
30
|
-
end
|
31
|
-
|
32
|
-
it "should convert a Ruby string to a UTF-16 PDF string when outside a content stream" do
|
33
|
-
s = "I can has a string"
|
34
|
-
s_utf16 = "\xFE\xFF" + s.unpack("U*").pack("n*")
|
35
|
-
PDF::Inspector.parse(Prawn::PdfObject(s, false)).should == s_utf16
|
36
|
-
end
|
37
|
-
|
38
|
-
it "should pass through bytes regardless of content stream status for ByteString" do
|
39
|
-
Prawn::PdfObject(Prawn::ByteString.new("\xDE\xAD\xBE\xEF")).upcase.
|
40
|
-
should == "<DEADBEEF>"
|
41
|
-
end
|
42
|
-
|
43
|
-
it "should escape parens when converting from Ruby string to PDF" do
|
44
|
-
s = 'I )(can has a string'
|
45
|
-
PDF::Inspector.parse(Prawn::PdfObject(s, true)).should == s
|
46
|
-
end
|
47
|
-
|
48
|
-
it "should handle ruby escaped parens when converting to PDF string" do
|
49
|
-
s = 'I can \\)( has string'
|
50
|
-
PDF::Inspector.parse(Prawn::PdfObject(s, true)).should == s
|
51
|
-
end
|
52
|
-
|
53
|
-
it "should convert a Ruby symbol to PDF name" do
|
54
|
-
Prawn::PdfObject(:my_symbol).should == "/my_symbol"
|
55
|
-
Prawn::PdfObject(:"A;Name_With−Various***Characters?").should ==
|
56
|
-
"/A;Name_With−Various***Characters?"
|
57
|
-
end
|
58
|
-
|
59
|
-
it "should not convert a whitespace containing Ruby symbol to a PDF name" do
|
60
|
-
lambda { Prawn::PdfObject(:"My Symbol With Spaces") }.
|
61
|
-
should.raise(Prawn::Errors::FailedObjectConversion)
|
62
|
-
end
|
63
|
-
|
64
|
-
it "should convert a Ruby array to PDF Array when inside a content stream" do
|
65
|
-
Prawn::PdfObject([1,2,3]).should == "[1 2 3]"
|
66
|
-
PDF::Inspector.parse(Prawn::PdfObject([[1,2],:foo,"Bar"], true)).should ==
|
67
|
-
[[1,2],:foo, "Bar"]
|
68
|
-
end
|
69
|
-
|
70
|
-
it "should convert a Ruby array to PDF Array when outside a content stream" do
|
71
|
-
bar = "\xFE\xFF" + "Bar".unpack("U*").pack("n*")
|
72
|
-
Prawn::PdfObject([1,2,3]).should == "[1 2 3]"
|
73
|
-
PDF::Inspector.parse(Prawn::PdfObject([[1,2],:foo,"Bar"], false)).should ==
|
74
|
-
[[1,2],:foo, bar]
|
75
|
-
end
|
76
|
-
|
77
|
-
it "should convert a Ruby hash to a PDF Dictionary when inside a content stream" do
|
78
|
-
dict = Prawn::PdfObject( {:foo => :bar,
|
79
|
-
"baz" => [1,2,3],
|
80
|
-
:bang => {:a => "what", :b => [:you, :say] }}, true )
|
81
|
-
|
82
|
-
res = PDF::Inspector.parse(dict)
|
83
|
-
|
84
|
-
res[:foo].should == :bar
|
85
|
-
res[:baz].should == [1,2,3]
|
86
|
-
res[:bang].should == { :a => "what", :b => [:you, :say] }
|
87
|
-
|
88
|
-
end
|
89
|
-
|
90
|
-
it "should convert a Ruby hash to a PDF Dictionary when outside a content stream" do
|
91
|
-
what = "\xFE\xFF" + "what".unpack("U*").pack("n*")
|
92
|
-
dict = Prawn::PdfObject( {:foo => :bar,
|
93
|
-
"baz" => [1,2,3],
|
94
|
-
:bang => {:a => "what", :b => [:you, :say] }}, false )
|
95
|
-
|
96
|
-
res = PDF::Inspector.parse(dict)
|
97
|
-
|
98
|
-
res[:foo].should == :bar
|
99
|
-
res[:baz].should == [1,2,3]
|
100
|
-
res[:bang].should == { :a => what, :b => [:you, :say] }
|
101
|
-
|
102
|
-
end
|
103
|
-
|
104
|
-
it "should not allow keys other than strings or symbols for PDF dicts" do
|
105
|
-
lambda { Prawn::PdfObject(:foo => :bar, :baz => :bang, 1 => 4) }.
|
106
|
-
should.raise(Prawn::Errors::FailedObjectConversion)
|
107
|
-
end
|
108
|
-
|
109
|
-
it "should convert a Prawn::Reference to a PDF indirect object reference" do
|
110
|
-
ref = Prawn::Reference(1,true)
|
111
|
-
Prawn::PdfObject(ref).should == ref.to_s
|
112
|
-
end
|
113
|
-
|
114
|
-
it "should convert a NameTree::Node to a PDF hash" do
|
115
|
-
node = Prawn::NameTree::Node.new(Prawn::Document.new, 10)
|
116
|
-
node.add "hello", 1.0
|
117
|
-
node.add "world", 2.0
|
118
|
-
data = Prawn::PdfObject(node)
|
119
|
-
res = PDF::Inspector.parse(data)
|
120
|
-
res.should == {:Names => ["hello", 1.0, "world", 2.0]}
|
121
|
-
end
|
122
|
-
end
|
@@ -1,236 +0,0 @@
|
|
1
|
-
# encoding: ASCII-8BIT
|
2
|
-
|
3
|
-
# Spec'ing the PNG class. Not complete yet - still needs to check the
|
4
|
-
# contents of palette and transparency to ensure they're correct.
|
5
|
-
# Need to find files that have these sections first.
|
6
|
-
#
|
7
|
-
# see http://www.w3.org/TR/PNG/ for a detailed description of the PNG spec,
|
8
|
-
# particuarly Table 11.1 for the different color types
|
9
|
-
|
10
|
-
require File.join(File.expand_path(File.dirname(__FILE__)), "spec_helper")
|
11
|
-
|
12
|
-
describe "When reading a greyscale PNG file (color type 0)" do
|
13
|
-
|
14
|
-
before(:each) do
|
15
|
-
@filename = "#{Prawn::BASEDIR}/data/images/web-links.png"
|
16
|
-
@data_filename = "#{Prawn::BASEDIR}/data/images/web-links.dat"
|
17
|
-
@img_data = File.binread(@filename)
|
18
|
-
end
|
19
|
-
|
20
|
-
it "should read the attributes from the header chunk correctly" do
|
21
|
-
png = Prawn::Images::PNG.new(@img_data)
|
22
|
-
|
23
|
-
png.width.should == 21
|
24
|
-
png.height.should == 14
|
25
|
-
png.bits.should == 8
|
26
|
-
png.color_type.should == 0
|
27
|
-
png.compression_method.should == 0
|
28
|
-
png.filter_method.should == 0
|
29
|
-
png.interlace_method.should == 0
|
30
|
-
end
|
31
|
-
|
32
|
-
it "should read the image data chunk correctly" do
|
33
|
-
png = Prawn::Images::PNG.new(@img_data)
|
34
|
-
data = File.binread(@data_filename)
|
35
|
-
png.img_data.should == data
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
describe "When reading a greyscale PNG file with transparency (color type 0)" do
|
40
|
-
|
41
|
-
before(:each) do
|
42
|
-
@filename = "#{Prawn::BASEDIR}/data/images/ruport_type0.png"
|
43
|
-
@img_data = File.binread(@filename)
|
44
|
-
end
|
45
|
-
|
46
|
-
# In a greyscale type 0 PNG image, the tRNS chunk should contain a single value
|
47
|
-
# that indicates the color that should be interpreted as transparent.
|
48
|
-
#
|
49
|
-
# http://www.w3.org/TR/PNG/#11tRNS
|
50
|
-
it "should read the tRNS chunk correctly" do
|
51
|
-
png = Prawn::Images::PNG.new(@img_data)
|
52
|
-
png.transparency[:grayscale].should == 255
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
describe "When reading an RGB PNG file (color type 2)" do
|
57
|
-
|
58
|
-
before(:each) do
|
59
|
-
@filename = "#{Prawn::BASEDIR}/data/images/ruport.png"
|
60
|
-
@data_filename = "#{Prawn::BASEDIR}/data/images/ruport_data.dat"
|
61
|
-
@img_data = File.binread(@filename)
|
62
|
-
end
|
63
|
-
|
64
|
-
it "should read the attributes from the header chunk correctly" do
|
65
|
-
png = Prawn::Images::PNG.new(@img_data)
|
66
|
-
|
67
|
-
png.width.should == 258
|
68
|
-
png.height.should == 105
|
69
|
-
png.bits.should == 8
|
70
|
-
png.color_type.should == 2
|
71
|
-
png.compression_method.should == 0
|
72
|
-
png.filter_method.should == 0
|
73
|
-
png.interlace_method.should == 0
|
74
|
-
end
|
75
|
-
|
76
|
-
it "should read the image data chunk correctly" do
|
77
|
-
png = Prawn::Images::PNG.new(@img_data)
|
78
|
-
data = File.binread(@data_filename)
|
79
|
-
png.img_data.should == data
|
80
|
-
end
|
81
|
-
end
|
82
|
-
|
83
|
-
describe "When reading an RGB PNG file with transparency (color type 2)" do
|
84
|
-
|
85
|
-
before(:each) do
|
86
|
-
@filename = "#{Prawn::BASEDIR}/data/images/arrow2.png"
|
87
|
-
@img_data = File.binread(@filename)
|
88
|
-
end
|
89
|
-
|
90
|
-
# In a RGB type 2 PNG image, the tRNS chunk should contain a single RGB value
|
91
|
-
# that indicates the color that should be interpreted as transparent. In this
|
92
|
-
# case it's green.
|
93
|
-
#
|
94
|
-
# http://www.w3.org/TR/PNG/#11tRNS
|
95
|
-
it "should read the tRNS chunk correctly" do
|
96
|
-
png = Prawn::Images::PNG.new(@img_data)
|
97
|
-
png.transparency[:rgb].should == [0, 255, 0]
|
98
|
-
end
|
99
|
-
end
|
100
|
-
|
101
|
-
# TODO: describe "When reading an indexed color PNG file wiih transparency (color type 3)"
|
102
|
-
|
103
|
-
describe "When reading an indexed color PNG file (color type 3)" do
|
104
|
-
|
105
|
-
before(:each) do
|
106
|
-
@filename = "#{Prawn::BASEDIR}/data/images/rails.png"
|
107
|
-
@data_filename = "#{Prawn::BASEDIR}/data/images/rails.dat"
|
108
|
-
@img_data = File.binread(@filename)
|
109
|
-
end
|
110
|
-
|
111
|
-
it "should read the attributes from the header chunk correctly" do
|
112
|
-
png = Prawn::Images::PNG.new(@img_data)
|
113
|
-
|
114
|
-
png.width.should == 50
|
115
|
-
png.height.should == 64
|
116
|
-
png.bits.should == 8
|
117
|
-
png.color_type.should == 3
|
118
|
-
png.compression_method.should == 0
|
119
|
-
png.filter_method.should == 0
|
120
|
-
png.interlace_method.should == 0
|
121
|
-
end
|
122
|
-
|
123
|
-
it "should read the image data chunk correctly" do
|
124
|
-
png = Prawn::Images::PNG.new(@img_data)
|
125
|
-
data = File.binread(@data_filename)
|
126
|
-
png.img_data.should == data
|
127
|
-
end
|
128
|
-
end
|
129
|
-
|
130
|
-
describe "When reading a greyscale+alpha PNG file (color type 4)" do
|
131
|
-
|
132
|
-
before(:each) do
|
133
|
-
@filename = "#{Prawn::BASEDIR}/data/images/page_white_text.png"
|
134
|
-
@data_filename = "#{Prawn::BASEDIR}/data/images/page_white_text.dat"
|
135
|
-
@alpha_data_filename = "#{Prawn::BASEDIR}/data/images/page_white_text.alpha"
|
136
|
-
@img_data = File.binread(@filename)
|
137
|
-
end
|
138
|
-
|
139
|
-
it "should read the attributes from the header chunk correctly" do
|
140
|
-
png = Prawn::Images::PNG.new(@img_data)
|
141
|
-
|
142
|
-
png.width.should == 16
|
143
|
-
png.height.should == 16
|
144
|
-
png.bits.should == 8
|
145
|
-
png.color_type.should == 4
|
146
|
-
png.compression_method.should == 0
|
147
|
-
png.filter_method.should == 0
|
148
|
-
png.interlace_method.should == 0
|
149
|
-
end
|
150
|
-
|
151
|
-
it "should correctly return the raw image data (with no alpha channel) from the image data chunk" do
|
152
|
-
png = Prawn::Images::PNG.new(@img_data)
|
153
|
-
png.split_alpha_channel!
|
154
|
-
data = File.binread(@data_filename)
|
155
|
-
png.img_data.should == data
|
156
|
-
end
|
157
|
-
|
158
|
-
it "should correctly extract the alpha channel data from the image data chunk" do
|
159
|
-
png = Prawn::Images::PNG.new(@img_data)
|
160
|
-
png.split_alpha_channel!
|
161
|
-
data = File.binread(@alpha_data_filename)
|
162
|
-
png.alpha_channel.should == data
|
163
|
-
end
|
164
|
-
end
|
165
|
-
|
166
|
-
describe "When reading an RGB+alpha PNG file (color type 6)" do
|
167
|
-
|
168
|
-
before(:each) do
|
169
|
-
@filename = "#{Prawn::BASEDIR}/data/images/dice.png"
|
170
|
-
@data_filename = "#{Prawn::BASEDIR}/data/images/dice.dat"
|
171
|
-
@alpha_data_filename = "#{Prawn::BASEDIR}/data/images/dice.alpha"
|
172
|
-
@img_data = File.binread(@filename)
|
173
|
-
end
|
174
|
-
|
175
|
-
it "should read the attributes from the header chunk correctly" do
|
176
|
-
png = Prawn::Images::PNG.new(@img_data)
|
177
|
-
|
178
|
-
png.width.should == 320
|
179
|
-
png.height.should == 240
|
180
|
-
png.bits.should == 8
|
181
|
-
png.color_type.should == 6
|
182
|
-
png.compression_method.should == 0
|
183
|
-
png.filter_method.should == 0
|
184
|
-
png.interlace_method.should == 0
|
185
|
-
end
|
186
|
-
|
187
|
-
it "should correctly return the raw image data (with no alpha channel) from the image data chunk" do
|
188
|
-
png = Prawn::Images::PNG.new(@img_data)
|
189
|
-
png.split_alpha_channel!
|
190
|
-
data = File.binread(@data_filename)
|
191
|
-
png.img_data.should == data
|
192
|
-
end
|
193
|
-
|
194
|
-
it "should correctly extract the alpha channel data from the image data chunk" do
|
195
|
-
png = Prawn::Images::PNG.new(@img_data)
|
196
|
-
png.split_alpha_channel!
|
197
|
-
data = File.binread(@alpha_data_filename)
|
198
|
-
png.alpha_channel.should == data
|
199
|
-
end
|
200
|
-
end
|
201
|
-
|
202
|
-
describe "When reading a 16bit RGB+alpha PNG file (color type 6)" do
|
203
|
-
|
204
|
-
before(:each) do
|
205
|
-
@filename = "#{Prawn::BASEDIR}/data/images/16bit.png"
|
206
|
-
@data_filename = "#{Prawn::BASEDIR}/data/images/16bit.dat"
|
207
|
-
@alpha_data_filename = "#{Prawn::BASEDIR}/data/images/16bit.alpha"
|
208
|
-
@img_data = File.binread(@filename)
|
209
|
-
end
|
210
|
-
|
211
|
-
it "should read the attributes from the header chunk correctly" do
|
212
|
-
png = Prawn::Images::PNG.new(@img_data)
|
213
|
-
|
214
|
-
png.width.should == 32
|
215
|
-
png.height.should == 32
|
216
|
-
png.bits.should == 16
|
217
|
-
png.color_type.should == 6
|
218
|
-
png.compression_method.should == 0
|
219
|
-
png.filter_method.should == 0
|
220
|
-
png.interlace_method.should == 0
|
221
|
-
end
|
222
|
-
|
223
|
-
it "should correctly return the raw image data (with no alpha channel) from the image data chunk" do
|
224
|
-
png = Prawn::Images::PNG.new(@img_data)
|
225
|
-
png.split_alpha_channel!
|
226
|
-
data = File.binread(@data_filename)
|
227
|
-
png.img_data.should == data
|
228
|
-
end
|
229
|
-
|
230
|
-
it "should correctly extract the alpha channel data from the image data chunk" do
|
231
|
-
png = Prawn::Images::PNG.new(@img_data)
|
232
|
-
png.split_alpha_channel!
|
233
|
-
data = File.binread(@alpha_data_filename)
|
234
|
-
png.alpha_channel.should == data
|
235
|
-
end
|
236
|
-
end
|