| Class | Prawn::Format::State |
| In: |
lib/prawn/format/state.rb
lib/prawn/format/state.rb |
| Parent: | Object |
| HTML_COLORS | = | { "aqua" => "00FFFF", "black" => "000000", "blue" => "0000FF", "fuchsia" => "FF00FF", "gray" => "808080", "green" => "008000", "lime" => "00FF00", "maroon" => "800000", "navy" => "000080", "olive" => "808000", "purple" => "800080", "red" => "FF0000", "silver" => "C0C0C0", "teal" => "008080", "white" => "FFFFFF", "yellow" => "FFFF00" |
| HTML_COLORS | = | { "aqua" => "00FFFF", "black" => "000000", "blue" => "0000FF", "fuchsia" => "FF00FF", "gray" => "808080", "green" => "008000", "lime" => "00FF00", "maroon" => "800000", "navy" => "000080", "olive" => "808000", "purple" => "800080", "red" => "FF0000", "silver" => "C0C0C0", "teal" => "008080", "white" => "FFFFFF", "yellow" => "FFFF00" |
| document | [R] | |
| document | [R] | |
| original_style | [R] | |
| original_style | [R] | |
| style | [R] | |
| style | [R] |
# File lib/prawn/format/state.rb, line 9
9: def initialize(document, options={})
10: @document = document
11: @previous = options[:previous]
12:
13: @original_style = (@previous && @previous.inheritable_style || {}).
14: merge(options[:style] || {})
15:
16: compute_styles!
17:
18: @style[:kerning] = font.has_kerning_data? unless @style.key?(:kerning)
19: end
# File lib/prawn/format/state.rb, line 9
9: def initialize(document, options={})
10: @document = document
11: @previous = options[:previous]
12:
13: @original_style = (@previous && @previous.inheritable_style || {}).
14: merge(options[:style] || {})
15:
16: compute_styles!
17:
18: @style[:kerning] = font.has_kerning_data? unless @style.key?(:kerning)
19: end
# File lib/prawn/format/state.rb, line 100
100: def apply!(text_object, cookies)
101: if cookies[:color] != color
102: cookies[:color] = color
103: text_object.fill_color(color)
104: end
105:
106: if cookies[:vertical_align] != vertical_align
107: cookies[:vertical_align] = vertical_align
108: text_object.rise(vertical_align)
109: end
110: end
# File lib/prawn/format/state.rb, line 100
100: def apply!(text_object, cookies)
101: if cookies[:color] != color
102: cookies[:color] = color
103: text_object.fill_color(color)
104: end
105:
106: if cookies[:vertical_align] != vertical_align
107: cookies[:vertical_align] = vertical_align
108: text_object.rise(vertical_align)
109: end
110: end
# File lib/prawn/format/state.rb, line 112
112: def apply_font!(text_object, cookies, subset)
113: if cookies[:font] != [font_family, pdf_font_style, font_size, subset]
114: cookies[:font] = [font_family, pdf_font_style, font_size, subset]
115: font = document.font(font_family, :style => pdf_font_style)
116: font.add_to_current_page(subset)
117: text_object.font(font.identifier_for(subset), font_size)
118: end
119: end
# File lib/prawn/format/state.rb, line 112
112: def apply_font!(text_object, cookies, subset)
113: if cookies[:font] != [font_family, pdf_font_style, font_size, subset]
114: cookies[:font] = [font_family, pdf_font_style, font_size, subset]
115: font = document.font(font_family, :style => pdf_font_style)
116: font.add_to_current_page(subset)
117: text_object.font(font.identifier_for(subset), font_size)
118: end
119: end
# File lib/prawn/format/state.rb, line 80
80: def font
81: @font ||= document.find_font(font_family, :style => pdf_font_style)
82: end
# File lib/prawn/format/state.rb, line 80
80: def font
81: @font ||= document.find_font(font_family, :style => pdf_font_style)
82: end
# File lib/prawn/format/state.rb, line 48
48: def font_family
49: @style[:font_family] || "Helvetica"
50: end
# File lib/prawn/format/state.rb, line 48
48: def font_family
49: @style[:font_family] || "Helvetica"
50: end
# File lib/prawn/format/state.rb, line 52
52: def font_style
53: @style[:font_style] || :normal
54: end
# File lib/prawn/format/state.rb, line 52
52: def font_style
53: @style[:font_style] || :normal
54: end
# File lib/prawn/format/state.rb, line 56
56: def font_weight
57: @style[:font_weight] || :normal
58: end
# File lib/prawn/format/state.rb, line 56
56: def font_weight
57: @style[:font_weight] || :normal
58: end
# File lib/prawn/format/state.rb, line 21
21: def inheritable_style
22: @inheritable_style ||= begin
23: subset = original_style.dup
24: subset.delete(:meta)
25: subset.delete(:display)
26: subset.delete(:width)
27:
28: # explicitly set font-size so that relative font-sizes don't get
29: # recomputed upon each nesting.
30: subset[:font_size] = font_size
31:
32: subset
33: end
34: end
# File lib/prawn/format/state.rb, line 21
21: def inheritable_style
22: @inheritable_style ||= begin
23: subset = original_style.dup
24: subset.delete(:meta)
25: subset.delete(:display)
26: subset.delete(:width)
27:
28: # explicitly set font-size so that relative font-sizes don't get
29: # recomputed upon each nesting.
30: subset[:font_size] = font_size
31:
32: subset
33: end
34: end
# File lib/prawn/format/state.rb, line 84
84: def pdf_font_style
85: if bold? && italic?
86: :bold_italic
87: elsif bold?
88: :bold
89: elsif italic?
90: :italic
91: else
92: :normal
93: end
94: end
# File lib/prawn/format/state.rb, line 84
84: def pdf_font_style
85: if bold? && italic?
86: :bold_italic
87: elsif bold?
88: :bold
89: elsif italic?
90: :italic
91: else
92: :normal
93: end
94: end
# File lib/prawn/format/state.rb, line 129
129: def previous(attr=nil, default=nil)
130: return @previous unless attr
131: return default unless @previous
132: return @previous.send(attr) || default
133: end
# File lib/prawn/format/state.rb, line 129
129: def previous(attr=nil, default=nil)
130: return @previous unless attr
131: return default unless @previous
132: return @previous.send(attr) || default
133: end
# File lib/prawn/format/state.rb, line 68
68: def text_decoration
69: @style[:text_decoration] || :none
70: end
# File lib/prawn/format/state.rb, line 68
68: def text_decoration
69: @style[:text_decoration] || :none
70: end
# File lib/prawn/format/state.rb, line 64
64: def vertical_align
65: @style[:vertical_align] || 0
66: end
# File lib/prawn/format/state.rb, line 64
64: def vertical_align
65: @style[:vertical_align] || 0
66: end
# File lib/prawn/format/state.rb, line 72
72: def white_space
73: @style[:white_space] || :normal
74: end
# File lib/prawn/format/state.rb, line 72
72: def white_space
73: @style[:white_space] || :normal
74: end
# File lib/prawn/format/state.rb, line 96
96: def with_style(style)
97: self.class.new(document, :previous => self, :style => style)
98: end