Exemple #1
0
 public static void CmykToRgb(CmykColor cmykColor, ref RgbColor rgbColor)
 {
     cmykColor.Cyan    = Math.Min(1f, Math.Max(0.0f, cmykColor.Cyan));
     cmykColor.Magenta = Math.Min(1f, Math.Max(0.0f, cmykColor.Magenta));
     cmykColor.Yellow  = Math.Min(1f, Math.Max(0.0f, cmykColor.Yellow));
     cmykColor.Black   = Math.Min(1f, Math.Max(0.0f, cmykColor.Black));
     rgbColor.Red      = (float)(1.0 - (double)cmykColor.Cyan * (1.0 - (double)cmykColor.Black)) - cmykColor.Black;
     rgbColor.Green    = (float)(1.0 - (double)cmykColor.Magenta * (1.0 - (double)cmykColor.Black)) - cmykColor.Black;
     rgbColor.Blue     = (float)(1.0 - (double)cmykColor.Yellow * (1.0 - (double)cmykColor.Black)) - cmykColor.Black;
     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));
 }
Exemple #2
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));
 }
Exemple #3
0
 public static void RgbToCmyk(RgbColor rgbColor, ref CmykColor cmykColor)
 {
     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));
     cmykColor.Cyan    = 1f - rgbColor.Red;
     cmykColor.Magenta = 1f - rgbColor.Green;
     cmykColor.Yellow  = 1f - rgbColor.Blue;
     cmykColor.Black   = Math.Min(cmykColor.Cyan, Math.Min(cmykColor.Magenta, cmykColor.Yellow));
     if ((double)cmykColor.Black == 1.0)
     {
         cmykColor.Cyan = cmykColor.Magenta = cmykColor.Yellow = 0.0f;
     }
     else
     {
         cmykColor.Cyan    = (float)(((double)cmykColor.Cyan - (double)cmykColor.Black) / (1.0 - (double)cmykColor.Black));
         cmykColor.Magenta = (float)(((double)cmykColor.Magenta - (double)cmykColor.Black) / (1.0 - (double)cmykColor.Black));
         cmykColor.Yellow  = (float)(((double)cmykColor.Yellow - (double)cmykColor.Black) / (1.0 - (double)cmykColor.Black));
     }
     cmykColor.Cyan    = Math.Min(1f, Math.Max(0.0f, cmykColor.Cyan));
     cmykColor.Magenta = Math.Min(1f, Math.Max(0.0f, cmykColor.Magenta));
     cmykColor.Yellow  = Math.Min(1f, Math.Max(0.0f, cmykColor.Yellow));
     cmykColor.Black   = Math.Min(1f, Math.Max(0.0f, cmykColor.Black));
 }
Exemple #4
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));
        }