UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
SRichTextBlock.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2#pragma once
3
4#include "CoreMinimal.h"
5#include "Misc/Attribute.h"
6#include "SlateGlobals.h"
7#include "Layout/Margin.h"
10#include "Widgets/SWidget.h"
11#include "Styling/SlateTypes.h"
12#include "Styling/CoreStyle.h"
18
20class FPaintArgs;
25enum class ETextShapingMethod : uint8;
26
27#if WITH_FANCY_TEXT
28
33class SRichTextBlock : public SWidget
34{
35public:
36
38 : _Text()
40 , _WrapTextAt( 0.0f )
44 , _Marshaller()
46 , _TextStyle( &FCoreStyle::Get().GetWidgetStyle<FTextBlockStyle>( "NormalText" ) )
47 , _Margin( FMargin() )
48 , _LineHeightPercentage( 1.0f )
53 , _Decorators()
54 , _Parser()
57 {
58 _Clipping = EWidgetClipping::OnDemand;
59 }
62
63
64 SLATE_ATTRIBUTE( FText, HighlightText )
65
66
67 SLATE_ATTRIBUTE( float, WrapTextAt )
68
69
72 SLATE_ATTRIBUTE( bool, AutoWrapText )
73
74
75 SLATE_ATTRIBUTE( ETextWrappingPolicy, WrappingPolicy )
76
77
78 SLATE_ATTRIBUTE( ETextTransformPolicy, TransformPolicy )
79
80
82
83
84 SLATE_EVENT(FCreateSlateTextLayout, CreateSlateTextLayout)
85
86
88
89
91
92
93 SLATE_ATTRIBUTE( FMargin, Margin )
94
95
96 SLATE_ATTRIBUTE( float, LineHeightPercentage )
97
98
99 SLATE_ATTRIBUTE( bool, ApplyLineHeightToBottomLine )
100
101
102 SLATE_ATTRIBUTE( ETextJustify::Type, Justification )
103
104
106
107
109
110
112
113
115
116
118
119
120 SLATE_ATTRIBUTE(float, MinDesiredWidth)
121
122
124 SRichTextBlock::FArguments& operator + (const TSharedRef< ITextDecorator >& DecoratorToAdd)
125 {
127 return *this;
128 }
129
131
132 static TSharedRef< ITextDecorator > Decorator( const TSharedRef< ITextDecorator >& Decorator )
133 {
134 return Decorator;
135 }
136
137 static TSharedRef< ITextDecorator > WidgetDecorator( const FString RunName, const FWidgetDecorator::FCreateWidget& FactoryDelegate )
138 {
139 return FWidgetDecorator::Create( RunName, FactoryDelegate );
140 }
141
142 template< class UserClass >
143 static TSharedRef< ITextDecorator > WidgetDecorator( const FString RunName, UserClass* InUserObjectPtr, typename FWidgetDecorator::FCreateWidget::TConstMethodPtr< UserClass > InFunc )
144 {
145 return FWidgetDecorator::Create( RunName, FWidgetDecorator::FCreateWidget::CreateSP( InUserObjectPtr, InFunc ) );
146 }
147
148 static TSharedRef< ITextDecorator > ImageDecorator( FString RunName = TEXT("img"), const ISlateStyle* const OverrideStyle = NULL )
149 {
150 return FImageDecorator::Create( RunName, OverrideStyle );
151 }
152
153 static TSharedRef< ITextDecorator > HyperlinkDecorator( const FString Id, const FSlateHyperlinkRun::FOnClick& NavigateDelegate )
154 {
155 return FHyperlinkDecorator::Create( Id, NavigateDelegate );
156 }
157
158 template< class UserClass >
159 static TSharedRef< ITextDecorator > HyperlinkDecorator( const FString Id, UserClass* InUserObjectPtr, typename FSlateHyperlinkRun::FOnClick::TMethodPtr< UserClass > NavigateFunc )
160 {
161 return FHyperlinkDecorator::Create( Id, FSlateHyperlinkRun::FOnClick::CreateSP( InUserObjectPtr, NavigateFunc ) );
162 }
163
166
169
170 //~ Begin SWidget Interface
171 SLATE_API void Construct( const FArguments& InArgs );
172 SLATE_API virtual int32 OnPaint( const FPaintArgs& Args, const FGeometry& AllottedGeometry, const FSlateRect& MyCullingRect, FSlateWindowElementList& OutDrawElements, int32 LayerId, const FWidgetStyle& InWidgetStyle, bool bParentEnabled ) const override;
173 SLATE_API virtual FChildren* GetChildren() override;
174 SLATE_API virtual void OnArrangeChildren( const FGeometry& AllottedGeometry, FArrangedChildren& ArrangedChildren ) const override;
175 //~ End SWidget Interface
176
180 const FText& GetText() const
181 {
182 return BoundText.Get(FText::GetEmpty());
183 }
184
188 SLATE_API void SetText( const TAttribute<FText>& InTextAttr );
189
191 SLATE_API void SetHighlightText( const TAttribute<FText>& InHighlightText );
192
194 SLATE_API void SetTextShapingMethod(const TOptional<ETextShapingMethod>& InTextShapingMethod);
195
197 SLATE_API void SetTextFlowDirection(const TOptional<ETextFlowDirection>& InTextFlowDirection);
198
200 SLATE_API void SetWrapTextAt(const TAttribute<float>& InWrapTextAt);
201
203 SLATE_API void SetAutoWrapText(const TAttribute<bool>& InAutoWrapText);
204
206 SLATE_API void SetWrappingPolicy(const TAttribute<ETextWrappingPolicy>& InWrappingPolicy);
207
209 SLATE_API void SetTransformPolicy(const TAttribute<ETextTransformPolicy>& InTransformPolicy);
210
212 SLATE_API void SetLineHeightPercentage(const TAttribute<float>& InLineHeightPercentage);
213
215 SLATE_API void SetApplyLineHeightToBottomLine(const TAttribute<bool>& InApplyLineHeightToBottomLine);
216
218 SLATE_API void SetMargin(const TAttribute<FMargin>& InMargin);
219
221 SLATE_API void SetJustification(const TAttribute<ETextJustify::Type>& InJustification);
222
224 SLATE_API void SetTextStyle(const FTextBlockStyle& InTextStyle);
225
227 SLATE_API void SetMinDesiredWidth(const TAttribute<float>& InMinDesiredWidth);
228
231
234
237
241 SLATE_API void Refresh();
242
245
246protected:
247 //~ SWidget interface
248 SLATE_API virtual FVector2D ComputeDesiredSize(float) const override;
249 SLATE_API virtual bool ComputeVolatility() const override;
250 //~ End of SWidget interface
251
252private:
253
255 TAttribute< FText > BoundText;
256
259
261 FTextBlockStyle TextStyle;
262
264 TAttribute<FText> HighlightText;
265
267 TAttribute<float> WrapTextAt;
268
270 TAttribute<bool> AutoWrapText;
271
273 TAttribute<ETextWrappingPolicy> WrappingPolicy;
274
276 TAttribute<ETextTransformPolicy> TransformPolicy;
277
280
283
285 TAttribute< float > LineHeightPercentage;
286
288 TAttribute< bool > ApplyLineHeightToBottomLine;
289
291 TAttribute<float> MinDesiredWidth;
292
294 float TextBlockScale = 1.0f;
295
298};
299
300#endif //WITH_FANCY_TEXT
#define NULL
Definition oodle2base.h:134
#define TEXT(x)
Definition Platform.h:1272
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define SLATE_STYLE_ARGUMENT(ArgType, ArgName)
Definition DeclarativeSyntaxSupport.h:280
#define SLATE_ATTRIBUTE(AttrType, AttrName)
Definition DeclarativeSyntaxSupport.h:192
#define SLATE_BEGIN_ARGS(InWidgetType)
Definition DeclarativeSyntaxSupport.h:63
#define SLATE_EVENT(DelegateName, EventName)
Definition DeclarativeSyntaxSupport.h:458
#define SLATE_END_ARGS()
Definition DeclarativeSyntaxSupport.h:116
#define SLATE_ARGUMENT(ArgType, ArgName)
Definition DeclarativeSyntaxSupport.h:208
return true
Definition ExternalRpcRegistry.cpp:601
ETextShapingMethod
Definition FontCache.h:52
constexpr EIOSEventType operator+(EIOSEventType type, int Index)
Definition IOSInputInterface.cpp:138
void Construct(const FArguments &InArgs)
ETextTransformPolicy
Definition SlateTypes.h:310
ETextWrappingPolicy
Definition TextLayout.h:67
uint8_t uint8
Definition binka_ue_file_header.h:8
Definition ArrangedChildren.h:15
Definition ChildrenBase.h:27
Definition CoreStyle.h:15
Definition PaintArgs.h:23
Definition SlateRect.h:26
Definition SlateTextBlockLayout.h:21
Definition DrawElements.h:220
Definition Text.h:385
static CORE_API const FText & GetEmpty()
Definition Text.cpp:252
Definition WidgetStyle.h:15
Definition ISlateStyle.h:18
Definition SWidget.h:165
virtual bool ComputeVolatility() const
Definition SWidget.h:1616
virtual FChildren * GetChildren()=0
virtual FVector2D ComputeDesiredSize(float LayoutScaleMultiplier) const =0
Definition ArrayView.h:139
Definition Array.h:670
UE_NODEBUG UE_FORCEINLINE_HINT SizeType Add(ElementType &&Item)
Definition Array.h:2696
Definition Attribute.h:17
Definition SharedPointer.h:692
Definition SharedPointer.h:153
Definition TextLayout.h:26
Type
Definition TextLayout.h:28
FORCEINLINE T * Get(const FObjectPtr &ObjectPtr)
Definition ObjectPtr.h:426
@ false
Definition radaudio_common.h:23
Definition Geometry.h:40
Definition Margin.h:17
Definition SlateTypes.h:326
Definition Optional.h:131