Files
UnrealEngineUWP/Engine/Source/Developer/VisualGraphUtils/Public/VisualGraphElement.h
Helge Mathee b741423387 Graph Visualizer: Replacing Control Rig AST visualizer with common service
#rb halfdan.ingvarsson
#jira na
#preflight https://horde.devtools.epicgames.com/job/614382398169560001036499

[CL 17735754 by Helge Mathee in ue5-main branch]
2021-10-06 11:19:01 -04:00

78 lines
1.7 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "VisualGraphElement.generated.h"
class FVisualGraph;
UENUM()
enum class EVisualGraphShape : uint8
{
Box,
Polygon,
Ellipse,
Circle,
Triangle,
PlainText,
Diamond,
Parallelogram,
House
};
UENUM()
enum class EVisualGraphStyle : uint8
{
Filled,
Diagonals,
Rounded,
Dashed,
Dotted,
Solid,
Bold
};
class VISUALGRAPHUTILS_API FVisualGraphElement
{
public:
FVisualGraphElement()
: Name(NAME_None)
, DisplayName()
, Index(INDEX_NONE)
, Color()
, Style()
{}
virtual ~FVisualGraphElement() {}
FName GetName() const { return Name; }
FName GetDisplayName() const { return DisplayName.IsSet() ? DisplayName.GetValue() : Name; }
TOptional<FString> GetTooltip() const { return Tooltip; }
void SetTooltip(const FString& InTooltip) const { Tooltip = InTooltip; }
int32 GetIndex() const { return Index; }
TOptional<FLinearColor> GetColor() const { return Color; }
void SetColor(FLinearColor InValue) { Color = InValue; }
TOptional<EVisualGraphStyle> GetStyle() const { return Style; }
void SetStyle(EVisualGraphStyle InValue) { Style = InValue; }
protected:
virtual FString DumpDot(const FVisualGraph* InGraph, int32 InIndendation) const = 0;
static FString DumpDotIndentation(int32 InIndentation);
static FString DumpDotColor(const TOptional<FLinearColor>& InColor);
static FString DumpDotShape(const TOptional<EVisualGraphShape>& InShape);
static FString DumpDotStyle(const TOptional<EVisualGraphStyle>& InStyle);
FName Name;
TOptional<FName> DisplayName;
mutable TOptional<FString> Tooltip;
int32 Index;
TOptional<FLinearColor> Color;
TOptional<EVisualGraphStyle> Style;
friend class FVisualGraph;
};