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
raise(ArgumentError, "viewbox width must be > 0 (#{width} given)") unless width >= 0
raise(ArgumentError, "viewbox height must be > 0 (#{height} given)") unless height >= 0
class << self
if not defined? @redefined then
@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