vertical_and_horizontal_chunks/
vertical-and-horizontal-chunks.rs1use pixtra::canvas::Canvas;
2use pixtra::pixels::Pixel;
3use pixtra::utility::count_colors;
4
5fn draw_filter(_: &Canvas, _: u32, y: u32) -> Pixel {
6 let y_level = (y / 10 + 1) as u8;
7 let pixel = Pixel::new(15 * y_level, 0, 0, 255);
8 pixel
9}
10
11fn main() {
13 let canvas = Canvas::new(100, 100);
14
15 let canvas = canvas.filter(draw_filter);
17 let counts = count_colors(&canvas);
18 assert_eq!(counts.len(), 10);
19 assert_eq!(counts.get(&Pixel::new(30, 0, 0, 255)), Some(&1000));
20 assert_eq!(counts.get(&Pixel::new(0, 0, 0, 0)), None);
21
22 let chunks = canvas.vertical_chunks(10);
23 for (i, chunk) in chunks.iter().enumerate() {
24 let counts = count_colors(&chunk);
25 assert_eq!(counts.len(), 1, "We are testing chunk {}", i);
26 assert_eq!(
27 counts.contains_key(&Pixel::new(((i + 1) * 15) as u8, 0, 0, 255)),
28 true,
29 "We are testing chunk {}",
30 i
31 );
32 }
33}