rustitch 0.2.0

PES embroidery file parser and thumbnail renderer
Documentation
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<Vec<u8>, 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<Vec<u8>, Error> {
    let resolved = parse_and_resolve(data, fmt)?;
    render::render_thumbnail(&resolved, size)
}

fn parse_and_resolve(data: &[u8], fmt: Format) -> Result<ResolvedDesign, Error> {
    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),
    }
}