From c63d2bdcba452433870cab5bb7fec3d77457ac94 Mon Sep 17 00:00:00 2001 From: YK Date: Thu, 11 Jul 2024 18:55:44 +0300 Subject: [PATCH] refactor: remove nop from ops list --- src/common.rs | 1 - src/encoder.rs | 8 +++----- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/src/common.rs b/src/common.rs index a287501..32bef79 100644 --- a/src/common.rs +++ b/src/common.rs @@ -61,7 +61,6 @@ pub enum Ops { Diff ([i8; 3]), Rgb (RgbColor), Rgba (RgbaColor), - Nop } type RgbColor = [u8; 3]; diff --git a/src/encoder.rs b/src/encoder.rs index 6c14c2b..d1063b1 100644 --- a/src/encoder.rs +++ b/src/encoder.rs @@ -16,7 +16,6 @@ impl Ops { let clrb = |diff: i8| cast_with_bias(diff, 8); match self { - Ops::Nop => (), Ops::Rgb([r, g, b]) => buf.extend_from_slice(&[254, r, g, b]), Ops::Rgba([r, g, b, a]) => buf.extend_from_slice(&[255, r, g, b, a]), Ops::Index(idx) => buf.push(idx as u8), @@ -44,7 +43,7 @@ fn encode_body (header: Header, data: &[u8]) -> Option> { let mut known = [[0u8; 4]; 64]; let mut last = [0u8, 0, 0, 255]; let mut out = Vec::with_capacity(header.width as usize * header.height as usize); - let mut cur = Ops::Nop; + let mut cur = Ops::Rgba([0, 0, 0, 255]); for mut chunk in &data.iter().chunks(header.channels.num()) { let (&r, &g, &b) = chunk.next_tuple()?; @@ -57,9 +56,9 @@ fn encode_body (header: Header, data: &[u8]) -> Option> { match cur { // if run is in bounds 0..62 Ops::Run(run) if run < 62 => cur = Ops::Run(run + 1), - // if run is full, commit it to out vec, and start a new one + // if run is full, write it, and start a new one Ops::Run(run) if run >= 62 => { - cur = Ops::Run(62); // clamp for safety; + cur = Ops::Run(62); // clamp for safety, or return None? @Q cur.write_encoded(&mut out); cur = Ops::Run(1); }, @@ -71,7 +70,6 @@ fn encode_body (header: Header, data: &[u8]) -> Option> { if discriminant(&cur) == discriminant(&Ops::Run(0)) { cur.write_encoded(&mut out); } - let hash = hash(rgba); // INDEX -> DIFF -> LUMA -> RGB(A) if known[hash] == rgba {