1pub mod puzzles;
2mod structures;
3mod util;
4
5use std::io::Cursor;
6
7use image::{ImageBuffer, ImageError, ImageFormat, Rgb};
8
9pub use crate::puzzles::maze::{
10 create_maze, print_maze, print_maze_solution, MazeAlgorithm, MazeDirection, MazeError, MazeNode,
11};
12pub use crate::puzzles::nonogram::{
13 parse_nonogram_rules, print_nonogram, print_nonogram_solution, solve_nonogram, NonogramError,
14};
15pub use crate::puzzles::sudoku::{parse_sudoku, print_sudoku, solve_sudoku, SudokuError};
16
17pub type RgbBuffer = ImageBuffer<Rgb<u8>, Vec<u8>>;
18
19pub fn image_to_png_bytes(image: &RgbBuffer) -> Result<Vec<u8>, ImageError> {
21 let mut bytes = Vec::new();
22 image.write_to(&mut Cursor::new(&mut bytes), ImageFormat::Png)?;
23
24 Ok(bytes)
25}