Sha256: 5daed7590ab3d92d597b8ae9b8bec59af15a838fb7dd4dec08b065992d0fabb2
Contents?: true
Size: 1.77 KB
Versions: 1
Compression:
Stored size: 1.77 KB
Contents
module WindowBlessing class Color < Struct.new(:r, :g, :b) include Tools class <<self def black; Color.new(0) end def white; Color.new(1) end def gray; Color.new(0.5) end def red; Color.new(1,0,0) end def green; Color.new(0,1,0) end def blue; Color.new(0,0,1) end def yellow; Color.new(1,1,0) end def cyan; Color.new(0,1,1) end def magenta;Color.new(1,0,1) end end def initialize(r=0.0, g=r, b=r) case r when String then self.hex=r else super r, g, b end end def br (r + g + b) / 3.0 end def hex=(hex) raise "invalid hex color #{hex.inspect}" unless hex[/#?(((..)(..)(..))|((.)(.)(.)))/] self.r = ($3 || ($7*2)).hex/255.0 self.g = ($4 || ($8*2)).hex/255.0 self.b = ($5 || ($9*2)).hex/255.0 end def inspect; "color#{self}" end def to_s; "(#{r},#{g},#{b})" end def to_hex; "#%02x%02x%02x"%to_a256 end def to_a256; [r256,g256,b256] end def to_a; [r,g,b] end # to xterm pallette color def to_screen_color; rgb_screen_color(r,g,b) end def [](i) case i when 0, :r then r when 1, :g then g when 2, :b then b end end def []=(key,v) case key when 0, :r then self.r = v when 1, :g then self.g = v when 2, :b then self.b = v end end def r256; (r*255).to_i end def g256; (g*255).to_i end def b256; (b*255).to_i end def +(v) v.kind_of?(Color) ? Color.new(r + v.r, g + v.g, b + v.b) : Color.new(r + v, g + v, b + v) end def -(v) v.kind_of?(Color) ? Color.new(r - v.r, g - v.g, b - v.b) : Color.new(r - v, g - v, b - v) end def *(v) v.kind_of?(Color) ? Color.new(r * v.r, g * v.g, b * v.b) : Color.new(r * v, g * v, b * v) end def /(v) v.kind_of?(Color) ? Color.new(r / v.r, g / v.g, b / v.b) : Color.new(r / v, g / v, b / v) end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
window_blessing-0.0.4 | lib/window_blessing/color.rb |