Struct exr::image::SpecificChannelsBuilder

source ·
pub struct SpecificChannelsBuilder<RecursiveChannels, RecursivePixel> {
    channels: RecursiveChannels,
    px: PhantomData<RecursivePixel>,
}
Expand description

Used to construct a SpecificChannels. Call with_named_channel as many times as desired, and then call with_pixels to define the colors.

Fields§

§channels: RecursiveChannels§px: PhantomData<RecursivePixel>

Implementations§

source§

impl<RecursiveChannels: CheckDuplicates, RecursivePixel> SpecificChannelsBuilder<RecursiveChannels, RecursivePixel>

source

pub fn with_channel<Sample: IntoSample>( self, name: impl Into<Text>, ) -> SpecificChannelsBuilder<Recursive<RecursiveChannels, ChannelDescription>, Recursive<RecursivePixel, Sample>>

Add another channel to this image. Does not add the actual pixels, but instead only declares the presence of the channel. Panics if the name contains unsupported characters. Panics if a channel with the same name already exists. Use Text::new_or_none() to manually handle these cases. Use with_channel_details instead if you want to specify more options than just the name of the channel. The generic parameter can usually be inferred from the closure in with_pixels.

source

pub fn with_channel_details<Sample: Into<Sample>>( self, channel: ChannelDescription, ) -> SpecificChannelsBuilder<Recursive<RecursiveChannels, ChannelDescription>, Recursive<RecursivePixel, Sample>>

Add another channel to this image. Does not add the actual pixels, but instead only declares the presence of the channel. Use with_channel instead if you only want to specify the name of the channel. Panics if a channel with the same name already exists. The generic parameter can usually be inferred from the closure in with_pixels.

source

pub fn with_pixels<Pixels>( self, get_pixel: Pixels, ) -> SpecificChannels<Pixels, RecursiveChannels>
where Pixels: GetPixel, <Pixels as GetPixel>::Pixel: IntoRecursive<Recursive = RecursivePixel>,

Specify the actual pixel contents of the image. You can pass a closure that returns a color for each pixel (Fn(Vec2<usize>) -> Pixel), or you can pass your own image if it implements GetPixel. The pixel type must be a tuple with the correct number of entries, depending on the number of channels. The tuple entries can be either f16, f32, u32 or Sample. Use with_pixel_fn instead of this function, to get extra type safety for your pixel closure.

source

pub fn with_pixel_fn<Pixel, Pixels>( self, get_pixel: Pixels, ) -> SpecificChannels<Pixels, RecursiveChannels>
where Pixels: Sync + Fn(Vec2<usize>) -> Pixel, Pixel: IntoRecursive<Recursive = RecursivePixel>,

Specify the contents of the image. The pixel type must be a tuple with the correct number of entries, depending on the number of channels. The tuple entries can be either f16, f32, u32 or Sample. Use with_pixels instead of this function, if you want to pass an object that is not a closure.

Usually, the compiler can infer the type of the pixel (for example, f16,f32,f32) from the closure. If that’s not possible, you can specify the type of the channels when declaring the channel (for example, with_named_channel::<f32>("R")).

Trait Implementations§

source§

impl<RecursiveChannels: Debug, RecursivePixel: Debug> Debug for SpecificChannelsBuilder<RecursiveChannels, RecursivePixel>

source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<RecursiveChannels, RecursivePixel> Freeze for SpecificChannelsBuilder<RecursiveChannels, RecursivePixel>
where RecursiveChannels: Freeze,

§

impl<RecursiveChannels, RecursivePixel> RefUnwindSafe for SpecificChannelsBuilder<RecursiveChannels, RecursivePixel>
where RecursiveChannels: RefUnwindSafe, RecursivePixel: RefUnwindSafe,

§

impl<RecursiveChannels, RecursivePixel> Send for SpecificChannelsBuilder<RecursiveChannels, RecursivePixel>
where RecursiveChannels: Send, RecursivePixel: Send,

§

impl<RecursiveChannels, RecursivePixel> Sync for SpecificChannelsBuilder<RecursiveChannels, RecursivePixel>
where RecursiveChannels: Sync, RecursivePixel: Sync,

§

impl<RecursiveChannels, RecursivePixel> Unpin for SpecificChannelsBuilder<RecursiveChannels, RecursivePixel>
where RecursiveChannels: Unpin, RecursivePixel: Unpin,

§

impl<RecursiveChannels, RecursivePixel> UnwindSafe for SpecificChannelsBuilder<RecursiveChannels, RecursivePixel>
where RecursiveChannels: UnwindSafe, RecursivePixel: UnwindSafe,

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

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, U> TryFrom<U> for T
where U: Into<T>,

§

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

§

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.