Under each method, its extensions (Q CS XT Z ZZ IB W U): bold and ticked, it exists; struck, it does not. The extensions and what they mean
Examples: 0 come from the library's tests; 44 were composed from each method's signature and run for this page, on a fresh object, for example o1 = new stzDiagram("flow") o1.AddNode("A") o1.AddNode("B") o1.AddNode("C") o1.AddNode("D") o1.AddEdge("A", "B") o1.AddEdge("A", "C") o1.AddEdge("B", "D"). 202 methods have none yet. Examples run on 2026-10-03 20:34 inside the library at commit 0e72e2e2c.
Method
Explanation, as the source carries it
init
(no comment in the source: the name reads as a sentence) initno extension
Name
(no comment in the source: the name reads as a sentence) namecomposed example
o1 = new stzDiagram("flow")
o1.AddNode("A") o1.AddNode("B") o1.AddNode("C")
o1.AddNode("D")
o1.AddEdge("A", "B") o1.AddEdge("A", "C")
o1.AddEdge("B", "D")
? o1.Name()
#--> flowcomposed from the signature, run for this page no extension SetTheme
(no comment in the source: the name reads as a sentence) set themeno extension
SetNotation
THE NOTATION (DN0) ------------------------------------------------ Takes a registered name or a profile object. A name the registry does not know resolves to the default -- a diagram always has a notation, the way it always has a theme.QCSXTZZZIBWU
NotationO
(no comment in the source: the name reads as a sentence) notation ono extension
Notation
(no comment in the source: the name reads as a sentence) notationcomposed example
o1 = new stzDiagram("flow")
o1.AddNode("A") o1.AddNode("B") o1.AddNode("C")
o1.AddNode("D")
o1.AddEdge("A", "B") o1.AddEdge("A", "C")
o1.AddEdge("B", "D")
? o1.Notation()
#--> defaultcomposed from the signature, run for this page no extension NotationFindings
(no comment in the source: the name reads as a sentence) notation findingsno extension
SetLayout
A LAYOUT NAME THIS DOES NOT KNOW IS REFUSED, not stored. It used to take anything, and an unrecognised name became top-down in silence -- so `SetLayout(:LeftToRight)` drew a top-down picture and there was nothing anywhere to say the instruction had been dropped. A setter that accepts a value it will not honour is worse than one that refuses: the caller has evidence of neither.no extension
SetEdgeStyle
(no comment in the source: the name reads as a sentence) set edge styleno extension
SetEdgeColor
(no comment in the source: the name reads as a sentence) set edge colorno extension
SetFocusColor
The focus colour's setter, missing until now. ExportToStyl() has always WRITTEN a focus section (color + penwidth), and _ApplyStyle() has always called This.SetFocusColor() to read it back -- a method nobody had written, so loading any exported .stzstyl died on R14. Same shape as its siblings: resolve the name, keep the resolved value.no extension
FocusColor
(no comment in the source: the name reads as a sentence) focus colorcomposed example
o1 = new stzDiagram("flow")
o1.AddNode("A") o1.AddNode("B") o1.AddNode("C")
o1.AddNode("D")
o1.AddEdge("A", "B") o1.AddEdge("A", "C")
o1.AddEdge("B", "D")
? o1.FocusColor()
#--> #C94DC9composed from the signature, run for this page no extension SetNodeColor
(no comment in the source: the name reads as a sentence) set node colorno extension
SetNodeStrokeColor
(no comment in the source: the name reads as a sentence) set node stroke colorno extension
SetStrokeColor
(no comment in the source: the name reads as a sentence) set stroke colorno extension
SetFont
(no comment in the source: the name reads as a sentence) set fontno extension
SetFontSize
(no comment in the source: the name reads as a sentence) set font sizeno extension
SetPenWidth
(no comment in the source: the name reads as a sentence) set pen widthno extension
SetNodePenWidth
(no comment in the source: the name reads as a sentence) set node pen widthno extension
SetEdgePenWidth
(no comment in the source: the name reads as a sentence) set edge pen widthno extension
SetNodePenStyle
(no comment in the source: the name reads as a sentence) set node pen styleno extension
SetEdgePenStyle
(no comment in the source: the name reads as a sentence) set edge pen styleno extension
SetArrowHead
(no comment in the source: the name reads as a sentence) set arrow headno extension
SetArrowTail
(no comment in the source: the name reads as a sentence) set arrow tailno extension
SetSplines
(no comment in the source: the name reads as a sentence) set splinesno extension
SetEdgeLineStyle
Routing on the value keeps every call that works today working: a spline name still sets the spline, and a pen style now sets the pen style instead of vanishing.no extension
SetEdgeLineType
(no comment in the source: the name reads as a sentence) set edge line typeno extension
SetEdgeSpline
(no comment in the source: the name reads as a sentence) set edge splineno extension
SetNodeSeparation
(no comment in the source: the name reads as a sentence) set node separationno extension
SetRankSeparation
(no comment in the source: the name reads as a sentence) set rank separationno extension
SetConcentrate
(no comment in the source: the name reads as a sentence) set concentrateno extension
SetLayoutPreset
(no comment in the source: the name reads as a sentence) set layout presetno extension
SetTitle
(no comment in the source: the name reads as a sentence) set titleno extension
SetSubtitle
(no comment in the source: the name reads as a sentence) set subtitleno extension
SetOutput
(no comment in the source: the name reads as a sentence) set outputno extension
NodePenWidth
Getters
composed example
o1 = new stzDiagram("flow")
o1.AddNode("A") o1.AddNode("B") o1.AddNode("C")
o1.AddNode("D")
o1.AddEdge("A", "B") o1.AddEdge("A", "C")
o1.AddEdge("B", "D")
? o1.NodePenWidth()
#--> 1composed from the signature, run for this page no extensionEdgePenWidth
(no comment in the source: the name reads as a sentence) edge pen widthcomposed example
o1 = new stzDiagram("flow")
o1.AddNode("A") o1.AddNode("B") o1.AddNode("C")
o1.AddNode("D")
o1.AddEdge("A", "B") o1.AddEdge("A", "C")
o1.AddEdge("B", "D")
? o1.EdgePenWidth()
#--> 1composed from the signature, run for this page no extension NodePenStyle
(no comment in the source: the name reads as a sentence) node pen stylecomposed example
o1 = new stzDiagram("flow")
o1.AddNode("A") o1.AddNode("B") o1.AddNode("C")
o1.AddNode("D")
o1.AddEdge("A", "B") o1.AddEdge("A", "C")
o1.AddEdge("B", "D")
? o1.NodePenStyle()
#--> solidcomposed from the signature, run for this page no extension EdgePenStyle
(no comment in the source: the name reads as a sentence) edge pen stylecomposed example
o1 = new stzDiagram("flow")
o1.AddNode("A") o1.AddNode("B") o1.AddNode("C")
o1.AddNode("D")
o1.AddEdge("A", "B") o1.AddEdge("A", "C")
o1.AddEdge("B", "D")
? o1.EdgePenStyle()
#--> solidcomposed from the signature, run for this page no extension ArrowHead
(no comment in the source: the name reads as a sentence) arrow headcomposed example
o1 = new stzDiagram("flow")
o1.AddNode("A") o1.AddNode("B") o1.AddNode("C")
o1.AddNode("D")
o1.AddEdge("A", "B") o1.AddEdge("A", "C")
o1.AddEdge("B", "D")
? o1.ArrowHead()
#--> normalcomposed from the signature, run for this page no extension ArrowTail
(no comment in the source: the name reads as a sentence) arrow tailcomposed example
o1 = new stzDiagram("flow")
o1.AddNode("A") o1.AddNode("B") o1.AddNode("C")
o1.AddNode("D")
o1.AddEdge("A", "B") o1.AddEdge("A", "C")
o1.AddEdge("B", "D")
? o1.ArrowTail()
#--> nonecomposed from the signature, run for this page no extension Splines
(no comment in the source: the name reads as a sentence) splinescomposed example
o1 = new stzDiagram("flow")
o1.AddNode("A") o1.AddNode("B") o1.AddNode("C")
o1.AddNode("D")
o1.AddEdge("A", "B") o1.AddEdge("A", "C")
o1.AddEdge("B", "D")
? o1.Splines()
#--> splinecomposed from the signature, run for this page no extension NodeSeparation
(no comment in the source: the name reads as a sentence) node separationcomposed example
o1 = new stzDiagram("flow")
o1.AddNode("A") o1.AddNode("B") o1.AddNode("C")
o1.AddNode("D")
o1.AddEdge("A", "B") o1.AddEdge("A", "C")
o1.AddEdge("B", "D")
? o1.NodeSeparation()
#--> 0.60composed from the signature, run for this page no extension RankSeparation
(no comment in the source: the name reads as a sentence) rank separationcomposed example
o1 = new stzDiagram("flow")
o1.AddNode("A") o1.AddNode("B") o1.AddNode("C")
o1.AddNode("D")
o1.AddEdge("A", "B") o1.AddEdge("A", "C")
o1.AddEdge("B", "D")
? o1.RankSeparation()
#--> 0.80composed from the signature, run for this page no extension Concentrate
(no comment in the source: the name reads as a sentence) concentratecomposed example
o1 = new stzDiagram("flow")
o1.AddNode("A") o1.AddNode("B") o1.AddNode("C")
o1.AddNode("D")
o1.AddEdge("A", "B") o1.AddEdge("A", "C")
o1.AddEdge("B", "D")
? o1.Concentrate()
#--> 0composed from the signature, run for this page no extension Theme
(no comment in the source: the name reads as a sentence) themecomposed example
o1 = new stzDiagram("flow")
o1.AddNode("A") o1.AddNode("B") o1.AddNode("C")
o1.AddNode("D")
o1.AddEdge("A", "B") o1.AddEdge("A", "C")
o1.AddEdge("B", "D")
? o1.Theme()
#--> neutralcomposed from the signature, run for this page no extension Layout
(no comment in the source: the name reads as a sentence) layoutcomposed example
o1 = new stzDiagram("flow")
o1.AddNode("A") o1.AddNode("B") o1.AddNode("C")
o1.AddNode("D")
o1.AddEdge("A", "B") o1.AddEdge("A", "C")
o1.AddEdge("B", "D")
? o1.Layout()
#--> topdowncomposed from the signature, run for this page no extension EdgeColor
(no comment in the source: the name reads as a sentence) edge colorcomposed example
o1 = new stzDiagram("flow")
o1.AddNode("A") o1.AddNode("B") o1.AddNode("C")
o1.AddNode("D")
o1.AddEdge("A", "B") o1.AddEdge("A", "C")
o1.AddEdge("B", "D")
? o1.EdgeColor()
#--> #000000composed from the signature, run for this page no extension NodeStrokeColor
(no comment in the source: the name reads as a sentence) node stroke colorcomposed example
o1 = new stzDiagram("flow")
o1.AddNode("A") o1.AddNode("B") o1.AddNode("C")
o1.AddNode("D")
o1.AddEdge("A", "B") o1.AddEdge("A", "C")
o1.AddEdge("B", "D")
? o1.NodeStrokeColor()
#--> graycomposed from the signature, run for this page no extension EdgeStyle
(no comment in the source: the name reads as a sentence) edge stylecomposed example
o1 = new stzDiagram("flow")
o1.AddNode("A") o1.AddNode("B") o1.AddNode("C")
o1.AddNode("D")
o1.AddEdge("A", "B") o1.AddEdge("A", "C")
o1.AddEdge("B", "D")
? o1.EdgeStyle()
#--> normalcomposed from the signature, run for this page no extension Font
(no comment in the source: the name reads as a sentence) fontcomposed example
o1 = new stzDiagram("flow")
o1.AddNode("A") o1.AddNode("B") o1.AddNode("C")
o1.AddNode("D")
o1.AddEdge("A", "B") o1.AddEdge("A", "C")
o1.AddEdge("B", "D")
? o1.Font()
#--> helveticacomposed from the signature, run for this page no extension FontSize
(no comment in the source: the name reads as a sentence) font sizecomposed example
o1 = new stzDiagram("flow")
o1.AddNode("A") o1.AddNode("B") o1.AddNode("C")
o1.AddNode("D")
o1.AddEdge("A", "B") o1.AddEdge("A", "C")
o1.AddEdge("B", "D")
? o1.FontSize()
#--> 12composed from the signature, run for this page no extension PenWidth
(no comment in the source: the name reads as a sentence) pen widthno extension
EdgeSplines
(no comment in the source: the name reads as a sentence) edge splinescomposed example
o1 = new stzDiagram("flow")
o1.AddNode("A") o1.AddNode("B") o1.AddNode("C")
o1.AddNode("D")
o1.AddEdge("A", "B") o1.AddEdge("A", "C")
o1.AddEdge("B", "D")
? o1.EdgeSplines()
#--> splinecomposed from the signature, run for this page no extension SplineType
(no comment in the source: the name reads as a sentence) spline typecomposed example
o1 = new stzDiagram("flow")
o1.AddNode("A") o1.AddNode("B") o1.AddNode("C")
o1.AddNode("D")
o1.AddEdge("A", "B") o1.AddEdge("A", "C")
o1.AddEdge("B", "D")
? o1.SplineType()
#--> splinecomposed from the signature, run for this page no extension EdgeLineStyle
(no comment in the source: the name reads as a sentence) edge line stylecomposed example
o1 = new stzDiagram("flow")
o1.AddNode("A") o1.AddNode("B") o1.AddNode("C")
o1.AddNode("D")
o1.AddEdge("A", "B") o1.AddEdge("A", "C")
o1.AddEdge("B", "D")
? o1.EdgeLineStyle()
#--> splinecomposed from the signature, run for this page no extension EdgeLineType
(no comment in the source: the name reads as a sentence) edge line typecomposed example
o1 = new stzDiagram("flow")
o1.AddNode("A") o1.AddNode("B") o1.AddNode("C")
o1.AddNode("D")
o1.AddEdge("A", "B") o1.AddEdge("A", "C")
o1.AddEdge("B", "D")
? o1.EdgeLineType()
#--> splinecomposed from the signature, run for this page no extension Title
(no comment in the source: the name reads as a sentence) titleno extension
Subtitle
(no comment in the source: the name reads as a sentence) subtitleno extension
ResolveFontColor
color resolution
composed example
o1 = new stzDiagram("flow")
o1.AddNode("A") o1.AddNode("B") o1.AddNode("C")
o1.AddNode("D")
o1.AddEdge("A", "B") o1.AddEdge("A", "C")
o1.AddEdge("B", "D")
? o1.ResolveFontColor(TRUE)
#--> blackcomposed from the signature, run for this page no extensionContrastingTextColor
color resolution
composed example
o1 = new stzDiagram("flow")
o1.AddNode("A") o1.AddNode("B") o1.AddNode("C")
o1.AddNode("D")
o1.AddEdge("A", "B") o1.AddEdge("A", "C")
o1.AddEdge("B", "D")
? o1.ContrastingTextColor("a")
#--> blackcomposed from the signature, run for this page no extensionColorToRGB
color resolution
composed example
o1 = new stzDiagram("flow")
o1.AddNode("A") o1.AddNode("B") o1.AddNode("C")
o1.AddNode("D")
o1.AddEdge("A", "B") o1.AddEdge("A", "C")
o1.AddEdge("B", "D")
? @@( o1.ColorToRGB("a") )
#--> [ 255, 255, 255 ]composed from the signature, run for this page no extensionNodeStrokeColorForTheme
color resolutionno extension
ConvertColorTogray
color resolution
composed example
o1 = new stzDiagram("flow")
o1.AddNode("A") o1.AddNode("B") o1.AddNode("C")
o1.AddNode("D")
o1.AddEdge("A", "B") o1.AddEdge("A", "C")
o1.AddEdge("B", "D")
? o1.ConvertColorTogray("a")
#--> #FFFFFFcomposed from the signature, run for this page no extensionAddCircle
NOTE // We can add nodes using parent stzGraph methods AddNode(), AddNodeXT() and AddNodeXTT() Rounded/Elliptical ShapesQCSXTZZZIBWUXTT
AddDoubleCircle
(no comment in the source: the name reads as a sentence) add double circlein the section adding specific forms of nodes (all supported forms in graphviz dot langauge)QCSXTZZZIBWUXTT
AddEllipse
(no comment in the source: the name reads as a sentence) add ellipsein the section adding specific forms of nodes (all supported forms in graphviz dot langauge)QCSXTZZZIBWUXTT
AddEgg
(no comment in the source: the name reads as a sentence) add eggin the section adding specific forms of nodes (all supported forms in graphviz dot langauge)QCSXTZZZIBWUXTT
AddSquare
Quadrilateral ShapesQCSXTZZZIBWUXTT
AddRect
(no comment in the source: the name reads as a sentence) add rectin the section adding specific forms of nodes (all supported forms in graphviz dot langauge)QCSXTZZZIBWUXTT
AddBox
(no comment in the source: the name reads as a sentence) add boxin the section adding specific forms of nodes (all supported forms in graphviz dot langauge)QCSXTZZZIBWUXTT
AddParallelogram
(no comment in the source: the name reads as a sentence) add parallelogramin the section adding specific forms of nodes (all supported forms in graphviz dot langauge)QCSXTZZZIBWUXTT
AddTrapezium
(no comment in the source: the name reads as a sentence) add trapeziumin the section adding specific forms of nodes (all supported forms in graphviz dot langauge)QCSXTZZZIBWUXTT
AddInvTrapezium
(no comment in the source: the name reads as a sentence) add inv trapeziumin the section adding specific forms of nodes (all supported forms in graphviz dot langauge)QCSXTZZZIBWUXTT
AddDiamond
(no comment in the source: the name reads as a sentence) add diamondin the section adding specific forms of nodes (all supported forms in graphviz dot langauge)QCSXTZZZIBWUXTT
AddTriangle
Polygon ShapesQCSXTZZZIBWUXTT
AddInvTriangle
(no comment in the source: the name reads as a sentence) add inv trianglein the section adding specific forms of nodes (all supported forms in graphviz dot langauge)QCSXTZZZIBWUXTT
AddPentagon
(no comment in the source: the name reads as a sentence) add pentagonin the section adding specific forms of nodes (all supported forms in graphviz dot langauge)QCSXTZZZIBWUXTT
AddHexagon
(no comment in the source: the name reads as a sentence) add hexagonin the section adding specific forms of nodes (all supported forms in graphviz dot langauge)QCSXTZZZIBWUXTT
AddSeptagon
(no comment in the source: the name reads as a sentence) add septagonin the section adding specific forms of nodes (all supported forms in graphviz dot langauge)QCSXTZZZIBWUXTT
AddOctagon
(no comment in the source: the name reads as a sentence) add octagonin the section adding specific forms of nodes (all supported forms in graphviz dot langauge)QCSXTZZZIBWUXTT
AddTripleOctagon
(no comment in the source: the name reads as a sentence) add triple octagonin the section adding specific forms of nodes (all supported forms in graphviz dot langauge)QCSXTZZZIBWUXTT
AddCylinder
Non-geometric/Conceptual ShapesQCSXTZZZIBWUXTT
AddHouse
(no comment in the source: the name reads as a sentence) add housein the section adding specific forms of nodes (all supported forms in graphviz dot langauge)QCSXTZZZIBWUXTT
AddTab
(no comment in the source: the name reads as a sentence) add tabin the section adding specific forms of nodes (all supported forms in graphviz dot langauge)QCSXTZZZIBWUXTT
AddFolder
(no comment in the source: the name reads as a sentence) add folderin the section adding specific forms of nodes (all supported forms in graphviz dot langauge)QCSXTZZZIBWUXTT
AddComponent
(no comment in the source: the name reads as a sentence) add componentin the section adding specific forms of nodes (all supported forms in graphviz dot langauge)QCSXTZZZIBWUXTT
AddNote
(no comment in the source: the name reads as a sentence) add notein the section adding specific forms of nodes (all supported forms in graphviz dot langauge)QCSXTZZZIBWUXTT
SetClusterColor
cluster operationsno extension
AddCluster
cluster operationsQCSXTZZZIBWUXTT
Clusters
cluster operationsno extension
AddAnnotation
annotation operationsno extension
AnnotationsByType
annotation operationsno extension
Annotations
... and what they are, as data: the type each one annotates.QCSXTZZZIBWU
AddTemplate
template operationsno extension
ApplyTemplates
template operationsno extension
RegisterVisualRule
This section manages visual styling rules that change diagram appearance based on node/edge properties.no extension
ApplyVisualRules
visual rulesno extension
NodesAffectedByVisualRules
visual rulesno extension
VisualRulesApplied
visual rulesno extension
NodesWithProperty
properties-based queriesno extension
NodesWith
query methodsno extension
NodesWithTag
query methodsno extension
EdgesWithProperty
query methodsno extension
EdgesWithPropertyValue
query methodsno extension
propertiesLegend
query methods
composed example
o1 = new stzDiagram("flow")
o1.AddNode("A") o1.AddNode("B") o1.AddNode("C")
o1.AddNode("D")
o1.AddEdge("A", "B") o1.AddEdge("A", "C")
o1.AddEdge("B", "D")
? @@( o1.propertiesLegend() )
#--> [ "=== properties LEGEND ===", "" ]composed from the signature, run for this page no extensionComputeMetrics
query methods
composed example
o1 = new stzDiagram("flow")
o1.AddNode("A") o1.AddNode("B") o1.AddNode("C")
o1.AddNode("D")
o1.AddEdge("A", "B") o1.AddEdge("A", "C")
o1.AddEdge("B", "D")
? @@( o1.ComputeMetrics() )
#--> [ [ "avgpathlength", 2 ], [ "maxpathlength", 2 ], [ "bottlenecks", [ "a", "b" ] ], [ "density", 0.25 ], [ "nodecount", 4 ], [ "edgecount", 3 ] ]composed from the signature, run for this page no extensionToCanvas
KILL CRITERION, written before the code: dot still wins on two things this route does not attempt -- SPLINE edges routed around nodes, and nested clusters. If a diagram needs those, ToDot() remains the honest answer and this tier is a convenience, not a replacement. What it must do is draw every shape in the vocabulary, keep cluster members inside their cluster, and never need an external binary.QCSXTZZZIBWU
ToSVG
(no comment in the source: the name reads as a sentence) to svgin the section the native tier -- a diagram drawn without dot.exeQCSXTZZZIBWU
ToPages
Returns [ [ path, row, col, sceneX, sceneY ], ... ] -- what was written and which part of the picture each sheet holds.
composed example
o1 = new stzDiagram("flow")
o1.AddNode("A") o1.AddNode("B") o1.AddNode("C")
o1.AddNode("D")
o1.AddEdge("A", "B") o1.AddEdge("A", "C")
o1.AddEdge("B", "D")
? @@( o1.ToPages("a") )
#--> [ [ "a_r1c1.png", 1, 1, 0, 0 ] ]composed from the signature, run for this page QCSXTZZZIBWUToPNG
(no comment in the source: the name reads as a sentence) to pngin the section the native tier -- a diagram drawn without dot.exeQCSXTZZZIBWU
Fact
CATMULL-ROM through the bends rather than a polyline: the bends are where the edge must BE, not where it must turn a corner, and a curve reading smoothly past a box is what distinguishes a routed edge from a dog-leg. Ortho keeps its corners -- that is the point of ortho. -- WHAT THIS PICTURE CAN ANSWER (DN9b) -------------------------------- The same verb the math plane answers, over the things a notation picture holds: its nodes, its edges, where the renderer put them, and the verdicts its own governance reaches. A kind this plane cannot answer is refused by name rather than answered with a zero.no extension
Rendition
A VALUE THAT SAYS WHAT IT IS (DN9g) --------------------------------- NOTE THE NAME. This class already has a Display(), and it does not return anything: it writes Graphviz source and opens a viewer. Six such methods exist under base/, and they already mean two incompatible things -- three print, three launch. That is why the returning verb is called Rendition() here, and why the display contract cannot take the name Display() without first deciding which of its two existing meanings to break.no extension
RenditionKinds
(no comment in the source: the name reads as a sentence) rendition kindsin the section the native tier -- a diagram drawn without dot.execomposed example
o1 = new stzDiagram("flow")
o1.AddNode("A") o1.AddNode("B") o1.AddNode("C")
o1.AddNode("D")
o1.AddEdge("A", "B") o1.AddEdge("A", "C")
o1.AddEdge("B", "D")
? @@( o1.RenditionKinds() )
#--> [ "vector", "image", "graph", "text" ]composed from the signature, run for this page no extension RenditionAs
(no comment in the source: the name reads as a sentence) rendition asin the section the native tier -- a diagram drawn without dot.exeQCSXTZZZIBWU
RenditionAtQ
Same as RenditionAsXT: ...AND WHERE TO PUT IT. The same contract the math plane carries, in the same words: an empty path means the name this class would have chosen, and a path given for a carried kind is refused by name. See StzRenditionIsLocated, which is where the two planes agree about which kinds write a file at all.no extension
RenderClusterRects
(no comment in the source: the name reads as a sentence) render cluster rectsin the section the native tier -- a diagram drawn without dot.exeno extension
RenderNodeRects
(no comment in the source: the name reads as a sentence) render node rectsin the section the native tier -- a diagram drawn without dot.exeno extension
ClaimedChannels
(no comment in the source: the name reads as a sentence) claimed channelsin the section the native tier -- a diagram drawn without dot.exeno extension
RenderCrossings
(no comment in the source: the name reads as a sentence) render crossingsin the section the native tier -- a diagram drawn without dot.exeno extension
RenderEdgePaths
(no comment in the source: the name reads as a sentence) render edge pathsin the section the native tier -- a diagram drawn without dot.exeno extension
RenderArrows
Recorded because "an arrow means a loop" is the law in this notation most able to break without showing: it is enforced in the two places that draw a head, and gating one of them alone produced a picture identical to the one before. A law with two enforcement points and no way to count the result is a law on trust.no extension
RenderAdornments
(no comment in the source: the name reads as a sentence) render adornmentsin the section the native tier -- a diagram drawn without dot.exeno extension
RenderForks
The vertices where a stem forked and the corner was therefore drawn SQUARE: [ x, y, key ]. See _VertexIsFork.no extension
RenderHops
Where the picture declared a crossing with a wire hop. Published so an instrument can ask whether each one had room to be read as one -- a bump a few pixels from a rounded elbow is two curves in a row, and the reader cannot tell which is the corner.no extension
LanePlan
Which edges left their row, and how deep each one runs. Published for the same reason the paths are: a frame has to be tall enough to hold its rails, and an instrument has to be able to ask whether it is -- without either of them re-deriving the answer.no extension
RenderNodeLabels
(no comment in the source: the name reads as a sentence) render node labelsin the section the native tier -- a diagram drawn without dot.exeno extension
RenderLabels
(no comment in the source: the name reads as a sentence) render labelsin the section the native tier -- a diagram drawn without dot.exeno extension
RenderPicks
(no comment in the source: the name reads as a sentence) render picksin the section the native tier -- a diagram drawn without dot.exeno extension
LastCanvas
The picture as last drawn. A live session redraws THIS between gestures instead of building a new one -- the difference between a frame that costs a present and a frame that costs a layout.no extension
SlotAtPixel
The fit is linear (scale and shift into the canvas), so the map is two numbers and its inverse is exact. Both are published because a session needs the round trip: pixels in to place a cell, slots out to show where it will land.
composed example
o1 = new stzDiagram("flow")
o1.AddNode("A") o1.AddNode("B") o1.AddNode("C")
o1.AddNode("D")
o1.AddEdge("A", "B") o1.AddEdge("A", "C")
o1.AddEdge("B", "D")
? o1.SlotAtPixel(2)
#--> 0composed from the signature, run for this page no extensionPixelAtSlot
(no comment in the source: the name reads as a sentence) pixel at slotin the section the native tier -- a diagram drawn without dot.execomposed example
o1 = new stzDiagram("flow")
o1.AddNode("A") o1.AddNode("B") o1.AddNode("C")
o1.AddNode("D")
o1.AddEdge("A", "B") o1.AddEdge("A", "C")
o1.AddEdge("B", "D")
? o1.PixelAtSlot(2)
#--> 0composed from the signature, run for this page no extension SlotMap
(no comment in the source: the name reads as a sentence) slot mapin the section the native tier -- a diagram drawn without dot.exeno extension
OnPress
A DRAG IS ONE UNDO, not one per pointer-move. The cell follows the cursor by pinning directly -- the picture has to keep up -- and the COMMAND is issued once, at release, from the position the cell held when the drag began. Otherwise a single drag would leave a hundred entries in the log and an undo would move the cell one pixel.no extension
OnMove
So a move records where the pointer is and nothing else. The window draws the scene it already has and puts the dragged cell on top of it -- DragPreview() says where -- and the layout runs ONCE, at release, when the author has decided. The model is untouched until then, which is also why an abandoned drag leaves nothing behind: there was nothing to undo.no extension
DragPreview
Where the gesture currently is: [ subject, x, y ], or [] when nothing is being dragged. What a window paints over the picture.no extension
OnRelease
(no comment in the source: the name reads as a sentence) on releasein the section the native tier -- a diagram drawn without dot.exeno extension
OnCancel
ABANDONED, not completed: the cell goes back where it was and nothing enters the log. A gesture the author gave up on should leave no trace to undo.no extension
RewireAnchor
During :Rewiring, the pixel of the end that is NOT moving -- what a window draws the ghost line from. [] outside the gesture.no extension
UiRewire
What the gesture in hand is doing to which link: [ from, to, end ], or [] outside :Rewiring. The window half reads this, the guard asserts on it.no extension
RemoveLinkAt
REMOVE THE LINK UNDER THE POINTER, as one logged command. Not a gesture: removal is instantaneous, so it is a verb the window binds to whatever it likes (a key held while clicking, a context action) rather than a state the machine has to carry.
composed example
o1 = new stzDiagram("flow")
o1.AddNode("A") o1.AddNode("B") o1.AddNode("C")
o1.AddNode("D")
o1.AddEdge("A", "B") o1.AddEdge("A", "C")
o1.AddEdge("B", "D")
? o1.RemoveLinkAt(2, 5)
#--> 0composed from the signature, run for this page no extensionBeginLinking
(no comment in the source: the name reads as a sentence) begin linkingin the section the native tier -- a diagram drawn without dot.exeno extension
EndLinking
(no comment in the source: the name reads as a sentence) end linkingin the section the native tier -- a diagram drawn without dot.exeno extension
BeginLabelling
(no comment in the source: the name reads as a sentence) begin labellingin the section the native tier -- a diagram drawn without dot.exeno extension
CommitLabel
(no comment in the source: the name reads as a sentence) commit labelin the section the native tier -- a diagram drawn without dot.execomposed example
o1 = new stzDiagram("flow")
o1.AddNode("A") o1.AddNode("B") o1.AddNode("C")
o1.AddNode("D")
o1.AddEdge("A", "B") o1.AddEdge("A", "C")
o1.AddEdge("B", "D")
? o1.CommitLabel("a")
#--> 0composed from the signature, run for this page no extension UiState
(no comment in the source: the name reads as a sentence) ui statein the section the native tier -- a diagram drawn without dot.execomposed example
o1 = new stzDiagram("flow")
o1.AddNode("A") o1.AddNode("B") o1.AddNode("C")
o1.AddNode("D")
o1.AddEdge("A", "B") o1.AddEdge("A", "C")
o1.AddEdge("B", "D")
? o1.UiState()
#--> idlecomposed from the signature, run for this page no extension UiSubject
(no comment in the source: the name reads as a sentence) ui subjectin the section the native tier -- a diagram drawn without dot.exeno extension
Step
The re-render is the whole reason a drag previews instead of moving: laying a 500-node diagram out again costs eleven seconds, and a gesture cannot pay that per frame. Structure changes pay it once, where the author expects a pause.no extension
RunIn
The loop, for a caller that has nothing else to do. Answers when the window closes.no extension
Edit
Five commands cover the editor's whole vocabulary: MoveCell pin a cell somewhere <-> pin it back (or unpin) AddCell a node exists <-> it does not RemoveCell a node is gone <-> it is back, with its edges Link an edge exists <-> it does not SetLabel a node reads this <-> it read that NOT Do() -- "do" is a Haro keyword (do...again), so a method named for it is a parse error four hundred lines away from anything that looks wrong. Edit() says what it does anyway.
composed example
o1 = new stzDiagram("flow")
o1.AddNode("A") o1.AddNode("B") o1.AddNode("C")
o1.AddNode("D")
o1.AddEdge("A", "B") o1.AddEdge("A", "C")
o1.AddEdge("B", "D")
? o1.Edit("a", [ 2, 3 ])
#--> 0composed from the signature, run for this page no extensionUndo
(no comment in the source: the name reads as a sentence) undoin the section the native tier -- a diagram drawn without dot.execomposed example
o1 = new stzDiagram("flow")
o1.AddNode("A") o1.AddNode("B") o1.AddNode("C")
o1.AddNode("D")
o1.AddEdge("A", "B") o1.AddEdge("A", "C")
o1.AddEdge("B", "D")
? o1.Undo()
#--> 0composed from the signature, run for this page no extension Redo
(no comment in the source: the name reads as a sentence) redoin the section the native tier -- a diagram drawn without dot.execomposed example
o1 = new stzDiagram("flow")
o1.AddNode("A") o1.AddNode("B") o1.AddNode("C")
o1.AddNode("D")
o1.AddEdge("A", "B") o1.AddEdge("A", "C")
o1.AddEdge("B", "D")
? o1.Redo()
#--> 0composed from the signature, run for this page no extension CanUndo
(no comment in the source: the name reads as a sentence) can undoin the section the native tier -- a diagram drawn without dot.execomposed example
o1 = new stzDiagram("flow")
o1.AddNode("A") o1.AddNode("B") o1.AddNode("C")
o1.AddNode("D")
o1.AddEdge("A", "B") o1.AddEdge("A", "C")
o1.AddEdge("B", "D")
? o1.CanUndo()
#--> 0composed from the signature, run for this page no extension CanRedo
(no comment in the source: the name reads as a sentence) can redoin the section the native tier -- a diagram drawn without dot.execomposed example
o1 = new stzDiagram("flow")
o1.AddNode("A") o1.AddNode("B") o1.AddNode("C")
o1.AddNode("D")
o1.AddEdge("A", "B") o1.AddEdge("A", "C")
o1.AddEdge("B", "D")
? o1.CanRedo()
#--> 0composed from the signature, run for this page no extension EditLog
(no comment in the source: the name reads as a sentence) edit login the section the native tier -- a diagram drawn without dot.exeno extension
ClearEditLog
(no comment in the source: the name reads as a sentence) clear edit login the section the native tier -- a diagram drawn without dot.exeno extension
Pin
Pinned in SLOT units, the layout's own coordinate, so a pin means the same thing whatever size the picture is rendered at. That is what makes a pin survive a re-render, which is the only reason to have one.no extension
Unpin
(no comment in the source: the name reads as a sentence) unpinin the section the native tier -- a diagram drawn without dot.exeno extension
UnpinAll
(no comment in the source: the name reads as a sentence) unpin allin the section the native tier -- a diagram drawn without dot.exeno extension
IsPinned
(no comment in the source: the name reads as a sentence) is pinnedin the section the native tier -- a diagram drawn without dot.execomposed example
o1 = new stzDiagram("flow")
o1.AddNode("A") o1.AddNode("B") o1.AddNode("C")
o1.AddNode("D")
o1.AddEdge("A", "B") o1.AddEdge("A", "C")
o1.AddEdge("B", "D")
? o1.IsPinned("A")
#--> 0composed from the signature, run for this page no extension Pins
(no comment in the source: the name reads as a sentence) pinsin the section the native tier -- a diagram drawn without dot.exeno extension
PickAt
The reading itself is engine work over the retained command list -- no copy, one crossing per question -- which is what makes it fast enough to sit under a cursor.QCSXTZZZIBWU
AddMessage
So messages are their own ordered list, and adding one also ensures the RELATION exists -- ConnectIfAbsent, never Connect, so the tenth call between two participants does not raise. The graph stays true and the picture becomes possible, without either giving ground to the other.QCSXTZZZIBWU
Messages
(no comment in the source: the name reads as a sentence) messagesin the section the native tier -- a diagram drawn without dot.exeno extension
NumberOfMessages
(no comment in the source: the name reads as a sentence) number of messagesin the section the native tier -- a diagram drawn without dot.execomposed example
o1 = new stzDiagram("flow")
o1.AddNode("A") o1.AddNode("B") o1.AddNode("C")
o1.AddNode("D")
o1.AddEdge("A", "B") o1.AddEdge("A", "C")
o1.AddEdge("B", "D")
? o1.NumberOfMessages()
#--> 0composed from the signature, run for this page no extension Display
View() stays as an alternative form because callers exist (the diagram suite among them), and breaking working code over a naming improvement is a worse trade than carrying an alias.no extension
View
Same as Display: View() stays as an alternative form because callers exist (the diagram suite among them), and breaking working code over a naming improvement is a worse trade than carrying an alias.no extension
ToHashlist
(no comment in the source: the name reads as a sentence) to hashlistin the section exportno extension
stzdiag
(no comment in the source: the name reads as a sentence) stzdiagalso written: ToStzDiag · DiagFormat · StzDiagFormat · StzDiagString · ToStzDiagFormat · ToStzDiagStringin the section exportno extension
Dot
(no comment in the source: the name reads as a sentence) dotalso written: Code · ToDot · DotCode · GraphvizDot · ToGraphvizDotin the section exportno extension
Json
(no comment in the source: the name reads as a sentence) jsonalso written: ToJsonin the section exportno extension
Mermaid
(no comment in the source: the name reads as a sentence) mermaidalso written: ToMermaidin the section exportno extension
WriteToFile
(no comment in the source: the name reads as a sentence) write to filealso written: SaveFile · SaveInFile · SaveToFilein the section exportQCSXTZZZIBWU
WriteToStzDiagFile
(no comment in the source: the name reads as a sentence) write to stz diag filein the section exportQCSXTZZZIBWU
WriteStzDiag
(no comment in the source: the name reads as a sentence) write stz diagin the section exportQCSXTZZZIBWU
SaveToDiagFile
(no comment in the source: the name reads as a sentence) save to diag filein the section exportQCSXTZZZIBWU
SaveToStzDiagFile
(no comment in the source: the name reads as a sentence) save to stz diag filein the section exportQCSXTZZZIBWU
SaveToStzDiag
(no comment in the source: the name reads as a sentence) save to stz diagin the section exportQCSXTZZZIBWU
SaveInDiagFile
(no comment in the source: the name reads as a sentence) save in diag filein the section exportQCSXTZZZIBWU
SaveInStzDiagFile
(no comment in the source: the name reads as a sentence) save in stz diag filein the section exportQCSXTZZZIBWU
SaveInStzDiag
(no comment in the source: the name reads as a sentence) save in stz diagin the section exportQCSXTZZZIBWU
SaveDiagFile
(no comment in the source: the name reads as a sentence) save diag filein the section exportQCSXTZZZIBWU
SaveStzDiagFile
(no comment in the source: the name reads as a sentence) save stz diag filein the section exportQCSXTZZZIBWU
SaveStzDiag
(no comment in the source: the name reads as a sentence) save stz diagin the section exportQCSXTZZZIBWU
SaveInFolder
(no comment in the source: the name reads as a sentence) save in folderin the section exportno extension
SaveToFileInFolder
(no comment in the source: the name reads as a sentence) save to file in folderno extension
SaveFileInFolder
(no comment in the source: the name reads as a sentence) save file in folderin the section exportno extension
SaveInFileInFolder
(no comment in the source: the name reads as a sentence) save in file in folderin the section exportno extension
WriteToStzDiagFileInFolder
(no comment in the source: the name reads as a sentence) write to stz diag file in folderin the section exportno extension
WriteStzDiagInFolder
(no comment in the source: the name reads as a sentence) write stz diag in folderin the section exportno extension
SaveToDiagFileInFolder
(no comment in the source: the name reads as a sentence) save to diag file in folderin the section exportno extension
SaveToStzDiagFileInFolder
(no comment in the source: the name reads as a sentence) save to stz diag file in folderin the section exportno extension
SaveToStzDiagInFolder
(no comment in the source: the name reads as a sentence) save to stz diag in folderin the section exportno extension
SaveInDiagFileInFolder
(no comment in the source: the name reads as a sentence) save in diag file in folderin the section exportno extension
SaveInStzDiagFileInFolder
(no comment in the source: the name reads as a sentence) save in stz diag file in folderin the section exportno extension
SaveInStzDiagInFolder
(no comment in the source: the name reads as a sentence) save in stz diag in folderin the section exportno extension
SaveDiagFileInFolder
(no comment in the source: the name reads as a sentence) save diag file in folderin the section exportno extension
SaveStzDiagFileInFolder
(no comment in the source: the name reads as a sentence) save stz diag file in folderin the section exportno extension
SaveStzDiagInFolder
(no comment in the source: the name reads as a sentence) save stz diag in folderin the section exportno extension
WriteToDotFile
(no comment in the source: the name reads as a sentence) write to dot filealso written: SaveDotFile · SaveInDotFile · WriteInDotFilein the section exportQCSXTZZZIBWU
WriteToDotFileInFolder
(no comment in the source: the name reads as a sentence) write to dot file in folderin the section exportno extension
WriteDotFileInFolder
(no comment in the source: the name reads as a sentence) write dot file in folderin the section exportno extension
WriteDotInFolder
(no comment in the source: the name reads as a sentence) write dot in folderin the section exportno extension
WriteToDotInFolder
(no comment in the source: the name reads as a sentence) write to dot in folderin the section exportno extension
SaveToDotFileXT
(no comment in the source: the name reads as a sentence) save to dot file xtin the section exportno extension
SaveToDotFileInFolder
(no comment in the source: the name reads as a sentence) save to dot file in folderin the section exportno extension
SaveDotFileInFolder
(no comment in the source: the name reads as a sentence) save dot file in folderin the section exportno extension
SaveDotInFolder
(no comment in the source: the name reads as a sentence) save dot in folderin the section exportno extension
SaveToDotInFolder
(no comment in the source: the name reads as a sentence) save to dot in folderin the section exportno extension
WriteToMermaidFile
(no comment in the source: the name reads as a sentence) write to mermaid filealso written: SaveMermaidFile · SaveInMermaidFile · WriteInMermaidFilein the section exportQCSXTZZZIBWU
WriteToMermaidFileInFolder
(no comment in the source: the name reads as a sentence) write to mermaid file in folderin the section exportno extension
WriteMermaidFileInFolder
(no comment in the source: the name reads as a sentence) write mermaid file in folderin the section exportno extension
WriteMermaidInFolder
(no comment in the source: the name reads as a sentence) write mermaid in folderin the section exportno extension
WriteToMermaidInFolder
(no comment in the source: the name reads as a sentence) write to mermaid in folderin the section exportno extension
SaveToMermaidFileXT
(no comment in the source: the name reads as a sentence) save to mermaid file xtin the section exportno extension
SaveToMermaidFileInFolder
(no comment in the source: the name reads as a sentence) save to mermaid file in folderin the section exportno extension
SaveMermaidFileInFolder
(no comment in the source: the name reads as a sentence) save mermaid file in folderin the section exportno extension
SaveMermaidInFolder
(no comment in the source: the name reads as a sentence) save mermaid in folderin the section exportno extension
SaveToMermaidInFolder
(no comment in the source: the name reads as a sentence) save to mermaid in folderin the section exportno extension
WriteToJsonFile
(no comment in the source: the name reads as a sentence) write to json filealso written: SaveJsonFile · SaveInJsonFile · WriteInJsonFilein the section exportQCSXTZZZIBWU
WriteToJsonFileInFolder
(no comment in the source: the name reads as a sentence) write to json file in folderin the section exportno extension
WriteJsonFileInFolder
(no comment in the source: the name reads as a sentence) write json file in folderin the section exportno extension
WriteJsonInFolder
(no comment in the source: the name reads as a sentence) write json in folderin the section exportno extension
WriteToJsonInFolder
(no comment in the source: the name reads as a sentence) write to json in folderin the section exportno extension
SaveToJsonFileXT
(no comment in the source: the name reads as a sentence) save to json file xtin the section exportno extension
SaveToJsonFileInFolder
(no comment in the source: the name reads as a sentence) save to json file in folderin the section exportno extension
SaveJsonFileInFolder
(no comment in the source: the name reads as a sentence) save json file in folderin the section exportno extension
SaveJsonInFolder
(no comment in the source: the name reads as a sentence) save json in folderin the section exportno extension
SaveToJsonInFolder
(no comment in the source: the name reads as a sentence) save to json in folderin the section exportno extension
Explain
NOTE // There also is an Explain() at the parent stzGraph levelno extension
ImportDiag
import with subdiagram supportno extension
ImportAsSubdiagram
import with subdiagram supportno extension
ParseAndImport
import with subdiagram supportno extension
ApplyFocusTo
focus managementno extension
ResetAllNodeColors
focus managementno extension
LoadStyle
style file managementno extension
LoadedStyles
style file managementno extension
ExportToStyl
style file managementno extension
WriteToStylFile
style file managementno extension
WriteStyl
style file managementno extension