summary refs log tree commit diff
path: root/src/files
diff options
context:
space:
mode:
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)
+}
+