pub trait TiffKind {
type OffsetType: TryFrom<usize, Error = TryFromIntError> + Into<u64> + TiffValue;
type OffsetArrayType: ?Sized + TiffValue;
// Required methods
fn write_header<W: Write>(writer: &mut TiffWriter<W>) -> TiffResult<()>;
fn convert_offset(offset: u64) -> TiffResult<Self::OffsetType>;
fn write_offset<W: Write>(
writer: &mut TiffWriter<W>,
offset: u64,
) -> TiffResult<()>;
fn write_entry_count<W: Write>(
writer: &mut TiffWriter<W>,
count: usize,
) -> TiffResult<()>;
fn convert_slice(slice: &[Self::OffsetType]) -> &Self::OffsetArrayType;
}
Expand description
Trait to abstract over Tiff/BigTiff differences.
Implemented for TiffKindStandard
and TiffKindBig
.
Required Associated Types§
sourcetype OffsetType: TryFrom<usize, Error = TryFromIntError> + Into<u64> + TiffValue
type OffsetType: TryFrom<usize, Error = TryFromIntError> + Into<u64> + TiffValue
The type of offset fields, u32
for normal Tiff, u64
for BigTiff.
sourcetype OffsetArrayType: ?Sized + TiffValue
type OffsetArrayType: ?Sized + TiffValue
Needed for the convert_slice
method.
Required Methods§
sourcefn write_header<W: Write>(writer: &mut TiffWriter<W>) -> TiffResult<()>
fn write_header<W: Write>(writer: &mut TiffWriter<W>) -> TiffResult<()>
Write the (Big)Tiff header.
sourcefn convert_offset(offset: u64) -> TiffResult<Self::OffsetType>
fn convert_offset(offset: u64) -> TiffResult<Self::OffsetType>
Convert a file offset to Self::OffsetType
.
This returns an error for normal Tiff if the offset is larger than u32::MAX
.
sourcefn write_offset<W: Write>(
writer: &mut TiffWriter<W>,
offset: u64,
) -> TiffResult<()>
fn write_offset<W: Write>( writer: &mut TiffWriter<W>, offset: u64, ) -> TiffResult<()>
Write an offset value to the given writer.
Like convert_offset
, this errors if offset > u32::MAX
for normal Tiff.
sourcefn write_entry_count<W: Write>(
writer: &mut TiffWriter<W>,
count: usize,
) -> TiffResult<()>
fn write_entry_count<W: Write>( writer: &mut TiffWriter<W>, count: usize, ) -> TiffResult<()>
Write the IFD entry count field with the given count
value.
The entry count field is an u16
for normal Tiff and u64
for BigTiff. Errors
if the given usize
is larger than the representable values.
sourcefn convert_slice(slice: &[Self::OffsetType]) -> &Self::OffsetArrayType
fn convert_slice(slice: &[Self::OffsetType]) -> &Self::OffsetArrayType
Internal helper method for satisfying Rust’s type checker.
The TiffValue
trait is implemented for both primitive values (e.g. u8
, u32
) and
slices of primitive values (e.g. [u8]
, [u32]
). However, this is not represented in
the type system, so there is no guarantee that that for all T: TiffValue
there is also
an implementation of TiffValue
for [T]
. This method works around that problem by
providing a conversion from [T]
to some value that implements TiffValue
, thereby
making all slices of OffsetType
usable with write_tag
and similar methods.
Implementations of this trait should always set OffsetArrayType
to [OffsetType]
.