diff --git a/src/hwc.rs b/src/hwc.rs new file mode 100644 index 0000000..226e383 --- /dev/null +++ b/src/hwc.rs @@ -0,0 +1,27 @@ +// SPDX-FileCopyrightText: 2024 Joshua Goins +// SPDX-License-Identifier: GPL-3.0-or-later + +use std::io::{Cursor, Read}; + +use crate::ByteSpan; + +#[derive(Debug)] +pub struct Hwc { + pub rgba: Vec, +} + +const CURSOR_WIDTH: usize = 64; +const CURSOR_HEIGHT: usize = 64; + +impl Hwc { + /// Reads an existing HWC file + pub fn from_existing(buffer: ByteSpan) -> Option { + let mut cursor = Cursor::new(buffer); + + let mut rgba = Vec::new(); + rgba.resize(CURSOR_WIDTH * CURSOR_HEIGHT * 4, 0); + cursor.read_exact(&mut rgba).ok()?; + + Some(Self { rgba }) + } +} diff --git a/src/lib.rs b/src/lib.rs index e4d374d..8984bab 100755 --- a/src/lib.rs +++ b/src/lib.rs @@ -135,3 +135,6 @@ pub mod sgb; /// Reading SCD files pub mod scd; + +/// Reading HWC files +pub mod hwc;