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(); }
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)); }
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)); }