[][src]Struct tiff_encoder::write::ByteBlock

pub struct ByteBlock(pub Vec<u8>);

Datablock that consists of a list of bytes.

It is possible to store any block of data in a ByteBlock, but that would require to know the Endianness of the file beforehand, so the bytes are written in the correct order.

Using a Datablock, on the other hand, allows to make use of the functionality of an EndianFile, so the data can be written without worrying about the endianness.

Examples

Creating a ByteBlock from a Vec<u8>:

use tiff_encoder::prelude::*;

// A vector holding arbitrary u8 data.
// This is the data we want to store as a Byteblock.
let data_8bits: Vec<u8> = vec![0; 65536];

// Create an Offsets of a single Byteblock from the buffer.
// This is the value that can be used directly as an IFD entry value.
let byte_block = ByteBlock::single(data_8bits);

Creating a ByteBlock from a Vec<u32>:

extern crate byteorder;
// Crate byteorder will be used to write 32-bit information in a 8-bit buffer.
use byteorder::{LittleEndian, WriteBytesExt};
use tiff_encoder::prelude::*;


// A vector holding arbitrary u32 data.
// This is the data we want to store as a Byteblock.
let data_32bits: Vec<u32> = vec![0; 65536];

// First, let's store the data in a u8 buffer.
let mut image_bytes = Vec::with_capacity(262144); // 65536*4 (each u32 has a size of 4 bytes)
for val in data_32bits {
    // A little endian TIFF file is assumed in this example.
    image_bytes.write_u32::<LittleEndian>(val).unwrap();
}

// Create an Offsets of a single Byteblock from the buffer.
// This is the value that can be used directly as an IFD entry value.
let byte_block = ByteBlock::single(image_bytes);

Methods

impl ByteBlock[src]

pub fn offsets(blocks: Vec<Vec<u8>>) -> Offsets<ByteBlock>[src]

Constructs an Offsets of ByteBlocks from a vector of vectors of bytes.

Each vector of bytes represents one ByteBlock.

pub fn single(block: Vec<u8>) -> Offsets<ByteBlock>[src]

Constructs an Offsets from a vector of bytes.

This vector of bytes represents a single ByteBlock.

Trait Implementations

impl Datablock for ByteBlock[src]

Auto Trait Implementations

impl Send for ByteBlock

impl Sync for ByteBlock

Blanket Implementations

impl<T, U> Into for T where
    U: From<T>, 
[src]

impl<T> From for T[src]

impl<T, U> TryFrom for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T> Borrow for T where
    T: ?Sized
[src]

impl<T> BorrowMut for T where
    T: ?Sized
[src]

impl<T, U> TryInto for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<T> Any for T where
    T: 'static + ?Sized
[src]