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
This commit is contained in:
Jake 2020-09-24 16:40:23 -07:00
parent 2062845f84
commit 8af8f470a5

View file

@ -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).