예제 #1
0
        /// <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));
        }
예제 #2
0
        /// <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)));
        }
예제 #3
0
        /// <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)));
        }
예제 #4
0
        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);
        }
예제 #5
0
        /// <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)));
        }
예제 #6
0
        /// <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)));
        }