prawn 2.0.2 → 2.3.0
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.
- checksums.yaml +5 -5
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/GPLv2 +20 -21
- data/Gemfile +3 -9
- data/Rakefile +20 -23
- data/lib/prawn.rb +37 -49
- data/lib/prawn/document.rb +181 -133
- data/lib/prawn/document/bounding_box.rb +41 -29
- data/lib/prawn/document/column_box.rb +7 -7
- data/lib/prawn/document/internals.rb +18 -8
- data/lib/prawn/document/span.rb +21 -16
- data/lib/prawn/encoding.rb +69 -68
- data/lib/prawn/errors.rb +12 -7
- data/lib/prawn/font.rb +115 -69
- data/lib/prawn/font_metric_cache.rb +14 -8
- data/lib/prawn/{font → fonts}/afm.rb +102 -68
- data/lib/prawn/{font → fonts}/dfont.rb +5 -11
- data/lib/prawn/fonts/otf.rb +11 -0
- data/lib/prawn/fonts/ttc.rb +36 -0
- data/lib/prawn/{font → fonts}/ttf.rb +87 -68
- data/lib/prawn/graphics.rb +120 -80
- data/lib/prawn/graphics/blend_mode.rb +65 -0
- data/lib/prawn/graphics/cap_style.rb +3 -3
- data/lib/prawn/graphics/color.rb +27 -25
- data/lib/prawn/graphics/dash.rb +23 -11
- data/lib/prawn/graphics/join_style.rb +9 -3
- data/lib/prawn/graphics/patterns.rb +197 -67
- data/lib/prawn/graphics/transformation.rb +17 -8
- data/lib/prawn/graphics/transparency.rb +17 -13
- data/lib/prawn/grid.rb +48 -47
- data/lib/prawn/image_handler.rb +5 -5
- data/lib/prawn/images.rb +39 -30
- data/lib/prawn/images/image.rb +2 -1
- data/lib/prawn/images/jpg.rb +28 -22
- data/lib/prawn/images/png.rb +107 -66
- data/lib/prawn/measurement_extensions.rb +10 -9
- data/lib/prawn/measurements.rb +19 -15
- data/lib/prawn/outline.rb +97 -77
- data/lib/prawn/repeater.rb +14 -10
- data/lib/prawn/security.rb +81 -61
- data/lib/prawn/security/arcfour.rb +2 -2
- data/lib/prawn/soft_mask.rb +26 -26
- data/lib/prawn/stamp.rb +20 -13
- data/lib/prawn/text.rb +68 -52
- data/lib/prawn/text/box.rb +11 -8
- data/lib/prawn/text/formatted.rb +5 -5
- data/lib/prawn/text/formatted/arranger.rb +78 -49
- data/lib/prawn/text/formatted/box.rb +134 -100
- data/lib/prawn/text/formatted/fragment.rb +11 -14
- data/lib/prawn/text/formatted/line_wrap.rb +121 -63
- data/lib/prawn/text/formatted/parser.rb +139 -117
- data/lib/prawn/text/formatted/wrap.rb +43 -31
- data/lib/prawn/transformation_stack.rb +44 -0
- data/lib/prawn/utilities.rb +7 -22
- data/lib/prawn/version.rb +2 -2
- data/lib/prawn/view.rb +17 -7
- data/manual/basic_concepts/adding_pages.rb +6 -7
- data/manual/basic_concepts/basic_concepts.rb +31 -22
- data/manual/basic_concepts/creation.rb +10 -11
- data/manual/basic_concepts/cursor.rb +4 -5
- data/manual/basic_concepts/measurement.rb +6 -7
- data/manual/basic_concepts/origin.rb +5 -6
- data/manual/basic_concepts/other_cursor_helpers.rb +11 -12
- data/manual/basic_concepts/view.rb +22 -16
- data/manual/bounding_box/bounding_box.rb +29 -24
- data/manual/bounding_box/bounds.rb +11 -12
- data/manual/bounding_box/canvas.rb +4 -5
- data/manual/bounding_box/creation.rb +6 -7
- data/manual/bounding_box/indentation.rb +14 -15
- data/manual/bounding_box/nesting.rb +24 -17
- data/manual/bounding_box/russian_boxes.rb +14 -13
- data/manual/bounding_box/stretchy.rb +12 -13
- data/manual/contents.rb +28 -22
- data/manual/cover.rb +33 -28
- data/manual/document_and_page_options/background.rb +11 -13
- data/manual/document_and_page_options/document_and_page_options.rb +25 -20
- data/manual/document_and_page_options/metadata.rb +18 -16
- data/manual/document_and_page_options/page_margins.rb +18 -20
- data/manual/document_and_page_options/page_size.rb +13 -12
- data/manual/document_and_page_options/print_scaling.rb +17 -15
- data/manual/example_helper.rb +5 -4
- data/manual/graphics/blend_mode.rb +52 -0
- data/manual/graphics/circle_and_ellipse.rb +4 -5
- data/manual/graphics/color.rb +7 -9
- data/manual/graphics/common_lines.rb +7 -8
- data/manual/graphics/fill_and_stroke.rb +4 -5
- data/manual/graphics/fill_rules.rb +9 -10
- data/manual/graphics/gradients.rb +27 -21
- data/manual/graphics/graphics.rb +48 -39
- data/manual/graphics/helper.rb +12 -9
- data/manual/graphics/line_width.rb +8 -7
- data/manual/graphics/lines_and_curves.rb +7 -8
- data/manual/graphics/polygon.rb +6 -8
- data/manual/graphics/rectangle.rb +4 -5
- data/manual/graphics/rotate.rb +6 -7
- data/manual/graphics/scale.rb +14 -15
- data/manual/graphics/soft_masks.rb +4 -5
- data/manual/graphics/stroke_cap.rb +6 -7
- data/manual/graphics/stroke_dash.rb +11 -12
- data/manual/graphics/stroke_join.rb +5 -6
- data/manual/graphics/translate.rb +9 -10
- data/manual/graphics/transparency.rb +7 -8
- data/manual/how_to_read_this_manual.rb +6 -6
- data/manual/images/absolute_position.rb +6 -7
- data/manual/images/fit.rb +7 -8
- data/manual/images/horizontal.rb +9 -10
- data/manual/images/images.rb +28 -24
- data/manual/images/plain_image.rb +5 -6
- data/manual/images/scale.rb +9 -10
- data/manual/images/vertical.rb +13 -14
- data/manual/images/width_and_height.rb +10 -11
- data/manual/layout/boxes.rb +5 -6
- data/manual/layout/content.rb +7 -8
- data/manual/layout/layout.rb +18 -16
- data/manual/layout/simple_grid.rb +6 -7
- data/manual/outline/add_subsection_to.rb +20 -21
- data/manual/outline/insert_section_after.rb +15 -16
- data/manual/outline/outline.rb +21 -17
- data/manual/outline/sections_and_pages.rb +17 -18
- data/manual/repeatable_content/alternate_page_numbering.rb +21 -17
- data/manual/repeatable_content/page_numbering.rb +17 -16
- data/manual/repeatable_content/repeatable_content.rb +25 -19
- data/manual/repeatable_content/repeater.rb +14 -15
- data/manual/repeatable_content/stamp.rb +14 -15
- data/manual/security/encryption.rb +9 -10
- data/manual/security/permissions.rb +19 -14
- data/manual/security/security.rb +19 -16
- data/manual/table.rb +3 -3
- data/manual/text/alignment.rb +16 -17
- data/manual/text/color.rb +12 -11
- data/manual/text/column_box.rb +9 -10
- data/manual/text/fallback_fonts.rb +25 -21
- data/manual/text/font.rb +11 -12
- data/manual/text/font_size.rb +13 -14
- data/manual/text/font_style.rb +7 -8
- data/manual/text/formatted_callbacks.rb +25 -21
- data/manual/text/formatted_text.rb +33 -25
- data/manual/text/free_flowing_text.rb +20 -21
- data/manual/text/inline.rb +18 -19
- data/manual/text/kerning_and_character_spacing.rb +14 -15
- data/manual/text/leading.rb +7 -8
- data/manual/text/line_wrapping.rb +37 -18
- data/manual/text/paragraph_indentation.rb +13 -14
- data/manual/text/positioned_text.rb +15 -16
- data/manual/text/registering_families.rb +20 -21
- data/manual/text/rendering_and_color.rb +9 -10
- data/manual/text/right_to_left_text.rb +26 -19
- data/manual/text/rotation.rb +28 -23
- data/manual/text/single_usage.rb +8 -9
- data/manual/text/text.rb +57 -52
- data/manual/text/text_box_excess.rb +20 -17
- data/manual/text/text_box_extensions.rb +18 -15
- data/manual/text/text_box_overflow.rb +18 -19
- data/manual/text/utf8.rb +11 -12
- data/manual/text/win_ansi_charset.rb +21 -19
- data/prawn.gemspec +45 -33
- data/spec/extensions/encoding_helpers.rb +3 -3
- data/spec/prawn/document/bounding_box_spec.rb +546 -0
- data/spec/prawn/document/column_box_spec.rb +75 -0
- data/spec/prawn/document/security_spec.rb +176 -0
- data/spec/prawn/document_annotations_spec.rb +76 -0
- data/spec/prawn/document_destinations_spec.rb +15 -0
- data/spec/prawn/document_grid_spec.rb +99 -0
- data/spec/prawn/document_reference_spec.rb +27 -0
- data/spec/prawn/document_span_spec.rb +36 -0
- data/spec/prawn/document_spec.rb +802 -0
- data/spec/prawn/font_metric_cache_spec.rb +54 -0
- data/spec/prawn/font_spec.rb +542 -0
- data/spec/prawn/graphics/blend_mode_spec.rb +63 -0
- data/spec/prawn/graphics/transparency_spec.rb +81 -0
- data/spec/prawn/graphics_spec.rb +837 -0
- data/spec/prawn/graphics_stroke_styles_spec.rb +229 -0
- data/spec/prawn/image_handler_spec.rb +53 -0
- data/spec/prawn/images/jpg_spec.rb +20 -0
- data/spec/prawn/images/png_spec.rb +283 -0
- data/spec/prawn/images_spec.rb +224 -0
- data/spec/prawn/measurements_extensions_spec.rb +24 -0
- data/spec/prawn/outline_spec.rb +412 -0
- data/spec/prawn/repeater_spec.rb +165 -0
- data/spec/prawn/soft_mask_spec.rb +74 -0
- data/spec/prawn/stamp_spec.rb +172 -0
- data/spec/prawn/text/box_spec.rb +1112 -0
- data/spec/prawn/text/formatted/arranger_spec.rb +466 -0
- data/spec/prawn/text/formatted/box_spec.rb +846 -0
- data/spec/prawn/text/formatted/fragment_spec.rb +343 -0
- data/spec/prawn/text/formatted/line_wrap_spec.rb +494 -0
- data/spec/prawn/text/formatted/parser_spec.rb +697 -0
- data/spec/prawn/text_draw_text_spec.rb +149 -0
- data/spec/prawn/text_rendering_mode_spec.rb +48 -0
- data/spec/prawn/text_spacing_spec.rb +95 -0
- data/spec/prawn/text_spec.rb +603 -0
- data/spec/prawn/text_with_inline_formatting_spec.rb +35 -0
- data/spec/prawn/transformation_stack_spec.rb +66 -0
- data/spec/prawn/view_spec.rb +63 -0
- data/spec/prawn_manual_spec.rb +35 -0
- data/spec/spec_helper.rb +19 -23
- metadata +145 -185
- metadata.gz.sig +4 -0
- data/data/images/16bit.alpha +0 -0
- data/data/images/16bit.color +0 -0
- data/data/images/16bit.png +0 -0
- data/data/images/arrow.png +0 -0
- data/data/images/arrow2.png +0 -0
- data/data/images/dice.alpha +0 -0
- data/data/images/dice.color +0 -0
- data/data/images/dice.png +0 -0
- data/data/images/dice_interlaced.png +0 -0
- data/data/images/fractal.jpg +0 -0
- data/data/images/indexed_color.dat +0 -0
- data/data/images/indexed_color.png +0 -0
- data/data/images/letterhead.jpg +0 -0
- data/data/images/license.md +0 -8
- data/data/images/page_white_text.alpha +0 -0
- data/data/images/page_white_text.color +0 -0
- data/data/images/page_white_text.png +0 -0
- data/data/images/pal_bk.png +0 -0
- data/data/images/pigs.jpg +0 -0
- data/data/images/prawn.png +0 -0
- data/data/images/ruport.png +0 -0
- data/data/images/ruport_data.dat +0 -0
- data/data/images/ruport_transparent.png +0 -0
- data/data/images/ruport_type0.png +0 -0
- data/data/images/stef.jpg +0 -0
- data/data/images/tru256.bmp +0 -0
- data/data/images/web-links.dat +0 -1
- data/data/images/web-links.png +0 -0
- data/data/pdfs/complex_template.pdf +0 -0
- data/data/pdfs/contains_ttf_font.pdf +0 -0
- data/data/pdfs/encrypted.pdf +0 -0
- data/data/pdfs/form.pdf +1 -819
- data/data/pdfs/hexagon.pdf +0 -61
- data/data/pdfs/indirect_reference.pdf +0 -86
- data/data/pdfs/multipage_template.pdf +0 -127
- data/data/pdfs/nested_pages.pdf +0 -118
- data/data/pdfs/page_without_mediabox.pdf +0 -193
- data/data/pdfs/resources_as_indirect_object.pdf +0 -83
- data/data/pdfs/two_hexagons.pdf +0 -90
- data/data/pdfs/version_1_6.pdf +0 -61
- data/data/shift_jis_text.txt +0 -1
- data/spec/acceptance/png.rb +0 -24
- data/spec/annotations_spec.rb +0 -67
- data/spec/bounding_box_spec.rb +0 -501
- data/spec/column_box_spec.rb +0 -59
- data/spec/destinations_spec.rb +0 -13
- data/spec/document_spec.rb +0 -742
- data/spec/extensions/mocha.rb +0 -45
- data/spec/font_metric_cache_spec.rb +0 -52
- data/spec/font_spec.rb +0 -475
- data/spec/formatted_text_arranger_spec.rb +0 -423
- data/spec/formatted_text_box_spec.rb +0 -716
- data/spec/formatted_text_fragment_spec.rb +0 -299
- data/spec/graphics_spec.rb +0 -666
- data/spec/grid_spec.rb +0 -95
- data/spec/image_handler_spec.rb +0 -53
- data/spec/images_spec.rb +0 -167
- data/spec/inline_formatted_text_parser_spec.rb +0 -568
- data/spec/jpg_spec.rb +0 -23
- data/spec/line_wrap_spec.rb +0 -366
- data/spec/measurement_units_spec.rb +0 -22
- data/spec/outline_spec.rb +0 -409
- data/spec/png_spec.rb +0 -235
- data/spec/reference_spec.rb +0 -25
- data/spec/repeater_spec.rb +0 -154
- data/spec/security_spec.rb +0 -151
- data/spec/soft_mask_spec.rb +0 -78
- data/spec/span_spec.rb +0 -43
- data/spec/stamp_spec.rb +0 -179
- data/spec/stroke_styles_spec.rb +0 -208
- data/spec/text_at_spec.rb +0 -142
- data/spec/text_box_spec.rb +0 -1038
- data/spec/text_rendering_mode_spec.rb +0 -45
- data/spec/text_spacing_spec.rb +0 -93
- data/spec/text_spec.rb +0 -549
- data/spec/text_with_inline_formatting_spec.rb +0 -35
- data/spec/transparency_spec.rb +0 -91
- data/spec/view_spec.rb +0 -42
@@ -1,5 +1,5 @@
|
|
1
|
-
#
|
2
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
3
|
# The <code>line_width=</code> method sets the stroke width for subsequent
|
4
4
|
# stroke calls.
|
5
5
|
#
|
@@ -7,9 +7,9 @@
|
|
7
7
|
# assignment is a local temporary, rather than a setter method, if you are using
|
8
8
|
# the block call to <code>Prawn::Document.generate</code> without passing params
|
9
9
|
# you will need to call <code>line_width</code> on self.
|
10
|
-
|
11
|
-
|
12
|
-
|
10
|
+
|
11
|
+
# rubocop: disable Lint/UselessAssignment
|
12
|
+
require_relative '../example_helper'
|
13
13
|
|
14
14
|
filename = File.basename(__FILE__).gsub('.rb', '.pdf')
|
15
15
|
Prawn::ManualBuilder::Example.generate(filename) do
|
@@ -19,13 +19,13 @@ Prawn::ManualBuilder::Example.generate(filename) do
|
|
19
19
|
|
20
20
|
3.times do |i|
|
21
21
|
case i
|
22
|
-
when 0 then line_width = 10
|
22
|
+
when 0 then line_width = 10 # This call will have no effect
|
23
23
|
when 1 then self.line_width = 10
|
24
24
|
when 2 then self.line_width = 25
|
25
25
|
end
|
26
26
|
|
27
27
|
stroke do
|
28
|
-
horizontal_line 50, 150, :
|
28
|
+
horizontal_line 50, 150, at: y
|
29
29
|
rectangle [275, y + 25], 50, 50
|
30
30
|
circle [500, y], 25
|
31
31
|
end
|
@@ -33,3 +33,4 @@ Prawn::ManualBuilder::Example.generate(filename) do
|
|
33
33
|
y -= 100
|
34
34
|
end
|
35
35
|
end
|
36
|
+
# rubocop: enable Lint/UselessAssignment
|
@@ -1,5 +1,5 @@
|
|
1
|
-
#
|
2
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
3
|
# Prawn supports drawing both lines and curves starting either at the current
|
4
4
|
# position, or from a specified starting position.
|
5
5
|
#
|
@@ -14,9 +14,8 @@
|
|
14
14
|
#
|
15
15
|
# Both curve methods define a Bezier curve bounded by two aditional points
|
16
16
|
# provided as the <code>:bounds</code> param.
|
17
|
-
|
18
|
-
|
19
|
-
%w[.. example_helper]))
|
17
|
+
|
18
|
+
require_relative '../example_helper'
|
20
19
|
|
21
20
|
filename = File.basename(__FILE__).gsub('.rb', '.pdf')
|
22
21
|
Prawn::ManualBuilder::Example.generate(filename) do
|
@@ -29,13 +28,13 @@ Prawn::ManualBuilder::Example.generate(filename) do
|
|
29
28
|
line_to 100, 100
|
30
29
|
line_to 0, 100
|
31
30
|
|
32
|
-
curve_to [150, 250], :
|
33
|
-
curve_to [200, 0], :
|
31
|
+
curve_to [150, 250], bounds: [[20, 200], [120, 200]]
|
32
|
+
curve_to [200, 0], bounds: [[150, 200], [450, 10]]
|
34
33
|
end
|
35
34
|
|
36
35
|
# line and curve
|
37
36
|
stroke do
|
38
37
|
line [300, 200], [400, 50]
|
39
|
-
curve [500, 0], [400, 200], :
|
38
|
+
curve [500, 0], [400, 200], bounds: [[600, 300], [300, 390]]
|
40
39
|
end
|
41
40
|
end
|
data/manual/graphics/polygon.rb
CHANGED
@@ -1,14 +1,13 @@
|
|
1
|
-
#
|
2
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
3
|
# Drawing polygons in Prawn is easy, just pass a sequence of points to one of
|
4
4
|
# the polygon family of methods.
|
5
5
|
#
|
6
6
|
# Just like <code>rounded_rectangle</code> we also have
|
7
7
|
# <code>rounded_polygon</code>. The only difference is the radius param comes
|
8
8
|
# before the polygon points.
|
9
|
-
|
10
|
-
|
11
|
-
%w[.. example_helper]))
|
9
|
+
|
10
|
+
require_relative '../example_helper'
|
12
11
|
|
13
12
|
filename = File.basename(__FILE__).gsub('.rb', '.pdf')
|
14
13
|
Prawn::ManualBuilder::Example.generate(filename) do
|
@@ -18,12 +17,11 @@ Prawn::ManualBuilder::Example.generate(filename) do
|
|
18
17
|
stroke_polygon [50, 200], [50, 300], [150, 300]
|
19
18
|
|
20
19
|
# Hexagon
|
21
|
-
fill_polygon [50, 150], [150, 200], [250, 150],
|
22
|
-
[250, 50], [150, 0], [50, 50]
|
20
|
+
fill_polygon [50, 150], [150, 200], [250, 150], [250, 50], [150, 0], [50, 50]
|
23
21
|
|
24
22
|
# Pentagram
|
25
23
|
pentagon_points = [500, 100], [430, 5], [319, 41], [319, 159], [430, 195]
|
26
|
-
pentagram_points = [0, 2, 4, 1, 3].map{ |i| pentagon_points[i] }
|
24
|
+
pentagram_points = [0, 2, 4, 1, 3].map { |i| pentagon_points[i] }
|
27
25
|
|
28
26
|
stroke_rounded_polygon(20, *pentagram_points)
|
29
27
|
end
|
@@ -1,13 +1,12 @@
|
|
1
|
-
#
|
2
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
3
|
# To draw a rectangle, just provide the upper-left corner, width and height to
|
4
4
|
# the <code>rectangle</code> method.
|
5
5
|
#
|
6
6
|
# There's also <code>rounded_rectangle</code>. Just provide an additional radius
|
7
7
|
# value for the rounded corners.
|
8
|
-
|
9
|
-
|
10
|
-
%w[.. example_helper]))
|
8
|
+
|
9
|
+
require_relative '../example_helper'
|
11
10
|
|
12
11
|
filename = File.basename(__FILE__).gsub('.rb', '.pdf')
|
13
12
|
Prawn::ManualBuilder::Example.generate(filename) do
|
data/manual/graphics/rotate.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
#
|
2
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
3
|
# This transformation is used to rotate the user space. Give it an angle
|
4
4
|
# and an <code>:origin</code> point about which to rotate and a block.
|
5
5
|
# Everything inside the block will be drawn with the rotated coordinates.
|
@@ -7,9 +7,8 @@
|
|
7
7
|
# The angle is in degrees.
|
8
8
|
#
|
9
9
|
# If you omit the <code>:origin</code> option the page origin will be used.
|
10
|
-
|
11
|
-
|
12
|
-
%w[.. example_helper]))
|
10
|
+
|
11
|
+
require_relative '../example_helper'
|
13
12
|
|
14
13
|
filename = File.basename(__FILE__).gsub('.rb', '.pdf')
|
15
14
|
Prawn::ManualBuilder::Example.generate(filename) do
|
@@ -18,9 +17,9 @@ Prawn::ManualBuilder::Example.generate(filename) do
|
|
18
17
|
fill_circle [250, 200], 2
|
19
18
|
|
20
19
|
12.times do |i|
|
21
|
-
rotate(i * 30, :
|
20
|
+
rotate(i * 30, origin: [250, 200]) do
|
22
21
|
stroke_rectangle [350, 225], 100, 50
|
23
|
-
draw_text "Rotated #{i * 30}°", :
|
22
|
+
draw_text "Rotated #{i * 30}°", size: 10, at: [360, 205]
|
24
23
|
end
|
25
24
|
end
|
26
25
|
end
|
data/manual/graphics/scale.rb
CHANGED
@@ -1,13 +1,12 @@
|
|
1
|
-
#
|
2
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
3
|
# This transformation is used to scale the user space. Give it an scale factor
|
4
4
|
# and an <code>:origin</code> point and everything inside the block will be
|
5
5
|
# scaled using the origin point as reference.
|
6
6
|
#
|
7
7
|
# If you omit the <code>:origin</code> option the page origin will be used.
|
8
|
-
|
9
|
-
|
10
|
-
%w[.. example_helper]))
|
8
|
+
|
9
|
+
require_relative '../example_helper'
|
11
10
|
|
12
11
|
filename = File.basename(__FILE__).gsub('.rb', '.pdf')
|
13
12
|
Prawn::ManualBuilder::Example.generate(filename) do
|
@@ -20,24 +19,24 @@ Prawn::ManualBuilder::Example.generate(filename) do
|
|
20
19
|
y = 200
|
21
20
|
|
22
21
|
stroke_rectangle [x, y], width, height
|
23
|
-
text_box
|
22
|
+
text_box 'reference rectangle', at: [x + 10, y - 10], width: width - 20
|
24
23
|
|
25
|
-
scale(2, :
|
24
|
+
scale(2, origin: [x, y]) do
|
26
25
|
stroke_rectangle [x, y], width, height
|
27
|
-
text_box
|
28
|
-
|
29
|
-
|
26
|
+
text_box 'rectangle scaled from upper-left corner',
|
27
|
+
at: [x, y - height - 5],
|
28
|
+
width: width
|
30
29
|
end
|
31
30
|
|
32
31
|
x = 350
|
33
32
|
|
34
33
|
stroke_rectangle [x, y], width, height
|
35
|
-
text_box
|
34
|
+
text_box 'reference rectangle', at: [x + 10, y - 10], width: width - 20
|
36
35
|
|
37
|
-
scale(2, :
|
36
|
+
scale(2, origin: [x + width / 2, y - height / 2]) do
|
38
37
|
stroke_rectangle [x, y], width, height
|
39
|
-
text_box
|
40
|
-
|
41
|
-
|
38
|
+
text_box 'rectangle scaled from center',
|
39
|
+
at: [x, y - height - 5],
|
40
|
+
width: width
|
42
41
|
end
|
43
42
|
end
|
@@ -1,6 +1,6 @@
|
|
1
|
-
#
|
2
|
-
|
3
|
-
# Soft masks are
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Soft masks are used for more complex alpha channel manipulations. You can use
|
4
4
|
# arbitrary drawing functions for creation of soft masks. The resulting alpha
|
5
5
|
# channel is made of greyscale version of the drawing (luminosity channel to be
|
6
6
|
# precise). So while you can use any combination of colors for soft masks it's
|
@@ -11,8 +11,7 @@
|
|
11
11
|
# only to a part of page you need to enclose drawing instructions in
|
12
12
|
# <code>save_graphics_state</code> block.
|
13
13
|
|
14
|
-
|
15
|
-
%w[.. example_helper]))
|
14
|
+
require_relative '../example_helper'
|
16
15
|
|
17
16
|
filename = File.basename(__FILE__).gsub('.rb', '.pdf')
|
18
17
|
Prawn::ManualBuilder::Example.generate(filename) do
|
@@ -1,5 +1,5 @@
|
|
1
|
-
#
|
2
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
3
|
# The cap style defines how the edge of a line or curve will be drawn. There are
|
4
4
|
# three types: <code>:butt</code> (the default), <code>:round</code> and
|
5
5
|
# <code>:projecting_square</code>
|
@@ -11,9 +11,8 @@
|
|
11
11
|
#
|
12
12
|
# Just like <code>line_width=</code> the <code>cap_style=</code> method needs an
|
13
13
|
# explicit receiver to work.
|
14
|
-
|
15
|
-
|
16
|
-
%w[.. example_helper]))
|
14
|
+
|
15
|
+
require_relative '../example_helper'
|
17
16
|
|
18
17
|
filename = File.basename(__FILE__).gsub('.rb', '.pdf')
|
19
18
|
Prawn::ManualBuilder::Example.generate(filename) do
|
@@ -21,11 +20,11 @@ Prawn::ManualBuilder::Example.generate(filename) do
|
|
21
20
|
|
22
21
|
self.line_width = 25
|
23
22
|
|
24
|
-
[
|
23
|
+
%i[butt round projecting_square].each_with_index do |cap, i|
|
25
24
|
self.cap_style = cap
|
26
25
|
|
27
26
|
y = 250 - i * 100
|
28
|
-
stroke_horizontal_line 100, 300, :
|
27
|
+
stroke_horizontal_line 100, 300, at: y
|
29
28
|
stroke_circle [400, y], 15
|
30
29
|
end
|
31
30
|
end
|
@@ -1,5 +1,5 @@
|
|
1
|
-
#
|
2
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
3
|
# This sets the dashed pattern for lines and curves. The (dash) length defines
|
4
4
|
# how long each dash will be.
|
5
5
|
#
|
@@ -12,18 +12,17 @@
|
|
12
12
|
# Complex dash patterns can be specified by using an array with alternating
|
13
13
|
# dash/gap lengths for the first parameter (note that the <code>:space</code>
|
14
14
|
# option is ignored in this case).
|
15
|
-
|
16
|
-
|
17
|
-
%w[.. example_helper]))
|
15
|
+
|
16
|
+
require_relative '../example_helper'
|
18
17
|
|
19
18
|
filename = File.basename(__FILE__).gsub('.rb', '.pdf')
|
20
19
|
Prawn::ManualBuilder::Example.generate(filename) do
|
21
20
|
stroke_axis
|
22
21
|
|
23
|
-
dash([1, 2, 3, 2, 1, 5], :
|
24
|
-
stroke_horizontal_line 50, 500, :
|
22
|
+
dash([1, 2, 3, 2, 1, 5], phase: 6)
|
23
|
+
stroke_horizontal_line 50, 500, at: 230
|
25
24
|
dash([1, 2, 3, 4, 5, 6, 7, 8])
|
26
|
-
stroke_horizontal_line 50, 500, :
|
25
|
+
stroke_horizontal_line 50, 500, at: 220
|
27
26
|
|
28
27
|
base_y = 210
|
29
28
|
|
@@ -34,15 +33,15 @@ Prawn::ManualBuilder::Example.generate(filename) do
|
|
34
33
|
|
35
34
|
case i % 4
|
36
35
|
when 0 then base_y -= 5
|
37
|
-
when 1 then phase = length
|
38
|
-
when 2 then space = length * 0.5
|
36
|
+
when 1 then phase = length # start with space between dashes
|
37
|
+
when 2 then space = length * 0.5 # space between dashes half as long as dash
|
39
38
|
when 3
|
40
39
|
space = length * 0.5 # space between dashes half as long as dash
|
41
40
|
phase = length # start with space between dashes
|
42
41
|
end
|
43
42
|
base_y -= 5
|
44
43
|
|
45
|
-
dash(length, :
|
46
|
-
stroke_horizontal_line 50, 500, :
|
44
|
+
dash(length, space: space, phase: phase)
|
45
|
+
stroke_horizontal_line 50, 500, at: base_y - (2 * i)
|
47
46
|
end
|
48
47
|
end
|
@@ -1,14 +1,13 @@
|
|
1
|
-
#
|
2
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
3
|
# The join style defines how the intersection between two lines is drawn. There
|
4
4
|
# are three types: <code>:miter</code> (the default), <code>:round</code> and
|
5
5
|
# <code>:bevel</code>
|
6
6
|
#
|
7
7
|
# Just like <code>cap_style</code>, the difference between styles is better
|
8
8
|
# seen with thicker lines.
|
9
|
-
|
10
|
-
|
11
|
-
%w[.. example_helper]))
|
9
|
+
|
10
|
+
require_relative '../example_helper'
|
12
11
|
|
13
12
|
filename = File.basename(__FILE__).gsub('.rb', '.pdf')
|
14
13
|
Prawn::ManualBuilder::Example.generate(filename) do
|
@@ -16,7 +15,7 @@ Prawn::ManualBuilder::Example.generate(filename) do
|
|
16
15
|
|
17
16
|
self.line_width = 25
|
18
17
|
|
19
|
-
[
|
18
|
+
%i[miter round bevel].each_with_index do |style, i|
|
20
19
|
self.join_style = style
|
21
20
|
|
22
21
|
y = 200 - i * 100
|
@@ -1,10 +1,9 @@
|
|
1
|
-
#
|
2
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
3
|
# This transformation is used to translate the user space. Just provide the
|
4
4
|
# x and y coordinates for the new origin.
|
5
|
-
|
6
|
-
|
7
|
-
%w[.. example_helper]))
|
5
|
+
|
6
|
+
require_relative '../example_helper'
|
8
7
|
|
9
8
|
filename = File.basename(__FILE__).gsub('.rb', '.pdf')
|
10
9
|
Prawn::ManualBuilder::Example.generate(filename) do
|
@@ -17,13 +16,13 @@ Prawn::ManualBuilder::Example.generate(filename) do
|
|
17
16
|
# Draw a point on the new origin
|
18
17
|
fill_circle [0, 0], 2
|
19
18
|
draw_text "New origin after translation to [#{x}, #{y}]",
|
20
|
-
|
19
|
+
at: [5, -2], size: 8
|
21
20
|
|
22
21
|
stroke_rectangle [100, 75], 100, 50
|
23
|
-
text_box
|
24
|
-
|
25
|
-
|
26
|
-
|
22
|
+
text_box 'Top left corner at [100,75]',
|
23
|
+
at: [110, 65],
|
24
|
+
width: 80,
|
25
|
+
size: 8
|
27
26
|
end
|
28
27
|
end
|
29
28
|
end
|
@@ -1,5 +1,5 @@
|
|
1
|
-
#
|
2
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
3
|
# Although the name of the method is <code>transparency</code>, what we are
|
4
4
|
# actually setting is the opacity for fill and stroke. So <code>0</code> means
|
5
5
|
# completely transparent and <code>1.0</code> means completely opaque
|
@@ -7,20 +7,19 @@
|
|
7
7
|
# You may call it providing one or two values. The first value sets fill opacity
|
8
8
|
# and the second value sets stroke opacity. If the second value is omitted fill
|
9
9
|
# and stroke will have the same opacity.
|
10
|
-
|
11
|
-
|
12
|
-
%w[.. example_helper]))
|
10
|
+
|
11
|
+
require_relative '../example_helper'
|
13
12
|
|
14
13
|
filename = File.basename(__FILE__).gsub('.rb', '.pdf')
|
15
14
|
Prawn::ManualBuilder::Example.generate(filename) do
|
16
15
|
stroke_axis
|
17
16
|
|
18
17
|
self.line_width = 5
|
19
|
-
fill_color
|
18
|
+
fill_color 'ff0000'
|
20
19
|
fill_rectangle [0, 100], 500, 100
|
21
20
|
|
22
|
-
fill_color
|
23
|
-
stroke_color
|
21
|
+
fill_color '000000'
|
22
|
+
stroke_color 'ffffff'
|
24
23
|
|
25
24
|
base_x = 100
|
26
25
|
[[0.5, 1], 0.5, [1, 0.5]].each do |args|
|
@@ -1,12 +1,12 @@
|
|
1
|
-
#
|
2
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
3
|
# Prawn manual how to read this manual page.
|
4
4
|
|
5
|
-
require_relative
|
5
|
+
require_relative 'example_helper'
|
6
6
|
|
7
7
|
filename = File.basename(__FILE__).gsub('.rb', '.pdf')
|
8
8
|
Prawn::ManualBuilder::Example.generate(filename) do
|
9
|
-
header(
|
9
|
+
header('How to read this manual')
|
10
10
|
|
11
11
|
prose <<-END_TEXT
|
12
12
|
This manual is a collection of examples categorized by theme and organized from the least to the most complex. While it covers most of the common use cases it is not a comprehensive guide.
|
@@ -21,12 +21,12 @@ Prawn::ManualBuilder::Example.generate(filename) do
|
|
21
21
|
END_TEXT
|
22
22
|
|
23
23
|
move_down(Prawn::ManualBuilder::Example::BOX_MARGIN)
|
24
|
-
header(
|
24
|
+
header('Reading the examples')
|
25
25
|
|
26
26
|
prose <<-END_TEXT
|
27
27
|
The title of each example is the relative path from the Prawn source manual/ folder.
|
28
28
|
|
29
|
-
The first body of text is the introductory text for the example.
|
29
|
+
The first body of text is the introductory text for the example. Generally it is a short description of the features illustrated by the example.
|
30
30
|
|
31
31
|
Next comes the example source code block in fixed width font.
|
32
32
|
|