/// <summary> /// A GDI Color representation of the RgbColor /// </summary> public static Color? ToColor(ICssColor color) { if (color == null) { return null; } double dRed = color.Red.GetFloatValue(CssPrimitiveType.Number); double dGreen = color.Green.GetFloatValue(CssPrimitiveType.Number); double dBlue = color.Blue.GetFloatValue(CssPrimitiveType.Number); if (Double.IsNaN(dRed) || Double.IsInfinity(dRed)) { return null; } if (Double.IsNaN(dGreen) || Double.IsInfinity(dGreen)) { return null; } if (Double.IsNaN(dBlue) || Double.IsInfinity(dBlue)) { return null; } return Color.FromRgb(Convert.ToByte(dRed), Convert.ToByte(dGreen), Convert.ToByte(dBlue)); }
/// <summary> /// A GDI Color representation of the RgbColor /// </summary> public static Color ToColor(ICssColor color) { if (color == null) { return(Color.Empty); } double dRed = color.Red.GetFloatValue(CssPrimitiveType.Number); double dGreen = color.Green.GetFloatValue(CssPrimitiveType.Number); double dBlue = color.Blue.GetFloatValue(CssPrimitiveType.Number); if (Double.IsNaN(dRed) || Double.IsInfinity(dRed)) { return(Color.Empty); } if (Double.IsNaN(dGreen) || Double.IsInfinity(dGreen)) { return(Color.Empty); } if (Double.IsNaN(dBlue) || Double.IsInfinity(dBlue)) { return(Color.Empty); } return(Color.FromArgb(Convert.ToInt32(dRed), Convert.ToInt32(dGreen), Convert.ToInt32(dBlue))); }
/// <summary> /// A GDI Color representation of the RgbColor /// </summary> public static Color?ToColor(ICssColor color) { if (color == null) { return(null); } double dRed = color.Red.GetFloatValue(CssPrimitiveType.Number); double dGreen = color.Green.GetFloatValue(CssPrimitiveType.Number); double dBlue = color.Blue.GetFloatValue(CssPrimitiveType.Number); if (double.IsNaN(dRed) || double.IsInfinity(dRed)) { return(null); } if (double.IsNaN(dGreen) || double.IsInfinity(dGreen)) { return(null); } if (double.IsNaN(dBlue) || double.IsInfinity(dBlue)) { return(null); } if (color.HasAlpha) { double dAlpha = color.Alpha.GetFloatValue(CssPrimitiveType.Number); if (!double.IsNaN(dAlpha) && !double.IsInfinity(dAlpha)) { return(Color.FromArgb(Convert.ToByte(dAlpha), Convert.ToByte(dRed), Convert.ToByte(dGreen), Convert.ToByte(dBlue))); } } return(Color.FromRgb(Convert.ToByte(dRed), Convert.ToByte(dGreen), Convert.ToByte(dBlue))); }
public static bool TryConvertColor(ICssColor color, out Color wpfColor) { wpfColor = Colors.Black; if (color == null) { return(false); } double dRed = color.Red.GetFloatValue(CssPrimitiveType.Number); double dGreen = color.Green.GetFloatValue(CssPrimitiveType.Number); double dBlue = color.Blue.GetFloatValue(CssPrimitiveType.Number); if (double.IsNaN(dRed) || double.IsInfinity(dRed) || double.IsNaN(dGreen) || double.IsInfinity(dGreen) || double.IsNaN(dBlue) || double.IsInfinity(dBlue)) { return(false); } wpfColor = Color.FromRgb(Convert.ToByte(dRed), Convert.ToByte(dGreen), Convert.ToByte(dBlue)); return(true); }
/// <summary> /// A WPF <see cref="Color"/> representation of the <c>RgbColor</c>. /// </summary> public static Color?ToColor(ICssColor color) { if (color == null) { return(null); } if (color.IsSystemColor) { string colorName = color.Name; switch (colorName.ToLowerInvariant()) { case "activeborder": return(SystemColors.ActiveBorderColor); case "activecaption": return(SystemColors.ActiveCaptionColor); case "appworkspace": return(SystemColors.AppWorkspaceColor); case "background": return(SystemColors.DesktopColor); case "buttonface": return(SystemColors.ControlColor); case "buttonhighlight": return(SystemColors.ControlLightLightColor); case "buttonshadow": return(SystemColors.ControlDarkColor); case "buttontext": return(SystemColors.ControlTextColor); case "captiontext": return(SystemColors.ActiveCaptionTextColor); case "graytext": return(SystemColors.GrayTextColor); case "highlight": return(SystemColors.HighlightColor); case "highlighttext": return(SystemColors.HighlightTextColor); case "inactiveborder": return(SystemColors.InactiveBorderColor); case "inactivecaption": return(SystemColors.InactiveCaptionColor); case "inactivecaptiontext": return(SystemColors.InactiveCaptionTextColor); case "infobackground": return(SystemColors.InfoColor); case "infotext": return(SystemColors.InfoTextColor); case "menu": return(SystemColors.MenuColor); case "menutext": return(SystemColors.MenuTextColor); case "scrollbar": return(SystemColors.ScrollBarColor); case "threeddarkshadow": return(SystemColors.ControlDarkDarkColor); case "threedface": return(SystemColors.ControlColor); case "threedhighlight": return(SystemColors.ControlLightColor); case "threedlightshadow": return(SystemColors.ControlLightLightColor); case "window": return(SystemColors.WindowColor); case "windowframe": return(SystemColors.WindowFrameColor); case "windowtext": return(SystemColors.WindowTextColor); } return((Color)ColorConverter.ConvertFromString(colorName)); } if (color.Red == null || color.Green == null || color.Blue == null) { return(null); } double dRed = color.Red.GetFloatValue(CssPrimitiveType.Number); double dGreen = color.Green.GetFloatValue(CssPrimitiveType.Number); double dBlue = color.Blue.GetFloatValue(CssPrimitiveType.Number); if (double.IsNaN(dRed) || double.IsInfinity(dRed)) { return(null); } if (double.IsNaN(dGreen) || double.IsInfinity(dGreen)) { return(null); } if (double.IsNaN(dBlue) || double.IsInfinity(dBlue)) { return(null); } if (color.HasAlpha) { double dAlpha = color.Alpha.GetFloatValue(color.Alpha.PrimitiveType == CssPrimitiveType.Percentage ? CssPrimitiveType.Number : CssPrimitiveType.Percentage); if (!double.IsNaN(dAlpha) && !double.IsInfinity(dAlpha)) { return(Color.FromArgb(Convert.ToByte(dAlpha), Convert.ToByte(dRed), Convert.ToByte(dGreen), Convert.ToByte(dBlue))); } } return(Color.FromRgb(Convert.ToByte(dRed), Convert.ToByte(dGreen), Convert.ToByte(dBlue))); }
/// <summary> /// A GDI Color representation of the RgbColor /// </summary> public static Color ToColor(ICssColor color) { if (color == null) { return(Color.Empty); } if (color.IsSystemColor) { string colorName = color.Name; switch (colorName.ToLowerInvariant()) { case "activeborder": return(SystemColors.ActiveBorder); case "activecaption": return(SystemColors.ActiveCaption); case "appworkspace": return(SystemColors.AppWorkspace); case "background": return(SystemColors.Desktop); case "buttonface": return(SystemColors.Control); case "buttonhighlight": return(SystemColors.ControlLightLight); case "buttonshadow": return(SystemColors.ControlDark); case "buttontext": return(SystemColors.ControlText); case "captiontext": return(SystemColors.ActiveCaptionText); case "graytext": return(SystemColors.GrayText); case "highlight": return(SystemColors.Highlight); case "highlighttext": return(SystemColors.HighlightText); case "inactiveborder": return(SystemColors.InactiveBorder); case "inactivecaption": return(SystemColors.InactiveCaption); case "inactivecaptiontext": return(SystemColors.InactiveCaptionText); case "infobackground": return(SystemColors.Info); case "infotext": return(SystemColors.InfoText); case "menu": return(SystemColors.Menu); case "menutext": return(SystemColors.MenuText); case "scrollbar": return(SystemColors.ScrollBar); case "threeddarkshadow": return(SystemColors.ControlDarkDark); case "threedface": return(SystemColors.Control); case "threedhighlight": return(SystemColors.ControlLight); case "threedlightshadow": return(SystemColors.ControlLightLight); case "window": return(SystemColors.Window); case "windowframe": return(SystemColors.WindowFrame); case "windowtext": return(SystemColors.WindowText); } return(Color.Empty); //TODO } double dRed = color.Red.GetFloatValue(CssPrimitiveType.Number); double dGreen = color.Green.GetFloatValue(CssPrimitiveType.Number); double dBlue = color.Blue.GetFloatValue(CssPrimitiveType.Number); if (double.IsNaN(dRed) || double.IsInfinity(dRed)) { return(Color.Empty); } if (double.IsNaN(dGreen) || double.IsInfinity(dGreen)) { return(Color.Empty); } if (double.IsNaN(dBlue) || double.IsInfinity(dBlue)) { return(Color.Empty); } return(Color.FromArgb(Convert.ToInt32(dRed), Convert.ToInt32(dGreen), Convert.ToInt32(dBlue))); }