Struct luv::Luv

source ·
pub struct Luv {
    pub l: f32,
    pub u: f32,
    pub v: f32,
}
Expand description

Struct representing a color in CIALuv, a.k.a. L*u*v*, color space

Fields§

§l: f32

The L* value (achromatic luminance) of the colour in 0–100 range.

§u: f32

The u* value of the colour.

Together with v* value, it defines chromaticity of the colour. The u* coordinate represents colour’s position on red-green axis with negative values indicating more red and positive more green colour. Typical values are in -100–100 range (but exact range for ‘valid’ colours depends on luminance and v* value).

§v: f32

The u* value of the colour.

Together with u* value, it defines chromaticity of the colour. The v* coordinate represents colour’s position on blue-yellow axis with negative values indicating more blue and positive more yellow colour. Typical values are in -100–100 range (but exact range for ‘valid’ colours depends on luminance and u* value).

Implementations§

source§

impl Luv

source

pub fn from_rgb(rgb: &[u8; 3]) -> Self

Constructs a new Luv from a three-element array of u8s

§Examples
let luv = luv::Luv::from_rgb(&[240, 33, 95]);
assert_eq!(luv::Luv { l: 52.334686, u: 138.98639, v: 7.8476787 }, luv);
source

pub fn from_rgba(rgba: &[u8; 4]) -> Self

Constructs a new Luv from a four-element array of u8s

The Luv struct does not store alpha channel information, so the last u8 representing alpha is discarded. This convenience method exists in order to easily measure colors already stored in an RGBA array.

§Examples
let luv = luv::Luv::from_rgba(&[240, 33, 95, 255]);
assert_eq!(luv::Luv { l: 52.334686, u: 138.98639, v: 7.8476787 }, luv);
source

pub fn to_rgb(&self) -> [u8; 3]

Returns the Luv’s color in RGB, in a 3-element array.

§Examples
let luv = luv::Luv { l: 52.334686, u: 138.98636, v: 7.8476787 };
assert_eq!([240, 33, 95], luv.to_rgb());
source

pub fn squared_distance(&self, other: &Luv) -> f32

Measures the perceptual distance between the colors of one Luv and an other.

§Examples
let pink = luv::Luv { l: 52.334686, u: 138.98636, v: 7.8476787 };
let websafe_pink = luv::Luv { l: 56.675262, u: 142.3089, v: 10.548637 };
assert_eq!(37.175053, pink.squared_distance(&websafe_pink));

Trait Implementations§

source§

impl Clone for Luv

source§

fn clone(&self) -> Luv

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 Luv

source§

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

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

impl Default for Luv

source§

fn default() -> Luv

Returns the “default value” for a type. Read more
source§

impl PartialEq for Luv

source§

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

Compares two colours ignoring chromaticity if L* is zero.

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 Luv

Auto Trait Implementations§

§

impl RefUnwindSafe for Luv

§

impl Send for Luv

§

impl Sync for Luv

§

impl Unpin for Luv

§

impl UnwindSafe for Luv

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

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

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> ToOwned for T
where 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 T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

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

Performs the conversion.
source§

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

§

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

The type returned in the event of a conversion error.
source§

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

Performs the conversion.