pixelart 0.1.1

Show everyone the art hidden inside your code AGAIN.
Documentation
/*!
(What's) PixelArt 👾?

Using this lib you can (for now) generate pixel images from your rust code.

## Example
```rust
use pixelart::prelude::*;

fn main() {
    let mut canvas = PixelCanvas::<5>::default();

    let pos = StrictPositions::TopRight;

    // Update color of a pixel.
    let prev_color = canvas[pos].update_color(PixelColor::BLACK);
    assert_eq!(prev_color, PixelColor::WHITE);
    assert_eq!(canvas[pos].color(), &PixelColor::BLACK);

    // Change color of all pixels in main diagonal to blue where pos.row == pos.column.
    canvas
        // Iterate over all pixels row by row
        .iter_pixels_mut()
        // Filter main diagonal only pixels.
        .filter_position(|p| p.column() == p.row())
        // Update the pixel color for each item in iterator.
        .update_colors(PixelColor::RED);

    canvas
        .default_image_builder()
        .with_scale(5)
        .save("arts/basic.png")
        .unwrap();
}
```

You can do many other things after you discovered them!
*/

pub mod image;
pub mod pixels;
pub mod prelude;

#[cfg(test)]
mod tests {
    use crate::prelude::*;

    #[test]
    fn basic_example_test() {
        // A 5x5 pixel canvas.
        let mut canvas = PixelCanvas::<5>::default();

        // A common position in a square canvas.
        let pos = StrictPositions::TopRight;

        assert_eq!(canvas[pos].color(), &PixelColor::WHITE);

        // Update color of a pixel.
        let prev_color = canvas[pos].update_color(PixelColor::BLACK);
        assert_eq!(prev_color, PixelColor::WHITE);
        assert_eq!(canvas[pos].color(), &PixelColor::BLACK);

        let black_pixels: usize = canvas.iter_pixels().filter_color(PixelColor::BLACK).count();
        assert_eq!(black_pixels, 1);

        // Change color of all pixels in main diagonal to blue where pos.row == pos.column.
        canvas
            // Iterate over all pixels row by row
            .iter_pixels_mut()
            // Filter main diagonal only pixels.
            .filter_position(|p| p.column() == p.row())
            // Update the pixel color for each item in iterator.
            .update_colors(PixelColor::RED);

        assert_eq!(canvas[StrictPositions::TopLeft].color(), &PixelColor::RED);
        assert_eq!(
            canvas[StrictPositions::BottomRight].color(),
            &PixelColor::RED
        );

        canvas
            .default_image_builder()
            .with_scale(5)
            .save("arts/basic.png")
            .unwrap();
    }
}