diff --git a/src/modules/colorPicker/ColorPickerUI/Helpers/ColorHelper.cs b/src/modules/colorPicker/ColorPickerUI/Helpers/ColorHelper.cs
index d242a9e561..7015201b23 100644
--- a/src/modules/colorPicker/ColorPickerUI/Helpers/ColorHelper.cs
+++ b/src/modules/colorPicker/ColorPickerUI/Helpers/ColorHelper.cs
@@ -44,6 +44,14 @@ namespace ColorPicker.Helpers
return (cyan, magenta, yellow, blackKey);
}
+ ///
+ /// Convert a given to a float color styling(0.1f, 0.1f, 0.1f)
+ ///
+ /// The to convert
+ /// The int / 255d for each value to get value between 0 and 1
+ internal static (double red, double green, double blue) ConvertToDouble(Color color)
+ => (color.R / 255d, color.G / 255d, color.B / 255d);
+
///
/// Convert a given to a HSB color (hue, saturation, brightness)
///
diff --git a/src/modules/colorPicker/ColorPickerUI/Helpers/ColorRepresentationHelper.cs b/src/modules/colorPicker/ColorPickerUI/Helpers/ColorRepresentationHelper.cs
index 8fafa440cb..ece620088b 100644
--- a/src/modules/colorPicker/ColorPickerUI/Helpers/ColorRepresentationHelper.cs
+++ b/src/modules/colorPicker/ColorPickerUI/Helpers/ColorRepresentationHelper.cs
@@ -46,6 +46,8 @@ namespace ColorPicker.Helpers
ColorRepresentationType.RGB => ColorToRGB(color),
ColorRepresentationType.CIELAB => ColorToCIELAB(color),
ColorRepresentationType.CIEXYZ => ColorToCIEXYZ(color),
+ ColorRepresentationType.RGBfloat => ColorToFloat(color),
+ ColorRepresentationType.Decimal => ColorToDecimal(color),
// Fall-back value, when "_userSettings.CopiedColorRepresentation.Value" is incorrect
_ => ColorToHex(color),
@@ -99,6 +101,29 @@ namespace ColorPicker.Helpers
+ $", {brightness.ToString(CultureInfo.InvariantCulture)}%)";
}
+ ///
+ /// Return a representation float color styling(0.1f, 0.1f, 0.1f)
+ ///
+ /// The to convert
+ /// a string value (0.1f, 0.1f, 0.1f)
+ private static string ColorToFloat(Color color)
+ {
+ var (red, green, blue) = ColorHelper.ConvertToDouble(color);
+ var precison = 2;
+
+ return $"({Math.Round(red, precison)}f, {Math.Round(green, precison)}f, {Math.Round(blue, precison)}f, 1)";
+ }
+
+ ///
+ /// Return a representation decimal color value
+ ///
+ /// The to convert
+ /// a string value number
+ private static string ColorToDecimal(Color color)
+ {
+ return $"{color.R + (color.G * 256) + (color.B * 65536)}";
+ }
+
///
/// Return a representation of a HSI color
///
diff --git a/src/modules/colorPicker/ColorPickerUI/ViewModels/ColorEditorViewModel.cs b/src/modules/colorPicker/ColorPickerUI/ViewModels/ColorEditorViewModel.cs
index 87ed3edae5..65cd33d61a 100644
--- a/src/modules/colorPicker/ColorPickerUI/ViewModels/ColorEditorViewModel.cs
+++ b/src/modules/colorPicker/ColorPickerUI/ViewModels/ColorEditorViewModel.cs
@@ -216,6 +216,18 @@ namespace ColorPicker.ViewModels
FormatName = ColorRepresentationType.CIEXYZ.ToString(),
Convert = (Color color) => { return ColorRepresentationHelper.GetStringRepresentationFromMediaColor(color, ColorRepresentationType.CIEXYZ); },
});
+ _allColorRepresentations.Add(
+ new ColorFormatModel()
+ {
+ FormatName = ColorRepresentationType.RGBfloat.ToString(),
+ Convert = (Color color) => { return ColorRepresentationHelper.GetStringRepresentationFromMediaColor(color, ColorRepresentationType.RGBfloat); },
+ });
+ _allColorRepresentations.Add(
+ new ColorFormatModel()
+ {
+ FormatName = ColorRepresentationType.Decimal.ToString(),
+ Convert = (Color color) => { return ColorRepresentationHelper.GetStringRepresentationFromMediaColor(color, ColorRepresentationType.Decimal); },
+ });
_userSettings.VisibleColorFormats.CollectionChanged += VisibleColorFormats_CollectionChanged;
diff --git a/src/modules/colorPicker/UnitTest-ColorPickerUI/Helpers/ColorRepresentationHelperTest.cs b/src/modules/colorPicker/UnitTest-ColorPickerUI/Helpers/ColorRepresentationHelperTest.cs
index 5b1f26f916..e8f32b2be0 100644
--- a/src/modules/colorPicker/UnitTest-ColorPickerUI/Helpers/ColorRepresentationHelperTest.cs
+++ b/src/modules/colorPicker/UnitTest-ColorPickerUI/Helpers/ColorRepresentationHelperTest.cs
@@ -24,6 +24,8 @@ namespace Microsoft.ColorPicker.UnitTests
[DataRow(ColorRepresentationType.RGB, "rgb(0, 0, 0)")]
[DataRow(ColorRepresentationType.CIELAB, "CIELab(0, 0, 0)")]
[DataRow(ColorRepresentationType.CIEXYZ, "xyz(0, 0, 0)")]
+ [DataRow(ColorRepresentationType.RGBfloat, "(0.00f, 0.00f, 0.00f, 1)")]
+ [DataRow(ColorRepresentationType.Decimal, "0")]
public void GetStringRepresentationTest(ColorRepresentationType type, string expected)
{
diff --git a/src/settings-ui/Microsoft.PowerToys.Settings.UI.Library/Enumerations/ColorRepresentationType.cs b/src/settings-ui/Microsoft.PowerToys.Settings.UI.Library/Enumerations/ColorRepresentationType.cs
index 5b592f22a1..b99ab73305 100644
--- a/src/settings-ui/Microsoft.PowerToys.Settings.UI.Library/Enumerations/ColorRepresentationType.cs
+++ b/src/settings-ui/Microsoft.PowerToys.Settings.UI.Library/Enumerations/ColorRepresentationType.cs
@@ -65,5 +65,17 @@ namespace Microsoft.PowerToys.Settings.UI.Library.Enumerations
/// Color presentation as CIEXYZ color space (X[0..95], Y[0..100], Z[0..109]
///
CIEXYZ = 10,
+
+ ///
+ /// Color presentation as RGB float (red[0..1], green[0..1], blue[0..1])
+ ///
+ RGBfloat = 11,
+
+ ///
+ /// Color presentation as integer decimal value 0-16777215
+ ///
+#pragma warning disable CA1720 // Identifier contains type name
+ Decimal = 12,
+#pragma warning restore CA1720 // Identifier contains type name
}
}
diff --git a/src/settings-ui/Microsoft.PowerToys.Settings.UI.Library/ViewModels/ColorPickerViewModel.cs b/src/settings-ui/Microsoft.PowerToys.Settings.UI.Library/ViewModels/ColorPickerViewModel.cs
index e69324ea4f..92024daec5 100644
--- a/src/settings-ui/Microsoft.PowerToys.Settings.UI.Library/ViewModels/ColorPickerViewModel.cs
+++ b/src/settings-ui/Microsoft.PowerToys.Settings.UI.Library/ViewModels/ColorPickerViewModel.cs
@@ -55,6 +55,8 @@ namespace Microsoft.PowerToys.Settings.UI.Library.ViewModels
{ ColorRepresentationType.RGB, "RGB - rgb(100, 50, 75)" },
{ ColorRepresentationType.CIELAB, "CIE LAB - CIELab(76, 21, 80)" },
{ ColorRepresentationType.CIEXYZ, "CIE XYZ - xyz(56, 50, 7)" },
+ { ColorRepresentationType.RGBfloat, "(1.0f, 0.7f, 0.00f)" },
+ { ColorRepresentationType.Decimal, "16755200" },
};
GeneralSettingsConfig = settingsRepository.SettingsConfig;
@@ -198,6 +200,8 @@ namespace Microsoft.PowerToys.Settings.UI.Library.ViewModels
var ncolFormatName = ColorRepresentationType.NCol.ToString();
var cielabFormatName = ColorRepresentationType.CIELAB.ToString();
var ciexyzFormatName = ColorRepresentationType.CIEXYZ.ToString();
+ var rgbFloatFormatName = ColorRepresentationType.RGBfloat.ToString();
+ var decimalFormatName = ColorRepresentationType.Decimal.ToString();
formatsUnordered.Add(new ColorFormatModel(hexFormatName, "ef68ff", visibleFormats.ContainsKey(hexFormatName) && visibleFormats[hexFormatName]));
formatsUnordered.Add(new ColorFormatModel(rgbFormatName, "rgb(239, 104, 255)", visibleFormats.ContainsKey(rgbFormatName) && visibleFormats[rgbFormatName]));
@@ -210,6 +214,8 @@ namespace Microsoft.PowerToys.Settings.UI.Library.ViewModels
formatsUnordered.Add(new ColorFormatModel(ncolFormatName, "R10, 50%, 75%", visibleFormats.ContainsKey(ncolFormatName) && visibleFormats[ncolFormatName]));
formatsUnordered.Add(new ColorFormatModel(cielabFormatName, "CIELab(66, 72, -52)", visibleFormats.ContainsKey(cielabFormatName) && visibleFormats[cielabFormatName]));
formatsUnordered.Add(new ColorFormatModel(ciexyzFormatName, "xyz(59, 35, 98)", visibleFormats.ContainsKey(ciexyzFormatName) && visibleFormats[ciexyzFormatName]));
+ formatsUnordered.Add(new ColorFormatModel(rgbFloatFormatName, "(0.94f, 0.41f, 1.00f, 1)", visibleFormats.ContainsKey(rgbFloatFormatName) && visibleFormats[rgbFloatFormatName]));
+ formatsUnordered.Add(new ColorFormatModel(decimalFormatName, "15689983", visibleFormats.ContainsKey(decimalFormatName) && visibleFormats[decimalFormatName]));
foreach (var storedColorFormat in _colorPickerSettings.Properties.VisibleColorFormats)
{