Class: Gosu::Color
Class Method Summary collapse
-
.argb(alpha, red, green, blue) ⇒ Color
ARGB in 0..255 format (equivalent to Color.new, but explicit).
-
.from_tex_play(color) ⇒ Color
Convert from an RGBA array, as used by TexPlay.
-
.hsv(hue, saturation, value) ⇒ Color
HSV format (alpha assumed to be 255).
-
.hsva(hue, saturation, value, alpha) ⇒ Color
HSVA format.
-
.rgb(red, green, blue) ⇒ Color
RGB in 0..255 format (Alpha assumed 255).
-
.rgba(red, green, blue, alpha) ⇒ Color
RGBA in 0..255 format.
Instance Method Summary collapse
- #+(other) ⇒ Object
- #-(other) ⇒ Object
- #==(other) ⇒ Object
-
#colorize(text) ⇒ Object
Colorize text for in-line rendering by Gosu.
-
#opaque? ⇒ Boolean
Is the color completely opaque?.
-
#to_hex ⇒ String
Convert to a 6-digit hexadecimal value, appropriate for passing to the Gosu <c> tag.
-
#to_s ⇒ Object
Show the Color as <RGBA [0, 0, 0, 0]> or, if opaque, <RGB [0, 0, 0]> (Gosu default is ‘(ARGB:0/0/0/0)’).
-
#to_tex_play ⇒ Array<Float>
Convert to an RGBA array, as used by TexPlay.
-
#transparent? ⇒ Boolean
Is the color completely transparent?.
Class Method Details
.argb(alpha, red, green, blue) ⇒ Color
ARGB in 0..255 format (equivalent to Color.new, but explicit)
36 37 38 |
# 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) ⇒ Color
Convert from an RGBA array, as used by TexPlay.
69 70 71 |
# 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) ⇒ Color
HSV format (alpha assumed to be 255)
46 47 48 |
# 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) ⇒ Color
HSVA format
57 58 59 |
# 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) ⇒ Color
RGB in 0..255 format (Alpha assumed 255)
16 17 18 |
# 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) ⇒ Color
RGBA in 0..255 format
27 28 29 |
# File 'lib/fidgit/gosu_ext/color.rb', line 27 def self.rgba(red, green, blue, alpha) new(alpha, red, green, blue) end |
Instance Method Details
#+(other) ⇒ Object
102 103 104 105 106 107 108 109 110 111 112 113 |
# 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) ⇒ Object
115 116 117 118 119 120 121 122 123 124 125 126 |
# 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) ⇒ Object
128 129 130 131 132 133 134 |
# 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) ⇒ Object
Colorize text for in-line rendering by Gosu. e.g. “frog” => “<c=00ff9a>frog</c>”
89 90 91 |
# File 'lib/fidgit/gosu_ext/color.rb', line 89 def colorize(text) "<c=#{to_hex}>#{text}</c>" end |
#opaque? ⇒ Boolean
Is the color completely opaque?
8 |
# File 'lib/fidgit/gosu_ext/color.rb', line 8 def opaque?; alpha == 255; end |
#to_hex ⇒ String
Convert to a 6-digit hexadecimal value, appropriate for passing to the Gosu <c> tag. The alpha channel is ignored.
83 84 85 |
# File 'lib/fidgit/gosu_ext/color.rb', line 83 def to_hex "%02x%02x%02x" % [red, green, blue] end |
#to_s ⇒ Object
Show the Color as <RGBA [0, 0, 0, 0]> or, if opaque, <RGB [0, 0, 0]> (Gosu default is ‘(ARGB:0/0/0/0)’)
94 95 96 97 98 99 100 |
# 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 ⇒ Array<Float>
Convert to an RGBA array, as used by TexPlay.
76 77 78 |
# 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? ⇒ Boolean
Is the color completely transparent?
6 |
# File 'lib/fidgit/gosu_ext/color.rb', line 6 def transparent?; alpha == 0; end |