diff options
author | metamuffin <metamuffin@disroot.org> | 2025-05-05 15:09:54 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2025-05-05 15:09:54 +0200 |
commit | 306f96164784a8cbf405e72fa4364d6523366e95 (patch) | |
tree | 51717fc139871baa438aad806f4923669ae0896c /old/bv1/codec/src/debug.rs | |
parent | 9cc089e2d6e841879e430b01d2f3d92c8820523e (diff) | |
download | video-codec-experiments-306f96164784a8cbf405e72fa4364d6523366e95.tar video-codec-experiments-306f96164784a8cbf405e72fa4364d6523366e95.tar.bz2 video-codec-experiments-306f96164784a8cbf405e72fa4364d6523366e95.tar.zst |
old dir
Diffstat (limited to 'old/bv1/codec/src/debug.rs')
-rw-r--r-- | old/bv1/codec/src/debug.rs | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/old/bv1/codec/src/debug.rs b/old/bv1/codec/src/debug.rs new file mode 100644 index 0000000..d6c37c2 --- /dev/null +++ b/old/bv1/codec/src/debug.rs @@ -0,0 +1,42 @@ +use crate::{split::split, Block, Frame, Pixel, View, P2}; + +pub fn draw_debug(frame: &mut Frame, view: View, block: &Block) { + match block { + Block::Lit(_) => rect(frame, view, Pixel::GREEN), + Block::Split(a, b) => { + let [av, bv] = split(view); + draw_debug(frame, av, &a); + draw_debug(frame, bv, &b); + } + Block::Ref(r) => { + let v = View { + a: view.a, + b: view.a + P2 { x: 2, y: 2 }, + }; + if r.pos_off != P2::ZERO { + fill_rect(frame, v + P2 { x: 0, y: 0 }, Pixel::BLUE) + } + if r.color_off != Pixel::BLACK { + fill_rect(frame, v + P2 { x: 2, y: 0 }, Pixel::RED) + } + } + } +} + +fn rect(frame: &mut Frame, view: View, color: Pixel) { + for x in view.a.x..view.b.x { + frame[P2 { x, y: view.a.y }] = color; + frame[P2 { x, y: view.b.y - 1 }] = color; + } + for y in view.a.y..view.b.y { + frame[P2 { y, x: view.a.x }] = color; + frame[P2 { y, x: view.b.x - 1 }] = color; + } +} +fn fill_rect(frame: &mut Frame, view: View, color: Pixel) { + for y in view.a.y..view.b.y { + for x in view.a.x..view.b.x { + frame[P2 { x, y }] = color; + } + } +} |