simple/
simple.rs

1//! An example of using the simple API.
2
3extern crate repng;
4
5use std::fs::File;
6
7fn main() {
8    const TAU: f64 = 6.28319;
9    const THIRD: f64 = TAU / 3.0;
10
11    let width = 100;
12    let height = 100;
13    let mut rainbow = vec![0; width * height * 4];
14
15    for y in 0..height {
16        for x in 0..width {
17            let off = 4 * (y * width + x);
18            let del = TAU * (x + y) as f64 / (width + height) as f64;
19
20            let r = ((del + 0.0 * THIRD).cos() + 1.0) * 127.5;
21            let g = ((del + 1.0 * THIRD).cos() + 1.0) * 127.5;
22            let b = ((del + 2.0 * THIRD).cos() + 1.0) * 127.5;
23
24            rainbow[off + 0] = r as u8;
25            rainbow[off + 1] = g as u8;
26            rainbow[off + 2] = b as u8;
27            rainbow[off + 3] = 255;
28        }
29    }
30
31    repng::encode(
32        File::create("rainbow.png").unwrap(),
33        width as u32,
34        height as u32,
35        &rainbow,
36    ).unwrap();
37}