90: def Color.to_a(color)
91: return color if color.is_a?(::Array)
92:
93: if (color.respond_to? :r and color.respond_to? :g and color.respond_to? :b)
94: r = (color.respond_to?(:r) ? color.r : color[0]).to_f / 255
95: g = (color.respond_to?(:g) ? color.g : color[1]).to_f / 255
96: b = (color.respond_to?(:b) ? color.b : color[2]).to_f / 255
97: return [r, g, b]
98:
99: elsif (color.respond_to? :c and color.respond_to? :m and color.respond_to? :y and color.respond_to? :k)
100: c = (color.respond_to?(:c) ? color.c : color[0]).to_f
101: m = (color.respond_to?(:m) ? color.m : color[1]).to_f
102: y = (color.respond_to?(:y) ? color.y : color[2]).to_f
103: k = (color.respond_to?(:k) ? color.k : color[3]).to_f
104: return [c,m,y,k]
105:
106: elsif color.respond_to?:g or (0.0..1.0) === color
107: g = color.respond_to?(:g) ? color.g : color
108: return [ g ]
109:
110: else
111: raise TypeError, "Invalid color : #{color}"
112: end
113: end