Skip to content

Rust crates

Rust 1.95.0 · edition 2024

Larrygram is one Cargo workspace. The crates are internal for now: none is published to crates.io, so their API documentation is not on docs.rs. Build it locally with:

Terminal window
cargo doc --workspace --no-deps --open

Every crate forbids unsafe code and warns on missing documentation.

Crate Owns Status
larrygram-geom Geometry: paths, arcs, NURBS, splines, transforms, hit testing Available
larrygram-model Document model: documents, pages, shapes, masters, styles, ShapeSheet cells Available
larrygram-vsdx OPC package and XML read/write for .vsdx, .vssx and .vstx Available
larrygram-shapesheet ShapeSheet formula parser, evaluator and recalculation In progress
larrygram-text Text layout for shape text blocks Available
larrygram-render Scene graph, PNG and SVG rendering Available
larrygram-commands Command registry, undo and redo, selection, settings Available
larrygram-ui-spec Loader for layout, menu and shortcut data Available
larrygram-ui The egui user interface: command bar, canvas, panes Available
larrygram-vsd-binary Read-only import of binary .vsd, .vss and .vst (derived from libvisio, MPL-2.0) Planned
larrygram-control JSON control channel and MCP server Planned
Crate What it is
larrygram The desktop app (eframe and egui, OpenGL through glow)
larrygram-cli The command-line tool
larrygram-web The web app (WebAssembly, built with trunk)
xtask Project tasks: gate, codegen, extract, parity, corpus, coverage

The crates form layers, and a lower layer never depends on a higher one: geometry and the model at the bottom, file formats and the formula engine above them, then rendering, the command registry, and the user interface at the top. The xtask gate step layers checks this on every merge.