1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
//! `drawing` — shared DrawingML content model (shapes, fills, colors, lines) for the
//! WordprocessingML/SpreadsheetML/PresentationML crates.
//!
//! # Scope
//!
//! DrawingML (`dml-main.xsd`, ECMA-376/ISO-IEC 29500-1) is never used standalone — it is embedded
//! inside each host format's own vocabulary: `xl/drawings/drawingN.xml` (`xdr:` namespace) for
//! SpreadsheetML, `<w:drawing>` (`wp:`/`wps:` namespaces) for WordprocessingML, and a slide's own
//! `<p:spTree>` for PresentationML (PowerPoint depends on it the most heavily of the three, since a
//! slide's shapes essentially *are* its content). This crate factors that shared DrawingML surface
//! out into one place — shapes, fills, colors, lines, effects, geometry, text, `chart` — reused by
//! every host format instead of being duplicated three times over.
//!
//! Consequently, this crate models only a shape's *content* — `CT_ShapeProperties`, the type behind
//! `<a:spPr>` wherever it appears (`ShapeProperties`: position/size via [`Transform2D`], outline
//! via [`Geometry`], interior paint via [`Fill`]/[`Color`], stroke via [`Line`]). It never models a
//! shape's *anchor/container* — how it is placed within its host document (`xdr:twoCellAnchor` for
//! Excel, `wp:inline`/`wp:anchor` for Word, direct placement in `p:spTree` for PowerPoint) is
//! structurally different per format and stays the responsibility of each host crate, not this one.
//!
//! # Content model
//!
//! Geometry covers preset shapes ([`PresetShape`]) and custom, path-based geometry
//! ([`Geometry::Custom`]/[`CustomGeometry`]/[`PathCommand`]), plus preset-geometry adjustment values
//! ([`GeometryAdjustment`] on [`ShapeProperties::geometry_adjustments`], a sibling field rather than
//! a change to [`Geometry::Preset`] itself). Colors cover literal RGB/HSL/system/preset values
//! ([`Color`]; scheme-relative colors are not modeled). Fills cover solid/gradient/pattern/image
//! ([`Fill`], [`BlipFill`]/[`Fill::Image`], including cropping via [`CropRect`] on
//! [`BlipFill::crop`]). Lines cover stroke properties ([`Line`]), including compound line style
//! ([`LineCompound`] on [`Line::compound`]); [`write_line_named`]/[`read_line`] exist alongside
//! [`write_line`] for hosts that reuse `CT_LineProperties` under a name other than `<a:ln>` (for
//! example PresentationML table cell borders).
//!
//! Text-in-shape ([`TextBody`]) is a **sibling** of [`ShapeProperties`], not a field on it — per
//! `dml-spreadsheetDrawing.xsd`'s `CT_Shape`, where `txBody` sits alongside `spPr` inside the host's
//! own `<*:sp>` wrapper. [`TextParagraphProperties`] carries paragraph spacing ([`TextSpacing`] on
//! `line_spacing`/`space_before`/`space_after`), an indent/outline `level`, tab stops
//! ([`TabStop`]/[`TabAlignment`]), bullets/numbering
//! ([`BulletKind`]/[`BulletColor`]/[`BulletSize`]/[`BulletFont`]), and default run formatting
//! (`default_run_properties`, reusing [`TextRunProperties`] verbatim). A text run
//! ([`TextRunProperties`]) supports clickable hyperlinks ([`Hyperlink`] — see its own doc comment
//! for why it carries an already-resolved relationship id rather than a raw URL), casing and
//! character spacing ([`TextCaps`] on `text_caps`, `character_spacing_100ths_point`),
//! superscript/subscript and highlight color (`baseline_1000ths_percent`/`highlight`), and dynamic
//! text fields ([`TextRun::Field`]). [`TextBodyProperties`] supports autofit ([`TextAutofit`]),
//! horizontal centering (`anchorCtr`/`anchor_center`), and vertical direction/rotation
//! ([`TextVerticalType`]/`vertical_direction`/`rotation_60000ths`).
//!
//! Shape visual effects ([`EffectList`]/[`OuterShadow`]/[`Glow`]/[`Reflection`]/[`SoftEdge`] on
//! [`ShapeProperties::effects`]) round out the shape-content surface. [`read_color`] exists
//! alongside [`read_fill`] for a host embedding a bare color choice outside this crate's own
//! fill/line vocabulary.
pub use ;
pub use ;
pub use ;
pub use ;
// Re-exported so a future host crate (or this crate's own tests) can drive the reader without
// depending on `xml-core` directly for the `Reader` type itself — the same "don't make callers
// reach past us" posture `word-ooxml`/`excel-ooxml` apply to `opc`/`xml-core`.
pub use Reader;