summaryrefslogtreecommitdiff
path: root/src/byte_encode.rs
diff options
context:
space:
mode:
authorDylan <boss@tehbox.org>2026-08-26 23:58:16 +1200
committerDylan <boss@tehbox.org>2026-08-26 23:58:16 +1200
commit7c640bfeaf2a0fbc8c3550b4c19790a800a7f6a2 (patch)
tree60ef598fa415b6a01bed7b1c1f62c1c696111c8f /src/byte_encode.rs
parentf8ffb92f2857677e4a9986ef154800ddb2e233fd (diff)
downloadtehimage-rs-7c640bfeaf2a0fbc8c3550b4c19790a800a7f6a2.tar.gz
tehimage-rs-7c640bfeaf2a0fbc8c3550b4c19790a800a7f6a2.zip
feat: Added a bunch of stuffHEADmaster
Added derive macro for byte encode Added start for PNG reading Added BMP writing
Diffstat (limited to 'src/byte_encode.rs')
-rw-r--r--src/byte_encode.rs27
1 files changed, 22 insertions, 5 deletions
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<const N: usize>: Sized + Copy
+pub trait ByteEncode<const N: usize>: 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 {