Skip to main content

ColorValue

Struct ColorValue 

Source
pub struct ColorValue {
    pub space: Option<Arc<ColorSpace>>,
    pub components: SmallVec<[f32; 4]>,
    pub pattern: Option<Box<PatternValue>>,
}
Expand description

A colour in some space.

Cheap to clone — the space is shared, the components are inline.

Fields§

§space: Option<Arc<ColorSpace>>

The space the components live in. None before any colour operator has run, which reads as DeviceGray on first use.

§components: SmallVec<[f32; 4]>

The components, whose length always matches the space when set.

§pattern: Option<Box<PatternValue>>

The pattern, when the space is /Pattern.

Implementations§

Source§

impl ColorValue

Source

pub fn set_space(&mut self, space: Arc<ColorSpace>)

Install a colorspace, resetting the components to its default colour.

This is what makes cs discard whatever colour was current: the operands that follow are the only ones that count.

Source

pub fn set_components( &mut self, values: &[f32], ) -> Result<(), SetComponentsError>

Set the components without changing the space.

Too few values change nothing; surplus values are kept, since PDFium stores the vector verbatim. With no space installed, DeviceGray is installed first.

§Errors

SetComponentsError::TooFew when values is shorter than the space requires. SetComponentsError::PatternSpace when the current space is a pattern — only scn with a name changes a pattern colour.

Source

pub fn set_stock(&mut self, space: ColorSpace, values: &[f32])

Set both the space and the components in one step, as g, rg and k do.

Source

pub fn set_pattern( &mut self, name: Name, values: &[f32], loaded: Option<Arc<Pattern>>, )

Install a pattern, with the operands an uncoloured one paints with.

More than sixteen operands is refused outright: nothing is written, so the colour keeps whatever pattern it had, or none. Otherwise the space becomes /Pattern if it was not one already, so a /P1 scn with no preceding /Pattern cs still paints the pattern rather than resolving its operands through whatever space was current.

Source

pub fn to_rgb(&self) -> Option<Rgb>

The colour to paint with, or None when the space cannot produce one — a /None separation, an out-of-range palette index, or a pattern.

Source

pub fn is_pattern(&self) -> bool

Whether this colour comes from a pattern.

Trait Implementations§

Source§

impl Clone for ColorValue

Source§

fn clone(&self) -> ColorValue

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for ColorValue

Source§

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

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

impl Default for ColorValue

Source§

fn default() -> Self

Opaque black in DeviceGray, which is a page’s initial fill and stroke colour.

Source§

impl PartialEq for ColorValue

Source§

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

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

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

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for ColorValue

Auto Trait Implementations§

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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, S> SimdFrom<T, S> for T
where S: Simd,

Source§

fn simd_from(_simd: S, value: T) -> T

Source§

impl<F, T, S> SimdInto<T, S> for F
where T: SimdFrom<F, S>, S: Simd,

Source§

fn simd_into(self, simd: S) -> T

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

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>,

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

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

Source§

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.