pub struct Oklaba {
    pub lightness: f32,
    pub a: f32,
    pub b: f32,
    pub alpha: f32,
}Expand description
Color in Oklab color space, with alpha
§Conversion
Conversion between the various color spaces is achieved using Rust’s native From trait. Because certain color spaces are defined by their transformation to and from another space, these From implementations reflect that set of definitions.
let color = Srgba::rgb(0.5, 0.5, 0.5);
// Using From explicitly
let linear_color = LinearRgba::from(color);
// Using Into
let linear_color: LinearRgba = color.into();For example, the sRGB space is defined by its relationship with Linear RGB, and HWB by its with sRGB. As such, it is the responsibility of sRGB to provide From implementations for Linear RGB, and HWB for sRGB. To then provide conversion between Linear RGB and HWB directly, HWB is responsible for implementing these conversions, delegating to sRGB as an intermediatory. This ensures that all conversions take the shortest path between any two spaces, and limit the proliferation of domain specific knowledge for each color space to their respective definitions.
Fields§
§lightness: f32The ‘lightness’ channel. [0.0, 1.0]
a: f32The ‘a’ channel. [-1.0, 1.0]
b: f32The ‘b’ channel. [-1.0, 1.0]
alpha: f32The alpha channel. [0.0, 1.0]
Implementations§
source§impl Oklaba
 
impl Oklaba
sourcepub const fn with_lightness(self, lightness: f32) -> Oklaba
 
pub const fn with_lightness(self, lightness: f32) -> Oklaba
Return a copy of this color with the ‘lightness’ channel set to the given value.
Trait Implementations§
source§impl AddAssign for Oklaba
 
impl AddAssign for Oklaba
source§fn add_assign(&mut self, rhs: Oklaba)
 
fn add_assign(&mut self, rhs: Oklaba)
+= operation. Read moresource§impl Alpha for Oklaba
 
impl Alpha for Oklaba
source§fn with_alpha(&self, alpha: f32) -> Oklaba
 
fn with_alpha(&self, alpha: f32) -> Oklaba
source§fn is_fully_transparent(&self) -> bool
 
fn is_fully_transparent(&self) -> bool
source§fn is_fully_opaque(&self) -> bool
 
fn is_fully_opaque(&self) -> bool
source§impl Animatable for Oklaba
 
impl Animatable for Oklaba
source§fn blend(inputs: impl Iterator<Item = BlendInput<Oklaba>>) -> Oklaba
 
fn blend(inputs: impl Iterator<Item = BlendInput<Oklaba>>) -> Oklaba
source§fn post_process(&mut self, _world: &World)
 
fn post_process(&mut self, _world: &World)
World.
Most animatable types do not need to implement this.source§impl ColorToComponents for Oklaba
 
impl ColorToComponents for Oklaba
source§impl<'de> Deserialize<'de> for Oklaba
 
impl<'de> Deserialize<'de> for Oklaba
source§fn deserialize<__D>(
    __deserializer: __D
) -> Result<Oklaba, <__D as Deserializer<'de>>::Error>where
    __D: Deserializer<'de>,
 
fn deserialize<__D>(
    __deserializer: __D
) -> Result<Oklaba, <__D as Deserializer<'de>>::Error>where
    __D: Deserializer<'de>,
source§impl DivAssign<f32> for Oklaba
 
impl DivAssign<f32> for Oklaba
source§fn div_assign(&mut self, rhs: f32)
 
fn div_assign(&mut self, rhs: f32)
/= operation. Read moresource§impl EuclideanDistance for Oklaba
 
impl EuclideanDistance for Oklaba
source§impl From<LinearRgba> for Oklaba
 
impl From<LinearRgba> for Oklaba
source§fn from(value: LinearRgba) -> Oklaba
 
fn from(value: LinearRgba) -> Oklaba
source§impl From<Oklaba> for LinearRgba
 
impl From<Oklaba> for LinearRgba
source§fn from(value: Oklaba) -> LinearRgba
 
fn from(value: Oklaba) -> LinearRgba
source§impl FromReflect for Oklaba
 
impl FromReflect for Oklaba
source§fn from_reflect(reflect: &(dyn Reflect + 'static)) -> Option<Oklaba>
 
fn from_reflect(reflect: &(dyn Reflect + 'static)) -> Option<Oklaba>
Self from a reflected value.source§fn take_from_reflect(
    reflect: Box<dyn Reflect>
) -> Result<Self, Box<dyn Reflect>>
 
fn take_from_reflect( reflect: Box<dyn Reflect> ) -> Result<Self, Box<dyn Reflect>>
Self using,
constructing the value using from_reflect if that fails. Read moresource§impl GetTypeRegistration for Oklaba
 
impl GetTypeRegistration for Oklaba
source§fn get_type_registration() -> TypeRegistration
 
fn get_type_registration() -> TypeRegistration
TypeRegistration for this type.source§fn register_type_dependencies(registry: &mut TypeRegistry)
 
fn register_type_dependencies(registry: &mut TypeRegistry)
source§impl Luminance for Oklaba
 
impl Luminance for Oklaba
source§fn with_luminance(&self, lightness: f32) -> Oklaba
 
fn with_luminance(&self, lightness: f32) -> Oklaba
source§fn darker(&self, amount: f32) -> Oklaba
 
fn darker(&self, amount: f32) -> Oklaba
amount should be between 0.0 and 1.0.
The amount represents an absolute decrease in luminance, and is distributive:
color.darker(a).darker(b) == color.darker(a + b). Colors are clamped to black
if the amount would cause them to go below black. Read moresource§fn lighter(&self, amount: f32) -> Oklaba
 
fn lighter(&self, amount: f32) -> Oklaba
amount should be between 0.0 and 1.0.
The amount represents an absolute increase in luminance, and is distributive:
color.lighter(a).lighter(b) == color.lighter(a + b). Colors are clamped to white
if the amount would cause them to go above white. Read moresource§impl Mix for Oklaba
 
impl Mix for Oklaba
source§fn mix(&self, other: &Oklaba, factor: f32) -> Oklaba
 
fn mix(&self, other: &Oklaba, factor: f32) -> Oklaba
source§fn mix_assign(&mut self, other: Self, factor: f32)
 
fn mix_assign(&mut self, other: Self, factor: f32)
source§impl MulAssign<f32> for Oklaba
 
impl MulAssign<f32> for Oklaba
source§fn mul_assign(&mut self, rhs: f32)
 
fn mul_assign(&mut self, rhs: f32)
*= operation. Read moresource§impl PartialEq for Oklaba
 
impl PartialEq for Oklaba
source§impl Reflect for Oklaba
 
impl Reflect for Oklaba
source§fn get_represented_type_info(&self) -> Option<&'static TypeInfo>
 
fn get_represented_type_info(&self) -> Option<&'static TypeInfo>
source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
 
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut dyn Any.source§fn into_reflect(self: Box<Oklaba>) -> Box<dyn Reflect>
 
fn into_reflect(self: Box<Oklaba>) -> Box<dyn Reflect>
source§fn as_reflect(&self) -> &(dyn Reflect + 'static)
 
fn as_reflect(&self) -> &(dyn Reflect + 'static)
source§fn as_reflect_mut(&mut self) -> &mut (dyn Reflect + 'static)
 
fn as_reflect_mut(&mut self) -> &mut (dyn Reflect + 'static)
source§fn clone_value(&self) -> Box<dyn Reflect>
 
fn clone_value(&self) -> Box<dyn Reflect>
Reflect trait object. Read moresource§fn set(&mut self, value: Box<dyn Reflect>) -> Result<(), Box<dyn Reflect>>
 
fn set(&mut self, value: Box<dyn Reflect>) -> Result<(), Box<dyn Reflect>>
source§fn reflect_kind(&self) -> ReflectKind
 
fn reflect_kind(&self) -> ReflectKind
source§fn reflect_ref(&self) -> ReflectRef<'_>
 
fn reflect_ref(&self) -> ReflectRef<'_>
source§fn reflect_mut(&mut self) -> ReflectMut<'_>
 
fn reflect_mut(&mut self) -> ReflectMut<'_>
source§fn reflect_owned(self: Box<Oklaba>) -> ReflectOwned
 
fn reflect_owned(self: Box<Oklaba>) -> ReflectOwned
source§fn reflect_partial_eq(&self, value: &(dyn Reflect + 'static)) -> Option<bool>
 
fn reflect_partial_eq(&self, value: &(dyn Reflect + 'static)) -> Option<bool>
source§fn apply(&mut self, value: &(dyn Reflect + 'static))
 
fn apply(&mut self, value: &(dyn Reflect + 'static))
source§fn reflect_hash(&self) -> Option<u64>
 
fn reflect_hash(&self) -> Option<u64>
source§fn debug(&self, f: &mut Formatter<'_>) -> Result<(), Error>
 
fn debug(&self, f: &mut Formatter<'_>) -> Result<(), Error>
source§fn serializable(&self) -> Option<Serializable<'_>>
 
fn serializable(&self) -> Option<Serializable<'_>>
source§fn is_dynamic(&self) -> bool
 
fn is_dynamic(&self) -> bool
source§impl Serialize for Oklaba
 
impl Serialize for Oklaba
source§fn serialize<__S>(
    &self,
    __serializer: __S
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
    __S: Serializer,
 
fn serialize<__S>(
    &self,
    __serializer: __S
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
    __S: Serializer,
source§impl Struct for Oklaba
 
impl Struct for Oklaba
source§fn field(&self, name: &str) -> Option<&(dyn Reflect + 'static)>
 
fn field(&self, name: &str) -> Option<&(dyn Reflect + 'static)>
name as a &dyn Reflect.source§fn field_mut(&mut self, name: &str) -> Option<&mut (dyn Reflect + 'static)>
 
fn field_mut(&mut self, name: &str) -> Option<&mut (dyn Reflect + 'static)>
name as a
&mut dyn Reflect.source§fn field_at(&self, index: usize) -> Option<&(dyn Reflect + 'static)>
 
fn field_at(&self, index: usize) -> Option<&(dyn Reflect + 'static)>
index as a
&dyn Reflect.source§fn field_at_mut(&mut self, index: usize) -> Option<&mut (dyn Reflect + 'static)>
 
fn field_at_mut(&mut self, index: usize) -> Option<&mut (dyn Reflect + 'static)>
index
as a &mut dyn Reflect.source§fn name_at(&self, index: usize) -> Option<&str>
 
fn name_at(&self, index: usize) -> Option<&str>
index.source§fn iter_fields(&self) -> FieldIter<'_> ⓘ
 
fn iter_fields(&self) -> FieldIter<'_> ⓘ
source§fn clone_dynamic(&self) -> DynamicStruct
 
fn clone_dynamic(&self) -> DynamicStruct
DynamicStruct.source§impl SubAssign for Oklaba
 
impl SubAssign for Oklaba
source§fn sub_assign(&mut self, rhs: Oklaba)
 
fn sub_assign(&mut self, rhs: Oklaba)
-= operation. Read moresource§impl TypePath for Oklaba
 
impl TypePath for Oklaba
source§fn type_path() -> &'static str
 
fn type_path() -> &'static str
source§fn short_type_path() -> &'static str
 
fn short_type_path() -> &'static str
source§fn type_ident() -> Option<&'static str>
 
fn type_ident() -> Option<&'static str>
source§fn crate_name() -> Option<&'static str>
 
fn crate_name() -> Option<&'static str>
source§impl VectorSpace for Oklaba
 
impl VectorSpace for Oklaba
impl Copy for Oklaba
impl StructuralPartialEq for Oklaba
Auto Trait Implementations§
impl Freeze for Oklaba
impl RefUnwindSafe for Oklaba
impl Send for Oklaba
impl Sync for Oklaba
impl Unpin for Oklaba
impl UnwindSafe for Oklaba
Blanket Implementations§
source§impl<T, U> AsBindGroupShaderType<U> for T
 
impl<T, U> AsBindGroupShaderType<U> for T
source§fn as_bind_group_shader_type(&self, _images: &RenderAssets<GpuImage>) -> U
 
fn as_bind_group_shader_type(&self, _images: &RenderAssets<GpuImage>) -> U
T ShaderType for self. When used in AsBindGroup
derives, it is safe to assume that all images in self exist.source§impl<T> BorrowMut<T> for Twhere
    T: ?Sized,
 
impl<T> BorrowMut<T> for Twhere
    T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
 
fn borrow_mut(&mut self) -> &mut T
source§impl<T> Downcast for Twhere
    T: Any,
 
impl<T> Downcast for Twhere
    T: Any,
source§fn into_any(self: Box<T>) -> Box<dyn Any>
 
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
 
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.source§fn as_any(&self) -> &(dyn Any + 'static)
 
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
 
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.source§impl<T> DowncastSync for T
 
impl<T> DowncastSync for T
source§impl<T> DynamicTypePath for Twhere
    T: TypePath,
 
impl<T> DynamicTypePath for Twhere
    T: TypePath,
source§fn reflect_type_path(&self) -> &str
 
fn reflect_type_path(&self) -> &str
TypePath::type_path.source§fn reflect_short_type_path(&self) -> &str
 
fn reflect_short_type_path(&self) -> &str
source§fn reflect_type_ident(&self) -> Option<&str>
 
fn reflect_type_ident(&self) -> Option<&str>
TypePath::type_ident.source§fn reflect_crate_name(&self) -> Option<&str>
 
fn reflect_crate_name(&self) -> Option<&str>
TypePath::crate_name.source§fn reflect_module_path(&self) -> Option<&str>
 
fn reflect_module_path(&self) -> Option<&str>
source§impl<S> FromSample<S> for S
 
impl<S> FromSample<S> for S
fn from_sample_(s: S) -> S
source§impl<T> FromWorld for Twhere
    T: Default,
 
impl<T> FromWorld for Twhere
    T: Default,
source§fn from_world(_world: &mut World) -> T
 
fn from_world(_world: &mut World) -> T
Self using data from the given World.source§impl<S> GetField for Swhere
    S: Struct,
 
impl<S> GetField for Swhere
    S: Struct,
source§impl<T> GetPath for T
 
impl<T> GetPath for T
source§fn reflect_path<'p>(
    &self,
    path: impl ReflectPath<'p>
) -> Result<&(dyn Reflect + 'static), ReflectPathError<'p>>
 
fn reflect_path<'p>( &self, path: impl ReflectPath<'p> ) -> Result<&(dyn Reflect + 'static), ReflectPathError<'p>>
path. Read moresource§fn reflect_path_mut<'p>(
    &mut self,
    path: impl ReflectPath<'p>
) -> Result<&mut (dyn Reflect + 'static), ReflectPathError<'p>>
 
fn reflect_path_mut<'p>( &mut self, path: impl ReflectPath<'p> ) -> Result<&mut (dyn Reflect + 'static), ReflectPathError<'p>>
path. Read moresource§fn path<'p, T>(
    &self,
    path: impl ReflectPath<'p>
) -> Result<&T, ReflectPathError<'p>>where
    T: Reflect,
 
fn path<'p, T>(
    &self,
    path: impl ReflectPath<'p>
) -> Result<&T, ReflectPathError<'p>>where
    T: Reflect,
path. Read moresource§fn path_mut<'p, T>(
    &mut self,
    path: impl ReflectPath<'p>
) -> Result<&mut T, ReflectPathError<'p>>where
    T: Reflect,
 
fn path_mut<'p, T>(
    &mut self,
    path: impl ReflectPath<'p>
) -> Result<&mut T, ReflectPathError<'p>>where
    T: Reflect,
path. Read more