WebColorConverter.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / xsp / System / Web / UI / WebControls / WebColorConverter.cs / 1305376 / WebColorConverter.cs

                            //------------------------------------------------------------------------------ 
// 
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// 
//----------------------------------------------------------------------------- 

namespace System.Web.UI.WebControls { 
 
    using System;
    using System.Collections; 
    using System.ComponentModel;
    using System.ComponentModel.Design;
    using System.Drawing;
    using System.Text; 
    using System.Web.Util;
    using System.Web.UI; 
    using System.Globalization; 

    ///  
    /// 
    public class WebColorConverter : ColorConverter {

        private static Hashtable htmlSysColorTable; 

 
        ///  
        /// 
        ///  
        public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value) {
            if (value is string) {
                string colorText = ((string)value).Trim();
                Color c = Color.Empty; 

                // empty color 
                if (String.IsNullOrEmpty(colorText)) 
                    return c;
 
                // #RRGGBB notation is handled by ColorConverter
                if (colorText[0] == '#') {
                    return base.ConvertFrom(context, culture, value);
                } 

                // special case. HTML requires LightGrey, but System.Drawing.KnownColor has LightGray 
                if (StringUtil.EqualsIgnoreCase(colorText, "LightGrey")) { 
                    return Color.LightGray;
                } 

                // System color
                if (htmlSysColorTable == null) {
                    InitializeHTMLSysColorTable(); 
                }
                object o = htmlSysColorTable[colorText]; 
                if (o != null) { 
                    return (Color)o;
                } 
            }

            // ColorConverter handles all named and KnownColors
            return base.ConvertFrom(context, culture, value); 
        }
 
 
        /// 
        ///  
        /// 
        public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType) {
            if (destinationType == null) {
                throw new ArgumentNullException("destinationType"); 
            }
 
            if (destinationType == typeof(string)) { 
                if (value != null) {
                    Color c = (Color)value; 

                    if (c == Color.Empty) {
                        return String.Empty;
                    } 

                    /* 
                    if (c.IsKnownColor) { 
                        // Handle Web system colors and any 'special' named colors
 
                        string colorString = null;
                        switch (c.ToKnownColor()) {
                            case KnownColor.ActiveBorder: colorString = "ActiveBorder"; break;
                            case KnownColor.ActiveCaption: colorString = "ActiveCaption"; break; 
                            case KnownColor.AppWorkspace: colorString = "AppWorkspace"; break;
                            case KnownColor.Desktop: colorString = "Background"; break; 
                            case KnownColor.Control: colorString = "ButtonFace"; break; 
                            case KnownColor.ControlLight: colorString = "ButtonHighlight"; break;
                            case KnownColor.ControlDark: colorString = "ButtonShadow"; break; 
                            case KnownColor.ControlText: colorString = "ButtonText"; break;
                            case KnownColor.ActiveCaptionText: colorString = "CaptionText"; break;
                            case KnownColor.GrayText: colorString = "GrayText"; break;
                            case KnownColor.HotTrack: 
                            case KnownColor.Highlight: colorString = "Highlight"; break;
                            case KnownColor.HighlightText: colorString = "HighlightText"; break; 
                            case KnownColor.InactiveBorder: colorString = "InactiveBorder"; break; 
                            case KnownColor.InactiveCaption: colorString = "InactiveCaption"; break;
                            case KnownColor.InactiveCaptionText: colorString = "InactiveCaptionText"; break; 
                            case KnownColor.Info: colorString = "InfoBackground"; break;
                            case KnownColor.InfoText: colorString = "InfoText"; break;
                            case KnownColor.Menu: colorString = "Menu"; break;
                            case KnownColor.MenuText: colorString = "MenuText"; break; 
                            case KnownColor.ScrollBar: colorString = "Scrollbar"; break;
                            case KnownColor.ControlDarkDark: colorString = "ThreeDDarkShadow"; break; 
                            case KnownColor.ControlLightLight: colorString = "ButtonHighlight"; break; 
                            case KnownColor.Window: colorString = "Window"; break;
                            case KnownColor.WindowFrame: colorString = "WindowFrame"; break; 
                            case KnownColor.WindowText: colorString = "WindowText"; break;

                            case KnownColor.LightGray: colorString = "LightGrey"; break;
                        } 

                        if (colorString != null) { 
                            return colorString; 
                        }
                    } 
                    */

                    if (c.IsKnownColor == false) {
                        // in the Web scenario, colors should be formatted in #RRGGBB notation 
                        StringBuilder sb = new StringBuilder("#", 7);
                        sb.Append((c.R).ToString("X2", CultureInfo.InvariantCulture)); 
                        sb.Append((c.G).ToString("X2", CultureInfo.InvariantCulture)); 
                        sb.Append((c.B).ToString("X2", CultureInfo.InvariantCulture));
                        return sb.ToString(); 
                    }
                }
            }
 
            return base.ConvertTo(context, culture, value, destinationType);
        } 
 
        private static void InitializeHTMLSysColorTable() {
            Hashtable t = new Hashtable(StringComparer.OrdinalIgnoreCase); 
            t["activeborder"] = Color.FromKnownColor(KnownColor.ActiveBorder);
            t["activecaption"] = Color.FromKnownColor(KnownColor.ActiveCaption);
            t["appworkspace"] = Color.FromKnownColor(KnownColor.AppWorkspace);
            t["background"] = Color.FromKnownColor(KnownColor.Desktop); 
            t["buttonface"] = Color.FromKnownColor(KnownColor.Control);
            t["buttonhighlight"] = Color.FromKnownColor(KnownColor.ControlLightLight); 
            t["buttonshadow"] = Color.FromKnownColor(KnownColor.ControlDark); 
            t["buttontext"] = Color.FromKnownColor(KnownColor.ControlText);
            t["captiontext"] = Color.FromKnownColor(KnownColor.ActiveCaptionText); 
            t["graytext"] = Color.FromKnownColor(KnownColor.GrayText);
            t["highlight"] = Color.FromKnownColor(KnownColor.Highlight);
            t["highlighttext"] = Color.FromKnownColor(KnownColor.HighlightText);
            t["inactiveborder"] = Color.FromKnownColor(KnownColor.InactiveBorder); 
            t["inactivecaption"] = Color.FromKnownColor(KnownColor.InactiveCaption);
            t["inactivecaptiontext"] = Color.FromKnownColor(KnownColor.InactiveCaptionText); 
            t["infobackground"] = Color.FromKnownColor(KnownColor.Info); 
            t["infotext"] = Color.FromKnownColor(KnownColor.InfoText);
            t["menu"] = Color.FromKnownColor(KnownColor.Menu); 
            t["menutext"] = Color.FromKnownColor(KnownColor.MenuText);
            t["scrollbar"] = Color.FromKnownColor(KnownColor.ScrollBar);
            t["threeddarkshadow"] = Color.FromKnownColor(KnownColor.ControlDarkDark);
            t["threedface"] = Color.FromKnownColor(KnownColor.Control); 
            t["threedhighlight"] = Color.FromKnownColor(KnownColor.ControlLight);
            t["threedlightshadow"] = Color.FromKnownColor(KnownColor.ControlLightLight); 
            t["window"] = Color.FromKnownColor(KnownColor.Window); 
            t["windowframe"] = Color.FromKnownColor(KnownColor.WindowFrame);
            t["windowtext"] = Color.FromKnownColor(KnownColor.WindowText); 
            htmlSysColorTable = t;
        }
    }
} 


// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//------------------------------------------------------------------------------ 
// 
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// 
//----------------------------------------------------------------------------- 

namespace System.Web.UI.WebControls { 
 
    using System;
    using System.Collections; 
    using System.ComponentModel;
    using System.ComponentModel.Design;
    using System.Drawing;
    using System.Text; 
    using System.Web.Util;
    using System.Web.UI; 
    using System.Globalization; 

    ///  
    /// 
    public class WebColorConverter : ColorConverter {

        private static Hashtable htmlSysColorTable; 

 
        ///  
        /// 
        ///  
        public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value) {
            if (value is string) {
                string colorText = ((string)value).Trim();
                Color c = Color.Empty; 

                // empty color 
                if (String.IsNullOrEmpty(colorText)) 
                    return c;
 
                // #RRGGBB notation is handled by ColorConverter
                if (colorText[0] == '#') {
                    return base.ConvertFrom(context, culture, value);
                } 

                // special case. HTML requires LightGrey, but System.Drawing.KnownColor has LightGray 
                if (StringUtil.EqualsIgnoreCase(colorText, "LightGrey")) { 
                    return Color.LightGray;
                } 

                // System color
                if (htmlSysColorTable == null) {
                    InitializeHTMLSysColorTable(); 
                }
                object o = htmlSysColorTable[colorText]; 
                if (o != null) { 
                    return (Color)o;
                } 
            }

            // ColorConverter handles all named and KnownColors
            return base.ConvertFrom(context, culture, value); 
        }
 
 
        /// 
        ///  
        /// 
        public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType) {
            if (destinationType == null) {
                throw new ArgumentNullException("destinationType"); 
            }
 
            if (destinationType == typeof(string)) { 
                if (value != null) {
                    Color c = (Color)value; 

                    if (c == Color.Empty) {
                        return String.Empty;
                    } 

                    /* 
                    if (c.IsKnownColor) { 
                        // Handle Web system colors and any 'special' named colors
 
                        string colorString = null;
                        switch (c.ToKnownColor()) {
                            case KnownColor.ActiveBorder: colorString = "ActiveBorder"; break;
                            case KnownColor.ActiveCaption: colorString = "ActiveCaption"; break; 
                            case KnownColor.AppWorkspace: colorString = "AppWorkspace"; break;
                            case KnownColor.Desktop: colorString = "Background"; break; 
                            case KnownColor.Control: colorString = "ButtonFace"; break; 
                            case KnownColor.ControlLight: colorString = "ButtonHighlight"; break;
                            case KnownColor.ControlDark: colorString = "ButtonShadow"; break; 
                            case KnownColor.ControlText: colorString = "ButtonText"; break;
                            case KnownColor.ActiveCaptionText: colorString = "CaptionText"; break;
                            case KnownColor.GrayText: colorString = "GrayText"; break;
                            case KnownColor.HotTrack: 
                            case KnownColor.Highlight: colorString = "Highlight"; break;
                            case KnownColor.HighlightText: colorString = "HighlightText"; break; 
                            case KnownColor.InactiveBorder: colorString = "InactiveBorder"; break; 
                            case KnownColor.InactiveCaption: colorString = "InactiveCaption"; break;
                            case KnownColor.InactiveCaptionText: colorString = "InactiveCaptionText"; break; 
                            case KnownColor.Info: colorString = "InfoBackground"; break;
                            case KnownColor.InfoText: colorString = "InfoText"; break;
                            case KnownColor.Menu: colorString = "Menu"; break;
                            case KnownColor.MenuText: colorString = "MenuText"; break; 
                            case KnownColor.ScrollBar: colorString = "Scrollbar"; break;
                            case KnownColor.ControlDarkDark: colorString = "ThreeDDarkShadow"; break; 
                            case KnownColor.ControlLightLight: colorString = "ButtonHighlight"; break; 
                            case KnownColor.Window: colorString = "Window"; break;
                            case KnownColor.WindowFrame: colorString = "WindowFrame"; break; 
                            case KnownColor.WindowText: colorString = "WindowText"; break;

                            case KnownColor.LightGray: colorString = "LightGrey"; break;
                        } 

                        if (colorString != null) { 
                            return colorString; 
                        }
                    } 
                    */

                    if (c.IsKnownColor == false) {
                        // in the Web scenario, colors should be formatted in #RRGGBB notation 
                        StringBuilder sb = new StringBuilder("#", 7);
                        sb.Append((c.R).ToString("X2", CultureInfo.InvariantCulture)); 
                        sb.Append((c.G).ToString("X2", CultureInfo.InvariantCulture)); 
                        sb.Append((c.B).ToString("X2", CultureInfo.InvariantCulture));
                        return sb.ToString(); 
                    }
                }
            }
 
            return base.ConvertTo(context, culture, value, destinationType);
        } 
 
        private static void InitializeHTMLSysColorTable() {
            Hashtable t = new Hashtable(StringComparer.OrdinalIgnoreCase); 
            t["activeborder"] = Color.FromKnownColor(KnownColor.ActiveBorder);
            t["activecaption"] = Color.FromKnownColor(KnownColor.ActiveCaption);
            t["appworkspace"] = Color.FromKnownColor(KnownColor.AppWorkspace);
            t["background"] = Color.FromKnownColor(KnownColor.Desktop); 
            t["buttonface"] = Color.FromKnownColor(KnownColor.Control);
            t["buttonhighlight"] = Color.FromKnownColor(KnownColor.ControlLightLight); 
            t["buttonshadow"] = Color.FromKnownColor(KnownColor.ControlDark); 
            t["buttontext"] = Color.FromKnownColor(KnownColor.ControlText);
            t["captiontext"] = Color.FromKnownColor(KnownColor.ActiveCaptionText); 
            t["graytext"] = Color.FromKnownColor(KnownColor.GrayText);
            t["highlight"] = Color.FromKnownColor(KnownColor.Highlight);
            t["highlighttext"] = Color.FromKnownColor(KnownColor.HighlightText);
            t["inactiveborder"] = Color.FromKnownColor(KnownColor.InactiveBorder); 
            t["inactivecaption"] = Color.FromKnownColor(KnownColor.InactiveCaption);
            t["inactivecaptiontext"] = Color.FromKnownColor(KnownColor.InactiveCaptionText); 
            t["infobackground"] = Color.FromKnownColor(KnownColor.Info); 
            t["infotext"] = Color.FromKnownColor(KnownColor.InfoText);
            t["menu"] = Color.FromKnownColor(KnownColor.Menu); 
            t["menutext"] = Color.FromKnownColor(KnownColor.MenuText);
            t["scrollbar"] = Color.FromKnownColor(KnownColor.ScrollBar);
            t["threeddarkshadow"] = Color.FromKnownColor(KnownColor.ControlDarkDark);
            t["threedface"] = Color.FromKnownColor(KnownColor.Control); 
            t["threedhighlight"] = Color.FromKnownColor(KnownColor.ControlLight);
            t["threedlightshadow"] = Color.FromKnownColor(KnownColor.ControlLightLight); 
            t["window"] = Color.FromKnownColor(KnownColor.Window); 
            t["windowframe"] = Color.FromKnownColor(KnownColor.WindowFrame);
            t["windowtext"] = Color.FromKnownColor(KnownColor.WindowText); 
            htmlSysColorTable = t;
        }
    }
} 


// File provided for Reference Use Only by Microsoft Corporation (c) 2007.

                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK