Class: Prawn::Text::Formatted::Fragment

Inherits:
Object
  • Object
show all
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

Instance Method Summary collapse

Constructor Details

#initialize(text, format_state, document) ⇒ Fragment

Returns a new instance of Fragment.



23
24
25
26
27
28
# File 'lib/prawn/text/formatted/fragment.rb', line 23

def initialize(text, format_state, document)
  @text = text
  @format_state = format_state
  @document = document
  @word_spacing = 0
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



30
31
32
33
34
# File 'lib/prawn/text/formatted/fragment.rb', line 30

def width
  if @word_spacing == 0 then @width
  else @width + @word_spacing * @text.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



158
159
160
# File 'lib/prawn/text/formatted/fragment.rb', line 158

def absolute_bottom
  absolute_bounding_box[1]
end

#absolute_bottom_left ⇒ Object



170
171
172
# File 'lib/prawn/text/formatted/fragment.rb', line 170

def absolute_bottom_left
  [absolute_left, absolute_bottom]
end

#absolute_bottom_right ⇒ Object



174
175
176
# File 'lib/prawn/text/formatted/fragment.rb', line 174

def absolute_bottom_right
  [absolute_right, absolute_bottom]
end

#absolute_bounding_box ⇒ Object



59
60
61
62
63
64
65
66
# File 'lib/prawn/text/formatted/fragment.rb', line 59

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



146
147
148
# File 'lib/prawn/text/formatted/fragment.rb', line 146

def absolute_left
  absolute_bounding_box[0]
end

#absolute_right ⇒ Object



150
151
152
# File 'lib/prawn/text/formatted/fragment.rb', line 150

def absolute_right
  absolute_bounding_box[2]
end

#absolute_top ⇒ Object



154
155
156
# File 'lib/prawn/text/formatted/fragment.rb', line 154

def absolute_top
  absolute_bounding_box[3]
end

#absolute_top_left ⇒ Object



162
163
164
# File 'lib/prawn/text/formatted/fragment.rb', line 162

def absolute_top_left
  [absolute_left, absolute_top]
end

#absolute_top_right ⇒ Object



166
167
168
# File 'lib/prawn/text/formatted/fragment.rb', line 166

def absolute_top_right
  [absolute_right, absolute_top]
end

#anchor ⇒ Object



86
87
88
# File 'lib/prawn/text/formatted/fragment.rb', line 86

def anchor
  @format_state[:anchor]
end

#bottom ⇒ Object



126
127
128
# File 'lib/prawn/text/formatted/fragment.rb', line 126

def bottom
  baseline - descender
end

#bottom_left ⇒ Object



142
143
144
# File 'lib/prawn/text/formatted/fragment.rb', line 142

def bottom_left
  [left, bottom]
end

#bottom_right ⇒ Object



138
139
140
# File 'lib/prawn/text/formatted/fragment.rb', line 138

def bottom_right
  [right, bottom]
end

#bounding_box ⇒ Object



55
56
57
# File 'lib/prawn/text/formatted/fragment.rb', line 55

def bounding_box
  [left, bottom, right, top]
end

#callback_objects ⇒ Object



107
108
109
110
111
112
113
114
115
116
# File 'lib/prawn/text/formatted/fragment.rb', line 107

def callback_objects
  callback = @format_state[:callback]
  if callback.nil?
    []
  elsif callback.is_a?(Array)
    callback
  else
    [callback]
  end
end

#character_spacing ⇒ Object



102
103
104
105
# File 'lib/prawn/text/formatted/fragment.rb', line 102

def character_spacing
  @format_state[:character_spacing] ||
    @document.character_spacing
end

#color ⇒ Object



90
91
92
# File 'lib/prawn/text/formatted/fragment.rb', line 90

def color
  @format_state[:color]
end

#font ⇒ Object



94
95
96
# File 'lib/prawn/text/formatted/fragment.rb', line 94

def font
  @format_state[:font]
end

#height ⇒ Object



36
37
38
# File 'lib/prawn/text/formatted/fragment.rb', line 36

def height
  top - bottom
end


82
83
84
# File 'lib/prawn/text/formatted/fragment.rb', line 82

def link
  @format_state[:link]
end

#right ⇒ Object



118
119
120
# File 'lib/prawn/text/formatted/fragment.rb', line 118

def right
  left + width
end

#size ⇒ Object



98
99
100
# File 'lib/prawn/text/formatted/fragment.rb', line 98

def size
  @format_state[:size]
end

#strikethrough_points ⇒ Object



73
74
75
76
# File 'lib/prawn/text/formatted/fragment.rb', line 73

def strikethrough_points
  y = baseline + ascender * 0.3
  [[left, y], [right, y]]
end

#styles ⇒ Object



78
79
80
# File 'lib/prawn/text/formatted/fragment.rb', line 78

def styles
  @format_state[:styles] || []
end

#subscript? ⇒ Boolean

Returns:

  • (Boolean)


40
41
42
# File 'lib/prawn/text/formatted/fragment.rb', line 40

def subscript?
  styles.include?(:subscript)
end

#superscript? ⇒ Boolean

Returns:

  • (Boolean)


44
45
46
# File 'lib/prawn/text/formatted/fragment.rb', line 44

def superscript?
  styles.include?(:superscript)
end

#top ⇒ Object



122
123
124
# File 'lib/prawn/text/formatted/fragment.rb', line 122

def top
  baseline + ascender
end

#top_left ⇒ Object



130
131
132
# File 'lib/prawn/text/formatted/fragment.rb', line 130

def top_left
  [left, top]
end

#top_right ⇒ Object



134
135
136
# File 'lib/prawn/text/formatted/fragment.rb', line 134

def top_right
  [right, top]
end

#underline_points ⇒ Object



68
69
70
71
# File 'lib/prawn/text/formatted/fragment.rb', line 68

def underline_points
  y = baseline - 1.25
  [[left, y], [right, y]]
end

#y_offset ⇒ Object



48
49
50
51
52
53
# File 'lib/prawn/text/formatted/fragment.rb', line 48

def y_offset
  if subscript? then -descender
  elsif superscript? then 0.85 * ascender
  else 0
  end
end