From d033bd940536dd3b5d0293a0654c3b0f1eae150e Mon Sep 17 00:00:00 2001 From: Michael Schimmel Date: Sat, 30 Aug 2025 16:10:49 +0200 Subject: [PATCH] AST development --- ASTPlayground/Myc.Ast.Visualizer.pas | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/ASTPlayground/Myc.Ast.Visualizer.pas b/ASTPlayground/Myc.Ast.Visualizer.pas index ff6215e..98498ba 100644 --- a/ASTPlayground/Myc.Ast.Visualizer.pas +++ b/ASTPlayground/Myc.Ast.Visualizer.pas @@ -50,6 +50,7 @@ type FSpacing: TPointF; FLastNode: TAuraNode; FConnections: TList; + FCurrentExec: TControl; function CreateNodeControl(const ATitle, ADetails: string): TAuraNode; function CreatePin( AParentNode: TAuraNode; @@ -175,7 +176,10 @@ end; function TAstToAuraNodeVisitor.CreateInput(AParentNode: TAuraNode; const ACaption: string; AOffsetY: Single = 0): TControl; begin - Result := CreatePin(AParentNode, psCircle, paLeft, cDataPinColor, 'data.in.' + ACaption, AOffsetY); + var cap := ACaption; + if cap <> '' then + cap := '.' + cap; + Result := CreatePin(AParentNode, psCircle, paLeft, cDataPinColor, 'data.in' + cap, AOffsetY); Result.Hint := ACaption; Result.ShowHint := ACaption <> ''; end; @@ -188,6 +192,8 @@ end; function TAstToAuraNodeVisitor.CreateEntry(AParentNode: TAuraNode; AOffsetY: Single = 0): TControl; begin Result := CreatePin(AParentNode, psTriangle, paLeft, cExecPinColor, 'exec.in', AOffsetY); + if FCurrentExec <> nil then + FConnections.Add(TPinConnection.Create(FCurrentExec, Result)); end; function TAstToAuraNodeVisitor.CreateExit(AParentNode: TAuraNode; const ACaption: string; AOffsetY: Single = 0): TControl; @@ -196,6 +202,8 @@ begin if cap <> '' then cap := '.' + cap; Result := CreatePin(AParentNode, psTriangle, paRight, cExecPinColor, 'exec.out' + cap, AOffsetY); + + FCurrentExec := Result; end; function TAstToAuraNodeVisitor.CreateNodeControl(const ATitle, ADetails: string): TAuraNode; @@ -747,7 +755,6 @@ begin inherited; Canvas.Stroke.Kind := TBrushKind.Solid; - Canvas.Stroke.Color := TAlphaColors.Dodgerblue; Canvas.Stroke.Thickness := 2; // Gehe durch alle gespeicherten Verbindungen und zeichne sie @@ -764,6 +771,12 @@ begin LStartPoint := AbsoluteToLocal(LAbsoluteStart); LEndPoint := AbsoluteToLocal(LAbsoluteEnd); + var str := LConnection.InputPin.TagString; + if Pos('data', str) = 0 then + Canvas.Stroke.Color := TAstToAuraNodeVisitor.cExecPinColor + else + Canvas.Stroke.Color := TAstToAuraNodeVisitor.cDataPinColor; + // Draw a Bezier curve with horizontal tangents at start and end points. LPath := TPathData.Create; try