Class Prawn::Format::Line
In: lib/prawn/format/line.rb
lib/prawn/format/line.rb
Parent: Object

Methods

ascent   ascent   descent   descent   draw_on   draw_on   hard_break?   hard_break?   height   height   instructions   instructions   new   new   spaces   spaces   width   width  

Attributes

instructions  [R] 
instructions  [R] 
source  [R] 
source  [R] 

Public Class methods

[Source]

    # File lib/prawn/format/line.rb, line 10
10:       def initialize(instructions, hard_break)
11:         # need to remember the "source" instructions, because lines can
12:         # pushed back onto the stack en masse when flowing into boxes,
13:         # if a line is discovered to not fit. Thus, a line must preserve
14:         # all instructions it was originally given.
15: 
16:         @source = instructions
17:         @hard_break = hard_break
18:       end

[Source]

    # File lib/prawn/format/line.rb, line 10
10:       def initialize(instructions, hard_break)
11:         # need to remember the "source" instructions, because lines can
12:         # pushed back onto the stack en masse when flowing into boxes,
13:         # if a line is discovered to not fit. Thus, a line must preserve
14:         # all instructions it was originally given.
15: 
16:         @source = instructions
17:         @hard_break = hard_break
18:       end

Public Instance methods

distance from top of line to baseline

[Source]

    # File lib/prawn/format/line.rb, line 47
47:       def ascent
48:         instructions.map { |instruction| instruction.ascent }.max || 0
49:       end

distance from top of line to baseline

[Source]

    # File lib/prawn/format/line.rb, line 47
47:       def ascent
48:         instructions.map { |instruction| instruction.ascent }.max || 0
49:       end

distance from bottom of line to baseline

[Source]

    # File lib/prawn/format/line.rb, line 52
52:       def descent
53:         instructions.map { |instruction| instruction.descent }.min || 0
54:       end

distance from bottom of line to baseline

[Source]

    # File lib/prawn/format/line.rb, line 52
52:       def descent
53:         instructions.map { |instruction| instruction.descent }.min || 0
54:       end

[Source]

    # File lib/prawn/format/line.rb, line 60
60:       def draw_on(document, state, options={})
61:         return if instructions.empty?
62: 
63:         format_state = instructions.first.state
64: 
65:         case(options[:align])
66:         when :left
67:           state[:dx] = 0
68:         when :center
69:           state[:dx] = (state[:width] - width) / 2.0
70:         when :right
71:           state[:dx] = state[:width] - width
72:         when :justify
73:           state[:dx] = 0
74:           state[:padding] = hard_break? ? 0 : (state[:width] - width) / spaces
75:           state[:text].word_space(state[:padding])
76:         end
77: 
78:         state[:dy] -= ascent
79: 
80:         state[:text].move_to(state[:dx], state[:dy])
81:         state[:line] = self
82: 
83:         document.save_font do
84:           instructions.each { |instruction| instruction.draw(document, state, options) }
85:           state[:pending_effects].each { |effect| effect.wrap(document, state) }
86:         end
87: 
88:         state[:dy] -= (options[:spacing] || 0) + (height - ascent)
89:       end

[Source]

    # File lib/prawn/format/line.rb, line 60
60:       def draw_on(document, state, options={})
61:         return if instructions.empty?
62: 
63:         format_state = instructions.first.state
64: 
65:         case(options[:align])
66:         when :left
67:           state[:dx] = 0
68:         when :center
69:           state[:dx] = (state[:width] - width) / 2.0
70:         when :right
71:           state[:dx] = state[:width] - width
72:         when :justify
73:           state[:dx] = 0
74:           state[:padding] = hard_break? ? 0 : (state[:width] - width) / spaces
75:           state[:text].word_space(state[:padding])
76:         end
77: 
78:         state[:dy] -= ascent
79: 
80:         state[:text].move_to(state[:dx], state[:dy])
81:         state[:line] = self
82: 
83:         document.save_font do
84:           instructions.each { |instruction| instruction.draw(document, state, options) }
85:           state[:pending_effects].each { |effect| effect.wrap(document, state) }
86:         end
87: 
88:         state[:dy] -= (options[:spacing] || 0) + (height - ascent)
89:       end

[Source]

    # File lib/prawn/format/line.rb, line 38
38:       def hard_break?
39:         @hard_break
40:       end

[Source]

    # File lib/prawn/format/line.rb, line 38
38:       def hard_break?
39:         @hard_break
40:       end

[Source]

    # File lib/prawn/format/line.rb, line 56
56:       def height(include_blank=false)
57:         instructions.map { |instruction| instruction.height(include_blank) }.max
58:       end

[Source]

    # File lib/prawn/format/line.rb, line 56
56:       def height(include_blank=false)
57:         instructions.map { |instruction| instruction.height(include_blank) }.max
58:       end

[Source]

    # File lib/prawn/format/line.rb, line 20
20:       def instructions
21:         @instructions ||= begin
22:           instructions = source.dup
23: 
24:           # ignore discardable items at the end of lines
25:           instructions.pop while instructions.any? && instructions.last.discardable?
26: 
27:           consolidate(instructions)
28:         end
29:       end

[Source]

    # File lib/prawn/format/line.rb, line 20
20:       def instructions
21:         @instructions ||= begin
22:           instructions = source.dup
23: 
24:           # ignore discardable items at the end of lines
25:           instructions.pop while instructions.any? && instructions.last.discardable?
26: 
27:           consolidate(instructions)
28:         end
29:       end

[Source]

    # File lib/prawn/format/line.rb, line 31
31:       def spaces
32:         @spaces ||= begin
33:           spaces = instructions.inject(0) { |sum, instruction| sum + instruction.spaces }
34:           [1, spaces].max
35:         end
36:       end

[Source]

    # File lib/prawn/format/line.rb, line 31
31:       def spaces
32:         @spaces ||= begin
33:           spaces = instructions.inject(0) { |sum, instruction| sum + instruction.spaces }
34:           [1, spaces].max
35:         end
36:       end

[Source]

    # File lib/prawn/format/line.rb, line 42
42:       def width
43:         instructions.inject(0) { |sum, instruction| sum + instruction.width }
44:       end

[Source]

    # File lib/prawn/format/line.rb, line 42
42:       def width
43:         instructions.inject(0) { |sum, instruction| sum + instruction.width }
44:       end

[Validate]