summary refs log tree commit diff
path: root/src/files
diff options
context:
space:
mode:
authorIrene Knapp <ireneista@irenes.space>2026-08-09 18:05:15 -0700
committerIrene Knapp <ireneista@irenes.space>2026-08-09 18:05:15 -0700
commit1216c5f3dd1f902fb545db875e2b88f50d24e580 (patch)
treef367588e57d43b391c0c21642886e4aa34fe1b4a /src/files
parentd672e147db0df6186c528262367770dcde9d75fc (diff)
move PNG-specific code to a new module files::png
this mirrors files::obj

Force-Push: yes
Change-Id: I17ccae0b54b49453100873ba707ee36406b96057
Diffstat (limited to 'src/files')
-rw-r--r--src/files/mod.rs2
-rw-r--r--src/files/png.rs23
2 files changed, 25 insertions, 0 deletions
diff --git a/src/files/mod.rs b/src/files/mod.rs
index 8bc7539..c977be4 100644
--- a/src/files/mod.rs
+++ b/src/files/mod.rs
@@ -1,3 +1,5 @@
 #![deny(unsafe_code)]
 
 pub mod obj;
+pub mod png;
+
diff --git a/src/files/png.rs b/src/files/png.rs
new file mode 100644
index 0000000..c164613
--- /dev/null
+++ b/src/files/png.rs
@@ -0,0 +1,23 @@
+#![deny(unsafe_code)]
+use crate::error::*;
+use crate::graphics::{ Permanent, Texture };
+
+use std::io::Cursor;
+
+use png::Decoder;
+
+
+pub fn load_png(permanent: &Permanent) -> Result<(Texture, u32)> {
+  let png = include_bytes!("../../textures/forest_leaves_04_diff.png");
+
+  let decoder = Decoder::new(Cursor::new(png));
+  let mut reader = decoder.read_info()?;
+
+  let (width, height) = reader.info().size();
+
+  let mut pixels = vec![0; reader.info().raw_bytes()];
+  reader.next_frame(&mut pixels)?;
+
+  Texture::new(width, height, pixels, permanent)
+}
+