Widget Studio
WSText.h
1/*
2* Copyright (c) 2021 THEIA INTERACTIVE. All rights reserved.
3*
4* Website: https://widgetstudio.design
5* Documentation: https://docs.widgetstudio.design
6* Support: marketplace@theia.io
7* Marketplace FAQ: https://marketplacehelp.epicgames.com
8*/
9
10#pragma once
11
12#include "CoreMinimal.h"
13#include "Widgets/WSBase.h"
14#include "Widgets/Custom/WSTextBlock.h"
15#include "WSText.generated.h"
16
21USTRUCT(BlueprintType)
23{
24 GENERATED_BODY()
25
26
27 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Widget Studio")
28 EWSFontType Type;
29
31 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Widget Studio", Meta = (
32 EditCondition = "Type == EWSFontType::Custom",
33 EditConditionHides
34 ))
35 FFontStyle CustomStyle;
36
38 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Widget Studio")
39 EFontCase Case;
40
42 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Widget Studio")
43 TEnumAsByte<ETextJustify::Type> Justification;
44
46 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Widget Studio|Text Wrap")
47 bool AutoWrapText;
48
50 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Widget Studio|Text Wrap", Meta=(
51 ClampMin = "0",
52 UIMin = "0",
53 ClampMax = "10000",
54 UIMax = "10000",
55 EditCondition="AutoWrapText == true",
56 EditConditionHides
57 ))
58 float WrapTextAt;
59
61 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Widget Studio|Text Wrap", Meta = (
62 EditCondition="AutoWrapText == true",
63 EditConditionHides
64 ))
65 ETextWrappingPolicy WrappingPolicy;
66
68 const EWSFontType InType = EWSFontType::Body1,
69 const FFontStyle& InCustomStyle = FFontStyle(),
70 const EFontCase InCase = EFontCase::Sentence,
71 const ETextJustify::Type InJustification = ETextJustify::Left,
72 const bool InAutoWrapText = true,
73 const float InWrapTextAt = 0,
74 const ETextWrappingPolicy InWrappingPolicy = ETextWrappingPolicy::DefaultWrapping)
75 {
76 Type = InType;
77 CustomStyle = InCustomStyle;
78 Case = InCase;
79 Justification = InJustification;
80 AutoWrapText = InAutoWrapText;
81 WrapTextAt = InWrapTextAt;
82 WrappingPolicy = InWrappingPolicy;
83 }
84};
85
90UCLASS()
91class WIDGETSTUDIORUNTIME_API UWidgetStudioText : public UWidgetStudioBase
92{
93 GENERATED_BODY()
94
95protected:
96
97 virtual TSharedRef<SWidget> RebuildWidget() override;
98 virtual int32 NativePaint(const FPaintArgs& Args, const FGeometry& AllottedGeometry, const FSlateRect& MyCullingRect, FSlateWindowElementList& OutDrawElements, int32 LayerId, const FWidgetStyle& InWidgetStyle, bool bParentEnabled) const override;
99 virtual void SynchronizeProperties() override;
100 virtual void InitializeStyling() override;
101 virtual void UpdateStyling() override;
102
103 UPROPERTY()
104 FSlateFontInfo FontInfo;
105
106 // Widget Components
107
108 UPROPERTY(BlueprintReadOnly, Category = "Widgets")
109 USizeBox* SizeBox = nullptr;
110
111 UPROPERTY(BlueprintReadOnly, Category = "Widgets")
112 UWidgetStudioTextBlock* TextItem = nullptr;
113
114
115 // Properties
116
118 UPROPERTY(EditAnywhere, Category = "Widget Studio", Meta=(MultiLine=true))
119 FText Text = FText::FromString("Placeholder");
120
122 UPROPERTY(Meta = (ShowOnlyInnerProperties))
123 FWSTextStyle TextStyle;
124
126 UPROPERTY(EditAnywhere, Category = "Widget Studio|Color")
127 EPalette Color = EPalette::PrimaryContent;
128
129
130
132 UPROPERTY(EditAnywhere, Category="Widget Studio")
133 EWSFontType Type = EWSFontType::Body1;
134
136 UPROPERTY(EditAnywhere, Category="Widget Studio", Meta = (EditCondition = "Type == EWSFontType::Custom", EditConditionHides))
137 FFontStyle CustomStyle;
138
140 UPROPERTY(EditAnywhere, Category = "Widget Studio")
141 EFontCase Case = EFontCase::Sentence;
142
144 UPROPERTY(EditAnywhere, Category = "Widget Studio")
145 TEnumAsByte<ETextJustify::Type> Justification = ETextJustify::Left;
146
148 UPROPERTY(EditAnywhere, Category = "Widget Studio|Text Wrap")
149 bool AutoWrapText = false;
150
152 UPROPERTY(EditAnywhere, Category = "Widget Studio|Text Wrap",Meta=(ClampMin = "0", UIMin = "0"))
153 float WrapTextAt = 0;
154
156 UPROPERTY(EditAnywhere, Category = "Widget Studio|Text Wrap")
157 ETextWrappingPolicy WrappingPolicy = ETextWrappingPolicy::DefaultWrapping;
158
159
160public:
161
162 // Helpers
163
165 UFUNCTION(BlueprintPure, Category="Widget Studio|Helper")
166 FWSTextStyle GetTextOptions() const;
167
169 UFUNCTION(BlueprintPure, Category="Widget Studio|Helper")
170 FText GetText() const;
171
173 UFUNCTION(BlueprintPure, Category="Widget Studio|Helper")
174 bool IsTextEmpty() const;
175
177 UFUNCTION(BlueprintPure, Category="Widget Studio|Helper")
178 ETextJustify::Type GetJustification() const;
179
181 UFUNCTION(BlueprintPure, Category="Widget Studio|Helper")
182 int32 Length() const;
183
185 UFUNCTION(BlueprintPure, Category="Widget Studio|Helper")
186 EWSFontType GetType() const;
187
189 UFUNCTION(BlueprintPure, Category="Widget Studio|Helper")
190 FFontStyle GetCustomStyle() const;
191
193 UFUNCTION(BlueprintPure, Category="Widget Studio|Helper")
194 bool IsAutoWrappingText() const;
195
197 UFUNCTION(BlueprintPure, Category="Widget Studio|Helper")
198 float GetWrapTextAt() const;
199
201 UFUNCTION(BlueprintPure, Category="Widget Studio|Helper")
202 ETextWrappingPolicy GetWrapPolicy() const;
203
205 UFUNCTION(BlueprintPure, Category="Widget Studio|Helper")
206 EFontCase GetCase() const;
207
208
209 // Modifier Functions
210
215 UFUNCTION(BlueprintCallable, Category="Widget Studio|Modifier")
216 void SetTextStyle(FWSTextStyle NewTextOptions);
217
222 UFUNCTION(BlueprintCallable, Category="Widget Studio|Modifier")
223 void SetText(FText NewText);
224
229 UFUNCTION(BlueprintCallable, Category="Widget Studio|Modifier")
230 void SetJustification(ETextJustify::Type NewJustification);
231
236 UFUNCTION(BlueprintCallable, Category="Widget Studio|Modifier")
237 void SetColor(EPalette NewColor);
238
243 UFUNCTION(BlueprintCallable, Category="Widget Studio|Modifier")
244 void SetType(EWSFontType NewType);
245
250 UFUNCTION(BlueprintCallable, Category="Widget Studio|Modifier")
251 void SetCustomStyle(FFontStyle NewStyle);
252
257 UFUNCTION(BlueprintCallable, Category="Widget Studio|Modifier")
258 void SetAutoWrapText(bool NewState);
259
264 UFUNCTION(BlueprintCallable, Category="Widget Studio|Modifier")
265 void SetWrapTextAt(float NewWrapAt);
266
271 UFUNCTION(BlueprintCallable, Category="Widget Studio|Modifier")
272 void SetWrapPolicy(ETextWrappingPolicy NewPolicy);
273
278 UFUNCTION(BlueprintCallable, Category="Widget Studio|Modifier")
279 void SetCase(EFontCase NewCase);
280};
The base User Widget class for Widget Studio.
Definition: WSBase.h:32
A customized TextBlock widget that exposes required functionality.
Definition: WSTextBlock.h:22
A custom text widget setup to work with the Typography Styling.
Definition: WSText.h:92
Struct with font weight, size, and letter spacing.
Definition: WSTypography.h:23
The settings for the Widget Studio Text.
Definition: WSText.h:23