# 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.
| 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
```rust,no_run
use oxml_drawing::fill::Fill;
let fill = Fill::from_xml(
br#"<a:noFill xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main"/>"#,
)?;
assert!(matches!(fill, Fill::NoFill(_)));
# Ok::<(), oxml_drawing::fill::FillError>(())
```
Add `oxml-drawing = "0.14.2"` to your dependencies. Browse the [typed DrawingML API](https://docs.rs/oxml-drawing) before constructing schema-level values directly.