pub struct Color(/* private fields */);Expand description
This format is used for space-efficient color representation (32 bits).
Instead of manipulating this directly it is often better
to first convert it to either Rgba or crate::Hsva.
Internally this uses 0-255 gamma space sRGBA color with premultiplied alpha.
Alpha channel is in linear space.
The special value of alpha=0 means the color is to be treated as an additive color.
Implementations§
Source§impl Color32
impl Color32
pub const TRANSPARENT: Color32
pub const BLACK: Color32
pub const DARK_GRAY: Color32
pub const GRAY: Color32
pub const LIGHT_GRAY: Color32
pub const WHITE: Color32
pub const BROWN: Color32
pub const DARK_RED: Color32
pub const RED: Color32
pub const LIGHT_RED: Color32
pub const YELLOW: Color32
pub const LIGHT_YELLOW: Color32
pub const KHAKI: Color32
pub const DARK_GREEN: Color32
pub const GREEN: Color32
pub const LIGHT_GREEN: Color32
pub const DARK_BLUE: Color32
pub const BLUE: Color32
pub const LIGHT_BLUE: Color32
pub const GOLD: Color32
pub const DEBUG_COLOR: Color32
Sourcepub const PLACEHOLDER: Color32
pub const PLACEHOLDER: Color32
An ugly color that is planned to be replaced before making it to the screen.
This is an invalid color, in that it does not correspond to a valid multiplied color, nor to an additive color.
This is used as a special color key, i.e. often taken to mean “no color”.
pub const TEMPORARY_COLOR: Color32 = Self::PLACEHOLDER
Sourcepub const fn from_rgb(r: u8, g: u8, b: u8) -> Color32
pub const fn from_rgb(r: u8, g: u8, b: u8) -> Color32
Examples found in repository?
139 fn draw(&self) {
140 gfx::clear(Color::from_rgb(0x2f, 0x28, 0x43));
141
142 for entity in self
143 .targets
144 .iter()
145 .chain(self.objects.iter())
146 .chain(self.walls.iter())
147 .chain(std::iter::once(&self.player))
148 {
149 gfx::draw(&entity.texture, (entity.position * 32.0, (4., 4.)));
150 }
151 }More examples
27 fn update(&mut self) {
28 gfx::clear(Color::from_rgb(0x2f, 0x28, 0x43));
29
30 if is_key_down(KeyCode::A) {
31 self.position.x -= 1.;
32 }
33 if is_key_down(KeyCode::D) {
34 self.position.x += 1.;
35 }
36 if is_key_down(KeyCode::W) {
37 self.position.y -= 1.;
38 }
39 if is_key_down(KeyCode::S) {
40 self.position.y += 1.;
41 }
42
43 if is_key_down(KeyCode::Q) {
44 self.angle = (self.angle - 0.04) % TAU;
45 }
46 if is_key_down(KeyCode::E) {
47 self.angle = (self.angle + 0.04) % TAU;
48 }
49
50 if is_key_down(KeyCode::J) {
51 self.scale /= 1.005;
52 }
53 if is_key_down(KeyCode::K) {
54 self.scale *= 1.005;
55 }
56
57 gfx::draw(&self.creature, (self.position, self.scale, self.angle));
58 }pub const fn from_rgb_additive(r: u8, g: u8, b: u8) -> Color32
Sourcepub const fn from_rgba_premultiplied(r: u8, g: u8, b: u8, a: u8) -> Color32
pub const fn from_rgba_premultiplied(r: u8, g: u8, b: u8, a: u8) -> Color32
From sRGBA with premultiplied alpha.
Sourcepub fn from_rgba_unmultiplied(r: u8, g: u8, b: u8, a: u8) -> Color32
pub fn from_rgba_unmultiplied(r: u8, g: u8, b: u8, a: u8) -> Color32
From sRGBA WITHOUT premultiplied alpha.
pub const fn from_gray(l: u8) -> Color32
pub const fn from_black_alpha(a: u8) -> Color32
pub fn from_white_alpha(a: u8) -> Color32
pub const fn from_additive_luminance(l: u8) -> Color32
pub const fn is_opaque(&self) -> bool
pub const fn r(&self) -> u8
pub const fn g(&self) -> u8
pub const fn b(&self) -> u8
pub const fn a(&self) -> u8
Sourcepub fn is_additive(self) -> bool
pub fn is_additive(self) -> bool
Is the alpha=0 ?
pub fn to_srgba_unmultiplied(&self) -> [u8; 4]
Sourcepub fn gamma_multiply(self, factor: f32) -> Color32
pub fn gamma_multiply(self, factor: f32) -> Color32
Multiply with 0.5 to make color half as opaque, perceptually.
Fast multiplication in gamma-space.
This is perceptually even, and faster that Self::linear_multiply.
Sourcepub fn linear_multiply(self, factor: f32) -> Color32
pub fn linear_multiply(self, factor: f32) -> Color32
Multiply with 0.5 to make color half as opaque in linear space.
This is using linear space, which is not perceptually even.
You likely want to use Self::gamma_multiply instead.
Sourcepub fn to_normalized_gamma_f32(self) -> [f32; 4]
pub fn to_normalized_gamma_f32(self) -> [f32; 4]
Converts to floating point values in the range 0-1 without any gamma space conversion.
Use this with great care! In almost all cases, you want to convert to crate::Rgba instead
in order to obtain linear space color values.
Sourcepub fn lerp_to_gamma(&self, other: Color32, t: f32) -> Color32
pub fn lerp_to_gamma(&self, other: Color32, t: f32) -> Color32
Lerp this color towards other by t in gamma space.
Source§impl Color32
impl Color32
Sourcepub fn from_hex(hex: &str) -> Result<Color32, ParseHexColorError>
pub fn from_hex(hex: &str) -> Result<Color32, ParseHexColorError>
Parses a color from a hex string.
Supports the 3, 4, 6, and 8-digit formats, according to the specification in https://drafts.csswg.org/css-color-4/#hex-color
To parse hex colors at compile-time (e.g. for use in const contexts)
use the macro [crate::hex_color!] instead.
§Example
use ecolor::Color32;
assert_eq!(Ok(Color32::RED), Color32::from_hex("#ff0000"));
assert_eq!(Ok(Color32::GREEN), Color32::from_hex("#00ff00ff"));
assert_eq!(Ok(Color32::BLUE), Color32::from_hex("#00f"));
assert_eq!(Ok(Color32::TRANSPARENT), Color32::from_hex("#0000"));§Errors
Returns an error if the string doesn’t start with the hash # character, if the remaining
length does not correspond to one of the standard formats (3, 4, 6, or 8), if it contains
non-hex characters.
Sourcepub fn to_hex(&self) -> String
pub fn to_hex(&self) -> String
Formats the color as a hex string.
§Example
use ecolor::Color32;
assert_eq!(Color32::RED.to_hex(), "#ff0000ff");
assert_eq!(Color32::GREEN.to_hex(), "#00ff00ff");
assert_eq!(Color32::BLUE.to_hex(), "#0000ffff");
assert_eq!(Color32::TRANSPARENT.to_hex(), "#00000000");Uses the 8-digit format described in https://drafts.csswg.org/css-color-4/#hex-color,
as that is the only format that is lossless.
For other formats, see HexColor.