1pub mod atlas;
6pub mod parse;
7pub mod proto;
8pub mod render;
9pub mod resolve;
10pub mod shadow;
11pub mod wire;
12
13use std::fmt;
14
15pub use render::Renderer;
16pub use resolve::{Files, Scene, resolve};
17
18#[derive(Debug, Clone, PartialEq)]
20pub struct Problem {
21 pub file: String,
22 pub pos: parse::Pos,
23 pub message: String,
24}
25
26impl fmt::Display for Problem {
27 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
28 write!(
29 f,
30 "{}:{}:{}: {}",
31 self.file, self.pos.line, self.pos.col, self.message
32 )
33 }
34}
35
36pub fn png(renderer: &mut Renderer, scene: &Scene) -> Result<Vec<u8>, String> {
39 let drawing = renderer.drawing(scene, None).map_err(|e| e.message)?;
40 render::paint_list(drawing.area, &drawing.list, 1.0)
41 .into_png()
42 .map_err(|e| format!("encoding the PNG: {e}"))
43}