Sha256: a69332c8b8896d94a477c146fe5d6573094db647e99206a11f50cb76e7fd6ed7
Contents?: true
Size: 1.76 KB
Versions: 3
Compression:
Stored size: 1.76 KB
Contents
module Savio RgbColor = Struct.new(:r, :g, :b) do def self.newFromHSV(hsv) rgb = hsv.to_rgb() return RgbColor.new(rgb.r,rgb.g,rgb.b) end def to_hsv() max = [r, g, b].max min = [r, g, b].min delta = max - min v = max if (max != 0.0) s = delta / max else s = 0.0 end if (s == 0.0) h = 0.0 else if (r == max) h = 0 + (g - b) / delta elsif (g == max) h = 2 + (b - r) / delta elsif (b == max) h = 4 + (r - g) / delta end h *= 60.0 if (h < 0) h += 360.0 end end return HsvColor.new(h,s,v) end end HsvColor = Struct.new(:h, :s, :v) do def self.newFromRGB(rgb) hsv = rgb.to_hsv() return HsvColor.new(hsv.h,hsv.s,hsv.v) end def to_rgb() hue = h.to_f saturation = s.to_f value = v.to_f chroma = (value * saturation).to_f hPrime = hue/60.0 x = (chroma * (1 - (hPrime % 2 - 1).abs)).to_f if 0 <= hPrime && hPrime < 1 rgb = [chroma, x, 0] elsif 1 <= hPrime && hPrime < 2 rgb = [x, chroma, 0] elsif 2 <= hPrime && hPrime < 3 rgb = [0, chroma, x] elsif 3 <= hPrime && hPrime < 4 rgb = [0, x, chroma] elsif 4 <= hPrime && hPrime < 5 rgb = [x, 0, chroma] elsif 5 <= hPrime && hPrime < 6 rgb = [chroma, 0, x] else rgb = [0,0,0] end match = (value - chroma).to_f rgb[0] = (rgb[0] + match).to_f rgb[1] = (rgb[1] + match).to_f rgb[2] = (rgb[2] + match).to_f return RgbColor.new(rgb[0],rgb[1],rgb[2]) end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
savio-0.1.8 | lib/savio/hsv2rgb.rb |
savio-0.1.7 | lib/savio/hsv2rgb.rb |
savio-0.1.6 | lib/savio/hsv2rgb.rb |