#[non_exhaustive]
pub enum Color {
// some variants omitted
}
Expand description
A datatype representing color.
Currently this is only a 32 bit RGBA value, but it will likely extend to some form of wide-gamut colorspace, and in the meantime is useful for giving programs proper type.
Implementations§
source§impl Color
impl Color
sourcepub const fn rgb8(r: u8, g: u8, b: u8) -> Color
pub const fn rgb8(r: u8, g: u8, b: u8) -> Color
Create a color from 8 bit per sample RGB values.
sourcepub const fn rgba8(r: u8, g: u8, b: u8, a: u8) -> Color
pub const fn rgba8(r: u8, g: u8, b: u8, a: u8) -> Color
Create a color from 8 bit per sample RGBA values.
sourcepub const fn from_rgba32_u32(rgba: u32) -> Color
pub const fn from_rgba32_u32(rgba: u32) -> Color
Create a color from a 32-bit rgba value (alpha as least significant byte).
sourcepub const fn from_hex_str(hex: &str) -> Result<Color, ColorParseError>
pub const fn from_hex_str(hex: &str) -> Result<Color, ColorParseError>
Attempt to create a color from a CSS-style hex string.
This will accept strings in the following formats, with or without
the leading #
:
rrggbb
rrggbbaa
rbg
rbga
This method returns a ColorParseError
if the color cannot be parsed.
sourcepub const fn grey8(grey: u8) -> Color
pub const fn grey8(grey: u8) -> Color
Create a color from a grey value.
use piet::Color;
let grey_val = 0x55;
let one = Color::grey8(grey_val);
// is shorthand for
let two = Color::rgb8(grey_val, grey_val, grey_val);
assert_eq!(one.as_rgba_u32(), two.as_rgba_u32());
sourcepub fn rgba(r: f64, g: f64, b: f64, a: f64) -> Color
pub fn rgba(r: f64, g: f64, b: f64, a: f64) -> Color
Create a color from four floating point values, each in the range 0.0 to 1.0.
The interpretation is the same as rgba32, and no greater precision is (currently) assumed.
sourcepub fn rgb(r: f64, g: f64, b: f64) -> Color
pub fn rgb(r: f64, g: f64, b: f64) -> Color
Create a color from three floating point values, each in the range 0.0 to 1.0.
The interpretation is the same as rgb8, and no greater precision is (currently) assumed.
sourcepub fn hlc(h: f64, L: f64, c: f64) -> Color
pub fn hlc(h: f64, L: f64, c: f64) -> Color
Create a color from a CIEL*a*b* polar (also known as CIE HCL) specification.
The h
parameter is an angle in degrees, with 0 roughly magenta, 90
roughly yellow, 180 roughly cyan, and 270 roughly blue. The l
parameter is perceptual luminance, with 0 black and 100 white.
The c
parameter is a chrominance concentration, with 0 grayscale
and a nominal maximum of 127 (in the future, higher values might
be useful, for high gamut contexts).
Currently this is just converted into sRGB, but in the future as we support high-gamut colorspaces, it can be used to specify more colors or existing colors with a higher accuracy.
Currently out-of-gamut values are clipped to the nearest sRGB color, which is perhaps not ideal (the clipping might change the hue). See https://github.com/d3/d3-color/issues/33 for discussion.
sourcepub fn hlca(h: f64, l: f64, c: f64, a: f64) -> Color
pub fn hlca(h: f64, l: f64, c: f64, a: f64) -> Color
Create a color from a CIEL*a*b* polar specification and alpha.
The a
value represents alpha in the range 0.0 to 1.0.
sourcepub fn with_alpha(self, a: f64) -> Color
pub fn with_alpha(self, a: f64) -> Color
Change just the alpha value of a color.
The a
value represents alpha in the range 0.0 to 1.0.
sourcepub fn as_rgba_u32(self) -> u32
pub fn as_rgba_u32(self) -> u32
Convert a color value to a 32-bit rgba value.
sourcepub fn as_rgba(self) -> (f64, f64, f64, f64)
pub fn as_rgba(self) -> (f64, f64, f64, f64)
Convert a color value to four f64 values, each in the range 0.0 to 1.0.
sourcepub const TRANSPARENT: Color = _
pub const TRANSPARENT: Color = _
Fully transparent