UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
IRun.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2#pragma once
3
4#include "CoreMinimal.h"
7
8class ILayoutBlock;
9class IRunRenderer;
10enum class ETextHitPoint : uint8;
11enum class ETextShapingMethod : uint8;
12
14{
16 : Name()
17 , MetaData()
18 {
19 }
20
21 FRunInfo( FString InName )
22 : Name( MoveTemp(InName) )
23 , MetaData()
24 {
25
26 }
27
28 FString Name;
30};
31
34{
38 None = 0,
39
44 SupportsText = 1<<0,
45};
47
50{
56
57 inline bool operator==(const FShapedTextContext& Other) const
58 {
59 return TextShapingMethod == Other.TextShapingMethod
60 && BaseDirection == Other.BaseDirection;
61 }
62
63 inline bool operator!=(const FShapedTextContext& Other) const
64 {
65 return !(*this == Other);
66 }
67
68 friend inline uint32 GetTypeHash(const FShapedTextContext& Key)
69 {
70 uint32 KeyHash = 0;
71 KeyHash = HashCombine(KeyHash, GetTypeHash(Key.TextShapingMethod));
72 KeyHash = HashCombine(KeyHash, GetTypeHash(Key.BaseDirection));
73 return KeyHash;
74 }
75
78
81};
82
95
98{
104
105 inline bool operator==(const FLayoutBlockTextContext& Other) const
106 {
108 && TextDirection == Other.TextDirection;
109 }
110
111 inline bool operator!=(const FLayoutBlockTextContext& Other) const
112 {
113 return !(*this == Other);
114 }
115
117 {
118 uint32 KeyHash = GetTypeHash(static_cast<const FRunTextContext&>(Key));
119 KeyHash = HashCombine(KeyHash, GetTypeHash(Key.TextDirection));
120 return KeyHash;
121 }
122
125};
126
127class IRun
128{
129public:
130
131 virtual ~IRun() {}
132
133 virtual FTextRange GetTextRange() const = 0;
134 virtual void SetTextRange( const FTextRange& Value ) = 0;
135
136 virtual int16 GetBaseLine( float Scale ) const = 0;
137 virtual int16 GetMaxHeight( float Scale ) const = 0;
138
139 virtual FVector2D Measure( int32 StartIndex, int32 EndIndex, float Scale, const FRunTextContext& TextContext) const = 0;
140 virtual int8 GetKerning(int32 CurrentIndex, float Scale, const FRunTextContext& TextContext) const = 0;
141 virtual FVector2D GetOutlineSize(int32 StartIndex, int32 EndIndex, float Scale) const { return FVector2d::ZeroVector; }
142 virtual FVector2D GetShadowSize(int32 StartIndex, int32 EndIndex, float Scale) const { return FVector2d::ZeroVector; }
143
145
146 virtual int32 GetTextIndexAt( const TSharedRef< ILayoutBlock >& Block, const FVector2D& Location, float Scale, ETextHitPoint* const OutHitPoint = nullptr ) const = 0;
147
149
150 virtual void BeginLayout() = 0;
151 virtual void EndLayout() = 0;
152
153 virtual void Move(const TSharedRef<FString>& NewText, const FTextRange& NewRange) = 0;
154 virtual TSharedRef<IRun> Clone() const = 0;
155
156 virtual void AppendTextTo(FString& Text) const = 0;
157 virtual void AppendTextTo(FString& Text, const FTextRange& Range) const = 0;
158
159 virtual const FRunInfo& GetRunInfo() const = 0;
160
161 virtual ERunAttributes GetRunAttributes() const = 0;
162
163};
FPlatformTypes::int16 int16
A 16-bit signed integer.
Definition Platform.h:1123
FPlatformTypes::int8 int8
An 8-bit signed integer.
Definition Platform.h:1121
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 ENUM_CLASS_FLAGS(Enum)
Definition EnumClassFlags.h:6
ETextShapingMethod
Definition FontCache.h:52
ERunAttributes
Definition IRun.h:34
ETextHitPoint
Definition TextHitPoint.h:8
constexpr uint32 HashCombine(uint32 A, uint32 C)
Definition TypeHash.h:36
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
uint32 Offset
Definition VulkanMemory.cpp:4033
uint32 Size
Definition VulkanMemory.cpp:4034
uint8_t uint8
Definition binka_ue_file_header.h:8
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition ILayoutBlock.h:9
Definition IRunRenderer.h:7
Definition IRun.h:128
virtual FTextRange GetTextRange() const =0
virtual void BeginLayout()=0
virtual TSharedRef< IRun > Clone() const =0
virtual TSharedRef< class ILayoutBlock > CreateBlock(int32 StartIndex, int32 EndIndex, FVector2D Size, const FLayoutBlockTextContext &TextContext, const TSharedPtr< class IRunRenderer > &Renderer)=0
virtual void SetTextRange(const FTextRange &Value)=0
virtual const FRunInfo & GetRunInfo() const =0
virtual void EndLayout()=0
virtual FVector2D GetShadowSize(int32 StartIndex, int32 EndIndex, float Scale) const
Definition IRun.h:142
virtual FVector2D Measure(int32 StartIndex, int32 EndIndex, float Scale, const FRunTextContext &TextContext) const =0
virtual int16 GetBaseLine(float Scale) const =0
virtual void AppendTextTo(FString &Text) const =0
virtual ERunAttributes GetRunAttributes() const =0
virtual ~IRun()
Definition IRun.h:131
virtual void Move(const TSharedRef< FString > &NewText, const FTextRange &NewRange)=0
virtual FVector2D GetLocationAt(const TSharedRef< ILayoutBlock > &Block, int32 Offset, float Scale) const =0
virtual int32 GetTextIndexAt(const TSharedRef< ILayoutBlock > &Block, const FVector2D &Location, float Scale, ETextHitPoint *const OutHitPoint=nullptr) const =0
virtual void AppendTextTo(FString &Text, const FTextRange &Range) const =0
virtual int8 GetKerning(int32 CurrentIndex, float Scale, const FRunTextContext &TextContext) const =0
virtual FVector2D GetOutlineSize(int32 StartIndex, int32 EndIndex, float Scale) const
Definition IRun.h:141
virtual int16 GetMaxHeight(float Scale) const =0
Definition Renderer.Build.cs:6
Definition SharedPointer.h:692
ETextDirection
Definition Text.h:1413
Definition IRun.h:98
TextBiDi::ETextDirection TextDirection
Definition IRun.h:124
bool operator==(const FLayoutBlockTextContext &Other) const
Definition IRun.h:105
bool operator!=(const FLayoutBlockTextContext &Other) const
Definition IRun.h:111
FLayoutBlockTextContext(const FRunTextContext &InRunTextContext, const TextBiDi::ETextDirection InTextDirection)
Definition IRun.h:99
friend uint32 GetTypeHash(const FLayoutBlockTextContext &Key)
Definition IRun.h:116
Definition IRun.h:14
FString Name
Definition IRun.h:28
TMap< FString, FString > MetaData
Definition IRun.h:29
FRunInfo(FString InName)
Definition IRun.h:21
FRunInfo()
Definition IRun.h:15
Definition IRun.h:85
FRunTextContext(const ETextShapingMethod InTextShapingMethod, const TextBiDi::ETextDirection InBaseDirection, FShapedTextCacheRef InShapedTextCache)
Definition IRun.h:86
FShapedTextCacheRef ShapedTextCache
Definition IRun.h:93
Definition IRun.h:50
friend uint32 GetTypeHash(const FShapedTextContext &Key)
Definition IRun.h:68
FShapedTextContext(const ETextShapingMethod InTextShapingMethod, const TextBiDi::ETextDirection InBaseDirection)
Definition IRun.h:51
ETextShapingMethod TextShapingMethod
Definition IRun.h:77
TextBiDi::ETextDirection BaseDirection
Definition IRun.h:80
bool operator!=(const FShapedTextContext &Other) const
Definition IRun.h:63
bool operator==(const FShapedTextContext &Other) const
Definition IRun.h:57
Definition UnrealString.h:234
static CORE_API const TVector2< double > ZeroVector
Definition Vector2D.h:63