From b6e69ca084879879ea183f7ecd3d2d22e40eafb9 Mon Sep 17 00:00:00 2001 From: gered Date: Tue, 21 Mar 2023 15:23:47 -0400 Subject: [PATCH] allow png files to be loaded via IndexedBitmap::load_file --- ggdt/src/graphics/bitmap/indexed/mod.rs | 4 ++++ ggdt/src/graphics/bitmap/mod.rs | 3 +++ 2 files changed, 7 insertions(+) diff --git a/ggdt/src/graphics/bitmap/indexed/mod.rs b/ggdt/src/graphics/bitmap/indexed/mod.rs index 7dd60fc..7235158 100644 --- a/ggdt/src/graphics/bitmap/indexed/mod.rs +++ b/ggdt/src/graphics/bitmap/indexed/mod.rs @@ -26,6 +26,10 @@ impl IndexedBitmap { if let Some(extension) = path.extension() { let extension = extension.to_ascii_lowercase(); match extension.to_str() { + Some("png") => { + let (bmp, palette) = Self::load_png_file(path)?; + Ok((bmp, palette.expect("Indexed color PNG loaded and should have returned a Palette"))) + }, Some("pcx") => Ok(Self::load_pcx_file(path)?), Some("gif") => Ok(Self::load_gif_file(path)?), Some("iff") | Some("lbm") | Some("pbm") | Some("bbm") => { diff --git a/ggdt/src/graphics/bitmap/mod.rs b/ggdt/src/graphics/bitmap/mod.rs index 6b5205c..eadb62b 100644 --- a/ggdt/src/graphics/bitmap/mod.rs +++ b/ggdt/src/graphics/bitmap/mod.rs @@ -32,6 +32,9 @@ pub enum BitmapError { #[error("Bitmap GIF file error")] GifError(#[from] gif::GifError), + + #[error("Bitmap PNG file error")] + PngError(#[from] png::PngError), } /// Container for 256 color 2D pixel/image data that can be rendered to the screen. Pixel data