Enum piet_common::Color

source ·
#[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

source

pub const fn rgb8(r: u8, g: u8, b: u8) -> Color

Create a color from 8 bit per sample RGB values.

source

pub const fn rgba8(r: u8, g: u8, b: u8, a: u8) -> Color

Create a color from 8 bit per sample RGBA values.

source

pub const fn from_rgba32_u32(rgba: u32) -> Color

Create a color from a 32-bit rgba value (alpha as least significant byte).

source

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.

source

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());
source

pub fn grey(grey: f64) -> Color

Create a color with a grey value in the range 0.0..=1.0.

source

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.

source

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.

source

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.

source

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.

source

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.

source

pub fn as_rgba_u32(self) -> u32

Convert a color value to a 32-bit rgba value.

source

pub fn as_rgba8(self) -> (u8, u8, u8, u8)

Convert a color value to four 8-bit rgba values.

source

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.

source

pub const AQUA: Color = Color::rgb8(0, 255, 255)

Opaque aqua (or cyan).

source

pub const BLACK: Color = Color::rgb8(0, 0, 0)

Opaque black.

source

pub const BLUE: Color = Color::rgb8(0, 0, 255)

Opaque blue.

source

pub const FUCHSIA: Color = Color::rgb8(255, 0, 255)

Opaque fuchsia (or magenta).

source

pub const GRAY: Color = Color::grey8(128)

Opaque gray.

source

pub const GREEN: Color = Color::rgb8(0, 128, 0)

Opaque green.

source

pub const LIME: Color = Color::rgb8(0, 255, 0)

Opaque lime.

source

pub const MAROON: Color = Color::rgb8(128, 0, 0)

Opaque maroon.

source

pub const NAVY: Color = Color::rgb8(0, 0, 128)

Opaque navy.

source

pub const OLIVE: Color = Color::rgb8(128, 128, 0)

Opaque olive.

source

pub const PURPLE: Color = Color::rgb8(128, 0, 128)

Opaque purple.

source

pub const RED: Color = Color::rgb8(255, 0, 0)

Opaque red.

source

pub const SILVER: Color = Color::grey8(192)

Opaque silver.

source

pub const TEAL: Color = Color::rgb8(0, 128, 128)

Opaque teal.

source

pub const TRANSPARENT: Color = Color::rgba8(0, 0, 0, 0)

Fully transparent

source

pub const WHITE: Color = Color::grey8(255)

Opaque white.

source

pub const YELLOW: Color = Color::rgb8(255, 255, 0)

Opaque yellow.

Trait Implementations§

source§

impl Clone for Color

source§

fn clone(&self) -> Color

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Color

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
source§

impl From<Color> for PaintBrush

source§

fn from(src: Color) -> PaintBrush

Converts to this type from the input type.
source§

impl Hash for Color

source§

fn hash<__H>(&self, state: &mut __H)where
    __H: Hasher,

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)where
    H: Hasher,
    Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl PartialEq<Color> for Color

source§

fn eq(&self, other: &Color) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Copy for Color

source§

impl Eq for Color

source§

impl<P> IntoBrush<P> for Colorwhere
    P: RenderContext,

source§

impl StructuralEq for Color

source§

impl StructuralPartialEq for Color

Auto Trait Implementations§

§

impl RefUnwindSafe for Color

§

impl Send for Color

§

impl Sync for Color

§

impl Unpin for Color

§

impl UnwindSafe for Color

Blanket Implementations§

source§

impl<T> Any for Twhere
    T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere
    T: ?Sized,

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere
    T: ?Sized,

const: unstable · source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

const: unstable · source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for Twhere
    U: From<T>,

const: unstable · source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> RoundFrom<T> for T

source§

fn round_from(x: T) -> T

Performs the conversion.
source§

impl<T, U> RoundInto<U> for Twhere
    U: RoundFrom<T>,

source§

fn round_into(self) -> U

Performs the conversion.
source§

impl<T> ToOwned for Twhere
    T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for Twhere
    U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere
    U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
const: unstable · source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.