Class: HexaPDF::Layout::Frame::FitResult

Inherits:
Object
  • Object
show all
Defined in:
lib/hexapdf/layout/frame.rb

Overview

Stores the result of fitting a box in a Frame.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(box) ⇒ FitResult

Initialize the result object for the given box.



114
115
116
117
118
119
# File 'lib/hexapdf/layout/frame.rb', line 114

def initialize(box)
  @box = box
  @available_width = 0
  @available_height = 0
  @success = false
end

Instance Attribute Details

#available_heightObject

The available height in the frame for this particular box.



107
108
109
# File 'lib/hexapdf/layout/frame.rb', line 107

def available_height
  @available_height
end

#available_widthObject

The available width in the frame for this particular box.



104
105
106
# File 'lib/hexapdf/layout/frame.rb', line 104

def available_width
  @available_width
end

#boxObject

The box that was fitted into the frame.



95
96
97
# File 'lib/hexapdf/layout/frame.rb', line 95

def box
  @box
end

#maskObject

The rectangle (a Geom2D::Rectangle object) that will be removed from the frame when drawing the box.



111
112
113
# File 'lib/hexapdf/layout/frame.rb', line 111

def mask
  @mask
end

#xObject

The horizontal position where the box will be drawn.



98
99
100
# File 'lib/hexapdf/layout/frame.rb', line 98

def x
  @x
end

#yObject

The vertical position where the box will be drawn.



101
102
103
# File 'lib/hexapdf/layout/frame.rb', line 101

def y
  @y
end

Instance Method Details

#draw(canvas) ⇒ Object

Draws the #box onto the canvas at (#x, #y).

The configuration option “debug” can be used to add visual debug output with respect to box placement.



135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
# File 'lib/hexapdf/layout/frame.rb', line 135

def draw(canvas)
  doc = canvas.context.document
  if doc.config['debug']
    name = "#{box.class} (#{x.to_i},#{y.to_i}-#{box.width.to_i}x#{box.height.to_i})"
    ocg = doc.optional_content.ocg(name)
    canvas.optional_content(ocg) do
      canvas.save_graphics_state do
        canvas.fill_color("green").stroke_color("darkgreen").
          opacity(fill_alpha: 0.1, stroke_alpha: 0.2).
          draw(:geom2d, object: mask, path_only: true).fill_stroke
      end
    end
    doc.optional_content.default_configuration.add_ocg_to_ui(ocg, path: 'Debug')
  end
  box.draw(canvas, x, y)
end

#success!Object

Marks the fitting status as success.



122
123
124
# File 'lib/hexapdf/layout/frame.rb', line 122

def success!
  @success = true
end

#success?Boolean

Returns true if fitting was successful.

Returns:

  • (Boolean)


127
128
129
# File 'lib/hexapdf/layout/frame.rb', line 127

def success?
  @success
end