prawn 2.3.0 → 2.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/lib/prawn/document/bounding_box.rb +223 -143
- data/lib/prawn/document/column_box.rb +61 -26
- data/lib/prawn/document/internals.rb +25 -16
- data/lib/prawn/document/span.rb +21 -18
- data/lib/prawn/document.rb +273 -182
- data/lib/prawn/encoding.rb +2 -5
- data/lib/prawn/errors.rb +23 -34
- data/lib/prawn/font.rb +254 -139
- data/lib/prawn/font_metric_cache.rb +18 -16
- data/lib/prawn/fonts/afm.rb +99 -57
- data/lib/prawn/fonts/dfont.rb +7 -1
- data/lib/prawn/fonts/otf.rb +4 -1
- data/lib/prawn/fonts/to_unicode_cmap.rb +151 -0
- data/lib/prawn/fonts/ttc.rb +7 -2
- data/lib/prawn/fonts/ttf.rb +345 -107
- data/lib/prawn/fonts.rb +14 -0
- data/lib/prawn/graphics/blend_mode.rb +25 -28
- data/lib/prawn/graphics/cap_style.rb +9 -12
- data/lib/prawn/graphics/color.rb +75 -50
- data/lib/prawn/graphics/dash.rb +45 -42
- data/lib/prawn/graphics/join_style.rb +18 -12
- data/lib/prawn/graphics/patterns.rb +239 -110
- data/lib/prawn/graphics/transformation.rb +51 -44
- data/lib/prawn/graphics/transparency.rb +16 -40
- data/lib/prawn/graphics.rb +370 -260
- data/lib/prawn/grid.rb +219 -57
- data/lib/prawn/image_handler.rb +27 -10
- data/lib/prawn/images/image.rb +8 -10
- data/lib/prawn/images/jpg.rb +46 -20
- data/lib/prawn/images/png.rb +94 -42
- data/lib/prawn/images.rb +70 -81
- data/lib/prawn/measurement_extensions.rb +39 -8
- data/lib/prawn/measurements.rb +60 -5
- data/lib/prawn/outline.rb +120 -113
- data/lib/prawn/repeater.rb +52 -36
- data/lib/prawn/security/arcfour.rb +4 -4
- data/lib/prawn/security.rb +106 -98
- data/lib/prawn/soft_mask.rb +42 -30
- data/lib/prawn/stamp.rb +38 -42
- data/lib/prawn/text/box.rb +156 -105
- data/lib/prawn/text/formatted/arranger.rb +121 -41
- data/lib/prawn/text/formatted/box.rb +239 -163
- data/lib/prawn/text/formatted/fragment.rb +130 -14
- data/lib/prawn/text/formatted/line_wrap.rb +49 -38
- data/lib/prawn/text/formatted/parser.rb +116 -74
- data/lib/prawn/text/formatted/wrap.rb +25 -26
- data/lib/prawn/text/formatted.rb +75 -0
- data/lib/prawn/text.rb +456 -211
- data/lib/prawn/transformation_stack.rb +29 -10
- data/lib/prawn/utilities.rb +13 -13
- data/lib/prawn/version.rb +2 -1
- data/lib/prawn/view.rb +69 -54
- data/lib/prawn.rb +24 -18
- data.tar.gz.sig +0 -0
- metadata +55 -262
- metadata.gz.sig +3 -4
- data/.yardopts +0 -10
- data/Gemfile +0 -5
- data/Rakefile +0 -54
- data/manual/absolute_position.pdf +0 -0
- data/manual/basic_concepts/adding_pages.rb +0 -26
- data/manual/basic_concepts/basic_concepts.rb +0 -43
- data/manual/basic_concepts/creation.rb +0 -38
- data/manual/basic_concepts/cursor.rb +0 -32
- data/manual/basic_concepts/measurement.rb +0 -24
- data/manual/basic_concepts/origin.rb +0 -37
- data/manual/basic_concepts/other_cursor_helpers.rb +0 -39
- data/manual/basic_concepts/view.rb +0 -48
- data/manual/bounding_box/bounding_box.rb +0 -41
- data/manual/bounding_box/bounds.rb +0 -48
- data/manual/bounding_box/canvas.rb +0 -23
- data/manual/bounding_box/creation.rb +0 -22
- data/manual/bounding_box/indentation.rb +0 -45
- data/manual/bounding_box/nesting.rb +0 -52
- data/manual/bounding_box/russian_boxes.rb +0 -40
- data/manual/bounding_box/stretchy.rb +0 -29
- data/manual/contents.rb +0 -35
- data/manual/cover.rb +0 -43
- data/manual/document_and_page_options/background.rb +0 -25
- data/manual/document_and_page_options/document_and_page_options.rb +0 -34
- data/manual/document_and_page_options/metadata.rb +0 -25
- data/manual/document_and_page_options/page_margins.rb +0 -36
- data/manual/document_and_page_options/page_size.rb +0 -34
- data/manual/document_and_page_options/print_scaling.rb +0 -22
- data/manual/example_helper.rb +0 -8
- data/manual/graphics/blend_mode.rb +0 -52
- data/manual/graphics/circle_and_ellipse.rb +0 -21
- data/manual/graphics/color.rb +0 -22
- data/manual/graphics/common_lines.rb +0 -29
- data/manual/graphics/fill_and_stroke.rb +0 -41
- data/manual/graphics/fill_rules.rb +0 -37
- data/manual/graphics/gradients.rb +0 -43
- data/manual/graphics/graphics.rb +0 -64
- data/manual/graphics/helper.rb +0 -27
- data/manual/graphics/line_width.rb +0 -36
- data/manual/graphics/lines_and_curves.rb +0 -40
- data/manual/graphics/polygon.rb +0 -27
- data/manual/graphics/rectangle.rb +0 -20
- data/manual/graphics/rotate.rb +0 -25
- data/manual/graphics/scale.rb +0 -42
- data/manual/graphics/soft_masks.rb +0 -44
- data/manual/graphics/stroke_cap.rb +0 -30
- data/manual/graphics/stroke_dash.rb +0 -47
- data/manual/graphics/stroke_join.rb +0 -29
- data/manual/graphics/translate.rb +0 -28
- data/manual/graphics/transparency.rb +0 -33
- data/manual/how_to_read_this_manual.rb +0 -39
- data/manual/images/absolute_position.rb +0 -22
- data/manual/images/fit.rb +0 -20
- data/manual/images/horizontal.rb +0 -24
- data/manual/images/images.rb +0 -41
- data/manual/images/plain_image.rb +0 -17
- data/manual/images/scale.rb +0 -21
- data/manual/images/vertical.rb +0 -27
- data/manual/images/width_and_height.rb +0 -24
- data/manual/layout/boxes.rb +0 -26
- data/manual/layout/content.rb +0 -24
- data/manual/layout/layout.rb +0 -27
- data/manual/layout/simple_grid.rb +0 -22
- data/manual/outline/add_subsection_to.rb +0 -60
- data/manual/outline/insert_section_after.rb +0 -46
- data/manual/outline/outline.rb +0 -33
- data/manual/outline/sections_and_pages.rb +0 -66
- data/manual/repeatable_content/alternate_page_numbering.rb +0 -36
- data/manual/repeatable_content/page_numbering.rb +0 -55
- data/manual/repeatable_content/repeatable_content.rb +0 -35
- data/manual/repeatable_content/repeater.rb +0 -54
- data/manual/repeatable_content/stamp.rb +0 -40
- data/manual/security/encryption.rb +0 -28
- data/manual/security/permissions.rb +0 -41
- data/manual/security/security.rb +0 -28
- data/manual/table.rb +0 -16
- data/manual/text/alignment.rb +0 -43
- data/manual/text/color.rb +0 -24
- data/manual/text/column_box.rb +0 -30
- data/manual/text/fallback_fonts.rb +0 -41
- data/manual/text/font.rb +0 -40
- data/manual/text/font_size.rb +0 -44
- data/manual/text/font_style.rb +0 -22
- data/manual/text/formatted_callbacks.rb +0 -65
- data/manual/text/formatted_text.rb +0 -58
- data/manual/text/free_flowing_text.rb +0 -50
- data/manual/text/inline.rb +0 -40
- data/manual/text/kerning_and_character_spacing.rb +0 -38
- data/manual/text/leading.rb +0 -24
- data/manual/text/line_wrapping.rb +0 -60
- data/manual/text/paragraph_indentation.rb +0 -32
- data/manual/text/positioned_text.rb +0 -37
- data/manual/text/registering_families.rb +0 -51
- data/manual/text/rendering_and_color.rb +0 -36
- data/manual/text/right_to_left_text.rb +0 -54
- data/manual/text/rotation.rb +0 -47
- data/manual/text/single_usage.rb +0 -36
- data/manual/text/text.rb +0 -75
- data/manual/text/text_box_excess.rb +0 -35
- data/manual/text/text_box_extensions.rb +0 -48
- data/manual/text/text_box_overflow.rb +0 -49
- data/manual/text/utf8.rb +0 -27
- data/manual/text/win_ansi_charset.rb +0 -62
- data/prawn.gemspec +0 -57
- data/spec/data/curves.pdf +0 -66
- data/spec/extensions/encoding_helpers.rb +0 -11
- data/spec/prawn/document/bounding_box_spec.rb +0 -546
- data/spec/prawn/document/column_box_spec.rb +0 -75
- data/spec/prawn/document/security_spec.rb +0 -176
- data/spec/prawn/document_annotations_spec.rb +0 -76
- data/spec/prawn/document_destinations_spec.rb +0 -15
- data/spec/prawn/document_grid_spec.rb +0 -99
- data/spec/prawn/document_reference_spec.rb +0 -27
- data/spec/prawn/document_span_spec.rb +0 -36
- data/spec/prawn/document_spec.rb +0 -802
- data/spec/prawn/font_metric_cache_spec.rb +0 -54
- data/spec/prawn/font_spec.rb +0 -542
- data/spec/prawn/graphics/blend_mode_spec.rb +0 -63
- data/spec/prawn/graphics/transparency_spec.rb +0 -81
- data/spec/prawn/graphics_spec.rb +0 -837
- data/spec/prawn/graphics_stroke_styles_spec.rb +0 -229
- data/spec/prawn/image_handler_spec.rb +0 -53
- data/spec/prawn/images/jpg_spec.rb +0 -20
- data/spec/prawn/images/png_spec.rb +0 -283
- data/spec/prawn/images_spec.rb +0 -224
- data/spec/prawn/measurements_extensions_spec.rb +0 -24
- data/spec/prawn/outline_spec.rb +0 -412
- data/spec/prawn/repeater_spec.rb +0 -165
- data/spec/prawn/soft_mask_spec.rb +0 -74
- data/spec/prawn/stamp_spec.rb +0 -172
- data/spec/prawn/text/box_spec.rb +0 -1112
- data/spec/prawn/text/formatted/arranger_spec.rb +0 -466
- data/spec/prawn/text/formatted/box_spec.rb +0 -846
- data/spec/prawn/text/formatted/fragment_spec.rb +0 -343
- data/spec/prawn/text/formatted/line_wrap_spec.rb +0 -494
- data/spec/prawn/text/formatted/parser_spec.rb +0 -697
- data/spec/prawn/text_draw_text_spec.rb +0 -149
- data/spec/prawn/text_rendering_mode_spec.rb +0 -48
- data/spec/prawn/text_spacing_spec.rb +0 -95
- data/spec/prawn/text_spec.rb +0 -603
- data/spec/prawn/text_with_inline_formatting_spec.rb +0 -35
- data/spec/prawn/transformation_stack_spec.rb +0 -66
- data/spec/prawn/view_spec.rb +0 -63
- data/spec/prawn_manual_spec.rb +0 -35
- data/spec/spec_helper.rb +0 -48
@@ -1,15 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
# column_box.rb: Extends BoundingBox to allow for columns of text
|
4
|
-
#
|
5
|
-
# Author Paul Ostazeski.
|
6
|
-
#
|
7
|
-
# This is free software. Please see the LICENSE and COPYING files for details.
|
8
|
-
|
9
3
|
require_relative 'bounding_box'
|
10
4
|
|
11
5
|
module Prawn
|
12
|
-
class Document
|
6
|
+
class Document # rubocop: disable Style/Documentation
|
13
7
|
# @group Experimental API
|
14
8
|
|
15
9
|
# A column box is a bounding box with the additional property that when
|
@@ -17,16 +11,26 @@ module Prawn
|
|
17
11
|
# same page, and only flow to the next page when all the columns are
|
18
12
|
# filled.
|
19
13
|
#
|
20
|
-
# column_box accepts the same parameters as bounding_box, as well as the
|
21
|
-
# number of
|
22
|
-
# the top margin is desired on a new page (e.g. to allow for
|
23
|
-
# wide column titles) the option :
|
24
|
-
#
|
25
|
-
# Defaults are :columns = 3, :spacer = font_size, and
|
26
|
-
# :reflow_margins => false
|
27
|
-
#
|
28
|
-
# Under PDF::Writer, "spacer" was known as "gutter"
|
14
|
+
# `column_box` accepts the same parameters as {bounding_box}, as well as the
|
15
|
+
# number of `:columns` and a `:spacer` (in points) between columns. If
|
16
|
+
# resetting the top margin is desired on a new page (e.g. to allow for
|
17
|
+
# initial page wide column titles) the option `reflow_margins: true` can be
|
18
|
+
# set.
|
29
19
|
#
|
20
|
+
# @overload column_box(point, options = {})
|
21
|
+
# @param point [Array(Number, Number)]
|
22
|
+
# @param options [Hash{Symbol => any}]
|
23
|
+
# @option options :width [Number]
|
24
|
+
# width of the new column box, must be specified.
|
25
|
+
# @option options :height [Number]
|
26
|
+
# height of the new column box, stretchy box if omitted.
|
27
|
+
# @option options :hold_position [Boolean]
|
28
|
+
# whether to put cursor at the bottom of the column box.
|
29
|
+
# @option options :columns [Integer] (3)
|
30
|
+
# @option options :spacer [Number] (font_size)
|
31
|
+
# @option options :reflow_margins [Boolean] (false)
|
32
|
+
# @yieldparam parent_box [BoundingBox] parent bounding box
|
33
|
+
# @return [void]
|
30
34
|
def column_box(*args, &block)
|
31
35
|
init_column_box(block) do |parent_box|
|
32
36
|
map_to_absolute!(args[0])
|
@@ -48,11 +52,20 @@ module Prawn
|
|
48
52
|
@bounding_box = parent_box
|
49
53
|
end
|
50
54
|
|
51
|
-
# Implements the necessary functionality to allow Document#column_box to
|
55
|
+
# Implements the necessary functionality to allow {Document#column_box} to
|
52
56
|
# work.
|
53
57
|
#
|
54
58
|
class ColumnBox < BoundingBox
|
55
|
-
|
59
|
+
# @param point [Array(Number, Number)]
|
60
|
+
# @param options [Hash{Symbol => any}]
|
61
|
+
# @option options :width [Number]
|
62
|
+
# width of the new column box, must be specified.
|
63
|
+
# @option options :height [Number]
|
64
|
+
# height of the new column box, stretchy box if omitted.
|
65
|
+
# @option options :columns [Integer] (3)
|
66
|
+
# @option options :spacer [Number] (font_size)
|
67
|
+
# @option options :reflow_margins [Boolean] (false)
|
68
|
+
def initialize(document, parent, point, options = {})
|
56
69
|
super
|
57
70
|
@columns = options[:columns] || 3
|
58
71
|
@spacer = options[:spacer] || @document.font_size
|
@@ -60,39 +73,46 @@ module Prawn
|
|
60
73
|
@reflow_margins = options[:reflow_margins]
|
61
74
|
end
|
62
75
|
|
63
|
-
# The column width, not the width of the whole box,
|
64
|
-
#
|
76
|
+
# The column width, not the width of the whole box, before left and/or
|
77
|
+
# right padding.
|
78
|
+
#
|
79
|
+
# @return [Number]
|
65
80
|
def bare_column_width
|
66
|
-
(@width - @spacer * (@columns - 1)) / @columns
|
81
|
+
(@width - (@spacer * (@columns - 1))) / @columns
|
67
82
|
end
|
68
83
|
|
69
|
-
# The column width after padding.
|
70
|
-
#
|
84
|
+
# The column width after padding. Used to calculate how long a line of
|
85
|
+
# text can be.
|
71
86
|
#
|
87
|
+
# @return [Number]
|
72
88
|
def width
|
73
89
|
bare_column_width - (@total_left_padding + @total_right_padding)
|
74
90
|
end
|
75
91
|
|
76
92
|
# Column width including the spacer.
|
77
93
|
#
|
94
|
+
# @return [Number]
|
78
95
|
def width_of_column
|
79
96
|
bare_column_width + @spacer
|
80
97
|
end
|
81
98
|
|
82
|
-
# x coordinate of the left edge of the current column
|
99
|
+
# x coordinate of the left edge of the current column.
|
83
100
|
#
|
101
|
+
# @return [Number]
|
84
102
|
def left_side
|
85
103
|
absolute_left + (width_of_column * @current_column)
|
86
104
|
end
|
87
105
|
|
88
|
-
# Relative position of the left edge of the current column
|
106
|
+
# Relative position of the left edge of the current column.
|
89
107
|
#
|
108
|
+
# @return [Number]
|
90
109
|
def left
|
91
110
|
width_of_column * @current_column
|
92
111
|
end
|
93
112
|
|
94
|
-
# x
|
113
|
+
# x coordinate of the right edge of the current column.
|
95
114
|
#
|
115
|
+
# @return [Number]
|
96
116
|
def right_side
|
97
117
|
columns_from_right = @columns - (1 + @current_column)
|
98
118
|
absolute_right - (width_of_column * columns_from_right)
|
@@ -100,12 +120,15 @@ module Prawn
|
|
100
120
|
|
101
121
|
# Relative position of the right edge of the current column.
|
102
122
|
#
|
123
|
+
# @return [Number]
|
103
124
|
def right
|
104
125
|
left + width
|
105
126
|
end
|
106
127
|
|
107
128
|
# Moves to the next column or starts a new page if currently positioned at
|
108
129
|
# the rightmost column.
|
130
|
+
#
|
131
|
+
# @return [void]
|
109
132
|
def move_past_bottom
|
110
133
|
@current_column = (@current_column + 1) % @columns
|
111
134
|
@document.y = @y
|
@@ -120,20 +143,32 @@ module Prawn
|
|
120
143
|
# Override the padding functions so as not to split the padding amount
|
121
144
|
# between all columns on the page.
|
122
145
|
|
146
|
+
# @private
|
147
|
+
# @param left_padding [Number]
|
148
|
+
# @return [void]
|
123
149
|
def add_left_padding(left_padding)
|
124
150
|
@total_left_padding += left_padding
|
125
151
|
@x += left_padding
|
126
152
|
end
|
127
153
|
|
154
|
+
# @private
|
155
|
+
# @param left_padding [Number]
|
156
|
+
# @return [void]
|
128
157
|
def subtract_left_padding(left_padding)
|
129
158
|
@total_left_padding -= left_padding
|
130
159
|
@x -= left_padding
|
131
160
|
end
|
132
161
|
|
162
|
+
# @private
|
163
|
+
# @param right_padding [Number]
|
164
|
+
# @return [void]
|
133
165
|
def add_right_padding(right_padding)
|
134
166
|
@total_right_padding += right_padding
|
135
167
|
end
|
136
168
|
|
169
|
+
# @private
|
170
|
+
# @param right_padding [Number]
|
171
|
+
# @return [void]
|
137
172
|
def subtract_right_padding(right_padding)
|
138
173
|
@total_right_padding -= right_padding
|
139
174
|
end
|
@@ -1,11 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
# internals.rb : Implements document internals for Prawn
|
4
|
-
#
|
5
|
-
# Copyright August 2008, Gregory Brown. All Rights Reserved.
|
6
|
-
#
|
7
|
-
# This is free software. Please see the LICENSE and COPYING files for details.
|
8
|
-
|
9
3
|
require 'forwardable'
|
10
4
|
|
11
5
|
module Prawn
|
@@ -28,37 +22,52 @@ module Prawn
|
|
28
22
|
on_page_create
|
29
23
|
] => :renderer
|
30
24
|
|
25
|
+
# Save current graphics state.
|
26
|
+
#
|
27
|
+
# @yield Restores graphic state after the block.
|
28
|
+
# @return [void]
|
31
29
|
def save_graphics_state(state = nil, &block)
|
32
30
|
save_transformation_stack
|
33
31
|
renderer.save_graphics_state(state, &block)
|
32
|
+
restore_transformation_stack if block
|
34
33
|
end
|
35
34
|
|
35
|
+
# Restore graphic state.
|
36
|
+
#
|
37
|
+
# @return [void]
|
36
38
|
def restore_graphics_state
|
37
39
|
restore_transformation_stack
|
38
40
|
renderer.restore_graphics_state
|
39
41
|
end
|
40
42
|
|
41
|
-
#
|
42
|
-
#
|
43
|
-
#
|
43
|
+
# @devnote
|
44
|
+
# FIXME: This is a circular reference, because in theory Prawn should be
|
45
|
+
# passing instances of renderer to PDF::Core::Page, but it's passing
|
46
|
+
# Prawn::Document objects instead.
|
44
47
|
#
|
45
48
|
# A proper design would probably not require Prawn to directly instantiate
|
46
49
|
# PDF::Core::Page objects at all!
|
47
50
|
delegate [:compression_enabled?] => :renderer
|
48
51
|
|
49
|
-
#
|
52
|
+
# @devnote
|
53
|
+
# FIXME: More circular references in PDF::Core::Page.
|
50
54
|
delegate %i[ref ref! deref] => :renderer
|
51
55
|
|
52
|
-
#
|
53
|
-
#
|
54
|
-
#
|
56
|
+
# @devnote
|
57
|
+
# FIXME: Another circular reference, because we mix in a module from
|
58
|
+
# PDF::Core to provide destinations, which in theory should not rely on
|
59
|
+
# a Prawn::Document object but is currently wired up that way.
|
55
60
|
delegate [:names] => :renderer
|
56
61
|
|
57
|
-
#
|
58
|
-
#
|
59
|
-
#
|
62
|
+
# @devnote
|
63
|
+
# FIXME: Circular reference because we mix PDF::Core::Text into
|
64
|
+
# Prawn::Document. PDF::Core::Text should either be split up or moved in
|
65
|
+
# its entirety back up into Prawn.
|
60
66
|
delegate [:add_content] => :renderer
|
61
67
|
|
68
|
+
# Document renderer.
|
69
|
+
#
|
70
|
+
# @return [PDF::Core::Renderer]
|
62
71
|
def renderer
|
63
72
|
@renderer ||= PDF::Core::Renderer.new(state)
|
64
73
|
end
|
data/lib/prawn/document/span.rb
CHANGED
@@ -7,27 +7,29 @@
|
|
7
7
|
# This is free software. Please see the LICENSE and COPYING files for details.
|
8
8
|
|
9
9
|
module Prawn
|
10
|
-
class Document
|
10
|
+
class Document # rubocop: disable Style/Documentation
|
11
11
|
# @group Stable API
|
12
12
|
|
13
|
-
# A span is a special purpose bounding box that allows a column of
|
14
|
-
#
|
13
|
+
# A span is a special purpose bounding box that allows a column of elements
|
14
|
+
# to be positioned relative to the margin_box.
|
15
15
|
#
|
16
|
-
#
|
17
|
-
#
|
16
|
+
# This method is typically used for flowing a column of text from one page
|
17
|
+
# to the next.
|
18
18
|
#
|
19
|
-
#
|
20
|
-
#
|
21
|
-
#
|
22
|
-
#
|
23
|
-
# page to the next.
|
24
|
-
#
|
25
|
-
# span(350, :position => :center) do
|
26
|
-
# text "Here's some centered text in a 350 point column. " * 100
|
27
|
-
# end
|
19
|
+
# @example
|
20
|
+
# span(350, position: :center) do
|
21
|
+
# text "Here's some centered text in a 350 point column. " * 100
|
22
|
+
# end
|
28
23
|
#
|
24
|
+
# @param width [Number] The width of the column in PDF points
|
25
|
+
# @param options [Hash{Symbol => any }]
|
26
|
+
# @option options :position [:left, :center, :right, Number]
|
27
|
+
# position of the span relative to the page margins.
|
28
|
+
# @yield
|
29
|
+
# @return [void]
|
30
|
+
# @raise [ArgumentError] For unsupported `:position` value.
|
29
31
|
def span(width, options = {})
|
30
|
-
Prawn.verify_options
|
32
|
+
Prawn.verify_options([:position], options)
|
31
33
|
original_position = y
|
32
34
|
|
33
35
|
# FIXME: Any way to move this upstream?
|
@@ -36,7 +38,7 @@ module Prawn
|
|
36
38
|
when :left
|
37
39
|
margin_box.absolute_left
|
38
40
|
when :center
|
39
|
-
margin_box.absolute_left + margin_box.width / 2.0 - width / 2.0
|
41
|
+
margin_box.absolute_left + (margin_box.width / 2.0) - (width / 2.0)
|
40
42
|
when :right
|
41
43
|
margin_box.absolute_right - width
|
42
44
|
when Numeric
|
@@ -50,8 +52,9 @@ module Prawn
|
|
50
52
|
bounding_box(
|
51
53
|
[
|
52
54
|
left_boundary,
|
53
|
-
margin_box.absolute_top
|
54
|
-
],
|
55
|
+
margin_box.absolute_top,
|
56
|
+
],
|
57
|
+
width: width,
|
55
58
|
) do
|
56
59
|
self.y = original_position
|
57
60
|
yield
|