Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / ndp / fx / src / CommonUI / System / Drawing / Advanced / ColorTranslator.cs / 1 / ColorTranslator.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Drawing { using System.Runtime.Serialization.Formatters; using System.Runtime.InteropServices; using System.Diagnostics; using System.Collections; using System.ComponentModel; using System.Drawing; using System.Globalization; ////// /// Translates colors to and from GDI+ public sealed class ColorTranslator { private const int Win32RedShift = 0; private const int Win32GreenShift = 8; private const int Win32BlueShift = 16; private static Hashtable htmlSysColorTable; // not creatable... // private ColorTranslator() { } ///objects. /// /// /// Translates the specified public static int ToWin32(Color c) { return c.R << Win32RedShift | c.G << Win32GreenShift | c.B << Win32BlueShift; } ///to a /// Win32 color. /// /// /// Translates the specified public static int ToOle(Color c) { // WARNING!!! WARNING!!! WARNING!!! WARNING!!! // WARNING!!! WARNING!!! WARNING!!! WARNING!!! // We must never have another method called ToOle() with a different signature. // This is so that we can push into the runtime a custom marshaller for OLE_COLOR to Color. if (c.IsKnownColor) { switch (c.ToKnownColor()) { case KnownColor.ActiveBorder: return unchecked((int)0x8000000A); case KnownColor.ActiveCaption: return unchecked((int)0x80000002); case KnownColor.ActiveCaptionText: return unchecked((int)0x80000009); case KnownColor.AppWorkspace: return unchecked((int)0x8000000C); case KnownColor.ButtonFace: return unchecked((int)0x8000000F); case KnownColor.ButtonHighlight: return unchecked((int)0x80000014); case KnownColor.ButtonShadow: return unchecked((int)0x80000010); case KnownColor.Control: return unchecked((int)0x8000000F); case KnownColor.ControlDark: return unchecked((int)0x80000010); case KnownColor.ControlDarkDark: return unchecked((int)0x80000015); case KnownColor.ControlLight: return unchecked((int)0x80000016); case KnownColor.ControlLightLight: return unchecked((int)0x80000014); case KnownColor.ControlText: return unchecked((int)0x80000012); case KnownColor.Desktop: return unchecked((int)0x80000001); case KnownColor.GradientActiveCaption: return unchecked((int)0x8000001B); case KnownColor.GradientInactiveCaption: return unchecked((int)0x8000001C); case KnownColor.GrayText: return unchecked((int)0x80000011); case KnownColor.Highlight: return unchecked((int)0x8000000D); case KnownColor.HighlightText: return unchecked((int)0x8000000E); case KnownColor.HotTrack: return unchecked((int)0x8000000D); case KnownColor.InactiveBorder: return unchecked((int)0x8000000B); case KnownColor.InactiveCaption: return unchecked((int)0x80000003); case KnownColor.InactiveCaptionText: return unchecked((int)0x80000013); case KnownColor.Info: return unchecked((int)0x80000018); case KnownColor.InfoText: return unchecked((int)0x80000017); case KnownColor.Menu: return unchecked((int)0x80000004); case KnownColor.MenuBar: return unchecked((int)0x8000001E); case KnownColor.MenuHighlight: return unchecked((int)0x8000001D); case KnownColor.MenuText: return unchecked((int)0x80000007); case KnownColor.ScrollBar: return unchecked((int)0x80000000); case KnownColor.Window: return unchecked((int)0x80000005); case KnownColor.WindowFrame: return unchecked((int)0x80000006); case KnownColor.WindowText: return unchecked((int)0x80000008); } } return ToWin32(c); } ///to /// an Ole color. /// /// /// Translates an Ole color value to a GDI+ /// public static Color FromOle(int oleColor) { // WARNING!!! WARNING!!! WARNING!!! WARNING!!! // WARNING!!! WARNING!!! WARNING!!! WARNING!!! // We must never have another method called ToOle() with a different signature. // This is so that we can push into the runtime a custom marshaller for OLE_COLOR to Color. // if system color // (the if < 0x18 check test whether it's a well-formed system color) if ((int)(oleColor & 0xFF000000) == unchecked((int)0x80000000) && (oleColor & 0xFFFFFF) <= 0x18) { switch (oleColor) { case unchecked((int)0x8000000A): return Color.FromKnownColor(KnownColor.ActiveBorder); case unchecked((int)0x80000002): return Color.FromKnownColor(KnownColor.ActiveCaption); case unchecked((int)0x80000009): return Color.FromKnownColor(KnownColor.ActiveCaptionText); case unchecked((int)0x8000000C): return Color.FromKnownColor(KnownColor.AppWorkspace); case unchecked((int)0x8000000F): return Color.FromKnownColor(KnownColor.Control); case unchecked((int)0x80000010): return Color.FromKnownColor(KnownColor.ControlDark); case unchecked((int)0x80000015): return Color.FromKnownColor(KnownColor.ControlDarkDark); case unchecked((int)0x80000016): return Color.FromKnownColor(KnownColor.ControlLight); case unchecked((int)0x80000014): return Color.FromKnownColor(KnownColor.ControlLightLight); case unchecked((int)0x80000012): return Color.FromKnownColor(KnownColor.ControlText); case unchecked((int)0x80000001): return Color.FromKnownColor(KnownColor.Desktop); case unchecked((int)0x8000001B): return Color.FromKnownColor(KnownColor.GradientActiveCaption); case unchecked((int)0x8000001C): return Color.FromKnownColor(KnownColor.GradientInactiveCaption); case unchecked((int)0x80000011): return Color.FromKnownColor(KnownColor.GrayText); case unchecked((int)0x8000000D): return Color.FromKnownColor(KnownColor.Highlight); case unchecked((int)0x8000000E): return Color.FromKnownColor(KnownColor.HighlightText); case unchecked((int)0x8000000B): return Color.FromKnownColor(KnownColor.InactiveBorder); case unchecked((int)0x80000003): return Color.FromKnownColor(KnownColor.InactiveCaption); case unchecked((int)0x80000013): return Color.FromKnownColor(KnownColor.InactiveCaptionText); case unchecked((int)0x80000018): return Color.FromKnownColor(KnownColor.Info); case unchecked((int)0x80000017): return Color.FromKnownColor(KnownColor.InfoText); case unchecked((int)0x80000004): return Color.FromKnownColor(KnownColor.Menu); case unchecked((int)0x8000001E): return Color.FromKnownColor(KnownColor.MenuBar); case unchecked((int)0x8000001D): return Color.FromKnownColor(KnownColor.MenuHighlight); case unchecked((int)0x80000007): return Color.FromKnownColor(KnownColor.MenuText); case unchecked((int)0x80000000): return Color.FromKnownColor(KnownColor.ScrollBar); case unchecked((int)0x80000005): return Color.FromKnownColor(KnownColor.Window); case unchecked((int)0x80000006): return Color.FromKnownColor(KnownColor.WindowFrame); case unchecked((int)0x80000008): return Color.FromKnownColor(KnownColor.WindowText); } } Color color = Color.FromArgb((byte)((oleColor >> Win32RedShift) & 0xFF), (byte)((oleColor >> Win32GreenShift) & 0xFF), (byte)((oleColor >> Win32BlueShift) & 0xFF)); return KnownColorTable.ArgbToKnownColor(color.ToArgb()); } ///. /// /// /// Translates an Win32 color value to a /// GDI+ public static Color FromWin32(int win32Color) { return FromOle(win32Color); } ///. /// /// /// Translates an Html color representation to /// a GDI+ public static Color FromHtml(string htmlColor) { Color c = Color.Empty; // empty color if ((htmlColor == null) || (htmlColor.Length == 0)) return c; // #RRGGBB or #RGB if ((htmlColor[0] == '#') && ((htmlColor.Length == 7) || (htmlColor.Length == 4))) { if (htmlColor.Length == 7) { c = Color.FromArgb(Convert.ToInt32(htmlColor.Substring(1, 2), 16), Convert.ToInt32(htmlColor.Substring(3, 2), 16), Convert.ToInt32(htmlColor.Substring(5, 2), 16)); } else { string r = Char.ToString(htmlColor[1]); string g = Char.ToString(htmlColor[2]); string b = Char.ToString(htmlColor[3]); c = Color.FromArgb(Convert.ToInt32(r + r, 16), Convert.ToInt32(g + g, 16), Convert.ToInt32(b + b, 16)); } } // special case. Html requires LightGrey, but .NET uses LightGray if (c.IsEmpty && String.Equals(htmlColor, "LightGrey", StringComparison.OrdinalIgnoreCase)) { c = Color.LightGray; } // System color if (c.IsEmpty) { if (htmlSysColorTable == null) { InitializeHtmlSysColorTable(); } object o = htmlSysColorTable[htmlColor.ToLower(CultureInfo.InvariantCulture)]; if (o != null) { c = (Color)o; } } // resort to type converter which will handle named colors if (c.IsEmpty) { c = (Color)TypeDescriptor.GetConverter(typeof(Color)).ConvertFromString(htmlColor); } return c; } ///. /// /// /// public static string ToHtml(Color c) { string colorString = String.Empty; if (c.IsEmpty) return colorString; if (c.IsSystemColor) { switch (c.ToKnownColor()) { case KnownColor.ActiveBorder: colorString = "activeborder"; break; case KnownColor.GradientActiveCaption: 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 = "buttonface"; 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.MenuHighlight: case KnownColor.HighlightText: colorString = "highlighttext"; break; case KnownColor.InactiveBorder: colorString = "inactiveborder"; break; case KnownColor.GradientInactiveCaption: 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.MenuBar: 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; } } else if (c.IsNamedColor) { if (c == Color.LightGray) { // special case due to mismatch between Html and enum spelling colorString = "LightGrey"; } else { colorString = c.Name; } } else { colorString = "#" + c.R.ToString("X2", null) + c.G.ToString("X2", null) + c.B.ToString("X2", null); } return colorString; } private static void InitializeHtmlSysColorTable() { htmlSysColorTable = new Hashtable(26); htmlSysColorTable["activeborder"] = Color.FromKnownColor(KnownColor.ActiveBorder); htmlSysColorTable["activecaption"] = Color.FromKnownColor(KnownColor.ActiveCaption); htmlSysColorTable["appworkspace"] = Color.FromKnownColor(KnownColor.AppWorkspace); htmlSysColorTable["background"] = Color.FromKnownColor(KnownColor.Desktop); htmlSysColorTable["buttonface"] = Color.FromKnownColor(KnownColor.Control); htmlSysColorTable["buttonhighlight"] = Color.FromKnownColor(KnownColor.ControlLightLight); htmlSysColorTable["buttonshadow"] = Color.FromKnownColor(KnownColor.ControlDark); htmlSysColorTable["buttontext"] = Color.FromKnownColor(KnownColor.ControlText); htmlSysColorTable["captiontext"] = Color.FromKnownColor(KnownColor.ActiveCaptionText); htmlSysColorTable["graytext"] = Color.FromKnownColor(KnownColor.GrayText); htmlSysColorTable["highlight"] = Color.FromKnownColor(KnownColor.Highlight); htmlSysColorTable["highlighttext"] = Color.FromKnownColor(KnownColor.HighlightText); htmlSysColorTable["inactiveborder"] = Color.FromKnownColor(KnownColor.InactiveBorder); htmlSysColorTable["inactivecaption"] = Color.FromKnownColor(KnownColor.InactiveCaption); htmlSysColorTable["inactivecaptiontext"] = Color.FromKnownColor(KnownColor.InactiveCaptionText); htmlSysColorTable["infobackground"] = Color.FromKnownColor(KnownColor.Info); htmlSysColorTable["infotext"] = Color.FromKnownColor(KnownColor.InfoText); htmlSysColorTable["menu"] = Color.FromKnownColor(KnownColor.Menu); htmlSysColorTable["menutext"] = Color.FromKnownColor(KnownColor.MenuText); htmlSysColorTable["scrollbar"] = Color.FromKnownColor(KnownColor.ScrollBar); htmlSysColorTable["threeddarkshadow"] = Color.FromKnownColor(KnownColor.ControlDarkDark); htmlSysColorTable["threedface"] = Color.FromKnownColor(KnownColor.Control); htmlSysColorTable["threedhighlight"] = Color.FromKnownColor(KnownColor.ControlLight); htmlSysColorTable["threedlightshadow"] = Color.FromKnownColor(KnownColor.ControlLightLight); htmlSysColorTable["window"] = Color.FromKnownColor(KnownColor.Window); htmlSysColorTable["windowframe"] = Color.FromKnownColor(KnownColor.WindowFrame); htmlSysColorTable["windowtext"] = Color.FromKnownColor(KnownColor.WindowText); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved./// Translates the specified ///to an Html string color representation. ///
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- CodeMemberMethod.cs
- TempFiles.cs
- BuildResultCache.cs
- SoapExtensionTypeElementCollection.cs
- VersionUtil.cs
- CssTextWriter.cs
- AVElementHelper.cs
- SoapAttributes.cs
- MetadataProperty.cs
- StreamUpdate.cs
- CustomErrorsSection.cs
- SqlCommandSet.cs
- DocumentSequence.cs
- QilChoice.cs
- MatchAttribute.cs
- ReadOnlyDictionary.cs
- FormViewDeleteEventArgs.cs
- TransactionInformation.cs
- ApplicationDirectoryMembershipCondition.cs
- PartManifestEntry.cs
- SecureUICommand.cs
- PropertyKey.cs
- ControlValuePropertyAttribute.cs
- XmlILIndex.cs
- ConvertBinder.cs
- TextEditorSpelling.cs
- PasswordDeriveBytes.cs
- ZipIOExtraField.cs
- DbCommandTree.cs
- SelectionRange.cs
- DataGridItemCollection.cs
- PerformanceCounter.cs
- ConsumerConnectionPoint.cs
- BaseTypeViewSchema.cs
- NamedPermissionSet.cs
- CollectionBase.cs
- DynamicRendererThreadManager.cs
- ScrollChangedEventArgs.cs
- PassportPrincipal.cs
- OdbcParameterCollection.cs
- AutomationPeer.cs
- CompositeCollectionView.cs
- X509Chain.cs
- Ray3DHitTestResult.cs
- ApplicationProxyInternal.cs
- DescendantOverDescendantQuery.cs
- FormatControl.cs
- SafeNativeMethodsOther.cs
- CheckBoxField.cs
- WebEventTraceProvider.cs
- _FtpDataStream.cs
- OleDbStruct.cs
- LightweightCodeGenerator.cs
- SqlCommand.cs
- ReaderOutput.cs
- XmlEncodedRawTextWriter.cs
- PrimaryKeyTypeConverter.cs
- PrimitiveType.cs
- GroupQuery.cs
- ConfigXmlDocument.cs
- TextEditorContextMenu.cs
- ColorBlend.cs
- AxisAngleRotation3D.cs
- ComplexTypeEmitter.cs
- RegexCapture.cs
- XmlSchemaValidator.cs
- CompModSwitches.cs
- IconConverter.cs
- InitializationEventAttribute.cs
- GroupBoxRenderer.cs
- HttpInputStream.cs
- _SslSessionsCache.cs
- MediaElementAutomationPeer.cs
- BitmapInitialize.cs
- ConfigXmlCDataSection.cs
- CharacterHit.cs
- WsatServiceAddress.cs
- ControlParameter.cs
- GridViewSelectEventArgs.cs
- ObjectView.cs
- DbConnectionStringCommon.cs
- EndpointInfoCollection.cs
- DragDrop.cs
- XmlSchemaDocumentation.cs
- StructuredTypeInfo.cs
- FileDetails.cs
- PolicyReader.cs
- ListItemsCollectionEditor.cs
- SafeCertificateContext.cs
- Exceptions.cs
- Error.cs
- BmpBitmapDecoder.cs
- ControlCachePolicy.cs
- HMACSHA1.cs
- LinearGradientBrush.cs
- TreeView.cs
- LocalIdKeyIdentifierClause.cs
- TraceContext.cs
- WebResponse.cs
- GenericTextProperties.cs