diff options
Diffstat (limited to 'evc/src/bin/decode.rs')
-rw-r--r-- | evc/src/bin/decode.rs | 50 |
1 files changed, 2 insertions, 48 deletions
diff --git a/evc/src/bin/decode.rs b/evc/src/bin/decode.rs index 9be1a16..7b44ede 100644 --- a/evc/src/bin/decode.rs +++ b/evc/src/bin/decode.rs @@ -4,13 +4,9 @@ use clap::Parser; use evc::{ block::Block, codec::decode::decode_block, - format::{ - header::Header, - ser::{map_scalar8, Source}, - }, + debug::draw_debug, + format::{header::Header, ser::Source}, frame::Frame, - helpers::{matrix::Mat2, pixel::Pixel, vector::Vec2}, - view::View, }; use log::info; use std::io::{BufReader, BufWriter}; @@ -54,45 +50,3 @@ fn main() -> anyhow::Result<()> { drop(input); Ok(()) } - -fn draw_debug(block: &Block, mut target: View<&mut Frame>) { - match &block { - Block::Literal(_) => { - target.draw_box(Pixel::GREEN); - } - Block::Split(box [a, b]) => { - let [at, bt] = target.split_mut_unsafe(); - draw_debug(a, at); - draw_debug(b, bt); - } - Block::Reference { translation } => { - target.draw_box(Pixel::BLUE); - target.frame.draw_line( - target.center().into(), - (target.center() + *translation).into(), - Pixel::RED, - ) - } - Block::AdvancedReference(r) => { - let mat = Mat2 { - a: map_scalar8(r.transform.a), - b: map_scalar8(r.transform.b), - c: map_scalar8(r.transform.c), - d: map_scalar8(r.transform.d), - }; - let translation = Vec2 { - x: map_scalar8(r.translation.x), - y: map_scalar8(r.translation.y), - }; - let tl = mat.transform(target.offset.into()) + translation; - let tr = mat.transform((target.offset + target.size.x_only()).into()) + translation; - let bl = mat.transform((target.offset + target.size.y_only()).into()) + translation; - let br = mat.transform((target.offset + target.size).into()) + translation; - target.frame.draw_line(tl, tr, Pixel::MAGENTA); - target.frame.draw_line(tr, br, Pixel::MAGENTA); - target.frame.draw_line(br, bl, Pixel::MAGENTA); - target.frame.draw_line(bl, tl, Pixel::MAGENTA); - target.draw_box(Pixel::CYAN); - } - } -} |