diff options
author | metamuffin <metamuffin@disroot.org> | 2022-12-07 20:38:00 +0100 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2022-12-07 20:38:00 +0100 |
commit | 9d7986bbfd44b69a623fa29528b5d13000b91c77 (patch) | |
tree | 8da95f328243a96acec6c3ea6ebddc71bb63f05c /evc/src/bin/decode.rs | |
parent | 7be0d5039db7e8660bced13698178bf1d6758109 (diff) | |
download | video-codec-experiments-9d7986bbfd44b69a623fa29528b5d13000b91c77.tar video-codec-experiments-9d7986bbfd44b69a623fa29528b5d13000b91c77.tar.bz2 video-codec-experiments-9d7986bbfd44b69a623fa29528b5d13000b91c77.tar.zst |
advanced translate
Diffstat (limited to 'evc/src/bin/decode.rs')
-rw-r--r-- | evc/src/bin/decode.rs | 41 |
1 files changed, 31 insertions, 10 deletions
diff --git a/evc/src/bin/decode.rs b/evc/src/bin/decode.rs index 36b1f80..9be1a16 100644 --- a/evc/src/bin/decode.rs +++ b/evc/src/bin/decode.rs @@ -4,9 +4,12 @@ use clap::Parser; use evc::{ block::Block, codec::decode::decode_block, - format::{header::Header, ser::Source}, + format::{ + header::Header, + ser::{map_scalar8, Source}, + }, frame::Frame, - helpers::pixel::Pixel, + helpers::{matrix::Mat2, pixel::Pixel, vector::Vec2}, view::View, }; use log::info; @@ -64,14 +67,32 @@ fn draw_debug(block: &Block, mut target: View<&mut Frame>) { } Block::Reference { translation } => { target.draw_box(Pixel::BLUE); - target - .frame - .draw_line(target.center(), target.center() + *translation, Pixel::RED) + 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); } - Block::AdvancedReference { - translation: _, - transform: _, - value_scale: _, - } => (), // TODO } } |