Class: Prawn::Document::BoundingBox

Inherits:
Object
  • Object
show all
Defined in:
lib/worker/pdf_writer/bounding_box.rb

Direct Known Subclasses

ColumnBox

Instance Method Summary collapse

Constructor Details

#initialize(document, parent, point, options = {}) ⇒ BoundingBox

Returns a new instance of BoundingBox.



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/worker/pdf_writer/bounding_box.rb', line 9

def initialize(document, parent, point, options = {})
  unless options[:width]
    raise ArgumentError, 'BoundingBox needs the :width option to be set'
  end

  @document = document
  @parent = parent
  @x, @y = point
  @base_x, @base_y = point
  @width = options[:width]
  @base_width = options[:width]
  @height = options[:height]
  @base_height = options[:height]
  @total_left_padding = 0
  @total_right_padding = 0
  @stretched_height = nil
  @margins = {}
  @base_margins = []
  if options.key?(:base_margins) && !options[:base_margins].nil?
    @base_margins = options[:base_margins]
  end
        
end

Instance Method Details

#absolute_leftObject



44
45
46
47
48
49
50
51
52
53
54
# File 'lib/worker/pdf_writer/bounding_box.rb', line 44

def absolute_left
  update_margins

  margin = 0
  
  if !@margins.empty?
    margin = @margins[:left]
  end

  @base_x + margin
end

#absolute_topObject



56
57
58
59
60
61
62
63
64
65
66
# File 'lib/worker/pdf_writer/bounding_box.rb', line 56

def absolute_top
  update_margins

  margin = 0

  if !@margins.empty?
    margin = @margins[:top]
  end
  
  @base_y - margin
end

#add_left_padding(left_padding) ⇒ Object

Increase the left padding of the bounding box.



110
111
112
113
114
# File 'lib/worker/pdf_writer/bounding_box.rb', line 110

def add_left_padding(left_padding)
  @total_left_padding += left_padding
  @base_x += left_padding
  @base_width -= left_padding
end

#add_right_padding(right_padding) ⇒ Object

Increase the right padding of the bounding box.



124
125
126
127
# File 'lib/worker/pdf_writer/bounding_box.rb', line 124

def add_right_padding(right_padding)
  @total_right_padding += right_padding
  @base_width -= right_padding
end

#heightObject



95
96
97
98
99
100
101
102
103
104
105
106
107
# File 'lib/worker/pdf_writer/bounding_box.rb', line 95

def height
  update_margins

  margin_top = 0
  margin_bottom = 0
  
  if !@margins.empty?
    margin_top = @margins[:top]
    margin_bottom = @margins[:bottom]
  end

  @base_height - (margin_top + margin_bottom)
end

#subtract_left_padding(left_padding) ⇒ Object

Decrease the left padding of the bounding box.



117
118
119
120
121
# File 'lib/worker/pdf_writer/bounding_box.rb', line 117

def subtract_left_padding(left_padding)
  @total_left_padding -= left_padding
  @base_x -= left_padding
  @base_width += left_padding
end

#subtract_right_padding(right_padding) ⇒ Object

Decrease the right padding of the bounding box.



130
131
132
133
# File 'lib/worker/pdf_writer/bounding_box.rb', line 130

def subtract_right_padding(right_padding)
  @total_right_padding -= right_padding
  @base_width += right_padding
end

#topObject



68
69
70
71
72
73
74
75
76
77
78
# File 'lib/worker/pdf_writer/bounding_box.rb', line 68

def top
  update_margins

  margin = 0

  if !@margins.empty?
    margin = @margins[:top]
  end

  height - margin
end

#update_marginsObject



33
34
35
36
37
38
39
40
41
42
# File 'lib/worker/pdf_writer/bounding_box.rb', line 33

def update_margins

  @margins = {}

  if @base_margins.count > 0

      @margins = @base_margins[(@document.page_count - 1) % @base_margins.count]
      
        end
end

#widthObject



80
81
82
83
84
85
86
87
88
89
90
91
92
93
# File 'lib/worker/pdf_writer/bounding_box.rb', line 80

def width
  update_margins

  margin_left = 0
  margin_right = 0
  
  if !@margins.empty?
    margin_left = @margins[:left]
    margin_right = @margins[:right]
  end
  
  
  @base_width - (margin_left + margin_right)
end