Merge PR #601 from NikitkaRa: SmartArt: write the outline to .pptx as a diagram and read it back from the data model

# Conflicts:
#	crates/engine/Cargo.toml
#	crates/pptx/src/read/shapes.rs
#	crates/pptx/src/write/shapes.rs
This commit is contained in:
Brandon Thomas
2026-10-14 13:26:21 -04:00
12 changed files with 674 additions and 16 deletions
+1
View File
@@ -93,6 +93,7 @@ the round trip even though DeckCraft doesn't model it.
| SmartArt (`dgm`) | drawing part only, as a group; text laid out on its `dsp:txXfrm` rectangle | as shapes | Diagram data model lost on save |
| SmartArt (`dgm`) | drawing part only, as a group | as shapes | Diagram data model lost on save. A diagram with no relationship parts keeps its XML; the drawing and data parts are still dropped (#203) |
| SmartArt (`dgm`) | drawing part only, as a group | as shapes | Diagram data model lost on save (DeckCraft keeps its own outline in `.deckcraft` only) |
| SmartArt (`dgm`) | the drawing part as a group, and the outline from the data model (Text Pane) | as a diagram: data model from the outline; layout, quick style and colour parts (the file's own kept until the layout is switched); the group as the cached drawing | DeckCraft's layout definitions are simple; a diagram without a cached drawing isn't drawn |
| Equations (OMML, `a14:m`) | no | no | PR #55 open |
| Audio / video (`p14:media`, trim, fades, bookmarks) | yes | partly | Playback options lost on save (#74) |
| Ink (`contentPart`) | yes | as a group of freeform lines | PowerPoint sees shapes, not ink |
+10 -8
View File
@@ -212,14 +212,16 @@ Detail in [file-format-parity.md](file-format-parity.md).
- **Estimate:** 12–20 h. Data and elements are **beta blockers** (6–10 h).
### SmartArt editing is shallow
- **Evidence:** a SmartArt graphic inserted in DeckCraft keeps its outline (`Shape.diagram`) and
has a Text Pane, Add Shape (after, before, above, below), Promote, Demote, Remove and layout
switching between DeckCraft's six layouts (`crates/engine/src/cmd/smartart.rs`). But
`crates/pptx/src/read/shapes.rs` reads a PowerPoint diagram's drawing part as a plain group (no
outline, so no Text Pane), the outline isn't written to `.pptx` (`dgm` data), and there are six
layouts rather than PowerPoint's ~200.
- **Impact:** editing a SmartArt diagram from PowerPoint breaks it.
- **Estimate:** 8–14 h.
- **Evidence:** a SmartArt graphic keeps its outline (`Shape.diagram`) and has a Text Pane, Add
Shape, Promote, Demote, Remove and layout switching (`crates/engine/src/cmd/smartart.rs`). On
`.pptx` the outline is written as a real diagram (data, layout, quick style, colours and the
cached drawing; `crates/pptx/src/dgm.rs`), and PowerPoint diagrams read their outline from the
data model, so they get the Text Pane too. Still missing: DeckCraft's own layout definitions are
simple (not yet checked in PowerPoint itself); there are six layouts rather than ~200; editing an
imported diagram's outline redraws it with DeckCraft's layout; a diagram with no cached drawing
isn't drawn.
- **Impact:** a PowerPoint diagram edited in DeckCraft changes look.
- **Estimate:** 6–10 h.
### Animation Pane, effect count and preview
Detail in [animation-parity.md](animation-parity.md). 10–16 h; the pane is a **beta blocker**.