Files
UnrealEngineUWP/Engine/Source/Editor/EditorWidgets/Private/TemplateStringSyntaxHighlighterMarshaller.h
George Rolfe 04df2dac7c TemplateString + customization
#jira none
#rb sebastian.nordgren
#preflight 6295f14f926be5fb68b3e29a

[CL 20435453 by George Rolfe in ue5-main branch]
2022-05-31 07:40:18 -04:00

52 lines
1.8 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "Styling/SlateTypes.h"
#include "EditorWidgetsStyle.h"
#include "Framework/Text/SyntaxTokenizer.h"
#include "Framework/Text/SyntaxHighlighterTextLayoutMarshaller.h"
class FTextLayout;
/**
* Get/set the raw text to/from a text layout, and also inject syntax highlighting for our rich-text markup
*/
class FTemplateStringSyntaxHighlighterMarshaller : public FSyntaxHighlighterTextLayoutMarshaller
{
public:
struct FSyntaxTextStyle
{
FSyntaxTextStyle()
: NormalTextStyle(FEditorWidgetsStyle::Get().GetWidgetStyle<FTextBlockStyle>("SyntaxHighlight.Template.Normal"))
, ArgumentTextStyle(FEditorWidgetsStyle::Get().GetWidgetStyle<FTextBlockStyle>("SyntaxHighlight.Template.Argument"))
{
}
FSyntaxTextStyle(const FTextBlockStyle& InNormalTextStyle, const FTextBlockStyle& InArgumentTextStyle)
: NormalTextStyle(InNormalTextStyle)
, ArgumentTextStyle(InArgumentTextStyle)
{
}
FTextBlockStyle NormalTextStyle;
FTextBlockStyle ArgumentTextStyle;
};
static TSharedRef<FTemplateStringSyntaxHighlighterMarshaller> Create(const FSyntaxTextStyle& InSyntaxTextStyle);
virtual ~FTemplateStringSyntaxHighlighterMarshaller() override = default;
protected:
// Allows MakeShared with private constructor
friend class SharedPointerInternals::TIntrusiveReferenceController<FTemplateStringSyntaxHighlighterMarshaller, ESPMode::ThreadSafe>;
virtual void ParseTokens(const FString& SourceString, FTextLayout& TargetTextLayout, TArray<ISyntaxTokenizer::FTokenizedLine> TokenizedLines) override;
FTemplateStringSyntaxHighlighterMarshaller(TSharedPtr<ISyntaxTokenizer> InTokenizer, const FSyntaxTextStyle& InSyntaxTextStyle);
/** Styles used to display the text */
FSyntaxTextStyle SyntaxTextStyle;
};