Module truster::canvas[][src]

Expand description

A 2D canvas which represents an image of RGB colors. Pixels can be individually changed individually. Get the canvas in PPM format with Canvas::to_ppm.

Examples

A new (black) canvas can be created with new:

let canvas = Canvas::new(10, 20);
assert_eq!(canvas.width(), 10);
assert_eq!(canvas.height(), 20);

Pixels can be accessed and mutated with indexing:

use truster::color::Color;

let mut canvas = Canvas::new(10, 20);
let red = Color::new(1.0, 0.0, 0.0);
canvas[[2, 3]] = red;
assert_eq!(canvas[[2, 3]], red);

Save a canvas in PPM format with Canvas::to_ppm:

use truster::color::Color;

use std::fs::File;
use std::io::prelude::*;

fn main() -> std::io::Result<()> {
    let mut canvas = Canvas::new(5, 3);
    canvas[[0, 0]] = Color::new(1.5, 0.0, 0.0);
    canvas[[2, 1]] = Color::new(0.0, 0.5, 0.0);
    canvas[[4, 2]] = Color::new(-0.5, 0.0, 1.0);

    let mut file = File::create("foo.ppm")?;
    canvas.to_ppm(&mut file);
    let mut file = File::open("foo.ppm")?;
    let mut output = String::new();
	file.read_to_string(&mut output);

    assert_eq!(output, "P3
5 3
255
255 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 128 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 255
");

	Ok(())
}

Structs

A 2D image. See the module’s documentation for more information.