Exemple #1
0
        public static void RgbToHls(RgbColor rgbColor, ref HlsColor hlsColor)
        {
            rgbColor.Red   = Math.Min(1f, Math.Max(0.0f, rgbColor.Red));
            rgbColor.Green = Math.Min(1f, Math.Max(0.0f, rgbColor.Green));
            rgbColor.Blue  = Math.Min(1f, Math.Max(0.0f, rgbColor.Blue));
            float num1 = Math.Min(rgbColor.Red, Math.Min(rgbColor.Green, rgbColor.Blue));
            float num2 = Math.Max(rgbColor.Red, Math.Max(rgbColor.Green, rgbColor.Blue));

            hlsColor.Lightness = (float)(((double)num1 + (double)num2) / 2.0);
            if ((double)num1 == (double)num2)
            {
                if ((double)hlsColor.Lightness > 0.0 && (double)hlsColor.Lightness < 1.0)
                {
                    hlsColor.Saturation = 0.0f;
                }
            }
            else
            {
                float num3 = num2 - num1;
                hlsColor.Saturation = (double)hlsColor.Lightness <= 0.5 ? num3 / (num1 + num2) : num3 / (2f - num1 - num2);
                hlsColor.Hue        = (double)rgbColor.Red != (double)num2 ? ((double)rgbColor.Green != (double)num2 ? (float)(4.0 + ((double)rgbColor.Red - (double)rgbColor.Green) / (double)num3) : (float)(2.0 + ((double)rgbColor.Blue - (double)rgbColor.Red) / (double)num3)) : (rgbColor.Green - rgbColor.Blue) / num3;
                if ((double)hlsColor.Hue < 0.0)
                {
                    hlsColor.Hue += 6f;
                }
                hlsColor.Hue /= 6f;
            }
            hlsColor.Hue        = Math.Min(1f, Math.Max(0.0f, hlsColor.Hue));
            hlsColor.Lightness  = Math.Min(1f, Math.Max(0.0f, hlsColor.Lightness));
            hlsColor.Saturation = Math.Min(1f, Math.Max(0.0f, hlsColor.Saturation));
        }
Exemple #2
0
 public void CopyFrom(ColorModel source)
 {
     this.color          = source.color;
     this.rgbColor       = source.rgbColor;
     this.hsbColor       = source.hsbColor;
     this.hlsColor       = source.hlsColor;
     this.cmykColor      = source.cmykColor;
     this.isAlphaEnabled = source.isAlphaEnabled;
     this.OnColorChanged();
 }
Exemple #3
0
 public static void HlsToRgb(HlsColor hlsColor, ref RgbColor rgbColor)
 {
     hlsColor.Hue        = Math.Min(1f, Math.Max(0.0f, hlsColor.Hue));
     hlsColor.Lightness  = Math.Min(1f, Math.Max(0.0f, hlsColor.Lightness));
     hlsColor.Saturation = Math.Min(1f, Math.Max(0.0f, hlsColor.Saturation));
     if ((double)hlsColor.Saturation == 0.0)
     {
         rgbColor.Red = rgbColor.Green = rgbColor.Blue = hlsColor.Lightness;
     }
     else
     {
         float hue = (float)(((double)hlsColor.Hue - Math.Floor((double)hlsColor.Hue)) * 6.0);
         float n2  = (double)hlsColor.Lightness > 0.5 ? (float)((double)hlsColor.Lightness + (double)hlsColor.Saturation - (double)hlsColor.Lightness * (double)hlsColor.Saturation) : hlsColor.Lightness * (1f + hlsColor.Saturation);
         float n1  = 2f * hlsColor.Lightness - n2;
         rgbColor.Red   = ColorUtility.HlsValue(n1, n2, hue + 2f);
         rgbColor.Green = ColorUtility.HlsValue(n1, n2, hue);
         rgbColor.Blue  = ColorUtility.HlsValue(n1, n2, hue - 2f);
     }
     rgbColor.Red   = Math.Min(1f, Math.Max(0.0f, rgbColor.Red));
     rgbColor.Green = Math.Min(1f, Math.Max(0.0f, rgbColor.Green));
     rgbColor.Blue  = Math.Min(1f, Math.Max(0.0f, rgbColor.Blue));
 }