diff --git a/ggdt/src/graphics/bitmap/gif.rs b/ggdt/src/graphics/bitmap/gif.rs index c3b942e..63c71e9 100644 --- a/ggdt/src/graphics/bitmap/gif.rs +++ b/ggdt/src/graphics/bitmap/gif.rs @@ -6,6 +6,7 @@ use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; use thiserror::Error; use crate::graphics::bitmap::indexed::IndexedBitmap; +use crate::graphics::bitmap::rgb::RgbaBitmap; use crate::graphics::palette::{Palette, PaletteError, PaletteFormat}; use crate::utils::lzwgif::{lzw_decode, lzw_encode, LzwError}; @@ -551,6 +552,25 @@ impl IndexedBitmap { } } +// wasteful temporary measures until i feel like re-working the above loading process with some kind of +// multi-pixel-depth support. + +impl RgbaBitmap { + pub fn load_gif_bytes( + reader: &mut T, + ) -> Result<(RgbaBitmap, Palette), GifError> { + let (temp_bitmap, palette) = IndexedBitmap::load_gif_bytes(reader)?; + let output = temp_bitmap.to_rgba(&palette); + Ok((output, palette)) + } + + pub fn load_gif_file(path: &Path) -> Result<(RgbaBitmap, Palette), GifError> { + let (temp_bitmap, palette) = IndexedBitmap::load_gif_file(path)?; + let output = temp_bitmap.to_rgba(&palette); + Ok((output, palette)) + } +} + #[cfg(test)] pub mod tests { use tempfile::TempDir; diff --git a/ggdt/src/graphics/bitmap/iff.rs b/ggdt/src/graphics/bitmap/iff.rs index 192ebba..60b3f73 100644 --- a/ggdt/src/graphics/bitmap/iff.rs +++ b/ggdt/src/graphics/bitmap/iff.rs @@ -7,6 +7,7 @@ use byteorder::{BigEndian, ReadBytesExt, WriteBytesExt}; use thiserror::Error; use crate::graphics::bitmap::indexed::IndexedBitmap; +use crate::graphics::bitmap::rgb::RgbaBitmap; use crate::graphics::palette::{Palette, PaletteError, PaletteFormat}; use crate::utils::packbits::{pack_bits, PackBitsError, unpack_bits}; @@ -559,6 +560,25 @@ impl IndexedBitmap { } } +// wasteful temporary measures until i feel like re-working the above loading process with some kind of +// multi-pixel-depth support. + +impl RgbaBitmap { + pub fn load_iff_bytes( + reader: &mut T, + ) -> Result<(RgbaBitmap, Palette), IffError> { + let (temp_bitmap, palette) = IndexedBitmap::load_iff_bytes(reader)?; + let output = temp_bitmap.to_rgba(&palette); + Ok((output, palette)) + } + + pub fn load_iff_file(path: &Path) -> Result<(RgbaBitmap, Palette), IffError> { + let (temp_bitmap, palette) = IndexedBitmap::load_iff_file(path)?; + let output = temp_bitmap.to_rgba(&palette); + Ok((output, palette)) + } +} + #[cfg(test)] mod tests { use tempfile::TempDir; diff --git a/ggdt/src/graphics/bitmap/pcx.rs b/ggdt/src/graphics/bitmap/pcx.rs index b6bebe3..545f634 100644 --- a/ggdt/src/graphics/bitmap/pcx.rs +++ b/ggdt/src/graphics/bitmap/pcx.rs @@ -6,6 +6,7 @@ use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; use thiserror::Error; use crate::graphics::bitmap::indexed::IndexedBitmap; +use crate::graphics::bitmap::rgb::RgbaBitmap; use crate::graphics::color::from_rgb32; use crate::graphics::palette::{Palette, PaletteError, PaletteFormat}; use crate::utils::bytes::ReadFixedLengthByteArray; @@ -280,6 +281,25 @@ impl IndexedBitmap { } } +// wasteful temporary measures until i feel like re-working the above loading process with some kind of +// multi-pixel-depth support. + +impl RgbaBitmap { + pub fn load_pcx_bytes( + reader: &mut T, + ) -> Result<(RgbaBitmap, Palette), PcxError> { + let (temp_bitmap, palette) = IndexedBitmap::load_pcx_bytes(reader)?; + let output = temp_bitmap.to_rgba(&palette); + Ok((output, palette)) + } + + pub fn load_pcx_file(path: &Path) -> Result<(RgbaBitmap, Palette), PcxError> { + let (temp_bitmap, palette) = IndexedBitmap::load_pcx_file(path)?; + let output = temp_bitmap.to_rgba(&palette); + Ok((output, palette)) + } +} + #[cfg(test)] pub mod tests { use tempfile::TempDir;