Exemple #1
0
        /// <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()));
        }