Class: Prawn::Document::BoundingBox
- Inherits:
-
Object
- Object
- Prawn::Document::BoundingBox
- Defined in:
- lib/prawn/document/column_box.rb,
lib/prawn/document/bounding_box.rb
Overview
Low level layout helper that simplifies coordinate math.
See Prawn::Document#bounding_box for a description of what this class is used for.
Direct Known Subclasses
Instance Method Summary collapse
-
#absolute_bottom ⇒ Object
Absolute bottom y-coordinate of the bottom box.
-
#absolute_bottom_left ⇒ Object
Absolute bottom-left point of the bounding box.
-
#absolute_bottom_right ⇒ Object
Absolute bottom-left point of the bounding box.
-
#absolute_left ⇒ Object
Absolute left x-coordinate of the bounding box.
-
#absolute_right ⇒ Object
Absolute right x-coordinate of the bounding box.
-
#absolute_top ⇒ Object
Absolute top y-coordinate of the bounding box.
-
#absolute_top_left ⇒ Object
Absolute top-left point of the bounding box.
-
#absolute_top_right ⇒ Object
Absolute top-right point of the bounding box.
-
#anchor ⇒ Object
The translated origin (x,y-height) which describes the location of the bottom left corner of the bounding box.
-
#bottom ⇒ Object
Relative bottom y-coordinate of the bounding box (Always 0).
-
#bottom_left ⇒ Object
Relative bottom-left point of the bounding box.
-
#bottom_right ⇒ Object
Relative bottom-right point of the bounding box.
-
#height ⇒ Object
(also: #update_height)
Height of the bounding box.
-
#indent(left_padding, &block) ⇒ Object
Temporarily adjust the @x coordinate to allow for left_padding.
-
#initialize(parent, point, options = {}) ⇒ BoundingBox
constructor
:nodoc:.
-
#left ⇒ Object
Relative left x-coordinate of the bounding box.
- #left_side ⇒ Object
- #move_past_bottom ⇒ Object
-
#right ⇒ Object
Relative right x-coordinate of the bounding box.
- #right_side ⇒ Object
-
#stretchy? ⇒ Boolean
Returns
false
when the box has a defined height,true
when the height is being calculated on the fly based on the current vertical position. -
#top ⇒ Object
Relative top y-coordinate of the bounding box.
-
#top_left ⇒ Object
Relative top-left point of the bounding_box.
-
#top_right ⇒ Object
Relative top-right point of the bounding box.
-
#width ⇒ Object
Width of the bounding box.
Constructor Details
#initialize(parent, point, options = {}) ⇒ BoundingBox
:nodoc:
200 201 202 203 204 |
# File 'lib/prawn/document/bounding_box.rb', line 200 def initialize(parent, point, ={}) #:nodoc: @parent = parent @x, @y = point @width, @height = [:width], [:height] end |
Instance Method Details
#absolute_bottom ⇒ Object
Absolute bottom y-coordinate of the bottom box
335 336 337 |
# File 'lib/prawn/document/bounding_box.rb', line 335 def absolute_bottom @y - height end |
#absolute_bottom_left ⇒ Object
Absolute bottom-left point of the bounding box
353 354 355 |
# File 'lib/prawn/document/bounding_box.rb', line 353 def absolute_bottom_left [absolute_left, absolute_bottom] end |
#absolute_bottom_right ⇒ Object
Absolute bottom-left point of the bounding box
359 360 361 |
# File 'lib/prawn/document/bounding_box.rb', line 359 def absolute_bottom_right [absolute_right, absolute_bottom] end |
#absolute_left ⇒ Object
Absolute left x-coordinate of the bounding box
317 318 319 |
# File 'lib/prawn/document/bounding_box.rb', line 317 def absolute_left @x end |
#absolute_right ⇒ Object
Absolute right x-coordinate of the bounding box
323 324 325 |
# File 'lib/prawn/document/bounding_box.rb', line 323 def absolute_right @x + width end |
#absolute_top ⇒ Object
Absolute top y-coordinate of the bounding box
329 330 331 |
# File 'lib/prawn/document/bounding_box.rb', line 329 def absolute_top @y end |
#absolute_top_left ⇒ Object
Absolute top-left point of the bounding box
341 342 343 |
# File 'lib/prawn/document/bounding_box.rb', line 341 def absolute_top_left [absolute_left, absolute_top] end |
#absolute_top_right ⇒ Object
Absolute top-right point of the bounding box
347 348 349 |
# File 'lib/prawn/document/bounding_box.rb', line 347 def absolute_top_right [absolute_right, absolute_top] end |
#anchor ⇒ Object
The translated origin (x,y-height) which describes the location of the bottom left corner of the bounding box
209 210 211 |
# File 'lib/prawn/document/bounding_box.rb', line 209 def anchor [@x, @y - height] end |
#bottom ⇒ Object
Relative bottom y-coordinate of the bounding box (Always 0)
Example, position some text 3 pts from the bottom of the containing box:
text('hello', :at => [0, (bounds.bottom + 3)])
261 262 263 |
# File 'lib/prawn/document/bounding_box.rb', line 261 def bottom 0 end |
#bottom_left ⇒ Object
Relative bottom-left point of the bounding box
Example, draw a line along the left hand side of the page:
stroke do
line(bounds.bottom_left, bounds.top_left)
end
311 312 313 |
# File 'lib/prawn/document/bounding_box.rb', line 311 def bottom_left [left,bottom] end |
#bottom_right ⇒ Object
Relative bottom-right point of the bounding box
Example, draw a line along the right hand side of the page:
stroke do
line(bounds.bottom_right, bounds.top_right)
end
299 300 301 |
# File 'lib/prawn/document/bounding_box.rb', line 299 def bottom_right [right,bottom] end |
#height ⇒ Object Also known as: update_height
Height of the bounding box. If the box is ‘stretchy’ (unspecified height attribute), height is calculated as the distance from the top of the box to the current drawing position.
373 374 375 376 |
# File 'lib/prawn/document/bounding_box.rb', line 373 def height return @height if @height @stretched_height = [(absolute_top - @parent.y), @stretched_height.to_f].max end |
#indent(left_padding, &block) ⇒ Object
Temporarily adjust the @x coordinate to allow for left_padding
226 227 228 229 230 231 232 233 |
# File 'lib/prawn/document/bounding_box.rb', line 226 def indent(left_padding, &block) @x += left_padding @width -= left_padding yield ensure @x -= left_padding @width += left_padding end |
#left ⇒ Object
Relative left x-coordinate of the bounding box. (Always 0)
Example, position some text 3 pts from the left of the containing box:
text('hello', :at => [(bounds.left + 3), 0])
219 220 221 |
# File 'lib/prawn/document/bounding_box.rb', line 219 def left 0 end |
#left_side ⇒ Object
46 47 48 |
# File 'lib/prawn/document/column_box.rb', line 46 def left_side absolute_left end |
#move_past_bottom ⇒ Object
54 55 56 |
# File 'lib/prawn/document/column_box.rb', line 54 def move_past_bottom @parent.start_new_page end |
#right ⇒ Object
Relative right x-coordinate of the bounding box. (Equal to the box width)
Example, position some text 3 pts from the right of the containing box:
text('hello', :at => [(bounds.right - 3), 0])
241 242 243 |
# File 'lib/prawn/document/bounding_box.rb', line 241 def right @width end |
#right_side ⇒ Object
50 51 52 |
# File 'lib/prawn/document/column_box.rb', line 50 def right_side absolute_right end |
#stretchy? ⇒ Boolean
Returns false
when the box has a defined height, true
when the height is being calculated on the fly based on the current vertical position.
383 384 385 |
# File 'lib/prawn/document/bounding_box.rb', line 383 def stretchy? !@height end |
#top ⇒ Object
Relative top y-coordinate of the bounding box. (Equal to the box height)
Example, position some text 3 pts from the top of the containing box:
text('hello', :at => [0, (bounds.top - 3)])
251 252 253 |
# File 'lib/prawn/document/bounding_box.rb', line 251 def top height end |
#top_left ⇒ Object
Relative top-left point of the bounding_box
Example, draw a line from the top left of the box diagonally to the bottom right:
stroke do
line(bounds., bounds.bottom_right)
end
274 275 276 |
# File 'lib/prawn/document/bounding_box.rb', line 274 def top_left [left,top] end |
#top_right ⇒ Object
Relative top-right point of the bounding box
Example, draw a line from the top_right of the box diagonally to the bottom left:
stroke do
line(bounds.top_right, bounds.bottom_left)
end
287 288 289 |
# File 'lib/prawn/document/bounding_box.rb', line 287 def top_right [right,top] end |
#width ⇒ Object
Width of the bounding box
365 366 367 |
# File 'lib/prawn/document/bounding_box.rb', line 365 def width @width end |