oxml-drawing
Parse, edit, resolve, and serialize reusable DrawingML content without depending on a document format.
Capabilities
- Typed colors with theme and color-map resolution.
- Solid, gradient, pattern, image, and no-fill models.
- Preset and custom geometry, lines, transforms, text bodies, and tables.
- Schema-ordered writing with ordered preservation of unmodelled children.
- Shared chart, table, color, theme, and geometry models serve both document families without importing either facade.
Measured footprint and speed
The archive row is regenerated from the package that carries this README.
| Measurement | Value | Version | Platform | Build mode | Input | Command | Statistic | Measured on |
|---|---|---|---|---|---|---|---|---|
| Crates.io archive: oxml-drawing | 226,344 compressed bytes, 1,491,701 member bytes, 24 members | 0.14.2 | macOS 26.6.2, Apple M5 Max, arm64 | cargo publish --workspace --dry-run --allow-dirty --locked |
Tracked oxml-drawing package inventory |
python3 scripts/readme_doctests.py --record-measurements |
gzip archive bytes, tar member bytes, tar member count | 2026-10-16 |
Use it when
Use this crate when reading or writing DrawingML shared by DOCX and PPTX packages. Use rpptx or rdocx for complete documents.
Relationship
It consumes format-neutral OOXML primitives and supplies drawing models to presentation and rendering crates. Format-specific anchors, wrappers, packaging, and rendering belong elsewhere. Effects and DrawingML elements that are not typed remain preserved rather than being interpreted.
Example
use Fill;
let fill = from_xml?;
assert!;
# Ok::
Add oxml-drawing = "0.14.2" to your dependencies. Browse the typed DrawingML API before constructing schema-level values directly.