From 7c640bfeaf2a0fbc8c3550b4c19790a800a7f6a2 Mon Sep 17 00:00:00 2001 From: Dylan Date: Wed, 26 Aug 2026 23:58:16 +1200 Subject: feat: Added a bunch of stuff Added derive macro for byte encode Added start for PNG reading Added BMP writing --- src/byte_encode.rs | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) (limited to 'src/byte_encode.rs') diff --git a/src/byte_encode.rs b/src/byte_encode.rs index f5cad19..4419f7f 100644 --- a/src/byte_encode.rs +++ b/src/byte_encode.rs @@ -1,12 +1,20 @@ -pub trait ByteEncode: Sized + Copy +pub trait ByteEncode: Sized + Clone { fn from_le_bytes(buffer: &[u8; N]) -> Self; fn to_le_bytes(&self) -> [u8; N]; + const SIZE: usize = N; - // fn from_be_bytes(buffer: &[u8; N]) -> Self - // { - // Self::from_le_bytes(buffer.reversed()) - // } + fn from_be_bytes(buffer: &mut [u8; N]) -> Self + { + buffer.reverse(); + Self::from_le_bytes(buffer) + } + fn to_be_bytes(&self) -> [u8; N] + { + let mut buffer = Self::to_le_bytes(self); + buffer.reverse(); + buffer + } } impl ByteEncode<4> for u32 @@ -18,6 +26,15 @@ impl ByteEncode<4> for u32 u32::to_le_bytes(*self) } } +// impl ByteEncode<4> for usize +// { +// fn from_le_bytes(buffer: &[u8; 4]) -> Self { +// u32::from_le_bytes(*buffer) as usize +// } +// fn to_le_bytes(&self) -> [u8; 4] { +// u32::to_le_bytes(*self as u32) +// } +// } impl ByteEncode<2> for u16 { fn from_le_bytes(buffer: &[u8; 2]) -> Self { -- cgit v1.3.1