1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
use crate::{split::split, Block, Frame, View, P2};
pub fn decode(last_frame: &Frame, frame: &mut Frame, view: View, block: &Block) {
match block {
Block::Lit(pxs) => frame.import(view, &pxs),
Block::Split([a, b]) => {
let [av, bv] = split(view);
decode(last_frame, frame, av, &a);
decode(last_frame, frame, bv, &b);
}
Block::Ref(r) => {
for y in view.a.y..view.b.y {
for x in view.a.x..view.b.x {
let p = P2 { x, y };
frame[p] = last_frame[p + r.pos_off] + r.color_off
}
}
}
}
}
|