Пример #1
0
        public static void RgbToHsb(RgbColor rgbColor, ref HsbColor hsbColor)
        {
            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));

            hsbColor.Brightness = num2;
            if ((double)num1 == (double)num2)
            {
                if ((double)hsbColor.Brightness > 0.0)
                {
                    hsbColor.Saturation = 0.0f;
                }
            }
            else
            {
                float num3 = num2 - num1;
                hsbColor.Saturation = num3 / num2;
                hsbColor.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)hsbColor.Hue < 0.0)
                {
                    hsbColor.Hue += 6f;
                }
                hsbColor.Hue /= 6f;
            }
            hsbColor.Hue        = Math.Min(1f, Math.Max(0.0f, hsbColor.Hue));
            hsbColor.Saturation = Math.Min(1f, Math.Max(0.0f, hsbColor.Saturation));
            hsbColor.Brightness = Math.Min(1f, Math.Max(0.0f, hsbColor.Brightness));
        }
Пример #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();
 }
Пример #3
0
        public static void HsbToRgb(HsbColor hsbColor, ref RgbColor rgbColor)
        {
            hsbColor.Hue        = Math.Min(1f, Math.Max(0.0f, hsbColor.Hue));
            hsbColor.Saturation = Math.Min(1f, Math.Max(0.0f, hsbColor.Saturation));
            hsbColor.Brightness = Math.Min(1f, Math.Max(0.0f, hsbColor.Brightness));
            if ((double)hsbColor.Saturation == 0.0)
            {
                rgbColor.Red = rgbColor.Green = rgbColor.Blue = hsbColor.Brightness;
            }
            else
            {
                float num1 = (float)(((double)hsbColor.Hue - Math.Floor((double)hsbColor.Hue)) * 6.0);
                int   num2 = (int)num1;
                float num3 = num1 - (float)num2;
                float num4 = hsbColor.Brightness * (1f - hsbColor.Saturation);
                float num5 = hsbColor.Brightness * (float)(1.0 - (double)hsbColor.Saturation * (double)num3);
                float num6 = hsbColor.Brightness * (float)(1.0 - (double)hsbColor.Saturation * (1.0 - (double)num3));
                switch (num2 % 6)
                {
                case 0:
                    rgbColor.Red   = hsbColor.Brightness;
                    rgbColor.Green = num6;
                    rgbColor.Blue  = num4;
                    break;

                case 1:
                    rgbColor.Red   = num5;
                    rgbColor.Green = hsbColor.Brightness;
                    rgbColor.Blue  = num4;
                    break;

                case 2:
                    rgbColor.Red   = num4;
                    rgbColor.Green = hsbColor.Brightness;
                    rgbColor.Blue  = num6;
                    break;

                case 3:
                    rgbColor.Red   = num4;
                    rgbColor.Green = num5;
                    rgbColor.Blue  = hsbColor.Brightness;
                    break;

                case 4:
                    rgbColor.Red   = num6;
                    rgbColor.Green = num4;
                    rgbColor.Blue  = hsbColor.Brightness;
                    break;

                case 5:
                    rgbColor.Red   = hsbColor.Brightness;
                    rgbColor.Green = num4;
                    rgbColor.Blue  = num5;
                    break;

                default:
                    throw new InvalidOperationException(ExceptionStringTable.CannotReachHere);
                }
            }
            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));
        }