# File lib/png.rb, line 342 def self.from_hsv h, s, v r = g = b = v # gray unless s == 0.0 then h += 255 if h < 0 h = h / 255.0 * 6.0 s = s / 255.0 v = v / 255.0 i = h.floor f = h - i p = v * (1 - (s)) q = v * (1 - (s * (f))) w = v * (1 - (s * (1-f))) r, g, b = case i when 0,6 then [ v, w, p ] when 1 then [ q, v, p ] when 2 then [ p, v, w ] when 3 then [ p, q, v ] when 4 then [ w, p, v ] when 5 then [ v, p, q ] else raise [h, s, v, i, f, p, q, w].inspect end end self.new((r * 255).round, (g * 255).round, (b * 255).round) end