class Gosu::Color
Public Class Methods
ARGB in 0..255 format (equivalent to Color.new, but explicit)
@param [Integer] alpha @param (see Color.rgb
) @return [Color]
# File lib/fidgit/gosu_ext/color.rb, line 36 def self.argb(alpha, red, green, blue) new(alpha, red, green, blue) end
Convert from an RGBA array, as used by TexPlay.
@param [Array<Float>] color TexPlay color [r, g, b, a] in range 0.0..1.0 @return [Color]
# File lib/fidgit/gosu_ext/color.rb, line 69 def self.from_tex_play(color) rgba(*color.map {|c| (c * 255).to_i }) end
HSV format (alpha assumed to be 255)
@param [Float] hue 0.0..360.0 @param [Float] saturation 0.0..1.0 @param [Float] value 0.0..1.0 @return [Color]
# File lib/fidgit/gosu_ext/color.rb, line 46 def self.hsv(hue, saturation, value) from_hsv(hue, saturation, value) end
HSVA format
@param [Float] hue 0.0..360.0 @param [Float] saturation 0.0..1.0 @param [Float] value 0.0..1.0 @param [Integer] alpha 1..255 @return [Color]
# File lib/fidgit/gosu_ext/color.rb, line 57 def self.hsva(hue, saturation, value, alpha) from_ahsv(alpha, hue, saturation, value) end
RGB in 0..255 format (Alpha assumed 255)
@param [Integer] red @param [Integer] green @param [Integer] blue @return [Color]
# File lib/fidgit/gosu_ext/color.rb, line 16 def self.rgb(red, green, blue) new(255, red, green, blue) end
RGBA in 0..255 format
@param [Integer] red @param [Integer] green @param [Integer] blue @param [Integer] alpha @return [Color]
# File lib/fidgit/gosu_ext/color.rb, line 27 def self.rgba(red, green, blue, alpha) new(alpha, red, green, blue) end
Public Instance Methods
# File lib/fidgit/gosu_ext/color.rb, line 102 def +(other) raise ArgumentError, "Can only add another #{self.class}" unless other.is_a? Color copy = Color.new(0) copy.red = [red + other.red, 255].min copy.green = [green + other.green, 255].min copy.blue = [blue + other.blue, 255].min copy.alpha = [alpha + other.alpha, 255].min copy end
# File lib/fidgit/gosu_ext/color.rb, line 115 def -(other) raise ArgumentError, "Can only take away another #{self.class}" unless other.is_a? Color copy = Color.new(0) copy.red = [red - other.red, 0].max copy.green = [green - other.green, 0].max copy.blue = [blue - other.blue, 0].max copy.alpha = [alpha - other.alpha, 0].max copy end
# File lib/fidgit/gosu_ext/color.rb, line 128 def ==(other) if other.is_a? Color red == other.red and green == other.green and blue == other.blue and alpha == other.alpha else false end end
Colorize text for in-line rendering by Gosu
. e.g. “frog” => “<c=00ff9a>frog</c>”
# File lib/fidgit/gosu_ext/color.rb, line 89 def colorize(text) "<c=#{to_hex}>#{text}</c>" end
Is the color completely opaque?
# File lib/fidgit/gosu_ext/color.rb, line 8 def opaque?; alpha == 255; end
Convert to a 6-digit hexadecimal value, appropriate for passing to the Gosu
+<c>+ tag. The alpha channel is ignored.
@return [String] RGB hexadecimal string, such as “AABB00”
# File lib/fidgit/gosu_ext/color.rb, line 83 def to_hex "%02x%02x%02x" % [red, green, blue] end
Convert to an RGBA array, as used by TexPlay.
@return [Array<Float>] TexPlay color array [r, g, b, a] in range 0.0..1.0
# File lib/fidgit/gosu_ext/color.rb, line 76 def to_tex_play [red / 255.0, green / 255.0, blue / 255.0, alpha / 255.0] end
Is the color completely transparent?
# File lib/fidgit/gosu_ext/color.rb, line 6 def transparent?; alpha == 0; end