pub struct ShapeNode {Show 31 fields
pub id: String,
pub name: Option<String>,
pub role: Option<String>,
pub x: Option<PropertyValue>,
pub y: Option<PropertyValue>,
pub w: Option<PropertyValue>,
pub h: Option<PropertyValue>,
pub kind: Option<String>,
pub fill: Option<PropertyValue>,
pub stroke: Option<PropertyValue>,
pub stroke_width: Option<PropertyValue>,
pub radius: Option<PropertyValue>,
pub stroke_alignment: Option<String>,
pub padding: Option<PropertyValue>,
pub h_align: Option<String>,
pub v_align: Option<String>,
pub text_style: Option<String>,
pub spans: Vec<TextSpan>,
pub style: Option<String>,
pub opacity: Option<f64>,
pub visible: Option<bool>,
pub locked: Option<bool>,
pub rotate: Option<Dimension>,
pub anchor: Option<String>,
pub anchor_zone: Option<String>,
pub anchor_sibling: Option<String>,
pub anchor_edge: Option<String>,
pub anchor_gap: Option<Dimension>,
pub anchor_parent: Option<bool>,
pub source_span: Option<Span>,
pub unknown_props: BTreeMap<String, UnknownProperty>,
}Expand description
A shape node — a COMPOUND node: a background box that OWNS a centered text
label (like a flowchart process box).
Structurally this mirrors TextNode: it carries box geometry + visual
properties AND a list of owned label TextSpans (NOT child Nodes). The
background primitive emitted depends on ShapeNode::kind
(process/decision/terminator/ellipse, default process). The owned
label text is rendered centered inside the box.
Fields§
§id: String§name: Option<String>§role: Option<String>§x: Option<PropertyValue>§y: Option<PropertyValue>§w: Option<PropertyValue>§h: Option<PropertyValue>§kind: Option<String>Shape kind string (process/decision/terminator/ellipse).
Validated, not enum-typed, so unknown values survive for forward-compat.
Absent or unrecognized is treated as "process" at compile time.
fill: Option<PropertyValue>§stroke: Option<PropertyValue>§stroke_width: Option<PropertyValue>§radius: Option<PropertyValue>Corner radius for the process rounded-rect (token-required dimension).
stroke_alignment: Option<String>Stroke alignment (inside/center/outside), same model as rect.
padding: Option<PropertyValue>Text inset inside the box (token-required dimension), applied to the owned label.
h_align: Option<String>Horizontal label alignment in the box (start/center/end, default
center), applied to the owned label.
v_align: Option<String>Vertical label alignment in the box (top/middle/bottom, default
middle), applied to the owned label.
text_style: Option<String>Style ref for the owned label text, applied to the label.
spans: Vec<TextSpan>The owned label spans (same model as a text node’s spans), rendered
centered inside the box on top of the background.
style: Option<String>Box style ref.
opacity: Option<f64>§visible: Option<bool>§locked: Option<bool>§rotate: Option<Dimension>§anchor: Option<String>Page-relative placement anchor (one of the nine named positions, e.g.
"bottom-right"). When present and recognized, the compile step derives
the node’s x and/or y from the page and node dimensions. An explicitly-
authored x or y always wins.
anchor_zone: Option<String>Optional safe-zone reference for the anchor. See RectNode::anchor_zone.
anchor_sibling: Option<String>Optional sibling node id for sibling-relative anchor positioning.
See RectNode::anchor_sibling.
anchor_edge: Option<String>Adjacent-placement edge relative to anchor-sibling: above/below/before/after.
See RectNode::anchor_edge.
anchor_gap: Option<Dimension>Gap (px) between this node and its anchor-sibling edge when anchor-edge is set.
See RectNode::anchor_gap.
anchor_parent: Option<bool>Parent-relative anchor toggle. See RectNode::anchor_parent.
source_span: Option<Span>Source declaration span, when available.
unknown_props: BTreeMap<String, UnknownProperty>Unknown properties preserved for forward-compat.