Struct exr::block::writer::ChunkWriter

source ·
pub struct ChunkWriter<W> {
    header_count: usize,
    byte_writer: Tracking<W>,
    chunk_indices_byte_location: Range<usize>,
    chunk_indices_increasing_y: OffsetTables,
    chunk_count: usize,
}
Expand description

Can consume compressed pixel chunks, writing them a file. Use sequential_blocks_compressor or parallel_blocks_compressor to compress your data, or use compress_all_blocks_sequential or compress_all_blocks_parallel. Use on_progress to obtain a new writer that triggers a callback for each block.

Fields§

§header_count: usize§byte_writer: Tracking<W>§chunk_indices_byte_location: Range<usize>§chunk_indices_increasing_y: OffsetTables§chunk_count: usize

Implementations§

source§

impl<W> ChunkWriter<W>
where W: Write + Seek,

source

fn new_for_buffered( buffered_byte_writer: W, headers: Headers, pedantic: bool, ) -> Result<(MetaData, Self)>

Writes the meta data and zeroed offset tables as a placeholder.

source

fn complete_meta_data(self) -> UnitResult

Seek back to the meta data, write offset tables, and flush the byte writer. Leaves the writer seeked to the middle of the file.

Trait Implementations§

source§

impl<W> ChunksWriter for ChunkWriter<W>
where W: Write + Seek,

source§

fn total_chunks_count(&self) -> usize

The total number of chunks that the complete file will contain.

source§

fn write_chunk( &mut self, index_in_header_increasing_y: usize, chunk: Chunk, ) -> UnitResult

Any more calls will result in an error and have no effect. If writing results in an error, the file and the writer may remain in an invalid state and should not be used further. Errors when the chunk at this index was already written.

source§

fn on_progress<F>( &mut self, on_progress: F, ) -> OnProgressChunkWriter<'_, Self, F>
where F: FnMut(f64),

Obtain a new writer that calls the specified closure for each block that is written to this writer.
source§

fn sequential_blocks_compressor<'w>( &'w mut self, meta: &'w MetaData, ) -> SequentialBlocksCompressor<'w, Self>

Obtain a new writer that can compress blocks to chunks, which are then passed to this writer.
source§

fn parallel_blocks_compressor<'w>( &'w mut self, meta: &'w MetaData, ) -> Option<ParallelBlocksCompressor<'w, Self>>

Obtain a new writer that can compress blocks to chunks on multiple threads, which are then passed to this writer. Returns none if the sequential compressor should be used instead (thread pool creation failure or too large performance overhead).
source§

fn compress_all_blocks_sequential( self, meta: &MetaData, blocks: impl Iterator<Item = (usize, UncompressedBlock)>, ) -> UnitResult

Compresses all blocks to the file. The index of the block must be in increasing line order within the header. Obtain iterator with MetaData::collect_ordered_blocks(...) or similar methods.
source§

fn compress_all_blocks_parallel( self, meta: &MetaData, blocks: impl Iterator<Item = (usize, UncompressedBlock)>, ) -> UnitResult

Compresses all blocks to the file. The index of the block must be in increasing line order within the header. Obtain iterator with MetaData::collect_ordered_blocks(...) or similar methods. Will fallback to sequential processing where threads are not available, or where it would not speed up the process.
source§

impl<W: Debug> Debug for ChunkWriter<W>

source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<W> Freeze for ChunkWriter<W>
where W: Freeze,

§

impl<W> RefUnwindSafe for ChunkWriter<W>
where W: RefUnwindSafe,

§

impl<W> Send for ChunkWriter<W>
where W: Send,

§

impl<W> Sync for ChunkWriter<W>
where W: Sync,

§

impl<W> Unpin for ChunkWriter<W>
where W: Unpin,

§

impl<W> UnwindSafe for ChunkWriter<W>
where W: 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.
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, 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.