From cf1e5b165ac318060e5f10987bb32014593ba7f5 Mon Sep 17 00:00:00 2001 From: Camden Dixie O'Brien Date: Sat, 24 Oct 2026 13:31:23 +0100 Subject: [PATCH] Create Image types --- src/image.rs | 47 +++++++++++++++++++++++++++++++++++++++++++++++ src/lib.rs | 15 +-------------- 2 files changed, 48 insertions(+), 14 deletions(-) create mode 100644 src/image.rs diff --git a/src/image.rs b/src/image.rs new file mode 100644 index 0000000..6d8104c --- /dev/null +++ b/src/image.rs @@ -0,0 +1,47 @@ +#[derive(Clone, Copy, Debug, PartialEq)] +pub struct Pixel { + pub r: f32, + pub g: f32, + pub b: f32, + pub a: f32, +} + +#[derive(Clone, Copy, Debug, Eq, PartialEq)] +pub struct Extent { + pub x: u32, + pub y: u32, +} + +#[derive(Debug)] +pub struct Image { + pub extent: Extent, + pub pixels: Vec, +} + +#[derive(Debug)] +pub enum Error { + Invalid, + Io(std::io::Error), +} + +pub trait Format { + fn read(input: &mut I) -> Result + where + I: std::io::Read; + + fn write(output: &mut O, img: &Image) -> std::io::Result<()> + where + O: std::io::Write; +} + +impl Extent { + pub fn size(&self) -> u32 { + self.x * self.y + } +} + +impl From for Error { + fn from(error: std::io::Error) -> Self { + Error::Io(error) + } +} diff --git a/src/lib.rs b/src/lib.rs index b93cf3f..14995d4 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,14 +1 @@ -pub fn add(left: u64, right: u64) -> u64 { - left + right -} - -#[cfg(test)] -mod tests { - use super::*; - - #[test] - fn it_works() { - let result = add(2, 2); - assert_eq!(result, 4); - } -} +pub mod image;