Skip to main content

Image

Struct Image 

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

A lazily evaluated image: a handle onto one node of an op graph.

Constructing an Image and chaining ops onto it performs no pixel work and reads no source bytes beyond the header (SPEC §Guarantees 3). Pixels move only when a terminal pulls them.

Image is cheap to clone — it shares graph nodes rather than copying them — and is Send + Sync.

Implementations§

Source§

impl Image

Source

pub fn from_producer(producer: Arc<dyn Producer>, format: Format) -> Self

Build an image rooted at producer.

format is the container the pixels came from, reported by Image::metadata. Use Format::Raw for pixels the caller supplied directly.

Source

pub fn node(&self) -> &Arc<Node> ⓘ

The graph node this handle points at.

Source

pub fn descriptor(&self) -> ImageDescriptor

The shape of this image, resolved when the node was built.

Source

pub fn metadata(&self) -> Result<Metadata>

Header-only facts about this image.

Free: descriptors flowed forward at graph-build time, so this reads a field and decodes nothing.

§Errors

Infallible for graphs built through this API. It returns Result so that formats whose headers are parsed lazily can report a malformed header here without a breaking signature change.

Source

pub fn apply(&self, op: Arc<dyn Op>) -> Result<Self>

Chain a single-input op onto this image.

The op’s output descriptor is computed now, so an op that cannot apply to this input fails here rather than at evaluation time.

§Errors

Propagates Op::output_descriptor, and returns PixelsError::Graph if op does not take exactly one input.

Source

pub fn combine(inputs: &[Self], op: Arc<dyn Op>) -> Result<Self>

Chain a multi-input op over inputs.

This is how ops like composite join two branches of a graph. The container format reported by Image::metadata is taken from the first input.

§Errors

Returns PixelsError::Graph if inputs is empty or its length does not match Op::arity, and propagates Op::output_descriptor.

Source

pub fn region(&self) -> Region

The region covering this whole image.

Trait Implementations§

Source§

impl Clone for Image

Source§

fn clone(&self) -> Self

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 Image

Source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl !RefUnwindSafe for Image

§

impl !UnwindSafe for Image

§

impl Freeze for Image

§

impl Send for Image

§

impl Sync for Image

§

impl Unpin for Image

§

impl UnsafeUnpin for Image

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

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. 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, 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.