class Gosu::Color

Public Class Methods

argb(alpha, red, green, blue) click to toggle source

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
from_tex_play(color) click to toggle source

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(hue, saturation, value) click to toggle source

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(hue, saturation, value, alpha) click to toggle source

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(red, green, blue) click to toggle source

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(red, green, blue, alpha) click to toggle source

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

+(other) click to toggle source
# 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
-(other) click to toggle source
# 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
==(other) click to toggle source
# 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) click to toggle source

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
opaque?() click to toggle source

Is the color completely opaque?

# File lib/fidgit/gosu_ext/color.rb, line 8
def opaque?; alpha == 255; end
to_hex() click to toggle source

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
to_s() click to toggle source

Show the Color as <RGBA [0, 0, 0, 0]> or, if opaque, <RGB [0, 0, 0]> (Gosu default is '(ARGB:0/0/0/0)')

# File lib/fidgit/gosu_ext/color.rb, line 94
def to_s
  if opaque?
    "<RGB [#{red}, #{green}, #{blue}]>"
  else
    "<RGBA [#{red}, #{green}, #{blue}, #{alpha}]>"
  end
end
to_tex_play() click to toggle source

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
transparent?() click to toggle source

Is the color completely transparent?

# File lib/fidgit/gosu_ext/color.rb, line 6
def transparent?; alpha == 0; end