Sha256: a3f56319f2c86276aa364de6db935536148d9d0a1d35f2de066e2658a0cf3ce7

Contents?: true

Size: 937 Bytes

Versions: 5

Compression:

Stored size: 937 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.

$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', '..', 'lib'))
require 'prawn'

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

5 entries across 5 versions & 2 rubygems

Version Path
kavu-prawn-core-0.4.100 examples/bounding_box/russian_boxes.rb
kavu-prawn-core-0.4.99 examples/bounding_box/russian_boxes.rb
prawn-0.3.0 examples/bounding_box/russian_boxes.rb
prawn-0.4.0 examples/bounding_box/russian_boxes.rb
prawn-0.4.1 examples/bounding_box/russian_boxes.rb