Files
        @ dd8780bb11c5
    
        
              Branch filter: 
        
    Location: ATITD-Tools/Desert-Paint-Codex/Models/PaintColor.cs - annotation
        
            
            dd8780bb11c5
            2.4 KiB
            text/x-csharp
        
        
    
    Correct an error when computing the clipped value on white shifts. It was incorrectly detecting a white shift on single-color clips, resulting in a bad reaction computation. Also don't display the wrong 'observed' color after clearing a reaction.
    40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56 40eaee10ae56  | using System;
namespace DesertPaintCodex.Models
{
    public class PaintColor
    {
        private const byte  LightTextValueCutoff = 150;
        private const float RedIntensity   = 0.299f;
        private const float GreenIntensity = 0.587f;
        private const float BlueIntensity  = 0.114f;
        public byte Red { get; set; }
        public byte Blue { get; set; }
        public byte Green { get; set; }
        public string Name { get; private set; }
        public bool UseWhiteText => Red * RedIntensity + Green * GreenIntensity + Blue * BlueIntensity < LightTextValueCutoff;
        
        public PaintColor()
        {
            Name  = "Undefined";
            Red   = 0;
            Green = 0;
            Blue  = 0;
        }
        public PaintColor(string name, string hexRed, string hexGreen, string hexBlue)
        {
            Name = name;
            Red =   byte.Parse(hexRed,   System.Globalization.NumberStyles.AllowHexSpecifier);
            Green = byte.Parse(hexGreen, System.Globalization.NumberStyles.AllowHexSpecifier);
            Blue =  byte.Parse(hexBlue,  System.Globalization.NumberStyles.AllowHexSpecifier);
        }
        public PaintColor(byte red, byte green, byte blue)
        {
            Name  = "Undefined";
            Red   = red;
            Green = green;
            Blue  = blue;
        }
        public PaintColor(PaintColor other)
        {
            Name  = other.Name;
            Red   = other.Red;
            Green = other.Green;
            Blue  = other.Blue;
        }
        public int GetDistanceSquared(PaintColor otherColor)
        {
            return (int)(Math.Pow(Red - otherColor.Red, 2) +
                Math.Pow(Green - otherColor.Green, 2) +
                Math.Pow(Blue - otherColor.Blue, 2));
        }
        public void Clear()
        {
            Red   = 0;
            Green = 0;
            Blue  = 0;
        }
        public void Set(PaintColor other)
        {
            Red   = other.Red;
            Green = other.Green;
            Blue  = other.Blue;
            Name  = other.Name;
        }
        public string ToHexString()
        {
            return "#" + Red.ToString("X2") + Green.ToString("X2") + Blue.ToString("X2");
        }
        public override string ToString()
        {
            return "[" + Name + ", " + Red + ", " + Green + ", " + Blue + "]";
        }
    }
}
 |