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 Attribute Summary collapse
-
#parent ⇒ Object
readonly
Returns the value of attribute parent.
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
an alias for absolute_left.
-
#move_past_bottom ⇒ Object
starts a new page.
-
#right ⇒ Object
Relative right x-coordinate of the bounding box.
-
#right_side ⇒ Object
an alias for absolute_right.
-
#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:
203 204 205 206 207 208 209 210 211 212 |
# File 'lib/prawn/document/bounding_box.rb', line 203 def initialize(parent, point, ={}) #:nodoc: unless [:width] raise ArgumentError, "BoundingBox needs the :width option to be set" end @parent = parent @x, @y = point @width, @height = [:width], [:height] @stretched_height = nil end |
Instance Attribute Details
#parent ⇒ Object (readonly)
Returns the value of attribute parent.
214 215 216 |
# File 'lib/prawn/document/bounding_box.rb', line 214 def parent @parent end |
Instance Method Details
#absolute_bottom ⇒ Object
Absolute bottom y-coordinate of the bottom box
354 355 356 |
# File 'lib/prawn/document/bounding_box.rb', line 354 def absolute_bottom @y - height end |
#absolute_bottom_left ⇒ Object
Absolute bottom-left point of the bounding box
372 373 374 |
# File 'lib/prawn/document/bounding_box.rb', line 372 def absolute_bottom_left [absolute_left, absolute_bottom] end |
#absolute_bottom_right ⇒ Object
Absolute bottom-left point of the bounding box
378 379 380 |
# File 'lib/prawn/document/bounding_box.rb', line 378 def absolute_bottom_right [absolute_right, absolute_bottom] end |
#absolute_left ⇒ Object
Absolute left x-coordinate of the bounding box
336 337 338 |
# File 'lib/prawn/document/bounding_box.rb', line 336 def absolute_left @x end |
#absolute_right ⇒ Object
Absolute right x-coordinate of the bounding box
342 343 344 |
# File 'lib/prawn/document/bounding_box.rb', line 342 def absolute_right @x + width end |
#absolute_top ⇒ Object
Absolute top y-coordinate of the bounding box
348 349 350 |
# File 'lib/prawn/document/bounding_box.rb', line 348 def absolute_top @y end |
#absolute_top_left ⇒ Object
Absolute top-left point of the bounding box
360 361 362 |
# File 'lib/prawn/document/bounding_box.rb', line 360 def absolute_top_left [absolute_left, absolute_top] end |
#absolute_top_right ⇒ Object
Absolute top-right point of the bounding box
366 367 368 |
# File 'lib/prawn/document/bounding_box.rb', line 366 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
219 220 221 |
# File 'lib/prawn/document/bounding_box.rb', line 219 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:
draw_text('hello', :at => [0, (bounds.bottom + 3)])
280 281 282 |
# File 'lib/prawn/document/bounding_box.rb', line 280 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
330 331 332 |
# File 'lib/prawn/document/bounding_box.rb', line 330 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
318 319 320 |
# File 'lib/prawn/document/bounding_box.rb', line 318 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.
392 393 394 395 |
# File 'lib/prawn/document/bounding_box.rb', line 392 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
Example:
indent 20 do
text "20 points in"
indent 30 do
text "50 points in"
end
end
245 246 247 248 249 250 251 252 |
# File 'lib/prawn/document/bounding_box.rb', line 245 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:
draw_text('hello', :at => [(bounds.left + 3), 0])
229 230 231 |
# File 'lib/prawn/document/bounding_box.rb', line 229 def left 0 end |
#left_side ⇒ Object
an alias for absolute_left
49 50 51 |
# File 'lib/prawn/document/column_box.rb', line 49 def left_side absolute_left end |
#move_past_bottom ⇒ Object
starts a new page
59 60 61 |
# File 'lib/prawn/document/column_box.rb', line 59 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:
draw_text('hello', :at => [(bounds.right - 3), 0])
260 261 262 |
# File 'lib/prawn/document/bounding_box.rb', line 260 def right @width end |
#right_side ⇒ Object
an alias for absolute_right
54 55 56 |
# File 'lib/prawn/document/column_box.rb', line 54 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.
402 403 404 |
# File 'lib/prawn/document/bounding_box.rb', line 402 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)])
270 271 272 |
# File 'lib/prawn/document/bounding_box.rb', line 270 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
293 294 295 |
# File 'lib/prawn/document/bounding_box.rb', line 293 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
306 307 308 |
# File 'lib/prawn/document/bounding_box.rb', line 306 def top_right [right,top] end |
#width ⇒ Object
Width of the bounding box
384 385 386 |
# File 'lib/prawn/document/bounding_box.rb', line 384 def width @width end |