Sha256: c56ac7f2cedd3c7a1a5549b5bc15d63baa8ee1bbb4b51b4e71e0a29c4460edca

Contents?: true

Size: 1.01 KB

Versions: 1

Compression:

Stored size: 1.01 KB

Contents

module ZPNG
  class Color < Struct.new(:r,:g,:b,:a)

    def initialize *args
      super
      self.a ||= 0xff
    end

    alias :alpha :a
    def alpha= v; self.a = v; end

    BLACK = Color.new(0,0,0,0xff)
    WHITE = Color.new(0xff,0xff,0xff,0xff)

    def white?
      r == 0xff && g == 0xff && b == 0xff
    end

    def black?
      r == 0 && g == 0 && b == 0
    end

    def transparent?
      a == 0
    end

    def to_grayscale
      (r+g+b)/3
    end

    def self.from_grayscale value, alpha = nil
      Color.new value,value,value, alpha
    end

    def to_s
      "%02X%02X%02X" % [r,g,b]
    end

    def to_i
      ((a||0) << 24) + ((r||0) << 16) + ((g||0) << 8) + (b||0)
    end

    def inspect
      if r && g && b && a
        "#<ZPNG::Color #%02x%02x%02x a=%d>" % [r,g,b,a]
      else
        rs = r ? "%02x" % r : "??"
        gs = g ? "%02x" % g : "??"
        bs = b ? "%02x" % b : "??"
        as = a ? "%d"   % a : "?"
        "#<ZPNG::Color #%s%s%s%s a=%s>" % [rs,gs,bs,as]
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
zpng-0.1.0 lib/zpng/color.rb