/// <summary> /// Translates an Ole color value to a GDI+ <see cref='Color'/>. /// </summary> public static Color FromOle(int oleColor) { // IMPORTANT: This signature is invoked directly by the runtime marshaler and cannot change without // also updating the runtime. if ((oleColor & OleSystemColorFlag) != 0) { 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)0x8000001A): return(Color.FromKnownColor(KnownColor.HotTrack)); 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)); } } // When we don't find a system color, we treat the color as a COLORREF return(KnownColorTable.ArgbToKnownColor(COLORREFToARGB((uint)oleColor))); }
public static Color FromOle(int oleColor) { if (((oleColor & ((int)0xff000000L)) == -2147483648) && ((oleColor & 0xffffff) <= 30)) { switch (oleColor) { case -2147483648: return(Color.FromKnownColor(KnownColor.ScrollBar)); case -2147483647: return(Color.FromKnownColor(KnownColor.Desktop)); case -2147483646: return(Color.FromKnownColor(KnownColor.ActiveCaption)); case -2147483645: return(Color.FromKnownColor(KnownColor.InactiveCaption)); case -2147483644: return(Color.FromKnownColor(KnownColor.Menu)); case -2147483643: return(Color.FromKnownColor(KnownColor.Window)); case -2147483642: return(Color.FromKnownColor(KnownColor.WindowFrame)); case -2147483641: return(Color.FromKnownColor(KnownColor.MenuText)); case -2147483640: return(Color.FromKnownColor(KnownColor.WindowText)); case -2147483639: return(Color.FromKnownColor(KnownColor.ActiveCaptionText)); case -2147483638: return(Color.FromKnownColor(KnownColor.ActiveBorder)); case -2147483637: return(Color.FromKnownColor(KnownColor.InactiveBorder)); case -2147483636: return(Color.FromKnownColor(KnownColor.AppWorkspace)); case -2147483635: return(Color.FromKnownColor(KnownColor.Highlight)); case -2147483634: return(Color.FromKnownColor(KnownColor.HighlightText)); case -2147483633: return(Color.FromKnownColor(KnownColor.Control)); case -2147483632: return(Color.FromKnownColor(KnownColor.ControlDark)); case -2147483631: return(Color.FromKnownColor(KnownColor.GrayText)); case -2147483630: return(Color.FromKnownColor(KnownColor.ControlText)); case -2147483629: return(Color.FromKnownColor(KnownColor.InactiveCaptionText)); case -2147483628: return(Color.FromKnownColor(KnownColor.ControlLightLight)); case -2147483627: return(Color.FromKnownColor(KnownColor.ControlDarkDark)); case -2147483626: return(Color.FromKnownColor(KnownColor.ControlLight)); case -2147483625: return(Color.FromKnownColor(KnownColor.InfoText)); case -2147483624: return(Color.FromKnownColor(KnownColor.Info)); case -2147483622: return(Color.FromKnownColor(KnownColor.HotTrack)); case -2147483621: return(Color.FromKnownColor(KnownColor.GradientActiveCaption)); case -2147483620: return(Color.FromKnownColor(KnownColor.GradientInactiveCaption)); case -2147483619: return(Color.FromKnownColor(KnownColor.MenuHighlight)); case -2147483618: return(Color.FromKnownColor(KnownColor.MenuBar)); } } return(KnownColorTable.ArgbToKnownColor(Color.FromArgb((byte)(oleColor & 0xff), (byte)((oleColor >> 8) & 0xff), (byte)((oleColor >> 0x10) & 0xff)).ToArgb())); }
/// <summary> /// Translates an Ole color value to a GDI+ <see cref='Color'/>. /// </summary> 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. switch (oleColor) { case unchecked ((int)0x8000000A): return(ColorUtil.FromKnownColor(KnownColor.ActiveBorder)); case unchecked ((int)0x80000002): return(ColorUtil.FromKnownColor(KnownColor.ActiveCaption)); case unchecked ((int)0x80000009): return(ColorUtil.FromKnownColor(KnownColor.ActiveCaptionText)); case unchecked ((int)0x8000000C): return(ColorUtil.FromKnownColor(KnownColor.AppWorkspace)); case unchecked ((int)0x8000000F): return(ColorUtil.FromKnownColor(KnownColor.Control)); case unchecked ((int)0x80000010): return(ColorUtil.FromKnownColor(KnownColor.ControlDark)); case unchecked ((int)0x80000015): return(ColorUtil.FromKnownColor(KnownColor.ControlDarkDark)); case unchecked ((int)0x80000016): return(ColorUtil.FromKnownColor(KnownColor.ControlLight)); case unchecked ((int)0x80000014): return(ColorUtil.FromKnownColor(KnownColor.ControlLightLight)); case unchecked ((int)0x80000012): return(ColorUtil.FromKnownColor(KnownColor.ControlText)); case unchecked ((int)0x80000001): return(ColorUtil.FromKnownColor(KnownColor.Desktop)); case unchecked ((int)0x8000001B): return(ColorUtil.FromKnownColor(KnownColor.GradientActiveCaption)); case unchecked ((int)0x8000001C): return(ColorUtil.FromKnownColor(KnownColor.GradientInactiveCaption)); case unchecked ((int)0x80000011): return(ColorUtil.FromKnownColor(KnownColor.GrayText)); case unchecked ((int)0x8000000D): return(ColorUtil.FromKnownColor(KnownColor.Highlight)); case unchecked ((int)0x8000000E): return(ColorUtil.FromKnownColor(KnownColor.HighlightText)); case unchecked ((int)0x8000001A): return(ColorUtil.FromKnownColor(KnownColor.HotTrack)); case unchecked ((int)0x8000000B): return(ColorUtil.FromKnownColor(KnownColor.InactiveBorder)); case unchecked ((int)0x80000003): return(ColorUtil.FromKnownColor(KnownColor.InactiveCaption)); case unchecked ((int)0x80000013): return(ColorUtil.FromKnownColor(KnownColor.InactiveCaptionText)); case unchecked ((int)0x80000018): return(ColorUtil.FromKnownColor(KnownColor.Info)); case unchecked ((int)0x80000017): return(ColorUtil.FromKnownColor(KnownColor.InfoText)); case unchecked ((int)0x80000004): return(ColorUtil.FromKnownColor(KnownColor.Menu)); case unchecked ((int)0x8000001E): return(ColorUtil.FromKnownColor(KnownColor.MenuBar)); case unchecked ((int)0x8000001D): return(ColorUtil.FromKnownColor(KnownColor.MenuHighlight)); case unchecked ((int)0x80000007): return(ColorUtil.FromKnownColor(KnownColor.MenuText)); case unchecked ((int)0x80000000): return(ColorUtil.FromKnownColor(KnownColor.ScrollBar)); case unchecked ((int)0x80000005): return(ColorUtil.FromKnownColor(KnownColor.Window)); case unchecked ((int)0x80000006): return(ColorUtil.FromKnownColor(KnownColor.WindowFrame)); case unchecked ((int)0x80000008): return(ColorUtil.FromKnownColor(KnownColor.WindowText)); } Color color = Color.FromArgb((byte)((oleColor >> Win32RedShift) & 0xFF), (byte)((oleColor >> Win32GreenShift) & 0xFF), (byte)((oleColor >> Win32BlueShift) & 0xFF)); return(KnownColorTable.ArgbToKnownColor(color.ToArgb())); }