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
|
# bounding_box.rb : Implements a mechanism for shifting the coordinate space
|
4
2
|
#
|
5
3
|
# Copyright May 2008, Gregory Brown. All Rights Reserved.
|
@@ -170,29 +168,29 @@ module Prawn
|
|
170
168
|
# end
|
171
169
|
#
|
172
170
|
def canvas(&block)
|
173
|
-
init_bounding_box(block, :
|
171
|
+
init_bounding_box(block, hold_position: true) do |_|
|
174
172
|
# Canvas bbox acts like margin_box in that its parent bounds are unset.
|
175
173
|
@bounding_box = BoundingBox.new(
|
176
174
|
self, nil, [0, page.dimensions[3]],
|
177
|
-
:
|
178
|
-
:
|
175
|
+
width: page.dimensions[2],
|
176
|
+
height: page.dimensions[3]
|
179
177
|
)
|
180
178
|
end
|
181
179
|
end
|
182
180
|
|
183
181
|
private
|
184
182
|
|
185
|
-
def init_bounding_box(user_block, options = {}
|
183
|
+
def init_bounding_box(user_block, options = {})
|
186
184
|
unless user_block
|
187
|
-
|
188
|
-
|
185
|
+
raise ArgumentError,
|
186
|
+
'bounding boxes require a block to be drawn within the box'
|
189
187
|
end
|
190
188
|
|
191
189
|
parent_box = @bounding_box
|
192
190
|
|
193
191
|
original_ypos = y
|
194
192
|
|
195
|
-
|
193
|
+
yield(parent_box)
|
196
194
|
|
197
195
|
self.y = @bounding_box.absolute_top
|
198
196
|
user_block.call
|
@@ -209,9 +207,10 @@ module Prawn
|
|
209
207
|
self.y = @bounding_box.absolute_bottom
|
210
208
|
end
|
211
209
|
|
212
|
-
created_box
|
210
|
+
created_box = @bounding_box
|
211
|
+
@bounding_box = parent_box
|
213
212
|
|
214
|
-
|
213
|
+
created_box
|
215
214
|
end
|
216
215
|
|
217
216
|
# Low level layout helper that simplifies coordinate math.
|
@@ -222,13 +221,14 @@ module Prawn
|
|
222
221
|
class BoundingBox
|
223
222
|
def initialize(document, parent, point, options = {}) # @private
|
224
223
|
unless options[:width]
|
225
|
-
|
224
|
+
raise ArgumentError, 'BoundingBox needs the :width option to be set'
|
226
225
|
end
|
227
226
|
|
228
227
|
@document = document
|
229
228
|
@parent = parent
|
230
229
|
@x, @y = point
|
231
|
-
@width
|
230
|
+
@width = options[:width]
|
231
|
+
@height = options[:height]
|
232
232
|
@total_left_padding = 0
|
233
233
|
@total_right_padding = 0
|
234
234
|
@stretched_height = nil
|
@@ -280,7 +280,7 @@ module Prawn
|
|
280
280
|
# end
|
281
281
|
#
|
282
282
|
# @private
|
283
|
-
def indent(left_padding, right_padding = 0
|
283
|
+
def indent(left_padding, right_padding = 0)
|
284
284
|
add_left_padding(left_padding)
|
285
285
|
add_right_padding(right_padding)
|
286
286
|
yield
|
@@ -319,7 +319,8 @@ module Prawn
|
|
319
319
|
@width += right_padding
|
320
320
|
end
|
321
321
|
|
322
|
-
# Relative right x-coordinate of the bounding box. (Equal to the box
|
322
|
+
# Relative right x-coordinate of the bounding box. (Equal to the box
|
323
|
+
# width)
|
323
324
|
#
|
324
325
|
# Example, position some text 3 pts from the right of the containing box:
|
325
326
|
#
|
@@ -456,8 +457,10 @@ module Prawn
|
|
456
457
|
#
|
457
458
|
def height
|
458
459
|
return @height if @height
|
459
|
-
@stretched_height = [
|
460
|
-
|
460
|
+
@stretched_height = [
|
461
|
+
(absolute_top - @document.y),
|
462
|
+
@stretched_height.to_f
|
463
|
+
].max
|
461
464
|
end
|
462
465
|
|
463
466
|
# an alias for absolute_left
|
@@ -485,8 +488,9 @@ module Prawn
|
|
485
488
|
end
|
486
489
|
end
|
487
490
|
|
488
|
-
# Returns +false+ when the box has a defined height, +true+ when the
|
489
|
-
# is being calculated on the fly based on the current vertical
|
491
|
+
# Returns +false+ when the box has a defined height, +true+ when the
|
492
|
+
# height is being calculated on the fly based on the current vertical
|
493
|
+
# position.
|
490
494
|
#
|
491
495
|
def stretchy?
|
492
496
|
!@height
|
@@ -496,14 +500,14 @@ module Prawn
|
|
496
500
|
#
|
497
501
|
def reference_bounds
|
498
502
|
if stretchy?
|
499
|
-
|
503
|
+
raise "Can't find reference bounds: my parent is unset" unless @parent
|
500
504
|
@parent.reference_bounds
|
501
505
|
else
|
502
506
|
self
|
503
507
|
end
|
504
508
|
end
|
505
509
|
|
506
|
-
|
510
|
+
alias update_height height
|
507
511
|
|
508
512
|
# Returns a deep copy of these bounds (including all parent bounds but
|
509
513
|
# not copying the reference to the Document).
|
@@ -512,10 +516,13 @@ module Prawn
|
|
512
516
|
def deep_copy
|
513
517
|
copy = dup
|
514
518
|
# Deep-copy the parent bounds
|
515
|
-
copy.instance_variable_set(
|
516
|
-
|
517
|
-
|
518
|
-
|
519
|
+
copy.instance_variable_set(
|
520
|
+
'@parent',
|
521
|
+
if @parent.is_a?(BoundingBox)
|
522
|
+
@parent.deep_copy
|
523
|
+
end
|
524
|
+
)
|
525
|
+
copy.instance_variable_set('@document', nil)
|
519
526
|
copy
|
520
527
|
end
|
521
528
|
|
@@ -525,7 +532,7 @@ module Prawn
|
|
525
532
|
#
|
526
533
|
# @private
|
527
534
|
def self.restore_deep_copy(bounds, document)
|
528
|
-
bounds.instance_variable_set(
|
535
|
+
bounds.instance_variable_set('@document', document)
|
529
536
|
bounds
|
530
537
|
end
|
531
538
|
end
|
@@ -1,12 +1,10 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
#
|
3
1
|
# column_box.rb: Extends BoundingBox to allow for columns of text
|
4
2
|
#
|
5
3
|
# Author Paul Ostazeski.
|
6
4
|
#
|
7
5
|
# This is free software. Please see the LICENSE and COPYING files for details.
|
8
6
|
|
9
|
-
require_relative
|
7
|
+
require_relative 'bounding_box'
|
10
8
|
|
11
9
|
module Prawn
|
12
10
|
class Document
|
@@ -36,10 +34,10 @@ module Prawn
|
|
36
34
|
|
37
35
|
private
|
38
36
|
|
39
|
-
def init_column_box(user_block, options = {}
|
37
|
+
def init_column_box(user_block, options = {})
|
40
38
|
parent_box = @bounding_box
|
41
39
|
|
42
|
-
|
40
|
+
yield(parent_box)
|
43
41
|
|
44
42
|
self.y = @bounding_box.absolute_top
|
45
43
|
user_block.call
|
@@ -55,7 +53,7 @@ module Prawn
|
|
55
53
|
def initialize(document, parent, point, options = {}) #:nodoc:
|
56
54
|
super
|
57
55
|
@columns = options[:columns] || 3
|
58
|
-
@spacer
|
56
|
+
@spacer = options[:spacer] || @document.font_size
|
59
57
|
@current_column = 0
|
60
58
|
@reflow_margins = options[:reflow_margins]
|
61
59
|
end
|
@@ -109,7 +107,7 @@ module Prawn
|
|
109
107
|
def move_past_bottom
|
110
108
|
@current_column = (@current_column + 1) % @columns
|
111
109
|
@document.y = @y
|
112
|
-
if
|
110
|
+
if @current_column.zero?
|
113
111
|
if @reflow_margins
|
114
112
|
@y = @parent.absolute_top
|
115
113
|
end
|
@@ -1,12 +1,10 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
#
|
3
1
|
# internals.rb : Implements document internals for Prawn
|
4
2
|
#
|
5
3
|
# Copyright August 2008, Gregory Brown. All Rights Reserved.
|
6
4
|
#
|
7
5
|
# This is free software. Please see the LICENSE and COPYING files for details.
|
8
6
|
|
9
|
-
require
|
7
|
+
require 'forwardable'
|
10
8
|
|
11
9
|
module Prawn
|
12
10
|
class Document
|
@@ -23,8 +21,10 @@ module Prawn
|
|
23
21
|
# but they are used in documentation and possibly in extensions.
|
24
22
|
# Perhaps they will become part of the extension API?
|
25
23
|
# Anyway, for now it's not clear what we should do w. them.
|
26
|
-
delegate [
|
27
|
-
|
24
|
+
delegate [
|
25
|
+
:graphic_state,
|
26
|
+
:on_page_create
|
27
|
+
] => :renderer
|
28
28
|
|
29
29
|
def save_graphics_state(state = nil, &block)
|
30
30
|
save_transformation_stack
|
@@ -45,7 +45,7 @@ module Prawn
|
|
45
45
|
delegate [:compression_enabled?] => :renderer
|
46
46
|
|
47
47
|
# FIXME: More circular references in PDF::Core::Page.
|
48
|
-
delegate [
|
48
|
+
delegate [:ref, :ref!, :deref] => :renderer
|
49
49
|
|
50
50
|
# FIXME: Another circular reference, because we mix in a module from
|
51
51
|
# PDF::Core to provide destinations, which in theory should not
|
data/lib/prawn/document/span.rb
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
1
|
# span.rb : Implements text columns
|
4
2
|
#
|
5
3
|
# Copyright September 2008, Gregory Brown. All Rights Reserved.
|
@@ -28,26 +26,31 @@ module Prawn
|
|
28
26
|
#
|
29
27
|
def span(width, options = {})
|
30
28
|
Prawn.verify_options [:position], options
|
31
|
-
original_position =
|
29
|
+
original_position = y
|
32
30
|
|
33
31
|
# FIXME: Any way to move this upstream?
|
34
|
-
left_boundary =
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
32
|
+
left_boundary =
|
33
|
+
case options.fetch(:position, :left)
|
34
|
+
when :left
|
35
|
+
margin_box.absolute_left
|
36
|
+
when :center
|
37
|
+
margin_box.absolute_left + margin_box.width / 2.0 - width / 2.0
|
38
|
+
when :right
|
39
|
+
margin_box.absolute_right - width
|
40
|
+
when Numeric
|
41
|
+
margin_box.absolute_left + options[:position]
|
42
|
+
else
|
43
|
+
raise ArgumentError, 'Invalid option for :position'
|
44
|
+
end
|
46
45
|
|
47
46
|
# we need to bust out of whatever nested bounding boxes we're in.
|
48
47
|
canvas do
|
49
|
-
bounding_box(
|
50
|
-
|
48
|
+
bounding_box(
|
49
|
+
[
|
50
|
+
left_boundary,
|
51
|
+
margin_box.absolute_top
|
52
|
+
], width: width
|
53
|
+
) do
|
51
54
|
self.y = original_position
|
52
55
|
yield
|
53
56
|
end
|
data/lib/prawn/encoding.rb
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
#
|
3
1
|
# Copyright September 2008, Gregory Brown, James Healy All Rights Reserved.
|
4
2
|
#
|
5
3
|
# This is free software. Please see the LICENSE and COPYING files for details.
|
@@ -10,78 +8,78 @@ module Prawn
|
|
10
8
|
#
|
11
9
|
class WinAnsi #:nodoc:
|
12
10
|
CHARACTERS = %w[
|
13
|
-
.notdef
|
14
|
-
.notdef
|
15
|
-
.notdef
|
16
|
-
.notdef
|
17
|
-
.notdef
|
18
|
-
.notdef
|
19
|
-
.notdef
|
20
|
-
.notdef
|
11
|
+
.notdef .notdef .notdef .notdef
|
12
|
+
.notdef .notdef .notdef .notdef
|
13
|
+
.notdef .notdef .notdef .notdef
|
14
|
+
.notdef .notdef .notdef .notdef
|
15
|
+
.notdef .notdef .notdef .notdef
|
16
|
+
.notdef .notdef .notdef .notdef
|
17
|
+
.notdef .notdef .notdef .notdef
|
18
|
+
.notdef .notdef .notdef .notdef
|
21
19
|
|
22
|
-
space
|
23
|
-
dollar
|
24
|
-
parenleft
|
25
|
-
comma
|
26
|
-
zero
|
27
|
-
four
|
28
|
-
eight
|
29
|
-
less
|
20
|
+
space exclam quotedbl numbersign
|
21
|
+
dollar percent ampersand quotesingle
|
22
|
+
parenleft parenright asterisk plus
|
23
|
+
comma hyphen period slash
|
24
|
+
zero one two three
|
25
|
+
four five six seven
|
26
|
+
eight nine colon semicolon
|
27
|
+
less equal greater question
|
30
28
|
|
31
|
-
at
|
32
|
-
D
|
33
|
-
H
|
34
|
-
L
|
35
|
-
P
|
36
|
-
T
|
37
|
-
X
|
38
|
-
backslash
|
29
|
+
at A B C
|
30
|
+
D E F G
|
31
|
+
H I J K
|
32
|
+
L M N O
|
33
|
+
P Q R S
|
34
|
+
T U V W
|
35
|
+
X Y Z bracketleft
|
36
|
+
backslash bracketright asciicircum underscore
|
39
37
|
|
40
|
-
grave
|
41
|
-
d
|
42
|
-
h
|
43
|
-
l
|
44
|
-
p
|
45
|
-
t
|
46
|
-
x
|
47
|
-
bar
|
38
|
+
grave a b c
|
39
|
+
d e f g
|
40
|
+
h i j k
|
41
|
+
l m n o
|
42
|
+
p q r s
|
43
|
+
t u v w
|
44
|
+
x y z braceleft
|
45
|
+
bar braceright asciitilde .notdef
|
48
46
|
|
49
|
-
Euro
|
50
|
-
quotedblbase
|
51
|
-
circumflex
|
52
|
-
OE
|
53
|
-
.notdef
|
54
|
-
quotedblright bullet
|
55
|
-
tilde
|
56
|
-
oe
|
47
|
+
Euro .notdef quotesinglbase florin
|
48
|
+
quotedblbase ellipsis dagger daggerdbl
|
49
|
+
circumflex perthousand Scaron guilsinglleft
|
50
|
+
OE .notdef Zcaron .notdef
|
51
|
+
.notdef quoteleft quoteright quotedblleft
|
52
|
+
quotedblright bullet endash emdash
|
53
|
+
tilde trademark scaron guilsinglright
|
54
|
+
oe .notdef zcaron ydieresis
|
57
55
|
|
58
|
-
space
|
59
|
-
currency
|
60
|
-
dieresis
|
61
|
-
logicalnot
|
62
|
-
degree
|
63
|
-
acute
|
64
|
-
cedilla
|
65
|
-
onequarter
|
56
|
+
space exclamdown cent sterling
|
57
|
+
currency yen brokenbar section
|
58
|
+
dieresis copyright ordfeminine guillemotleft
|
59
|
+
logicalnot hyphen registered macron
|
60
|
+
degree plusminus twosuperior threesuperior
|
61
|
+
acute mu paragraph periodcentered
|
62
|
+
cedilla onesuperior ordmasculine guillemotright
|
63
|
+
onequarter onehalf threequarters questiondown
|
66
64
|
|
67
|
-
Agrave
|
68
|
-
Adieresis
|
69
|
-
Egrave
|
70
|
-
Igrave
|
71
|
-
Eth
|
72
|
-
Ocircumflex
|
73
|
-
Oslash
|
74
|
-
Udieresis
|
65
|
+
Agrave Aacute Acircumflex Atilde
|
66
|
+
Adieresis Aring AE Ccedilla
|
67
|
+
Egrave Eacute Ecircumflex Edieresis
|
68
|
+
Igrave Iacute Icircumflex Idieresis
|
69
|
+
Eth Ntilde Ograve Oacute
|
70
|
+
Ocircumflex Otilde Odieresis multiply
|
71
|
+
Oslash Ugrave Uacute Ucircumflex
|
72
|
+
Udieresis Yacute Thorn germandbls
|
75
73
|
|
76
|
-
agrave
|
77
|
-
adieresis
|
78
|
-
egrave
|
79
|
-
igrave
|
80
|
-
eth
|
81
|
-
ocircumflex
|
82
|
-
oslash
|
83
|
-
udieresis
|
84
|
-
]
|
74
|
+
agrave aacute acircumflex atilde
|
75
|
+
adieresis aring ae ccedilla
|
76
|
+
egrave eacute ecircumflex edieresis
|
77
|
+
igrave iacute icircumflex idieresis
|
78
|
+
eth ntilde ograve oacute
|
79
|
+
ocircumflex otilde odieresis divide
|
80
|
+
oslash ugrave uacute ucircumflex
|
81
|
+
udieresis yacute thorn ydieresis
|
82
|
+
].freeze
|
85
83
|
end
|
86
84
|
end
|
87
85
|
end
|
data/lib/prawn/errors.rb
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
#
|
3
1
|
# errors.rb : Implements custom error classes for Prawn
|
4
2
|
#
|
5
3
|
# Copyright April 2008, Gregory Brown. All Rights Reserved.
|
@@ -43,9 +41,9 @@ module Prawn
|
|
43
41
|
#
|
44
42
|
UnknownOption = Class.new(StandardError)
|
45
43
|
|
46
|
-
# this error is raised when a user attempts to embed an image of an
|
47
|
-
# type. This can either a completely unsupported format, or
|
48
|
-
# supported format (ie. some types of PNG)
|
44
|
+
# this error is raised when a user attempts to embed an image of an
|
45
|
+
# unsupported type. This can either a completely unsupported format, or
|
46
|
+
# a dialect of a supported format (ie. some types of PNG)
|
49
47
|
UnsupportedImageType = Class.new(StandardError)
|
50
48
|
|
51
49
|
# This error is raised when a named element has alredy been
|
@@ -63,17 +61,22 @@ module Prawn
|
|
63
61
|
# This error is raised when a required option has not been set
|
64
62
|
RequiredOption = Class.new(StandardError)
|
65
63
|
|
66
|
-
# This error is raised when a requested outline item with a given title does
|
64
|
+
# This error is raised when a requested outline item with a given title does
|
65
|
+
# not exist
|
67
66
|
UnknownOutlineTitle = Class.new(StandardError)
|
68
67
|
|
69
68
|
# This error is raised when a block is required, but not provided
|
70
69
|
BlockRequired = Class.new(StandardError)
|
71
70
|
|
72
|
-
# This error is rased when a graphics method is called with improper
|
71
|
+
# This error is rased when a graphics method is called with improper
|
72
|
+
# arguments
|
73
73
|
InvalidGraphicsPath = Class.new(StandardError)
|
74
74
|
|
75
75
|
# Raised when unrecognized content is provided for a table cell.
|
76
76
|
#
|
77
77
|
UnrecognizedTableContent = Class.new(StandardError)
|
78
|
+
|
79
|
+
# This error is raised when an incompatible join style is specified
|
80
|
+
InvalidJoinStyle = Class.new(StandardError)
|
78
81
|
end
|
79
82
|
end
|