Widget Studio
WSIcon.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
14#include "Widgets/WSBase.h"
15#include "Components/Image.h"
16#include "Components/InvalidationBox.h"
17#include "Components/ScaleBox.h"
18#include "Components/SizeBox.h"
19
20#include "WSIcon.generated.h"
21
25USTRUCT(BlueprintType)
27{
28 GENERATED_BODY()
29
30
31 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Widget Studio", Meta = (ClampMin = "16", UIMin = "16"))
32 float Size;
33
35 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Widget Studio|Color")
36 bool bUseNativeColor;
37
38 explicit FWSIconStyle(
39 const float InSize = 16,
40 const bool bInUseNativeColor = false
41 )
42 {
43 Size = InSize;
44 bUseNativeColor = bInUseNativeColor;
45 }
46};
47
51UCLASS()
52class WIDGETSTUDIORUNTIME_API UWidgetStudioIcon : public UWidgetStudioBase
53{
54 GENERATED_BODY()
55
56protected:
57
58 virtual TSharedRef<SWidget> RebuildWidget() override;
59 virtual int32 NativePaint(const FPaintArgs& Args, const FGeometry& AllottedGeometry, const FSlateRect& MyCullingRect, FSlateWindowElementList& OutDrawElements, int32 LayerId, const FWidgetStyle& InWidgetStyle, bool bParentEnabled) const override;
60 virtual void SynchronizeProperties() override;
61 virtual void InitializeStyling() override;
62 virtual void UpdateStyling() override;
63
64 // Widget Components
65
66 UPROPERTY(BlueprintReadOnly, Category = "Widgets")
67 UInvalidationBox* Retainer = nullptr;
68
69 UPROPERTY(BlueprintReadOnly, Category = "Widgets")
70 USizeBox* SizeBox = nullptr;
71
72 UPROPERTY(BlueprintReadOnly, Category = "Widgets")
73 UScaleBox* ScaleBox = nullptr;
74
75 UPROPERTY(BlueprintReadOnly, Category = "Widgets")
76 UImage* IconItem = nullptr;
77
78private:
79 /* Properties */
80
82 UPROPERTY(EditAnywhere, Category="Widget Studio", Meta = (EditCondition="CustomIcon == nullptr"))
83 EIconItem Icon = EIconItem::Heart;
84
86 UPROPERTY(EditAnywhere, Category="Widget Studio")
87 UTexture2D* CustomIcon;
88
90 UPROPERTY(EditAnywhere, Category = "Widget Studio", Meta = (ClampMin = "16", UIMin = "16"))
91 float Size = 24;
92
94 UPROPERTY(EditAnywhere, Category="Widget Studio|Color")
95 bool bUseNativeColor = false;
96
98 UPROPERTY()
99 FWSIconStyle IconStyle;
100
102 UPROPERTY(EditAnywhere, Category="Widget Studio|Color")
103 EPalette Color = EPalette::PrimaryContent;
104
105
106
107
108public:
109 /* Helpers */
110
112 UFUNCTION(BlueprintPure, Category="Widget Studio|Helper")
113 EIconItem GetIcon() const;
114
116 UFUNCTION(BlueprintPure, Category="Widget Studio|Helper")
117 EPalette GetColor() const;
118
120 UFUNCTION(BlueprintPure, Category="Widget Studio|Helper")
121 bool IsUsingCustomIcon() const;
122
124 UFUNCTION(BlueprintPure, Category="Widget Studio|Helper")
125 UTexture2D* GetCustomIcon() const;
126
128 UFUNCTION(BlueprintPure, Category="Widget Studio|Helper")
129 float GetSize() const;
130
132 UFUNCTION(BlueprintPure, Category="Widget Studio|Helper")
133 float IsUsingNativeColor() const;
134
135 /* Modifiers */
136
141 UFUNCTION(BlueprintCallable, Category="Widget Studio|Modifier")
142 void SetIcon(EIconItem NewIcon);
143
148 UFUNCTION(BlueprintCallable, Category="Widget Studio|Modifier")
149 void SetColor(EPalette NewColor);
150
155 UFUNCTION(BlueprintCallable, Category="Widget Studio|Modifier")
156 void SetCustomIcon(UTexture2D* NewCustomIcon);
157
159 UFUNCTION(BlueprintCallable, Category="Widget Studio|Modifier")
160 void ClearCustomIcon();
161
166 UFUNCTION(BlueprintCallable, Category="Widget Studio|Modifier")
167 void SetSize(float NewSize);
168
173 UFUNCTION(BlueprintCallable, Category="Widget Studio|Modifier")
174 void SetUseNativeColor(bool NewState);
175
180 UFUNCTION(BlueprintCallable, Category="Widget Studio|Modifier")
181 void SetIconStyle(const FWSIconStyle& NewOptions);
182};
The base User Widget class for Widget Studio.
Definition: WSBase.h:32
A pre-setup widget that works with power of two icons.
Definition: WSIcon.h:53
The settings for the Widget Studio Icon Widget.
Definition: WSIcon.h:27