pub struct DdsDecoder<R> { /* private fields */ }Expand description
DDS decoder.
This decoder supports decoding DDS files with a single texture, including cube maps. Texture arrays and volumes are not supported.
It’s possible to set the color type the image is decoded as using
DdsDecoder::set_color_type.
Implementations§
Source§impl<R: Read> DdsDecoder<R>
impl<R: Read> DdsDecoder<R>
Sourcepub fn new(r: R) -> ImageResult<Self>
pub fn new(r: R) -> ImageResult<Self>
Create a new decoder that decodes from the stream r
Sourcepub fn set_color_type(&mut self, color: ColorType) -> ImageResult<()>
pub fn set_color_type(&mut self, color: ColorType) -> ImageResult<()>
Set the color type for the decoder.
The DDS decoder supports decoding images not just in their native color
format, but any user-defined color format. This is useful for decoding
images that do not cleanly fit into the native formats. E.g. the DDS
format B5G6R5_UNORM is decoded as ColorType::Rgb8 by default, but
you may want to decode it as ColorType::Rgb32F instead to avoid the
rounding error when converting to u8. Similarly, your application may
only support 8-bit images, while the DDS file is in a 16/32-bit format.
Decoding directly into the final color type is more efficient than
decoding into the native format and then converting.
§Errors
Currently, ColorType::La8 and ColorType::La16 are not supported
for decoding DDS files. If these color types (or other unsupported types)
are provided, this function will return ImageError::Unsupported with
UnsupportedErrorKind::Color.
Trait Implementations§
Source§impl<R: Read + Seek> ImageDecoder for DdsDecoder<R>
impl<R: Read + Seek> ImageDecoder for DdsDecoder<R>
Source§fn dimensions(&self) -> (u32, u32)
fn dimensions(&self) -> (u32, u32)
Source§fn color_type(&self) -> ColorType
fn color_type(&self) -> ColorType
Source§fn original_color_type(&self) -> ExtendedColorType
fn original_color_type(&self) -> ExtendedColorType
Source§fn set_limits(&mut self, limits: Limits) -> ImageResult<()>
fn set_limits(&mut self, limits: Limits) -> ImageResult<()>
Source§fn read_image(self, buf: &mut [u8]) -> ImageResult<()>
fn read_image(self, buf: &mut [u8]) -> ImageResult<()>
Source§fn read_image_boxed(self: Box<Self>, buf: &mut [u8]) -> ImageResult<()>
fn read_image_boxed(self: Box<Self>, buf: &mut [u8]) -> ImageResult<()>
read_image instead; this method is an implementation detail needed so the trait can
be object safe. Read moreSource§fn icc_profile(&mut self) -> Result<Option<Vec<u8>>, ImageError>
fn icc_profile(&mut self) -> Result<Option<Vec<u8>>, ImageError>
Ok(None) if the image does not have one. Read moreSource§fn exif_metadata(&mut self) -> Result<Option<Vec<u8>>, ImageError>
fn exif_metadata(&mut self) -> Result<Option<Vec<u8>>, ImageError>
kamadak-exif is required to actually parse it. Read moreSource§fn xmp_metadata(&mut self) -> Result<Option<Vec<u8>>, ImageError>
fn xmp_metadata(&mut self) -> Result<Option<Vec<u8>>, ImageError>
Source§fn iptc_metadata(&mut self) -> Result<Option<Vec<u8>>, ImageError>
fn iptc_metadata(&mut self) -> Result<Option<Vec<u8>>, ImageError>
Source§fn orientation(&mut self) -> Result<Orientation, ImageError>
fn orientation(&mut self) -> Result<Orientation, ImageError>
Source§fn total_bytes(&self) -> u64
fn total_bytes(&self) -> u64
Auto Trait Implementations§
impl<R> Freeze for DdsDecoder<R>where
R: Freeze,
impl<R> RefUnwindSafe for DdsDecoder<R>where
R: RefUnwindSafe,
impl<R> Send for DdsDecoder<R>where
R: Send,
impl<R> Sync for DdsDecoder<R>where
R: Sync,
impl<R> Unpin for DdsDecoder<R>where
R: Unpin,
impl<R> UnsafeUnpin for DdsDecoder<R>where
R: UnsafeUnpin,
impl<R> UnwindSafe for DdsDecoder<R>where
R: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more