Sha256: 2f71e98fec00d565a9b150777e32a3e4e301dcaf80a4049d13112c9f1ae51639

Contents?: true

Size: 905 Bytes

Versions: 21

Compression:

Stored size: 905 Bytes

Contents

# encoding: utf-8
#
# This example is mostly just for fun, and shows how nested bounding boxes
# can simplify calculations.  See the other files in examples/bounding_box
# for more basic uses.

require "#{File.dirname(__FILE__)}/../example_helper.rb"

class Array
  def combine(arr)
    output = []
    self.each do |i1|
      arr.each do |i2|
        output += [[i1,i2]]
      end
    end
    output
  end
end

def recurse_bounding_box(pdf, max_depth=5, depth=1)
  box = pdf.bounds
  width = (box.width-15)/2
  height = (box.height-15)/2
  left_top_corners = [5, box.right-width-5].combine [box.top-5, height+5]
  left_top_corners.each do |lt|
    pdf.bounding_box(lt, :width=>width, :height=>height) do
      pdf.stroke_bounds
      recurse_bounding_box(pdf, max_depth, depth+1) if depth<max_depth
    end
  end
end

Prawn::Document.generate("russian_boxes.pdf") do |pdf|
  recurse_bounding_box(pdf)
end

Version data entries

21 entries across 21 versions & 7 rubygems

Version Path
piglop-prawn-0.10.2.3 examples/bounding_box/russian_boxes.rb
piglop-prawn-0.10.2.2 examples/bounding_box/russian_boxes.rb
piglop-prawn-0.10.2.1 examples/bounding_box/russian_boxes.rb
prawn-0.11.1.pre examples/bounding_box/russian_boxes.rb
goodwill-prawn-edge-0.10.0 examples/bounding_box/russian_boxes.rb
alphasights-prawn-0.10.4 examples/bounding_box/russian_boxes.rb
alphasights-prawn-0.10.3 examples/bounding_box/russian_boxes.rb
alphasights-prawn-0.10.2 examples/bounding_box/russian_boxes.rb
alphasights-prawn-0.10.1 examples/bounding_box/russian_boxes.rb
alphasights-prawn-0.10.0 examples/bounding_box/russian_boxes.rb
prawn-core-0.8.4 examples/bounding_box/russian_boxes.rb
prawn-graph-0.0.2 vendor/prawn-core/examples/bounding_box/russian_boxes.rb
prawn-graph-0.0.1 vendor/prawn-core/examples/bounding_box/russian_boxes.rb
prawn-core-0.7.2 examples/bounding_box/russian_boxes.rb
prawn-core-0.7.1 examples/bounding_box/russian_boxes.rb
prawn-layout-0.3.2 vendor/prawn-core/examples/bounding_box/russian_boxes.rb
prawn-core-0.6.3 examples/bounding_box/russian_boxes.rb
prawn-core-0.6.2 examples/bounding_box/russian_boxes.rb
prawn-layout-0.3.1 vendor/prawn-core/examples/bounding_box/russian_boxes.rb
prawn-core-0.6.1 examples/bounding_box/russian_boxes.rb