Flowchart family
API reference for Beep.Skia.FlowChart (44 public types)
Complete API surface of the Beep.Skia.FlowChart assembly: 44 public types with their documented members. Follow the family guide for usage patterns.
Types in this assembly
AnnotationNodeclassCardNodeclassCodeLanguageenumCollateNodeclassCommentNodeclassConnectorDirectionenumConnectorNodeclassDataNodeclassDecisionNodeclassDelayNodeclassDirectAccessNodeclassDisplayNodeclassDocumentNodeclassDoWhileLoopNodeclassExtractNodeclassFlowchartCodeGeneratorclassFlowchartControlclassFlowchartSimulatorclassForkNodeclassForLoopNodeclassInputOutputNodeclassInternalStorageNodeclassJoinNodeclassLoopLimitNodeclassLoopLimitTypeenumManualInputNodeclassManualOperationNodeclassMergeNodeclassMultiDocumentNodeclassOffPageReferenceNodeclassOrNodeclassPredefinedProcessNodeclassPreparationNodeclassProcessNodeclassSequentialAccessNodeclassSimulationEdgeclassSimulationStepEventArgsclassSortNodeclassStartEndNodeclassStoredDataNodeclassSubProcessNodeclassSummingJunctionNodeclassTapeNodeclassWhileLoopNodeclass
AnnotationNode (class)
Annotation node: dashed border rectangle for adding notes and comments to flowcharts. Can optionally attach to another node via a dotted connector line.
| Member | Kind | Description |
|---|---|---|
string Text | Property | Gets or sets the text. |
bool ShowConnector | Property | Gets or sets the show connector. |
AnnotationNode() | Method | Initializes a new instance of the AnnotationNode class. |
CardNode (class)
Card node: rectangle with cut corner for punch card or card-based storage. Legacy flowchart symbol for card-based data processing.
| Member | Kind | Description |
|---|---|---|
string Label | Property | Gets or sets the label. |
CardNode() | Method | Initializes a new instance of the CardNode class. |
CodeLanguage (enum)
Target languages for FlowchartCodeGenerator.
CollateNode (class)
Collate node: inverted trapezoid for sorting or collating data. Used to represent organizing or ordering operations.
| Member | Kind | Description |
|---|---|---|
string Label | Property | Gets or sets the label. |
CollateNode() | Method | Initializes a new instance of the CollateNode class. |
CommentNode (class)
Comment node: fold-over corner rectangle for additional notes or comments. Similar to AnnotationNode but with a distinctive folded corner appearance.
| Member | Kind | Description |
|---|---|---|
string Text | Property | Gets or sets the text. |
CommentNode() | Method | Initializes a new instance of the CommentNode class. |
ConnectorDirection (enum)
ConnectorNode (class)
Off-page connector: pentagon shape for referencing flow on another page/diagram. Use matching ConnectorId to link From/To pairs.
| Member | Kind | Description |
|---|---|---|
string ConnectorId | Property | Gets or sets the connector id. |
ConnectorDirection Direction | Property | Gets or sets the direction. |
ConnectorNode() | Method | Initializes a new instance of the ConnectorNode class. |
DataNode (class)
Data (Database) node: cylinder shape representing a data store.
| Member | Kind | Description |
|---|---|---|
string Label | Property | Gets or sets the label. |
DataNode() | Method | Initializes a new instance of the DataNode class. |
DecisionNode (class)
Decision node: diamond shape with Yes/No ports (left/right) plus optional top/bottom ports.
| Member | Kind | Description |
|---|---|---|
string Label | Property | Gets or sets the label. |
bool ShowTopBottomPorts | Property | Gets or sets the show top bottom ports. |
DecisionNode() | Method | Initializes a new instance of the DecisionNode class. |
DelayNode (class)
Delay node: half-circle or rounded shape indicating a pause/wait in the process.
| Member | Kind | Description |
|---|---|---|
string Label | Property | Gets or sets the label. |
string Duration | Property | Gets or sets the duration. |
DelayNode() | Method | Initializes a new instance of the DelayNode class. |
DirectAccessNode (class)
Direct Access Storage node: cylinder with flat bottom for random access storage (hard disk).
| Member | Kind | Description |
|---|---|---|
string Label | Property | Gets or sets the label. |
DirectAccessNode() | Method | Initializes a new instance of the DirectAccessNode class. |
DisplayNode (class)
Display node: rounded rectangle with curved bottom (like a monitor) for output display.
| Member | Kind | Description |
|---|---|---|
string Label | Property | Gets or sets the label. |
DisplayNode() | Method | Initializes a new instance of the DisplayNode class. |
DocumentNode (class)
Document: rectangle with a curved bottom edge and centered label.
| Member | Kind | Description |
|---|---|---|
string Label | Property | Gets or sets the label. |
bool OutPortsOnTop | Property | Gets or sets the out ports on top. |
DocumentNode() | Method | Initializes a new instance of the DocumentNode class. |
DoWhileLoopNode (class)
Do-While loop node: executes body at least once, then checks condition at end. Similar to WhileLoop but with condition checked after execution.
| Member | Kind | Description |
|---|---|---|
string Condition | Property | Gets or sets the condition. |
DoWhileLoopNode() | Method | Initializes a new instance of the DoWhileLoopNode class. |
ExtractNode (class)
Extract node: right-pointing triangle for data extraction operations. Used for selecting, filtering, or extracting specific data from a dataset.
| Member | Kind | Description |
|---|---|---|
string Label | Property | Gets or sets the label. |
ExtractNode() | Method | Initializes a new instance of the ExtractNode class. |
FlowchartCodeGenerator (class)
Generates structured code from a flowchart diagram. Conventions: for decision nodes the first output port is the true branch and the second is the false branch; for loop nodes the first output port is the loop body and the second is the exit.
| Member | Kind | Description |
|---|---|---|
string Generate(DrawingManager manager, CodeLanguage language = CodeLanguage.Pseudocode) | Method | Generates code for the flowchart held by a drawing manager. |
string Generate(IReadOnlyList<SkiaComponent> components, IReadOnlyList<IConnectionLine> lines, CodeLanguage language = CodeLanguage.Pseudocode) | Method | Generates code for the given components and connection lines. |
FlowchartControl (class)
Base class for Flowchart nodes providing consistent sizing and port layout helpers.
| Member | Kind | Description |
|---|---|---|
SKColor? CustomFillColor | Property | Optional custom fill color (overrides default node color). Set to null to use default. |
SKColor? CustomStrokeColor | Property | Optional custom stroke color (overrides default border color). Set to null to use default. |
SKColor? CustomTextColor | Property | Optional custom text color (overrides default text color). Set to null to use default. |
int InPortCount | Property | Gets or sets the in port count. |
int OutPortCount | Property | Gets or sets the out port count. |
FlowchartSimulator (class)
Step-through execution of a flowchart. The simulator walks connection lines in port order; when a node has multiple outgoing edges (decisions, loops, forks) the optional BranchSelector chooses the branch (defaults to the first edge).
| Member | Kind | Description |
|---|---|---|
SkiaComponent? CurrentNode | Property | Gets the node the simulation is currently on. |
bool IsFinished | Property | Gets a value indicating whether the simulation reached a terminal node. |
int StepCount | Property | Gets the number of steps executed since the last reset. |
List<string> Trace | Property | Gets the execution trace (node labels in visit order). |
Func<SkiaComponent, IReadOnlyList<SimulationEdge>, SimulationEdge?>? BranchSelector | Property | Optional branch selector for nodes with multiple outgoing edges. Return null to fall back to the first edge. |
event EventHandler<SimulationStepEventArgs>? Stepped | Event | Raised after each step. |
void Reset(IReadOnlyList<SkiaComponent> components, IReadOnlyList<IConnectionLine> lines) | Method | Resets the simulation to the entry node of the given diagram. |
bool Step() | Method | Advances the simulation by one node. Returns false when already finished. |
bool Run(int maxSteps = 1000) | Method | Runs until finished or the step cap is reached. True when the simulation finished naturally; false when capped. |
ForkNode (class)
Fork node (parallel split): thick vertical bar with single input and multiple parallel outputs. Represents splitting flow into concurrent/parallel paths.
| Member | Kind | Description |
|---|---|---|
int ParallelPaths | Property | Gets or sets the parallel paths. |
ForkNode() | Method | Initializes a new instance of the ForkNode class. |
ForLoopNode (class)
For loop node: rectangle with loop icon and condition text. Represents iterative processing with init, condition, and increment.
| Member | Kind | Description |
|---|---|---|
string LoopVariable | Property | Gets or sets the loop variable. |
string InitExpression | Property | Gets or sets the init expression. |
string Condition | Property | Gets or sets the condition. |
string Increment | Property | Gets or sets the increment. |
ForLoopNode() | Method | Initializes a new instance of the ForLoopNode class. |
InputOutputNode (class)
Input/Output (parallelogram) node with slanted sides and centered label.
| Member | Kind | Description |
|---|---|---|
string Label | Property | Gets or sets the label. |
InputOutputNode() | Method | Initializes a new instance of the InputOutputNode class. |
InternalStorageNode (class)
Internal Storage node: rectangle with vertical lines for internal memory/storage. Used for data structures in memory (arrays, buffers, caches).
| Member | Kind | Description |
|---|---|---|
string Label | Property | Gets or sets the label. |
InternalStorageNode() | Method | Initializes a new instance of the InternalStorageNode class. |
JoinNode (class)
Join node (parallel synchronization): thick vertical bar with multiple inputs and single output. Represents waiting for all parallel paths to complete before continuing.
| Member | Kind | Description |
|---|---|---|
int WaitCount | Property | Gets or sets the wait count. |
JoinNode() | Method | Initializes a new instance of the JoinNode class. |
LoopLimitNode (class)
Loop Limit node: hexagon with horizontal orientation for loop boundaries. Used to mark the beginning or end of a loop structure.
| Member | Kind | Description |
|---|---|---|
string Label | Property | Gets or sets the label. |
LoopLimitType LimitType | Property | Gets or sets the limit type. |
LoopLimitNode() | Method | Initializes a new instance of the LoopLimitNode class. |
LoopLimitType (enum)
ManualInputNode (class)
Manual Input node: parallelogram with top slanted (wider at top) for manual data entry.
| Member | Kind | Description |
|---|---|---|
string Label | Property | Gets or sets the label. |
ManualInputNode() | Method | Initializes a new instance of the ManualInputNode class. |
ManualOperationNode (class)
Manual operation node: trapezoid shape (top wider than bottom) for human-performed tasks.
| Member | Kind | Description |
|---|---|---|
string Label | Property | Gets or sets the label. |
ManualOperationNode() | Method | Initializes a new instance of the ManualOperationNode class. |
MergeNode (class)
Merge node: inverted triangle for combining multiple flow paths (no synchronization logic).
| Member | Kind | Description |
|---|---|---|
string Label | Property | Gets or sets the label. |
MergeNode() | Method | Initializes a new instance of the MergeNode class. |
MultiDocumentNode (class)
Multi-Document node: stacked documents for multiple document output. Visual: Multiple overlapping document shapes with curved bottoms.
| Member | Kind | Description |
|---|---|---|
string Label | Property | Gets or sets the label. |
MultiDocumentNode() | Method | Initializes a new instance of the MultiDocumentNode class. |
OffPageReferenceNode (class)
Off-Page Reference node: upside-down house shape (pentagon) for page references. Alternative to ConnectorNode with a different visual style.
| Member | Kind | Description |
|---|---|---|
string ReferenceId | Property | Gets or sets the reference id. |
string PageNumber | Property | Gets or sets the page number. |
OffPageReferenceNode() | Method | Initializes a new instance of the OffPageReferenceNode class. |
OrNode (class)
Or node: logic gate shape for conditional OR operations. Circle with OR symbol. Used when any input condition can proceed to the next step.
| Member | Kind | Description |
|---|---|---|
string Label | Property | Gets or sets the label. |
OrNode() | Method | Initializes a new instance of the OrNode class. |
PredefinedProcessNode (class)
Predefined Process: rectangle with vertical double-struck edges and centered label.
| Member | Kind | Description |
|---|---|---|
string Label | Property | Gets or sets the label. |
PredefinedProcessNode() | Method | Initializes a new instance of the PredefinedProcessNode class. |
PreparationNode (class)
Preparation node: horizontal hexagon for initialization/setup steps. Commonly used for variable declarations, configuration, or setup tasks.
| Member | Kind | Description |
|---|---|---|
string Label | Property | Gets or sets the label. |
PreparationNode() | Method | Initializes a new instance of the PreparationNode class. |
ProcessNode (class)
Process node: rectangle with optional rounded corners and centered label.
| Member | Kind | Description |
|---|---|---|
string Label | Property | Gets or sets the label. |
bool ShowTopBottomPorts | Property | Gets or sets the show top bottom ports. |
ProcessNode() | Method | Initializes a new instance of the ProcessNode class. |
SequentialAccessNode (class)
Sequential Access Storage node: elongated oval for sequential access storage devices. Used for devices like magnetic tape where data must be accessed sequentially.
| Member | Kind | Description |
|---|---|---|
string Label | Property | Gets or sets the label. |
SequentialAccessNode() | Method | Initializes a new instance of the SequentialAccessNode class. |
SimulationEdge (class)
A candidate transition from the current simulation node.
| Member | Kind | Description |
|---|---|---|
IConnectionLine? Line | Property | Gets or sets the line. |
SkiaComponent? Target | Property | Gets or sets the target. |
int PortIndex | Property | Gets or sets the port index. |
SimulationStepEventArgs (class)
Event args raised after each simulation step.
| Member | Kind | Description |
|---|---|---|
SkiaComponent? Node | Property | Gets or sets the node. |
IReadOnlyList<SimulationEdge> Outgoing | Property | Gets or sets the outgoing. |
bool IsFinished | Property | Gets or sets the is finished. |
SortNode (class)
Sort node: two overlapping triangles for sorting operations.
| Member | Kind | Description |
|---|---|---|
string Label | Property | Gets or sets the label. |
string SortKey | Property | Gets or sets the sort key. |
SortNode() | Method | Initializes a new instance of the SortNode class. |
StartEndNode (class)
Start/End node (terminator): pill-shaped rounded rectangle with a label.
| Member | Kind | Description |
|---|---|---|
string Label | Property | Gets or sets the label. |
bool ShowTopBottomPorts | Property | Gets or sets the show top bottom ports. |
StartEndNode() | Method | Initializes a new instance of the StartEndNode class. |
StoredDataNode (class)
Stored data node: parallelogram tilted to the right for data storage (tape, disk). Different from InputOutput which tilts both sides.
| Member | Kind | Description |
|---|---|---|
string Label | Property | Gets or sets the label. |
StoredDataNode() | Method | Initializes a new instance of the StoredDataNode class. |
SubProcessNode (class)
Sub-process node: rectangle with double border for calling/referencing another process. Can be collapsed (shows + icon) or expanded to show nested details.
| Member | Kind | Description |
|---|---|---|
string Label | Property | Gets or sets the label. |
string SubProcessId | Property | Gets or sets the sub process id. |
bool IsExpanded | Property | Gets or sets the is expanded. |
SubProcessNode() | Method | Initializes a new instance of the SubProcessNode class. |
SummingJunctionNode (class)
Summing Junction node: X in a circle for combining/merging multiple inputs. Different from OR gate - represents mathematical summation or aggregation.
| Member | Kind | Description |
|---|---|---|
string Label | Property | Gets or sets the label. |
SummingJunctionNode() | Method | Initializes a new instance of the SummingJunctionNode class. |
TapeNode (class)
Tape node: rounded bottom semicircle shape for magnetic tape storage. Legacy flowchart symbol for sequential tape-based storage.
| Member | Kind | Description |
|---|---|---|
string Label | Property | Gets or sets the label. |
TapeNode() | Method | Initializes a new instance of the TapeNode class. |
WhileLoopNode (class)
While loop node: hexagon (vertical orientation) with condition text. Represents loop that executes while condition is true.
| Member | Kind | Description |
|---|---|---|
string Condition | Property | Gets or sets the condition. |
WhileLoopNode() | Method | Initializes a new instance of the WhileLoopNode class. |