From 86eda32f9d8fed77136ffd3495e93c4c37e7671b Mon Sep 17 00:00:00 2001 From: metamuffin Date: Tue, 6 Dec 2022 09:06:30 +0100 Subject: debug draw --- evc/src/bin/decode.rs | 33 ++++++++++++++++++++++++++++++--- 1 file changed, 30 insertions(+), 3 deletions(-) (limited to 'evc/src/bin/decode.rs') diff --git a/evc/src/bin/decode.rs b/evc/src/bin/decode.rs index af6edc6..44fcbe4 100644 --- a/evc/src/bin/decode.rs +++ b/evc/src/bin/decode.rs @@ -5,6 +5,7 @@ use evc::{ block::{Block, BlockInner}, frame::Frame, header::Header, + pixel::Pixel, ser::Source, view::View, }; @@ -12,10 +13,13 @@ use std::io::{BufReader, BufWriter}; #[derive(Parser)] #[clap(about, version)] -pub struct DecodeArgs {} +pub struct DecodeArgs { + #[arg(long)] + debug: bool, +} fn main() -> anyhow::Result<()> { - let _args = DecodeArgs::parse(); + let args = DecodeArgs::parse(); let mut input = BufReader::new(std::io::stdin()); let mut output = BufWriter::new(std::io::stdout()); @@ -36,7 +40,14 @@ fn main() -> anyhow::Result<()> { prev.view((0, 0), size), ); - frame.write(&mut output).context("writing raw frame")?; + if args.debug { + let mut f2 = frame.clone(); + draw_debug(&block, f2.view_mut((0, 0), size)); + f2.write(&mut output).context("writing raw frame")?; + } else { + frame.write(&mut output).context("writing raw frame")?; + } + prev = frame; } drop(input); @@ -55,3 +66,19 @@ fn blit_block(block: &Block, mut target: View<&mut Frame>, prev: View<&Frame>) { BlockInner::Reference { translation: _ } => target.copy_from(&prev), } } + +fn draw_debug(block: &Block, mut target: View<&mut Frame>) { + match &block.inner { + BlockInner::Literal(_) => { + target.draw_box(Pixel::GREEN); + } + BlockInner::Split(box [a, b]) => { + let [at, bt] = target.split_mut_unsafe(); + draw_debug(a, at); + draw_debug(b, bt); + } + BlockInner::Reference { translation: _ } => { + target.draw_box(Pixel::BLUE); + } + } +} -- cgit v1.2.3-70-g09d2