28 lines
548 B
Rust
28 lines
548 B
Rust
|
//! Portable PixMap format images.
|
||
|
|
||
|
use crate::durandal::{err::*, image::*};
|
||
|
use std::io;
|
||
|
|
||
|
/// Writes a PPM file from an image.
|
||
|
///
|
||
|
/// # Errors
|
||
|
///
|
||
|
/// Errors if `out` cannot be written to.
|
||
|
pub fn write_ppm(out: &mut impl io::Write, im: &impl Image) -> ResultS<()>
|
||
|
{
|
||
|
write!(out, "P3\n{} {}\n{}\n", im.w(), im.h(), u16::max_value())?;
|
||
|
|
||
|
for y in 0..im.h() {
|
||
|
for x in 0..im.w() {
|
||
|
let cr = im.index(x, y);
|
||
|
write!(out, "{} {} {} ", cr.r(), cr.g(), cr.b())?;
|
||
|
}
|
||
|
|
||
|
out.write_all(b"\n")?;
|
||
|
}
|
||
|
|
||
|
Ok(())
|
||
|
}
|
||
|
|
||
|
// EOF
|