class HexaPDF::Layout::ImageBox

Also see: HexaPDF::Content::Canvas#image
composer.image(machu_picchu)
#>pdf-composer100
* If neither has been set, the image is scaled to fit the available space.
composer.image(machu_picchu, width: 100, height: 30)
#>pdf-composer100
* If both have been set, both are used as is.
composer.image(machu_picchu, height: 40)
composer.image(machu_picchu, width: 40)
#>pdf-composer100
* If one of them has been set, the other is adjusted to retain the image ratio.
of the box has been set:
How an image is displayed inside an image box, depends on whether the width and/or height
It can either be used directly or through the HexaPDF::Composer#image method.
An Image box object is used for displaying an image.

def draw_content(canvas, x, y)

Draws the image onto the canvas at position [x, y].
def draw_content(canvas, x, y)
  canvas.image(@image, at: [x, y], width: content_width, height: content_height)
end

def empty?

Returns +false+ since the image is always drawn if it fits.
def empty?
  false
end

def fit(available_width, available_height, _frame)

account (see the class description for details).
Fits the image into the available space, taking the initially set width and height into
def fit(available_width, available_height, _frame)
  image_width = @image.width.to_f
  image_height = @image.height.to_f
  image_ratio = image_width / image_height
  if @initial_width > 0 && @initial_height > 0
    @width = @initial_width
    @height = @initial_height
  elsif @initial_width > 0
    @width = @initial_width
    @height = (@width - reserved_width) / image_ratio + reserved_height
  elsif @initial_height > 0
    @height = @initial_height
    @width = (@height - reserved_height) * image_ratio + reserved_width
  else
    rw = reserved_width
    rh = reserved_height
    ratio = [(available_width - rw) / image_width, (available_height - rh) / image_height].min
    @width = image_width * ratio + rw
    @height = image_height * ratio + rh
  end
  @fit_successful = float_compare(@width, available_width) <= 0 &&
    float_compare(@height, available_height) <= 0
end

def initialize(image:, **kwargs)

object (e.g. returned by HexaPDF::Document::Images#add).
Creates a new Image box object for the given +image+ argument which needs to be an image
def initialize(image:, **kwargs)
  super(**kwargs)
  @image = image
end