prawn 2.1.0 → 2.2.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 +4 -4
- checksums.yaml.gz.sig +2 -0
- data.tar.gz.sig +0 -0
- data/Gemfile +1 -9
- data/Rakefile +12 -22
- data/lib/prawn.rb +29 -48
- data/lib/prawn/document.rb +148 -123
- data/lib/prawn/document/bounding_box.rb +33 -26
- data/lib/prawn/document/column_box.rb +5 -7
- data/lib/prawn/document/internals.rb +6 -6
- data/lib/prawn/document/span.rb +20 -17
- data/lib/prawn/encoding.rb +65 -67
- data/lib/prawn/errors.rb +10 -7
- data/lib/prawn/font.rb +78 -62
- data/lib/prawn/font/afm.rb +93 -66
- data/lib/prawn/font/dfont.rb +2 -10
- data/lib/prawn/font/ttc.rb +34 -0
- data/lib/prawn/font/ttf.rb +73 -65
- data/lib/prawn/font_metric_cache.rb +9 -8
- data/lib/prawn/graphics.rb +110 -70
- data/lib/prawn/graphics/blend_mode.rb +7 -8
- data/lib/prawn/graphics/cap_style.rb +2 -4
- data/lib/prawn/graphics/color.rb +23 -26
- data/lib/prawn/graphics/dash.rb +22 -12
- data/lib/prawn/graphics/join_style.rb +8 -4
- data/lib/prawn/graphics/patterns.rb +185 -96
- data/lib/prawn/graphics/transformation.rb +11 -9
- data/lib/prawn/graphics/transparency.rb +15 -13
- data/lib/prawn/grid.rb +20 -20
- data/lib/prawn/image_handler.rb +4 -6
- data/lib/prawn/images.rb +22 -15
- data/lib/prawn/images/image.rb +0 -1
- data/lib/prawn/images/jpg.rb +26 -22
- data/lib/prawn/images/png.rb +60 -57
- data/lib/prawn/measurement_extensions.rb +8 -9
- data/lib/prawn/measurements.rb +14 -15
- data/lib/prawn/outline.rb +96 -78
- data/lib/prawn/repeater.rb +12 -10
- data/lib/prawn/security.rb +66 -48
- data/lib/prawn/security/arcfour.rb +1 -3
- data/lib/prawn/soft_mask.rb +23 -25
- data/lib/prawn/stamp.rb +16 -12
- data/lib/prawn/text.rb +59 -45
- data/lib/prawn/text/box.rb +9 -8
- data/lib/prawn/text/formatted.rb +4 -6
- data/lib/prawn/text/formatted/arranger.rb +51 -30
- data/lib/prawn/text/formatted/box.rb +112 -88
- data/lib/prawn/text/formatted/fragment.rb +10 -15
- data/lib/prawn/text/formatted/line_wrap.rb +118 -61
- data/lib/prawn/text/formatted/parser.rb +134 -110
- data/lib/prawn/text/formatted/wrap.rb +42 -32
- data/lib/prawn/transformation_stack.rb +3 -4
- data/lib/prawn/utilities.rb +6 -21
- data/lib/prawn/version.rb +1 -3
- data/lib/prawn/view.rb +4 -2
- data/manual/basic_concepts/adding_pages.rb +4 -7
- data/manual/basic_concepts/basic_concepts.rb +29 -22
- data/manual/basic_concepts/creation.rb +8 -11
- data/manual/basic_concepts/cursor.rb +2 -5
- data/manual/basic_concepts/measurement.rb +3 -6
- data/manual/basic_concepts/origin.rb +3 -6
- data/manual/basic_concepts/other_cursor_helpers.rb +9 -12
- data/manual/basic_concepts/view.rb +20 -16
- data/manual/bounding_box/bounding_box.rb +27 -24
- data/manual/bounding_box/bounds.rb +9 -12
- data/manual/bounding_box/canvas.rb +2 -5
- data/manual/bounding_box/creation.rb +4 -7
- data/manual/bounding_box/indentation.rb +12 -15
- data/manual/bounding_box/nesting.rb +22 -17
- data/manual/bounding_box/russian_boxes.rb +8 -9
- data/manual/bounding_box/stretchy.rb +10 -13
- data/manual/contents.rb +26 -22
- data/manual/cover.rb +22 -20
- data/manual/document_and_page_options/background.rb +9 -13
- data/manual/document_and_page_options/document_and_page_options.rb +23 -20
- data/manual/document_and_page_options/metadata.rb +16 -16
- data/manual/document_and_page_options/page_margins.rb +16 -20
- data/manual/document_and_page_options/page_size.rb +11 -12
- data/manual/document_and_page_options/print_scaling.rb +15 -15
- data/manual/example_helper.rb +2 -4
- data/manual/graphics/blend_mode.rb +10 -9
- data/manual/graphics/circle_and_ellipse.rb +2 -5
- data/manual/graphics/color.rb +5 -9
- data/manual/graphics/common_lines.rb +5 -8
- data/manual/graphics/fill_and_stroke.rb +2 -5
- data/manual/graphics/fill_rules.rb +7 -10
- data/manual/graphics/gradients.rb +25 -21
- data/manual/graphics/graphics.rb +49 -43
- data/manual/graphics/helper.rb +10 -9
- data/manual/graphics/line_width.rb +5 -7
- data/manual/graphics/lines_and_curves.rb +5 -8
- data/manual/graphics/polygon.rb +4 -8
- data/manual/graphics/rectangle.rb +2 -5
- data/manual/graphics/rotate.rb +4 -7
- data/manual/graphics/scale.rb +12 -15
- data/manual/graphics/soft_masks.rb +1 -4
- data/manual/graphics/stroke_cap.rb +3 -6
- data/manual/graphics/stroke_dash.rb +9 -12
- data/manual/graphics/stroke_join.rb +2 -5
- data/manual/graphics/translate.rb +7 -10
- data/manual/graphics/transparency.rb +5 -8
- data/manual/how_to_read_this_manual.rb +4 -6
- data/manual/images/absolute_position.rb +4 -7
- data/manual/images/fit.rb +5 -8
- data/manual/images/horizontal.rb +6 -9
- data/manual/images/images.rb +25 -23
- data/manual/images/plain_image.rb +3 -6
- data/manual/images/scale.rb +7 -10
- data/manual/images/vertical.rb +10 -13
- data/manual/images/width_and_height.rb +8 -11
- data/manual/layout/boxes.rb +3 -6
- data/manual/layout/content.rb +5 -8
- data/manual/layout/layout.rb +16 -16
- data/manual/layout/simple_grid.rb +4 -7
- data/manual/outline/add_subsection_to.rb +18 -21
- data/manual/outline/insert_section_after.rb +13 -16
- data/manual/outline/outline.rb +19 -17
- data/manual/outline/sections_and_pages.rb +15 -18
- data/manual/repeatable_content/alternate_page_numbering.rb +19 -17
- data/manual/repeatable_content/page_numbering.rb +15 -16
- data/manual/repeatable_content/repeatable_content.rb +23 -19
- data/manual/repeatable_content/repeater.rb +12 -15
- data/manual/repeatable_content/stamp.rb +12 -15
- data/manual/security/encryption.rb +7 -10
- data/manual/security/permissions.rb +17 -14
- data/manual/security/security.rb +17 -16
- data/manual/table.rb +2 -4
- data/manual/text/alignment.rb +14 -17
- data/manual/text/color.rb +10 -11
- data/manual/text/column_box.rb +5 -8
- data/manual/text/fallback_fonts.rb +23 -21
- data/manual/text/font.rb +9 -12
- data/manual/text/font_size.rb +11 -14
- data/manual/text/font_style.rb +4 -7
- data/manual/text/formatted_callbacks.rb +23 -21
- data/manual/text/formatted_text.rb +31 -25
- data/manual/text/free_flowing_text.rb +18 -21
- data/manual/text/inline.rb +16 -19
- data/manual/text/kerning_and_character_spacing.rb +12 -15
- data/manual/text/leading.rb +5 -8
- data/manual/text/line_wrapping.rb +33 -17
- data/manual/text/paragraph_indentation.rb +11 -14
- data/manual/text/positioned_text.rb +13 -16
- data/manual/text/registering_families.rb +16 -19
- data/manual/text/rendering_and_color.rb +7 -10
- data/manual/text/right_to_left_text.rb +24 -19
- data/manual/text/rotation.rb +26 -23
- data/manual/text/single_usage.rb +6 -9
- data/manual/text/text.rb +56 -52
- data/manual/text/text_box_excess.rb +18 -17
- data/manual/text/text_box_extensions.rb +16 -15
- data/manual/text/text_box_overflow.rb +15 -18
- data/manual/text/utf8.rb +9 -12
- data/manual/text/win_ansi_charset.rb +18 -19
- data/prawn.gemspec +37 -27
- data/spec/extensions/encoding_helpers.rb +0 -2
- data/spec/manual_spec.rb +33 -0
- data/spec/prawn/document/bounding_box_spec.rb +546 -0
- data/spec/prawn/document/column_box_spec.rb +73 -0
- data/spec/prawn/document/security_spec.rb +173 -0
- data/spec/prawn/document_annotations_spec.rb +74 -0
- data/spec/prawn/document_destinations_spec.rb +13 -0
- data/spec/prawn/document_grid_spec.rb +96 -0
- data/spec/prawn/document_reference_spec.rb +25 -0
- data/spec/prawn/document_span_spec.rb +34 -0
- data/spec/prawn/document_spec.rb +751 -0
- data/spec/prawn/font_metric_cache_spec.rb +52 -0
- data/spec/prawn/font_spec.rb +513 -0
- data/spec/prawn/graphics/blend_mode_spec.rb +61 -0
- data/spec/prawn/graphics/transparency_spec.rb +79 -0
- data/spec/prawn/graphics_spec.rb +817 -0
- data/spec/prawn/graphics_stroke_styles_spec.rb +227 -0
- data/spec/{image_handler_spec.rb → prawn/image_handler_spec.rb} +13 -15
- data/spec/prawn/images/jpg_spec.rb +18 -0
- data/spec/prawn/images/png_spec.rb +281 -0
- data/spec/prawn/images_spec.rb +170 -0
- data/spec/prawn/measurements_extensions_spec.rb +22 -0
- data/spec/prawn/outline_spec.rb +408 -0
- data/spec/prawn/repeater_spec.rb +163 -0
- data/spec/prawn/soft_mask_spec.rb +72 -0
- data/spec/prawn/stamp_spec.rb +168 -0
- data/spec/prawn/text/box_spec.rb +1113 -0
- data/spec/prawn/text/formatted/arranger_spec.rb +464 -0
- data/spec/prawn/text/formatted/box_spec.rb +825 -0
- data/spec/prawn/text/formatted/fragment_spec.rb +341 -0
- data/spec/prawn/text/formatted/line_wrap_spec.rb +491 -0
- data/spec/prawn/text/formatted/parser_spec.rb +667 -0
- data/spec/prawn/text_draw_text_spec.rb +147 -0
- data/spec/prawn/text_rendering_mode_spec.rb +42 -0
- data/spec/prawn/text_spacing_spec.rb +93 -0
- data/spec/prawn/text_spec.rb +601 -0
- data/spec/prawn/text_with_inline_formatting_spec.rb +33 -0
- data/spec/{transformation_stack_spec.rb → prawn/transformation_stack_spec.rb} +21 -20
- data/spec/prawn/view_spec.rb +45 -0
- data/spec/spec_helper.rb +16 -16
- metadata +96 -151
- metadata.gz.sig +1 -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/blend_modes_bottom_layer.jpg +0 -0
- data/data/images/blend_modes_top_layer.jpg +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/indexed_transparency.png +0 -0
- data/data/images/indexed_transparency_alpha.dat +0 -0
- data/data/images/indexed_transparency_color.dat +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/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_spec.rb +0 -35
- data/spec/annotations_spec.rb +0 -67
- data/spec/blend_mode_spec.rb +0 -71
- 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 -738
- data/spec/font_metric_cache_spec.rb +0 -52
- data/spec/font_spec.rb +0 -475
- data/spec/formatted_text_arranger_spec.rb +0 -452
- data/spec/formatted_text_box_spec.rb +0 -716
- data/spec/formatted_text_fragment_spec.rb +0 -299
- data/spec/graphics_spec.rb +0 -705
- data/spec/grid_spec.rb +0 -95
- 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 -257
- 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 -1042
- data/spec/text_rendering_mode_spec.rb +0 -45
- data/spec/text_spacing_spec.rb +0 -93
- data/spec/text_spec.rb +0 -543
- 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,3 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
#
|
3
1
|
# There are two drawing primitives in Prawn: <code>fill</code> and
|
4
2
|
# <code>stroke</code>.
|
5
3
|
#
|
@@ -17,9 +15,8 @@
|
|
17
15
|
# Most of the methods which define drawing paths have methods of the same name
|
18
16
|
# starting with stroke_ and fill_ which create the drawing path and then stroke
|
19
17
|
# or fill it.
|
20
|
-
|
21
|
-
|
22
|
-
%w[.. example_helper]))
|
18
|
+
|
19
|
+
require_relative '../example_helper'
|
23
20
|
|
24
21
|
filename = File.basename(__FILE__).gsub('.rb', '.pdf')
|
25
22
|
Prawn::ManualBuilder::Example.generate(filename) do
|
@@ -1,5 +1,3 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
#
|
3
1
|
# Prawn's fill operators (<code>fill</code> and <code>fill_and_stroke</code>
|
4
2
|
# both accept a <code>:fill_rule</code> option. These rules determine which
|
5
3
|
# parts of the page are counted as "inside" vs. "outside" the path. There are
|
@@ -15,9 +13,8 @@
|
|
15
13
|
#
|
16
14
|
# The differences between the fill rules only come into play with complex
|
17
15
|
# paths; they are identical for simple shapes.
|
18
|
-
|
19
|
-
|
20
|
-
%w[.. example_helper]))
|
16
|
+
|
17
|
+
require_relative '../example_helper'
|
21
18
|
|
22
19
|
filename = File.basename(__FILE__).gsub('.rb', '.pdf')
|
23
20
|
Prawn::ManualBuilder::Example.generate(filename) do
|
@@ -26,13 +23,13 @@ Prawn::ManualBuilder::Example.generate(filename) do
|
|
26
23
|
stroke_color 'ff0000'
|
27
24
|
line_width 2
|
28
25
|
|
29
|
-
text_box
|
30
|
-
:
|
31
|
-
:
|
26
|
+
text_box 'Nonzero Winding Number', at: [50, 215],
|
27
|
+
width: 170,
|
28
|
+
align: :center
|
32
29
|
polygon(*pentagram.map { |x, y| [x + 50, y] })
|
33
30
|
fill_and_stroke
|
34
31
|
|
35
|
-
text_box
|
32
|
+
text_box 'Even-Odd', at: [330, 215], width: 170, align: :center
|
36
33
|
polygon(*pentagram.map { |x, y| [x + 330, y] })
|
37
|
-
fill_and_stroke(:
|
34
|
+
fill_and_stroke(fill_rule: :even_odd)
|
38
35
|
end
|
@@ -1,37 +1,41 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
#
|
3
1
|
# Note that because of the way PDF renders radial gradients in order to get
|
4
2
|
# solid fill your start circle must be fully inside your end circle.
|
5
3
|
# Otherwise you will get triangle fill like illustrated in the example below.
|
6
4
|
|
7
|
-
|
8
|
-
%w[.. example_helper]))
|
5
|
+
require_relative '../example_helper'
|
9
6
|
|
10
7
|
filename = File.basename(__FILE__).gsub('.rb', '.pdf')
|
11
8
|
Prawn::ManualBuilder::Example.generate(filename) do
|
12
|
-
stroke_axis
|
13
9
|
self.line_width = 10
|
14
10
|
|
15
|
-
|
16
|
-
|
11
|
+
# Linear Gradients
|
12
|
+
fill_gradient [0, 250], [100, 150], 'ff0000', '0000ff'
|
13
|
+
fill_rectangle [0, 250], 100, 100
|
17
14
|
|
18
|
-
stroke_gradient [
|
19
|
-
stroke_rectangle [
|
15
|
+
stroke_gradient [150, 150], [250, 250], '00ffff', 'ffff00'
|
16
|
+
stroke_rectangle [150, 250], 100, 100
|
20
17
|
|
21
|
-
fill_gradient [
|
22
|
-
stroke_gradient [
|
23
|
-
fill_and_stroke_rectangle [
|
18
|
+
fill_gradient [300, 250], [400, 150], 'ff0000', '0000ff'
|
19
|
+
stroke_gradient [300, 150], [400, 250], '00ffff', 'ffff00'
|
20
|
+
fill_and_stroke_rectangle [300, 250], 100, 100
|
24
21
|
|
25
|
-
|
26
|
-
|
22
|
+
rotate 45, origin: [500, 200] do
|
23
|
+
stops = { 0 => 'ff0000', 0.6 => '999900', 0.8 => '00cc00', 1 => '4444ff' }
|
24
|
+
fill_gradient from: [460, 240], to: [540, 160], stops: stops
|
25
|
+
fill_rectangle [460, 240], 80, 80
|
26
|
+
end
|
27
27
|
|
28
|
-
|
29
|
-
|
28
|
+
# Radial gradients
|
29
|
+
fill_gradient [50, 50], 0, [50, 50], 70.71, 'ff0000', '0000ff'
|
30
|
+
fill_rectangle [0, 100], 100, 100
|
30
31
|
|
31
|
-
stroke_gradient [
|
32
|
-
|
33
|
-
fill_and_stroke_rectangle [350, 150], 100, 100
|
32
|
+
stroke_gradient [200, 50], 45, [200, 50], 70.71, '00ffff', 'ffff00'
|
33
|
+
stroke_rectangle [150, 100], 100, 100
|
34
34
|
|
35
|
-
|
36
|
-
|
35
|
+
stroke_gradient [350, 50], 45, [350, 50], 70.71, '00ffff', 'ffff00'
|
36
|
+
fill_gradient [350, 50], 0, [350, 50], 70.71, 'ff0000', '0000ff'
|
37
|
+
fill_and_stroke_rectangle [300, 100], 100, 100
|
38
|
+
|
39
|
+
fill_gradient [500, 100], 50, [500, 0], 0, 'ff0000', '0000ff'
|
40
|
+
fill_rectangle [450, 100], 100, 100
|
37
41
|
end
|
data/manual/graphics/graphics.rb
CHANGED
@@ -1,56 +1,62 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
#
|
3
1
|
# Examples for the Graphics package.
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
Prawn::ManualBuilder::Example.generate(
|
9
|
-
package
|
10
|
-
p.section
|
11
|
-
s.example
|
12
|
-
s.example
|
2
|
+
|
3
|
+
require_relative '../example_helper'
|
4
|
+
|
5
|
+
filename = File.basename(__FILE__).gsub('.rb', '.pdf')
|
6
|
+
Prawn::ManualBuilder::Example.generate(filename, page_size: 'FOLIO') do
|
7
|
+
package 'graphics' do |p|
|
8
|
+
p.section 'Basics' do |s|
|
9
|
+
s.example 'helper'
|
10
|
+
s.example 'fill_and_stroke'
|
13
11
|
end
|
14
12
|
|
15
|
-
p.section
|
16
|
-
s.example
|
17
|
-
s.example
|
18
|
-
s.example
|
19
|
-
s.example
|
20
|
-
s.example
|
13
|
+
p.section 'Shapes' do |s|
|
14
|
+
s.example 'lines_and_curves'
|
15
|
+
s.example 'common_lines'
|
16
|
+
s.example 'rectangle'
|
17
|
+
s.example 'polygon'
|
18
|
+
s.example 'circle_and_ellipse'
|
21
19
|
end
|
22
20
|
|
23
|
-
p.section
|
24
|
-
s.example
|
25
|
-
s.example
|
26
|
-
s.example
|
27
|
-
s.example
|
28
|
-
s.example
|
29
|
-
s.example
|
30
|
-
s.example
|
31
|
-
s.example
|
32
|
-
s.example
|
33
|
-
s.example
|
21
|
+
p.section 'Fill and Stroke settings' do |s|
|
22
|
+
s.example 'line_width'
|
23
|
+
s.example 'stroke_cap'
|
24
|
+
s.example 'stroke_join'
|
25
|
+
s.example 'stroke_dash'
|
26
|
+
s.example 'color'
|
27
|
+
s.example 'gradients'
|
28
|
+
s.example 'transparency'
|
29
|
+
s.example 'soft_masks'
|
30
|
+
s.example 'blend_mode'
|
31
|
+
s.example 'fill_rules'
|
34
32
|
end
|
35
33
|
|
36
|
-
p.section
|
37
|
-
s.example
|
38
|
-
s.example
|
39
|
-
s.example
|
34
|
+
p.section 'Transformations' do |s|
|
35
|
+
s.example 'rotate'
|
36
|
+
s.example 'translate'
|
37
|
+
s.example 'scale'
|
40
38
|
end
|
41
39
|
|
42
40
|
p.intro do
|
43
|
-
prose
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
41
|
+
prose <<-END
|
42
|
+
Here we show all the drawing methods provided by Prawn. Use them to draw
|
43
|
+
the most beautiful imaginable things.
|
44
|
+
|
45
|
+
Most of the content that you'll add to your pdf document will use the
|
46
|
+
graphics package. Even text is rendered on a page just like a rectangle
|
47
|
+
so even if you never use any of the shapes described here you should at
|
48
|
+
least read the basic examples.
|
49
|
+
|
50
|
+
The examples show:
|
51
|
+
END
|
52
|
+
|
53
|
+
list(
|
54
|
+
'All the possible ways that you can fill or stroke shapes on a page',
|
55
|
+
'How to draw all the shapes that Prawn has to offer from a measly '\
|
56
|
+
'line to a mighty polygon or ellipse',
|
57
|
+
'The configuration options for stroking lines and filling shapes',
|
58
|
+
'How to apply transformations to your drawing space'
|
59
|
+
)
|
54
60
|
end
|
55
61
|
end
|
56
62
|
end
|
data/manual/graphics/helper.rb
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
#
|
3
1
|
# To produce this manual we use the <code>stroke_axis</code> helper method
|
4
2
|
# within the examples.
|
5
3
|
#
|
@@ -10,15 +8,18 @@
|
|
10
8
|
# Note that the examples define a custom <code>:height</code> option so that
|
11
9
|
# only the example canvas is used (as seen with the output of the first line of
|
12
10
|
# the example code).
|
13
|
-
|
14
|
-
|
15
|
-
%w[.. example_helper]))
|
11
|
+
|
12
|
+
require_relative '../example_helper'
|
16
13
|
|
17
14
|
filename = File.basename(__FILE__).gsub('.rb', '.pdf')
|
18
15
|
Prawn::ManualBuilder::Example.generate(filename) do
|
19
16
|
stroke_axis
|
20
|
-
stroke_axis(
|
21
|
-
|
22
|
-
|
23
|
-
|
17
|
+
stroke_axis(
|
18
|
+
at: [70, 70], height: 200, step_length: 50,
|
19
|
+
negative_axes_length: 5, color: '0000FF'
|
20
|
+
)
|
21
|
+
stroke_axis(
|
22
|
+
at: [140, 140], width: 200, height: cursor.to_i - 140,
|
23
|
+
step_length: 20, negative_axes_length: 40, color: 'FF0000'
|
24
|
+
)
|
24
25
|
end
|
@@ -1,5 +1,3 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
#
|
3
1
|
# The <code>line_width=</code> method sets the stroke width for subsequent
|
4
2
|
# stroke calls.
|
5
3
|
#
|
@@ -7,9 +5,9 @@
|
|
7
5
|
# assignment is a local temporary, rather than a setter method, if you are using
|
8
6
|
# the block call to <code>Prawn::Document.generate</code> without passing params
|
9
7
|
# you will need to call <code>line_width</code> on self.
|
10
|
-
|
11
|
-
|
12
|
-
|
8
|
+
|
9
|
+
# rubocop: disable Lint/UselessAssignment
|
10
|
+
require_relative '../example_helper'
|
13
11
|
|
14
12
|
filename = File.basename(__FILE__).gsub('.rb', '.pdf')
|
15
13
|
Prawn::ManualBuilder::Example.generate(filename) do
|
@@ -19,13 +17,13 @@ Prawn::ManualBuilder::Example.generate(filename) do
|
|
19
17
|
|
20
18
|
3.times do |i|
|
21
19
|
case i
|
22
|
-
when 0 then line_width = 10
|
20
|
+
when 0 then line_width = 10 # This call will have no effect
|
23
21
|
when 1 then self.line_width = 10
|
24
22
|
when 2 then self.line_width = 25
|
25
23
|
end
|
26
24
|
|
27
25
|
stroke do
|
28
|
-
horizontal_line 50, 150, :
|
26
|
+
horizontal_line 50, 150, at: y
|
29
27
|
rectangle [275, y + 25], 50, 50
|
30
28
|
circle [500, y], 25
|
31
29
|
end
|
@@ -1,5 +1,3 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
#
|
3
1
|
# Prawn supports drawing both lines and curves starting either at the current
|
4
2
|
# position, or from a specified starting position.
|
5
3
|
#
|
@@ -14,9 +12,8 @@
|
|
14
12
|
#
|
15
13
|
# Both curve methods define a Bezier curve bounded by two aditional points
|
16
14
|
# provided as the <code>:bounds</code> param.
|
17
|
-
|
18
|
-
|
19
|
-
%w[.. example_helper]))
|
15
|
+
|
16
|
+
require_relative '../example_helper'
|
20
17
|
|
21
18
|
filename = File.basename(__FILE__).gsub('.rb', '.pdf')
|
22
19
|
Prawn::ManualBuilder::Example.generate(filename) do
|
@@ -29,13 +26,13 @@ Prawn::ManualBuilder::Example.generate(filename) do
|
|
29
26
|
line_to 100, 100
|
30
27
|
line_to 0, 100
|
31
28
|
|
32
|
-
curve_to [150, 250], :
|
33
|
-
curve_to [200, 0], :
|
29
|
+
curve_to [150, 250], bounds: [[20, 200], [120, 200]]
|
30
|
+
curve_to [200, 0], bounds: [[150, 200], [450, 10]]
|
34
31
|
end
|
35
32
|
|
36
33
|
# line and curve
|
37
34
|
stroke do
|
38
35
|
line [300, 200], [400, 50]
|
39
|
-
curve [500, 0], [400, 200], :
|
36
|
+
curve [500, 0], [400, 200], bounds: [[600, 300], [300, 390]]
|
40
37
|
end
|
41
38
|
end
|
data/manual/graphics/polygon.rb
CHANGED
@@ -1,14 +1,11 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
#
|
3
1
|
# Drawing polygons in Prawn is easy, just pass a sequence of points to one of
|
4
2
|
# the polygon family of methods.
|
5
3
|
#
|
6
4
|
# Just like <code>rounded_rectangle</code> we also have
|
7
5
|
# <code>rounded_polygon</code>. The only difference is the radius param comes
|
8
6
|
# before the polygon points.
|
9
|
-
|
10
|
-
|
11
|
-
%w[.. example_helper]))
|
7
|
+
|
8
|
+
require_relative '../example_helper'
|
12
9
|
|
13
10
|
filename = File.basename(__FILE__).gsub('.rb', '.pdf')
|
14
11
|
Prawn::ManualBuilder::Example.generate(filename) do
|
@@ -18,12 +15,11 @@ Prawn::ManualBuilder::Example.generate(filename) do
|
|
18
15
|
stroke_polygon [50, 200], [50, 300], [150, 300]
|
19
16
|
|
20
17
|
# Hexagon
|
21
|
-
fill_polygon [50, 150], [150, 200], [250, 150],
|
22
|
-
[250, 50], [150, 0], [50, 50]
|
18
|
+
fill_polygon [50, 150], [150, 200], [250, 150], [250, 50], [150, 0], [50, 50]
|
23
19
|
|
24
20
|
# Pentagram
|
25
21
|
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] }
|
22
|
+
pentagram_points = [0, 2, 4, 1, 3].map { |i| pentagon_points[i] }
|
27
23
|
|
28
24
|
stroke_rounded_polygon(20, *pentagram_points)
|
29
25
|
end
|
@@ -1,13 +1,10 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
#
|
3
1
|
# To draw a rectangle, just provide the upper-left corner, width and height to
|
4
2
|
# the <code>rectangle</code> method.
|
5
3
|
#
|
6
4
|
# There's also <code>rounded_rectangle</code>. Just provide an additional radius
|
7
5
|
# value for the rounded corners.
|
8
|
-
|
9
|
-
|
10
|
-
%w[.. example_helper]))
|
6
|
+
|
7
|
+
require_relative '../example_helper'
|
11
8
|
|
12
9
|
filename = File.basename(__FILE__).gsub('.rb', '.pdf')
|
13
10
|
Prawn::ManualBuilder::Example.generate(filename) do
|
data/manual/graphics/rotate.rb
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
#
|
3
1
|
# This transformation is used to rotate the user space. Give it an angle
|
4
2
|
# and an <code>:origin</code> point about which to rotate and a block.
|
5
3
|
# Everything inside the block will be drawn with the rotated coordinates.
|
@@ -7,9 +5,8 @@
|
|
7
5
|
# The angle is in degrees.
|
8
6
|
#
|
9
7
|
# If you omit the <code>:origin</code> option the page origin will be used.
|
10
|
-
|
11
|
-
|
12
|
-
%w[.. example_helper]))
|
8
|
+
|
9
|
+
require_relative '../example_helper'
|
13
10
|
|
14
11
|
filename = File.basename(__FILE__).gsub('.rb', '.pdf')
|
15
12
|
Prawn::ManualBuilder::Example.generate(filename) do
|
@@ -18,9 +15,9 @@ Prawn::ManualBuilder::Example.generate(filename) do
|
|
18
15
|
fill_circle [250, 200], 2
|
19
16
|
|
20
17
|
12.times do |i|
|
21
|
-
rotate(i * 30, :
|
18
|
+
rotate(i * 30, origin: [250, 200]) do
|
22
19
|
stroke_rectangle [350, 225], 100, 50
|
23
|
-
draw_text "Rotated #{i * 30}°", :
|
20
|
+
draw_text "Rotated #{i * 30}°", size: 10, at: [360, 205]
|
24
21
|
end
|
25
22
|
end
|
26
23
|
end
|
data/manual/graphics/scale.rb
CHANGED
@@ -1,13 +1,10 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
#
|
3
1
|
# This transformation is used to scale the user space. Give it an scale factor
|
4
2
|
# and an <code>:origin</code> point and everything inside the block will be
|
5
3
|
# scaled using the origin point as reference.
|
6
4
|
#
|
7
5
|
# If you omit the <code>:origin</code> option the page origin will be used.
|
8
|
-
|
9
|
-
|
10
|
-
%w[.. example_helper]))
|
6
|
+
|
7
|
+
require_relative '../example_helper'
|
11
8
|
|
12
9
|
filename = File.basename(__FILE__).gsub('.rb', '.pdf')
|
13
10
|
Prawn::ManualBuilder::Example.generate(filename) do
|
@@ -20,24 +17,24 @@ Prawn::ManualBuilder::Example.generate(filename) do
|
|
20
17
|
y = 200
|
21
18
|
|
22
19
|
stroke_rectangle [x, y], width, height
|
23
|
-
text_box
|
20
|
+
text_box 'reference rectangle', at: [x + 10, y - 10], width: width - 20
|
24
21
|
|
25
|
-
scale(2, :
|
22
|
+
scale(2, origin: [x, y]) do
|
26
23
|
stroke_rectangle [x, y], width, height
|
27
|
-
text_box
|
28
|
-
|
29
|
-
|
24
|
+
text_box 'rectangle scaled from upper-left corner',
|
25
|
+
at: [x, y - height - 5],
|
26
|
+
width: width
|
30
27
|
end
|
31
28
|
|
32
29
|
x = 350
|
33
30
|
|
34
31
|
stroke_rectangle [x, y], width, height
|
35
|
-
text_box
|
32
|
+
text_box 'reference rectangle', at: [x + 10, y - 10], width: width - 20
|
36
33
|
|
37
|
-
scale(2, :
|
34
|
+
scale(2, origin: [x + width / 2, y - height / 2]) do
|
38
35
|
stroke_rectangle [x, y], width, height
|
39
|
-
text_box
|
40
|
-
|
41
|
-
|
36
|
+
text_box 'rectangle scaled from center',
|
37
|
+
at: [x, y - height - 5],
|
38
|
+
width: width
|
42
39
|
end
|
43
40
|
end
|