Class: Prawn::Text::Formatted::Fragment
- Inherits:
-
Object
- Object
- Prawn::Text::Formatted::Fragment
- Defined in:
- lib/prawn/text/formatted/fragment.rb
Overview
Prawn::Text::Formatted::Fragment is a state store for a formatted text fragment. It does not render anything.
Instance Attribute Summary collapse
-
#ascender ⇒ Object
Returns the value of attribute ascender.
-
#baseline ⇒ Object
Returns the value of attribute baseline.
-
#descender ⇒ Object
Returns the value of attribute descender.
-
#format_state ⇒ Object
readonly
Returns the value of attribute format_state.
-
#left ⇒ Object
Returns the value of attribute left.
-
#line_height ⇒ Object
Returns the value of attribute line_height.
-
#text ⇒ Object
readonly
Returns the value of attribute text.
- #width ⇒ Object
-
#word_spacing ⇒ Object
Returns the value of attribute word_spacing.
Instance Method Summary collapse
- #absolute_bottom ⇒ Object
- #absolute_bottom_left ⇒ Object
- #absolute_bottom_right ⇒ Object
- #absolute_bounding_box ⇒ Object
- #absolute_left ⇒ Object
- #absolute_right ⇒ Object
- #absolute_top ⇒ Object
- #absolute_top_left ⇒ Object
- #absolute_top_right ⇒ Object
- #anchor ⇒ Object
- #bottom ⇒ Object
- #bottom_left ⇒ Object
- #bottom_right ⇒ Object
- #bounding_box ⇒ Object
- #callback_objects ⇒ Object
- #character_spacing ⇒ Object
- #color ⇒ Object
- #default_direction=(direction) ⇒ Object
- #direction ⇒ Object
- #font ⇒ Object
- #height ⇒ Object
- #include_trailing_white_space! ⇒ Object
-
#initialize(text, format_state, document) ⇒ Fragment
constructor
A new instance of Fragment.
- #link ⇒ Object
- #local ⇒ Object
- #right ⇒ Object
- #size ⇒ Object
- #space_count ⇒ Object
- #strikethrough_points ⇒ Object
- #styles ⇒ Object
- #subscript? ⇒ Boolean
- #superscript? ⇒ Boolean
- #top ⇒ Object
- #top_left ⇒ Object
- #top_right ⇒ Object
- #underline_points ⇒ Object
- #y_offset ⇒ Object
Constructor Details
#initialize(text, format_state, document) ⇒ Fragment
Returns a new instance of Fragment.
23 24 25 26 27 28 29 30 31 32 |
# File 'lib/prawn/text/formatted/fragment.rb', line 23 def initialize(text, format_state, document) @format_state = format_state @document = document @word_spacing = 0 # keep the original value of "text", so we can reinitialize @text if formatting parameters # like text direction are changed @original_text = text @text = process_text(@original_text) end |
Instance Attribute Details
#ascender ⇒ Object
Returns the value of attribute ascender.
20 21 22 |
# File 'lib/prawn/text/formatted/fragment.rb', line 20 def ascender @ascender end |
#baseline ⇒ Object
Returns the value of attribute baseline.
21 22 23 |
# File 'lib/prawn/text/formatted/fragment.rb', line 21 def baseline @baseline end |
#descender ⇒ Object
Returns the value of attribute descender.
20 21 22 |
# File 'lib/prawn/text/formatted/fragment.rb', line 20 def descender @descender end |
#format_state ⇒ Object (readonly)
Returns the value of attribute format_state.
18 19 20 |
# File 'lib/prawn/text/formatted/fragment.rb', line 18 def format_state @format_state end |
#left ⇒ Object
Returns the value of attribute left.
21 22 23 |
# File 'lib/prawn/text/formatted/fragment.rb', line 21 def left @left end |
#line_height ⇒ Object
Returns the value of attribute line_height.
20 21 22 |
# File 'lib/prawn/text/formatted/fragment.rb', line 20 def line_height @line_height end |
#text ⇒ Object (readonly)
Returns the value of attribute text.
18 19 20 |
# File 'lib/prawn/text/formatted/fragment.rb', line 18 def text @text end |
#width ⇒ Object
34 35 36 37 38 |
# File 'lib/prawn/text/formatted/fragment.rb', line 34 def width if @word_spacing == 0 then @width else @width + @word_spacing * space_count end end |
#word_spacing ⇒ Object
Returns the value of attribute word_spacing.
21 22 23 |
# File 'lib/prawn/text/formatted/fragment.rb', line 21 def word_spacing @word_spacing end |
Instance Method Details
#absolute_bottom ⇒ Object
186 187 188 |
# File 'lib/prawn/text/formatted/fragment.rb', line 186 def absolute_bottom absolute_bounding_box[1] end |
#absolute_bottom_left ⇒ Object
198 199 200 |
# File 'lib/prawn/text/formatted/fragment.rb', line 198 def absolute_bottom_left [absolute_left, absolute_bottom] end |
#absolute_bottom_right ⇒ Object
202 203 204 |
# File 'lib/prawn/text/formatted/fragment.rb', line 202 def absolute_bottom_right [absolute_right, absolute_bottom] end |
#absolute_bounding_box ⇒ Object
63 64 65 66 67 68 69 70 |
# File 'lib/prawn/text/formatted/fragment.rb', line 63 def absolute_bounding_box box = bounding_box box[0] += @document.bounds.absolute_left box[2] += @document.bounds.absolute_left box[1] += @document.bounds.absolute_bottom box[3] += @document.bounds.absolute_bottom box end |
#absolute_left ⇒ Object
174 175 176 |
# File 'lib/prawn/text/formatted/fragment.rb', line 174 def absolute_left absolute_bounding_box[0] end |
#absolute_right ⇒ Object
178 179 180 |
# File 'lib/prawn/text/formatted/fragment.rb', line 178 def absolute_right absolute_bounding_box[2] end |
#absolute_top ⇒ Object
182 183 184 |
# File 'lib/prawn/text/formatted/fragment.rb', line 182 def absolute_top absolute_bounding_box[3] end |
#absolute_top_left ⇒ Object
190 191 192 |
# File 'lib/prawn/text/formatted/fragment.rb', line 190 def absolute_top_left [absolute_left, absolute_top] end |
#absolute_top_right ⇒ Object
194 195 196 |
# File 'lib/prawn/text/formatted/fragment.rb', line 194 def absolute_top_right [absolute_right, absolute_top] end |
#anchor ⇒ Object
90 91 92 |
# File 'lib/prawn/text/formatted/fragment.rb', line 90 def anchor @format_state[:anchor] end |
#bottom ⇒ Object
154 155 156 |
# File 'lib/prawn/text/formatted/fragment.rb', line 154 def bottom baseline - descender end |
#bottom_left ⇒ Object
170 171 172 |
# File 'lib/prawn/text/formatted/fragment.rb', line 170 def bottom_left [left, bottom] end |
#bottom_right ⇒ Object
166 167 168 |
# File 'lib/prawn/text/formatted/fragment.rb', line 166 def bottom_right [right, bottom] end |
#bounding_box ⇒ Object
59 60 61 |
# File 'lib/prawn/text/formatted/fragment.rb', line 59 def bounding_box [left, bottom, right, top] end |
#callback_objects ⇒ Object
135 136 137 138 139 140 141 142 143 144 |
# File 'lib/prawn/text/formatted/fragment.rb', line 135 def callback_objects callback = @format_state[:callback] if callback.nil? [] elsif callback.is_a?(Array) callback else [callback] end end |
#character_spacing ⇒ Object
110 111 112 113 |
# File 'lib/prawn/text/formatted/fragment.rb', line 110 def character_spacing @format_state[:character_spacing] || @document.character_spacing end |
#color ⇒ Object
98 99 100 |
# File 'lib/prawn/text/formatted/fragment.rb', line 98 def color @format_state[:color] end |
#default_direction=(direction) ⇒ Object
119 120 121 122 123 124 |
# File 'lib/prawn/text/formatted/fragment.rb', line 119 def default_direction=(direction) unless @format_state[:direction] @format_state[:direction] = direction @text = process_text(@original_text) end end |
#direction ⇒ Object
115 116 117 |
# File 'lib/prawn/text/formatted/fragment.rb', line 115 def direction @format_state[:direction] end |
#font ⇒ Object
102 103 104 |
# File 'lib/prawn/text/formatted/fragment.rb', line 102 def font @format_state[:font] end |
#height ⇒ Object
40 41 42 |
# File 'lib/prawn/text/formatted/fragment.rb', line 40 def height top - bottom end |
#include_trailing_white_space! ⇒ Object
126 127 128 129 |
# File 'lib/prawn/text/formatted/fragment.rb', line 126 def include_trailing_white_space! @format_state.delete(:exclude_trailing_white_space) @text = process_text(@original_text) end |
#link ⇒ Object
86 87 88 |
# File 'lib/prawn/text/formatted/fragment.rb', line 86 def link @format_state[:link] end |
#local ⇒ Object
94 95 96 |
# File 'lib/prawn/text/formatted/fragment.rb', line 94 def local @format_state[:local] end |
#right ⇒ Object
146 147 148 |
# File 'lib/prawn/text/formatted/fragment.rb', line 146 def right left + width end |
#size ⇒ Object
106 107 108 |
# File 'lib/prawn/text/formatted/fragment.rb', line 106 def size @format_state[:size] end |
#space_count ⇒ Object
131 132 133 |
# File 'lib/prawn/text/formatted/fragment.rb', line 131 def space_count @text.count(" ") end |
#strikethrough_points ⇒ Object
77 78 79 80 |
# File 'lib/prawn/text/formatted/fragment.rb', line 77 def strikethrough_points y = baseline + ascender * 0.3 [[left, y], [right, y]] end |
#styles ⇒ Object
82 83 84 |
# File 'lib/prawn/text/formatted/fragment.rb', line 82 def styles @format_state[:styles] || [] end |
#subscript? ⇒ Boolean
44 45 46 |
# File 'lib/prawn/text/formatted/fragment.rb', line 44 def subscript? styles.include?(:subscript) end |
#superscript? ⇒ Boolean
48 49 50 |
# File 'lib/prawn/text/formatted/fragment.rb', line 48 def superscript? styles.include?(:superscript) end |
#top ⇒ Object
150 151 152 |
# File 'lib/prawn/text/formatted/fragment.rb', line 150 def top baseline + ascender end |
#top_left ⇒ Object
158 159 160 |
# File 'lib/prawn/text/formatted/fragment.rb', line 158 def top_left [left, top] end |
#top_right ⇒ Object
162 163 164 |
# File 'lib/prawn/text/formatted/fragment.rb', line 162 def top_right [right, top] end |
#underline_points ⇒ Object
72 73 74 75 |
# File 'lib/prawn/text/formatted/fragment.rb', line 72 def underline_points y = baseline - 1.25 [[left, y], [right, y]] end |
#y_offset ⇒ Object
52 53 54 55 56 57 |
# File 'lib/prawn/text/formatted/fragment.rb', line 52 def y_offset if subscript? then -descender elsif superscript? then 0.85 * ascender else 0 end end |