pub mod error; pub mod format; pub mod palette; pub mod types; pub mod dst; pub mod exp; pub mod jef; pub mod pes; pub mod vp3; mod render; mod resolve; pub use error::Error; pub use format::Format; pub use render::render_thumbnail; pub use types::{BoundingBox, ResolvedDesign, StitchCommand, StitchSegment}; /// Parse a PES file and render a thumbnail PNG of the given size. pub fn thumbnail(pes_data: &[u8], size: u32) -> Result, Error> { let design = pes::parse(pes_data)?; let resolved = pes::resolve(&design)?; render::render_thumbnail(&resolved, size) } /// Parse any supported format and render a thumbnail PNG. pub fn thumbnail_format(data: &[u8], size: u32, fmt: Format) -> Result, Error> { let resolved = parse_and_resolve(data, fmt)?; render::render_thumbnail(&resolved, size) } fn parse_and_resolve(data: &[u8], fmt: Format) -> Result { match fmt { Format::Pes => { let design = pes::parse(data)?; pes::resolve(&design) } Format::Dst => dst::parse_and_resolve(data), Format::Exp => exp::parse_and_resolve(data), Format::Jef => jef::parse_and_resolve(data), Format::Vp3 => vp3::parse_and_resolve(data), } }