Struct Rasterizer

Source
pub struct Rasterizer<Label> { /* private fields */ }
Expand description

Rasterizer rasterizes shapes like BinaryRasterizer but instead of making a boolean array, it produces an array of some generic type (Label) that implements Copy and Add though typically you’d use a numeric type.

You can call new or use LabelBuilder to construct Rasterizer instances. Constructing one requires a width, height and optional geo_to_pix transform in addition to background which specifies the default Label value used to fill the raster array. And you can provide a MergeAlgorithm value to specify what the rasterizer should do when two different shapes fill the same pixel. If you don’t supply anything, the rasterizer will use Replace by default.

use geo::{Geometry, Line, Point};
use ndarray::array;

let point = Point::new(3, 4);
let line = Line::new((0, 3), (3, 0));

let mut rasterizer = LabelBuilder::background(0).width(4).height(5).build()?;
rasterizer.rasterize(&point, 7)?;
rasterizer.rasterize(&line, 3)?;

let pixels = rasterizer.finish();
assert_eq!(
    pixels.mapv(|v| v as u8),
    array![
        [0, 0, 3, 0],
        [0, 3, 3, 0],
        [3, 3, 0, 0],
        [3, 0, 0, 0],
        [0, 0, 0, 7]
    ]
);

Implementations§

Source§

impl<Label> Rasterizer<Label>
where Label: Copy + Add<Output = Label>,

Source

pub fn new( width: usize, height: usize, geo_to_pix: Option<Transform>, algorithm: MergeAlgorithm, background: Label, ) -> Self

Source

pub fn geo_to_pix(&self) -> Option<Transform>

Retrieve the transform.

Source

pub fn rasterize<Coord, InputShape, ShapeAsF64>( &mut self, shape: &InputShape, foreground: Label, ) -> Result<()>
where InputShape: MapCoords<Coord, f64, Output = ShapeAsF64>, ShapeAsF64: Rasterize<Label> + for<'a> CoordsIter<'a, Scalar = f64> + MapCoordsInplace<f64>, Coord: Into<f64> + Copy + Debug + Num + NumCast + PartialOrd,

Rasterize one shape, which can be any type that geo provides using any coordinate numeric type that can be converted into f64.

Source

pub fn finish(self) -> Array2<Label>

Retrieve the completed raster array.

Trait Implementations§

Source§

impl<Label: Clone> Clone for Rasterizer<Label>

Source§

fn clone(&self) -> Rasterizer<Label>

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<Label: Debug> Debug for Rasterizer<Label>

Source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<Label> Freeze for Rasterizer<Label>
where Label: Freeze,

§

impl<Label> RefUnwindSafe for Rasterizer<Label>
where Label: RefUnwindSafe,

§

impl<Label> Send for Rasterizer<Label>
where Label: Send,

§

impl<Label> Sync for Rasterizer<Label>
where Label: Sync,

§

impl<Label> Unpin for Rasterizer<Label>
where Label: Unpin,

§

impl<Label> UnwindSafe for Rasterizer<Label>
where Label: UnwindSafe + RefUnwindSafe,

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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
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 = 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.