Struct Composite

Source
pub struct Composite { /* private fields */ }
Expand description

Object to style RawPixels.

Implementations§

Source§

impl Composite

Source

pub fn new_rgb(vmin: Vec<f64>, vmax: Vec<f64>) -> Self

Create a RGB Composite that maps 3 pixel values (from 3 different bands) into RGBA components.

§Example
use map_engine::cmap::{Composite, HandleGet, viridis};
let comp = Composite::new_rgb(vec![0.0, 0.0, 0.0], vec![100.0, 100.0, 100.0]);
assert_eq!(comp.get(&[0.0, 50.0, 100.0], None), [0, 127, 255, 255]);
Source

pub fn new_gradient( vmin: f64, vmax: f64, cmap_f: &'static dyn Fn(f64, f64) -> GradientLinearRGBA, ) -> Self

Create a Composite that maps 1 pixel value into RGBA using the provided function.

You can use one of the functions provided in the cmap module.

§Example
use map_engine::cmap::{Composite, HandleGet, viridis};
let comp = Composite::new_gradient(0.0, 100.0, &viridis);
assert_eq!(comp.get(&[0.0], None), [68, 1, 84, 255]);
Source

pub fn new_custom_gradient(vmin: f64, vmax: f64, colours: Vec<Colour>) -> Self

Create an equally-spaced Composite that maps 1 pixel value into RGBA using a sequence of Colour.

§Example
use map_engine::{
    colour::Colour,
    cmap::{Composite, HandleGet},
};
let comp = Composite::new_custom_gradient(0.0, 100.0, vec![
    Colour::from((255, 0, 0, 255)), // red
    Colour::from((0, 0, 255, 255)), // blue
]);
assert_eq!(comp.get(&[50.0], None), [127, 0, 127, 255]); // purple
Source

pub fn new_gradient_with_breaks(cols_and_breaks: Vec<(f64, Colour)>) -> Self

Create an Composite with custom breaks that maps 1 pixel value into RGBA.

§Example
use map_engine::{
    colour::Colour,
    cmap::{Composite, HandleGet},
};
let comp = Composite::new_gradient_with_breaks(vec![
    (0.0, Colour::from((255, 0, 0, 255))), // red
    (25.0, Colour::from((127, 0, 127, 255))), // purple shifted to the red
    (100.0, Colour::from((0, 0, 255, 255))), // blue
]);
assert_eq!(comp.get(&[25.0], None), [127, 0, 127, 255]); // purple
Source

pub fn new_discrete_palette(cols_and_breaks: Vec<(isize, Colour)>) -> Self

Create an discrete Composite that maps 1 pixel value into RGBA.

§Example
use map_engine::{
    colour::Colour,
    cmap::{Composite, HandleGet},
};
let comp = Composite::new_discrete_palette(vec![
    (0, Colour::from((255, 0, 0, 255))), // red
    (1, Colour::from((0, 255, 0, 255))), // green
    (2, Colour::from((0, 0, 255, 255))), // blue
]);
assert_eq!(comp.get(&[0.0], None), [255, 0, 0, 255]); // red
assert_eq!(comp.get(&[3.0], None), [0, 0, 0, 0]); // transparent if not defined
Source

pub fn n_bands(&self) -> usize

Number of bands supported by the Composite.

⚠ This will probably be deprecated once we enforce the number of bands using the type system ⚠

Trait Implementations§

Source§

impl Clone for Composite

Source§

fn clone(&self) -> Composite

Returns a duplicate 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 Composite

Source§

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

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

impl Default for Composite

Source§

fn default() -> Self

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

impl Display for Composite

Source§

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

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

impl HandleGet for Composite

Source§

fn get(&self, values: &[f64], no_data_values: Option<&[f64]>) -> [u8; 4]

Get a RGBA colour given a raw pixel value. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for S
where T: FloatComponent, Swp: WhitePoint, Dwp: WhitePoint, D: AdaptFrom<S, Swp, Dwp, T>,

Source§

fn adapt_into_using<M>(self, method: M) -> D
where M: TransformMatrix<Swp, Dwp, T>,

Convert the source color to the destination color using the specified method
Source§

fn adapt_into(self) -> D

Convert the source color to the destination color using the bradford method by default
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, U> IntoColor<U> for T
where U: FromColor<T>,

Source§

fn into_color(self) -> U

Convert into T with values clamped to the color defined bounds Read more
Source§

impl<T, U> IntoColorUnclamped<U> for T
where U: FromColorUnclamped<T>,

Source§

fn into_color_unclamped(self) -> U

Convert into T. The resulting color might be invalid in its color space Read more
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> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

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

Source§

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

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.
Source§

impl<T, U> TryIntoColor<U> for T
where U: TryFromColor<T>,

Source§

fn try_into_color(self) -> Result<U, OutOfBounds<U>>

Convert into T, returning ok if the color is inside of its defined range, otherwise an OutOfBounds error is returned which contains the unclamped color. Read more