Class: Prawn::Document::BoundingBox
- Inherits:
-
Object
- Object
- Prawn::Document::BoundingBox
- Defined in:
- 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
Defined Under Namespace
Classes: NoReferenceBounds
Stable API collapse
-
#width ⇒ Object
readonly
Width of the bounding box.
Stable API 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.
-
#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.
-
#left ⇒ Object
Relative left x-coordinate of the bounding box.
-
#right ⇒ Object
Relative right x-coordinate of the bounding box.
-
#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.
Extension API collapse
-
#move_past_bottom ⇒ Object
Moves to the top of the next page of the document, starting a new page if necessary.
-
#reference_bounds ⇒ Object
Returns the innermost non-stretchy bounding box.
-
#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.
Instance Attribute Details
#width ⇒ Object (readonly)
Width of the bounding box
463 464 465 |
# File 'lib/prawn/document/bounding_box.rb', line 463 def width @width end |
Instance Method Details
#absolute_bottom ⇒ Object
Absolute bottom y-coordinate of the bottom box
434 435 436 |
# File 'lib/prawn/document/bounding_box.rb', line 434 def absolute_bottom @y - height end |
#absolute_bottom_left ⇒ Object
Absolute bottom-left point of the bounding box
452 453 454 |
# File 'lib/prawn/document/bounding_box.rb', line 452 def absolute_bottom_left [absolute_left, absolute_bottom] end |
#absolute_bottom_right ⇒ Object
Absolute bottom-left point of the bounding box
458 459 460 |
# File 'lib/prawn/document/bounding_box.rb', line 458 def absolute_bottom_right [absolute_right, absolute_bottom] end |
#absolute_left ⇒ Object
Absolute left x-coordinate of the bounding box
416 417 418 |
# File 'lib/prawn/document/bounding_box.rb', line 416 def absolute_left @x end |
#absolute_right ⇒ Object
Absolute right x-coordinate of the bounding box
422 423 424 |
# File 'lib/prawn/document/bounding_box.rb', line 422 def absolute_right @x + width end |
#absolute_top ⇒ Object
Absolute top y-coordinate of the bounding box
428 429 430 |
# File 'lib/prawn/document/bounding_box.rb', line 428 def absolute_top @y end |
#absolute_top_left ⇒ Object
Absolute top-left point of the bounding box
440 441 442 |
# File 'lib/prawn/document/bounding_box.rb', line 440 def absolute_top_left [absolute_left, absolute_top] end |
#absolute_top_right ⇒ Object
Absolute top-right point of the bounding box
446 447 448 |
# File 'lib/prawn/document/bounding_box.rb', line 446 def absolute_top_right [absolute_right, absolute_top] 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:
draw_text('hello', :at => [0, (bounds.bottom + 3)])
360 361 362 |
# File 'lib/prawn/document/bounding_box.rb', line 360 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
410 411 412 |
# File 'lib/prawn/document/bounding_box.rb', line 410 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
398 399 400 |
# File 'lib/prawn/document/bounding_box.rb', line 398 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.
469 470 471 472 473 474 475 476 |
# File 'lib/prawn/document/bounding_box.rb', line 469 def height return @height if @height @stretched_height = [ (absolute_top - @document.y), @stretched_height.to_f ].max 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:
draw_text('hello', :at => [(bounds.left + 3), 0])
274 275 276 |
# File 'lib/prawn/document/bounding_box.rb', line 274 def left 0 end |
#move_past_bottom ⇒ Object
Moves to the top of the next page of the document, starting a new page if necessary.
495 496 497 498 499 500 501 |
# File 'lib/prawn/document/bounding_box.rb', line 495 def move_past_bottom if @document.page_number == @document.page_count @document.start_new_page else @document.go_to_page(@document.page_number + 1) end end |
#reference_bounds ⇒ Object
Returns the innermost non-stretchy bounding box.
513 514 515 516 517 518 519 520 521 |
# File 'lib/prawn/document/bounding_box.rb', line 513 def reference_bounds if stretchy? raise NoReferenceBounds unless @parent @parent.reference_bounds else self end 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:
draw_text('hello', :at => [(bounds.right - 3), 0])
340 341 342 |
# File 'lib/prawn/document/bounding_box.rb', line 340 def right @width 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.
507 508 509 |
# File 'lib/prawn/document/bounding_box.rb', line 507 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:
draw_text('hello', :at => [0, (bounds.top - 3)])
350 351 352 |
# File 'lib/prawn/document/bounding_box.rb', line 350 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.top_left, bounds.bottom_right)
end
373 374 375 |
# File 'lib/prawn/document/bounding_box.rb', line 373 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
386 387 388 |
# File 'lib/prawn/document/bounding_box.rb', line 386 def top_right [right, top] end |