diff --git a/src/formats/cz0.rs b/src/formats/cz0.rs index 0922bdb..1b7e9da 100644 --- a/src/formats/cz0.rs +++ b/src/formats/cz0.rs @@ -18,10 +18,10 @@ pub struct Cz0Header { bounds_height: u16, /// Offset width - offset_width: u16, + offset_width: Option, /// Offset height - offset_height: u16, + offset_height: Option, } #[derive(Debug)] @@ -38,6 +38,13 @@ impl CzHeader for Cz0Header { return Err(CzError::VersionMismatch) } + let mut offset_width = None; + let mut offset_height = None; + if common.length < 28 { + offset_width = Some(u16::from_le_bytes(bytes[28..30].try_into().unwrap())); + offset_height = Some(u16::from_le_bytes(bytes[30..32].try_into().unwrap())); + } + Ok(Self { common, @@ -47,8 +54,8 @@ impl CzHeader for Cz0Header { bounds_width: u16::from_le_bytes(bytes[24..26].try_into().unwrap()), bounds_height: u16::from_le_bytes(bytes[26..28].try_into().unwrap()), - offset_width: u16::from_le_bytes(bytes[28..30].try_into().unwrap()), - offset_height: u16::from_le_bytes(bytes[30..32].try_into().unwrap()), + offset_width, + offset_height, }) } diff --git a/src/main.rs b/src/main.rs index e0bf4b4..97b38ba 100644 --- a/src/main.rs +++ b/src/main.rs @@ -9,7 +9,7 @@ use std::fs; use crate::{cz_common::CzImage, formats::cz0::Cz0Image}; fn main() { - let input = fs::read("../test_files/Old_TestFiles/LOGO0.CZ0").expect("Error, could not open image"); + let input = fs::read("../test_files/Old_TestFiles/EX_PT.CZ0").expect("Error, could not open image"); let cz0_file = Cz0Image::decode(&input).unwrap(); println!("{:#?}", cz0_file.header()); diff --git a/src/test.png b/src/test.png index 524aa5e..6111352 100644 Binary files a/src/test.png and b/src/test.png differ