module Magick::RVG::Stretchable

The methods in this module describe the user-coordinate space. RVG and Pattern objects are stretchable.

Public Class Methods

new(*args, &block) click to toggle source
Calls superclass method
# File lib/rvg/stretchable.rb, line 123
def initialize(*args, &block)
  super()
  @vbx_x, @vbx_y, @vbx_width, @vbx_height = nil
  @meet_or_slice = 'meet'
  @align = nil
end

Public Instance Methods

viewbox(x, y, width, height) { |self| ... } click to toggle source

Describe a user coordinate system to be imposed on the viewbox. The arguments must be numbers and the width and height arguments must be positive.

# File lib/rvg/stretchable.rb, line 137
def viewbox(x, y, width, height)
  begin
    @vbx_x = Float(x)
    @vbx_y = Float(y)
    @vbx_width = Float(width)
    @vbx_height = Float(height)
  rescue ArgumentError
    raise ArgumentError, "arguments must be convertable to float (got #{x.class}, #{y.class}, #{width.class}, #{height.class})"
  end
  fail(ArgumentError, "viewbox width must be > 0 (#{width} given)") unless width >= 0
  fail(ArgumentError, "viewbox height must be > 0 (#{height} given)") unless height >= 0

  # return the user-coordinate space attributes if defined
  class << self
    unless defined? @redefined
    @redefined = true
    define_method(:x) { @vbx_x }
    define_method(:y) { @vbx_y }
    define_method(:width) { @vbx_width}
    define_method(:height) { @vbx_height }
    end
  end

  yield(self) if block_given?
  self
end