module ChunkyPNG

def self.build_dimension_from_object(source)

def self.build_dimension_from_object(source)
  case source
  when ChunkyPNG::Dimension
    source
  when ChunkyPNG::Point
    ChunkyPNG::Dimension.new(source.x, source.y)
  when Array
    ChunkyPNG::Dimension.new(source[0], source[1])
  when Hash
    width = source[:width] || source["width"]
    height = source[:height] || source["height"]
    ChunkyPNG::Dimension.new(width, height)
  when ChunkyPNG::Dimension::DIMENSION_REGEXP
    ChunkyPNG::Dimension.new($1, $2)
  else
    if source.respond_to?(:width) && source.respond_to?(:height)
      ChunkyPNG::Dimension.new(source.width, source.height)
    else
      raise ArgumentError, "Don't know how to construct a dimension from #{source.inspect}!"
    end
  end
end