public void FromXYZ(XYZ color) { isOut = false; double rn = 3.2406 * color.X + -1.5372 * color.Y + -0.4986 * color.Z; double gn = -0.9689 * color.X + 1.8758 * color.Y + 0.0415 * color.Z; double bn = 0.0557 * color.X + -0.2040 * color.Y + 1.0570 * color.Z; r = (int)Math.Ceiling(F(rn) * 255); g = (int)Math.Ceiling(F(gn) * 255); b = (int)Math.Ceiling(F(bn) * 255); if (r < 0) { r = 0; isOut = true; } if (g < 0) { g = 0; isOut = true; } if (b < 0) { b = 0; isOut = true; } if (r > 255) { r = 255; isOut = true; } if (g > 255) { g = 255; isOut = true; } if (b > 255) { b = 255; isOut = true; } if (isOut) { ShowMessage?.Invoke(null, null); } else { DisableMessage?.Invoke(null, null); } ColorMustUpdate?.Invoke(null, null); }
public void FromCMYK(CMYK color) { r = (int)Math.Ceiling(255 * (1 - color.C) * (1 - color.K)); g = (int)Math.Ceiling(255 * (1 - color.M) * (1 - color.K)); b = (int)Math.Ceiling(255 * (1 - color.Y) * (1 - color.K)); ColorMustUpdate?.Invoke(null, null); }
public void FromRGB(RGB color) { double rn = F(color.R / 255d) * 100; double gn = F(color.G / 255d) * 100; double bn = F(color.B / 255d) * 100; x = 0.412453 * rn + 0.357580 * gn + 0.180423 * bn; y = 0.212671 * rn + 0.715160 * gn + 0.072169 * bn; z = 0.019334 * rn + 0.119193 * gn + 0.950227 * bn; ColorMustUpdate?.Invoke(null, null); }
public void FromRGB(RGB color) { if (color.R == 0 && color.G == 0 && color.B == 0) { return; } k = new double[] { 1 - color.R / 255d, 1 - color.G / 255d, 1 - color.B / 255d }.Min(); c = (1 - color.R / 255d - K) / (1 - K); m = (1 - color.G / 255d - K) / (1 - K); y = (1 - color.B / 255d - K) / (1 - K); ColorMustUpdate?.Invoke(null, null); }