Sha256: 585af045f1ee6443de8b533741f428c23b4e3c5124b971f4331739a9d471946d
Contents?: true
Size: 1.8 KB
Versions: 4
Compression:
Stored size: 1.8 KB
Contents
require "rabbit/gtk" require "rabbit/rabbit" module Rabbit module Renderer class Color < Struct.new(:red, :green, :blue, :alpha) class << self def parse(*args) new(*args) end end def initialize(*args) case args.collect(&:class) when [Gdk::RGBA] rgba = args[0] super(*rgba.to_a) when [String] rgba = parse(args[0]) super(*rgba) else super(*args) end end def to_s values = to_a.collect {|x| (x * 65535).ceil} "#%04X%04X%04X%04X" % values end def to_a [red, green, blue, alpha] end def to_gdk_rgba Gdk::RGBA.new(*to_a) end def to_gdk_format to_s end def to_css_rgba red_percent = (red * 100).ceil green_percent = (green * 100).ceil blue_percent = (blue * 100).ceil a = alpha || 1.0 "rgba(#{red_percent}%, #{green_percent}%, #{blue_percent}%, #{a})" end private HEX = "(?i:[a-z0-9])" def parse(text) case text when /\A\#(#{HEX})(#{HEX})(#{HEX})(#{HEX})?\z/ normalize_rgba($1, $2, $3, $4, 16 ** 1 - 1) when /\A\#(#{HEX}{2})(#{HEX}{2})(#{HEX}{2})(#{HEX}{2})?\z/ normalize_rgba($1, $2, $3, $4, 16 ** 2 - 1) when /\A\#(#{HEX}{4})(#{HEX}{4})(#{HEX}{4})(#{HEX}{4})?\z/ normalize_rgba($1, $2, $3, $4, 16 ** 4 - 1) else Gdk::RGBA.parse(text).to_a end end def normalize_rgba(r, g, b, a, max) red = r.hex / max.to_f green = g.hex / max.to_f blue = b.hex / max.to_f if a alpha = a.hex / max.to_f else alpha = 1.0 end [red, green, blue, alpha] end end end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
rabbit-3.0.3 | lib/rabbit/renderer/color.rb |
rabbit-3.0.2 | lib/rabbit/renderer/color.rb |
rabbit-3.0.1 | lib/rabbit/renderer/color.rb |
rabbit-3.0.0 | lib/rabbit/renderer/color.rb |