# File lib/cairo/color.rb, line 4
    def parse(value, robust=false)
      return value.dup if value.is_a?(Base)
      case value
      when Array
        case value.first
        when :cmyk, :cmyka
          CMYK.new(*value[1..-1])
        when :hsv, :hsva
          HSV.new(*value[1..-1])
        else
          type, *value = value if [:rgb, :rgba].include?(value.first)
          RGB.new(*value)
        end
      when /\A#/ #
        parse_hex_color(value)
      when String, Symbol
        name = Cairo.normalize_const_name(value)
        begin
          const_get(name).dup
        rescue NameError
          raise ArgumentError, "unknown color name: #{value}"
        end
      else
        if robust
          raise ArgumentError, "can't parse as color name: #{value.inspect}"
        end
        value
      end
    end