7#include "Misc/DefaultValueHelper.h"
19 FColor Color = FColor::FromHex(HexString);
20 return Color.ReinterpretAsLinear();
24 UE_LOG(LogTemp, Warning, TEXT(
"Invalid Hex String Format: %s"), *HexString);
26 return FLinearColor::White;
57 TArray<FString> Components;
58 ColorString.ParseIntoArray(Components, TEXT(
","),
true);
60 int32 R = 0, G = 0, B = 0, A = 255;
63 FDefaultValueHelper::ParseInt(Components[0], R);
64 FDefaultValueHelper::ParseInt(Components[1], G);
65 FDefaultValueHelper::ParseInt(Components[2], B);
67 if (Components.Num() == 4)
69 FDefaultValueHelper::ParseInt(Components[3], A);
73 return FLinearColor(R / 255.0f, G / 255.0f, B / 255.0f, A / 255.0f);
78 UE_LOG(LogTemp, Warning, TEXT(
"Invalid Color String Format: %s"), *ColorString);
79 return FLinearColor::White;
84 FColor ConvertedColor = Color.Quantize();
85 FString HexString = ConvertedColor.ToHex();
89 HexString = HexString.Left(6);
94 HexString = FString(
"#") + HexString;
116 int32 R = FMath::RoundToInt(Color.R * 255);
117 int32 G = FMath::RoundToInt(Color.G * 255);
118 int32 B = FMath::RoundToInt(Color.B * 255);
119 int32 A = FMath::RoundToInt(Color.A * 255);
123 return FString::Printf(TEXT(
"%d,%d,%d,%d"), R, G, B, A);
127 return FString::Printf(TEXT(
"%d,%d,%d"), R, G, B);
133 FString TrimmedString = ColorString.TrimStartAndEnd();
134 TArray<FString> Components;
135 TrimmedString.ParseIntoArray(Components, TEXT(
","),
true);
138 if (Components.Num() < 3 || Components.Num() > 4)
143 for (
const FString& Component : Components)
146 if (!FDefaultValueHelper::ParseInt(Component, Value) || Value < 0 || Value > 255)
157 FString TrimmedString = ColorString.TrimStartAndEnd().Replace(TEXT(
"#"), TEXT(
""));
160 if (TrimmedString.Len() != 6 && TrimmedString.Len() != 8)
166 for (TCHAR Char : TrimmedString)
168 if (!FChar::IsHexDigit(Char))
179 FString TrimmedString = ColorString.TrimStartAndEnd();
180 FLinearColor ConvertedColor;
192 return ConvertedColor;
static bool IsValidRGBString(const FString &ColorString)
static FLinearColor HexToLinearColor(const FString &HexString, bool &bSuccess)
Converts a hex color code (e.g. "#FF00FF" or "#FF00FFAA" or "FF00FF" or "FF00FFAA) to an FLinearColor...
static FString LinearColorToHex(const FLinearColor &Color, bool bIncludeAlpha, bool bAddPrefix)
static FLinearColor RGBStringToLinearColor(const FString &ColorString, bool &bSuccess)
Converts a comma-separated color string ("r,g,b" or "r,g,b,a") to an FLinearColor.
static FLinearColor AutoDetectColorStringToLinearColor(const FString &ColorString, bool &bSuccess)
Tries to auto detect format for color string, and convert it to linear color accordingly.
static bool IsValidHexString(const FString &ColorString)
static FString LinearColorToRGBString(const FLinearColor &Color, bool bIncludeAlpha)