From 8af8f470a5ab5c7fc6aa50a48158bc5406a759a9 Mon Sep 17 00:00:00 2001 From: Jake Date: Thu, 24 Sep 2020 16:40:23 -0700 Subject: [PATCH] Update color picker format options to include 0-1 colors I used capital letters R, G, and B since they had not been used yet. This format of colors is used with a number of things, most notably Unity, and this will save me and hopefully others from having to convert normal colors to 0-1 range every so often, which I say is a win. I have it set to round to 3 decimal places, but that's totally arbitrary and any precision will work, although some level of rounding seems sensible. I could probably make it so users can specify their own rounding precision, however this would be somewhat more effort to implement and would be a more significant deviation from the rest of the formatting rules, so I'll only add that if someone else says it'll actually be accepted. Also, why is banker rounding the default smh c # is is dumb --- .../NameParser/CodeMenuEntryPixelInfo.cs | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/ShareX.HelpersLib/NameParser/CodeMenuEntryPixelInfo.cs b/ShareX.HelpersLib/NameParser/CodeMenuEntryPixelInfo.cs index a27179eb4..e9395809f 100644 --- a/ShareX.HelpersLib/NameParser/CodeMenuEntryPixelInfo.cs +++ b/ShareX.HelpersLib/NameParser/CodeMenuEntryPixelInfo.cs @@ -35,6 +35,9 @@ public class CodeMenuEntryPixelInfo : CodeMenuEntry public static readonly CodeMenuEntryPixelInfo r = new CodeMenuEntryPixelInfo("r", "Red color (0-255)"); public static readonly CodeMenuEntryPixelInfo g = new CodeMenuEntryPixelInfo("g", "Green color (0-255)"); public static readonly CodeMenuEntryPixelInfo b = new CodeMenuEntryPixelInfo("b", "Blue color (0-255)"); + public static readonly CodeMenuEntryPixelInfo R = new CodeMenuEntryPixelInfo("R", "Red color (0-1.000)"); + public static readonly CodeMenuEntryPixelInfo G = new CodeMenuEntryPixelInfo("G", "Green color (0-1.000)"); + public static readonly CodeMenuEntryPixelInfo B = new CodeMenuEntryPixelInfo("B", "Blue color (0-1.000)"); public static readonly CodeMenuEntryPixelInfo hex = new CodeMenuEntryPixelInfo("hex", "Hex color value (Lowercase)"); public static readonly CodeMenuEntryPixelInfo HEX = new CodeMenuEntryPixelInfo("HEX", "Hex color value (Uppercase)"); public static readonly CodeMenuEntryPixelInfo x = new CodeMenuEntryPixelInfo("x", "X position"); @@ -47,9 +50,12 @@ public CodeMenuEntryPixelInfo(string value, string description) : base(value, de public static string Parse(string input, Color color, Point position) { - return input.Replace(r.ToPrefixString(), color.R.ToString(), StringComparison.InvariantCultureIgnoreCase). - Replace(g.ToPrefixString(), color.G.ToString(), StringComparison.InvariantCultureIgnoreCase). - Replace(b.ToPrefixString(), color.B.ToString(), StringComparison.InvariantCultureIgnoreCase). + return input.Replace(r.ToPrefixString(), color.R.ToString(), StringComparison.InvariantCulture). + Replace(g.ToPrefixString(), color.G.ToString(), StringComparison.InvariantCulture). + Replace(b.ToPrefixString(), color.B.ToString(), StringComparison.InvariantCulture). + Replace(R.ToPrefixString(), Math.Round(color.R / 255.0, 3, MidpointRounding.AwayFromZero).ToString(), StringComparison.InvariantCultureIgnoreCase). + Replace(G.ToPrefixString(), Math.Round(color.G / 255.0, 3, MidpointRounding.AwayFromZero).ToString(), StringComparison.InvariantCultureIgnoreCase). + Replace(B.ToPrefixString(), Math.Round(color.B / 255.0, 3, MidpointRounding.AwayFromZero).ToString(), StringComparison.InvariantCultureIgnoreCase). Replace(HEX.ToPrefixString(), ColorHelpers.ColorToHex(color), StringComparison.InvariantCulture). Replace(hex.ToPrefixString(), ColorHelpers.ColorToHex(color).ToLowerInvariant(), StringComparison.InvariantCultureIgnoreCase). Replace(x.ToPrefixString(), position.X.ToString(), StringComparison.InvariantCultureIgnoreCase).