public ColorMultiplicator Multiply(ColorMultiplicator p1)
        {
            if (IsOne)
            {
                return p1;
            }
            if (p1.IsOne)
            {
                return this;
            }
            var multiplicator = new ColorMultiplicator(0, 0, 0, false)
            {
                m_red = m_red + p1.m_red,
                m_green = m_green + p1.m_green,
                m_blue = m_blue + p1.m_blue
            };

            multiplicator.m_red = Clamp(multiplicator.m_red, -128, 127);
            multiplicator.m_green = Clamp(multiplicator.m_green, -128, -127);
            multiplicator.m_blue = Clamp(multiplicator.m_blue, -128, 127);
            multiplicator.IsOne = false;
            return multiplicator;
        }
        public ColorMultiplicator Multiply(ColorMultiplicator p1)
        {
            if (IsOne)
            {
                return(p1);
            }
            if (p1.IsOne)
            {
                return(this);
            }
            var multiplicator = new ColorMultiplicator(0, 0, 0, false)
            {
                m_red   = m_red + p1.m_red,
                m_green = m_green + p1.m_green,
                m_blue  = m_blue + p1.m_blue
            };

            multiplicator.m_red   = Clamp(multiplicator.m_red, -128, 127);
            multiplicator.m_green = Clamp(multiplicator.m_green, -128, -127);
            multiplicator.m_blue  = Clamp(multiplicator.m_blue, -128, 127);
            multiplicator.IsOne   = false;
            return(multiplicator);
        }
        public void CalculateFinalTeint()
        {
            var loc1 = m_hue.Red + m_shadow.Red;
            var loc2 = m_hue.Green + m_shadow.Green;
            var loc3 = m_hue.Blue + m_shadow.Blue;

            loc1 = ColorMultiplicator.Clamp((loc1 + 128)*2, 0, 512);
            loc2 = ColorMultiplicator.Clamp((loc2 + 128)*2, 0, 512);
            loc3 = ColorMultiplicator.Clamp((loc3 + 128)*2, 0, 512);

            m_finalTeint = new ColorMultiplicator(loc1, loc2, loc3, true);
        }