Expand description
SmartArtShape:高阶 SmartArt 形状(TODO-037 创建 API)。
SmartArt(diagram)在 OOXML 中通过 <p:graphicFrame> +
<a:graphicData uri=".../diagram"> + <dgm:relIds r:dm=".." r:lo=".." r:qs=".." r:cs=".."/>
引用 4 个独立的 /ppt/diagrams/{data,layout,quickStyles,colors}N.xml part。
本高阶 API 把 graphicFrame 包装为 SmartArtShape,提供 4 个关系 id 的
便捷访问与设置,并让 Shape trait 直接可用。
§与 python-pptx 的对应
- python-pptx 当前未提供 SmartArt 创建 API(截至 0.6.23);
- 本类型参考
ChartShape/OleObjectShape的设计模式自研。
§写出语义
SmartArtShape序列化时只写出<p:graphicFrame>+<a:graphicData>内的<dgm:relIds r:dm=".." r:lo=".." r:qs=".." r:cs=".."/>引用元素;- 真正的 4 个 diagram part(data / layout / quickStyles / colors)由
crate::presentation::Presentation::save在to_opc_package中遍历每张 slide 的diagram_entries写出独立 part; - slide 的
_rels/slideN.xml.rels中会添加 4 个关系(DiagramData / DiagramLayout / DiagramQuickStyle / DiagramColors)指向对应 part。
§创建路径
ShapesMut::add_smartart:从结构化 模型(DataModel+LayoutDef+QuickStyleDef+ColorsDef)创建;ShapesMut::add_smartart_from_xml: 从 4 份原始 XML 字符串创建(round-trip 友好的“逃生舱“入口)。
Structs§
- Smart
ArtShape - 高阶 SmartArt 形状(承载
<p:graphicFrame>+<dgm:relIds>引用)。