コード例 #1
0
        public IEnumerable <ISmartTagAction> GetSmartTagActions(ParseItem item, int position, ITrackingSpan itemTrackingSpan, ITextView view)
        {
            FunctionColor function = (FunctionColor)item;

            if (!function.IsValid)
            {
                yield break;
            }

            ColorModel model = ColorParser.TryParseColor(function.Text, ColorParser.Options.AllowAlpha);

            if (model != null)
            {
                // Don't convert RGBA and HSLA to HEX or named color
                if (model.Alpha == 1)
                {
                    if (ColorConverterSmartTagAction.GetNamedColor(model.Color) != null)
                    {
                        yield return(new ColorConverterSmartTagAction(itemTrackingSpan, function, model, ColorFormat.Name));
                    }

                    yield return(new ColorConverterSmartTagAction(itemTrackingSpan, function, model, ColorFormat.RgbHex3));
                }

                if (model.Format == ColorFormat.Rgb)
                {
                    yield return(new ColorConverterSmartTagAction(itemTrackingSpan, function, model, ColorFormat.Hsl));
                }
                else if (model.Format == ColorFormat.Hsl)
                {
                    yield return(new ColorConverterSmartTagAction(itemTrackingSpan, function, model, ColorFormat.Rgb));
                }
            }
        }
コード例 #2
0
        public IEnumerable <ISmartTagAction> GetSmartTagActions(ParseItem item, int position, ITrackingSpan itemTrackingSpan, ITextView view)
        {
            HexColorValue hex = (HexColorValue)item;

            if (!item.IsValid)
            {
                yield break;
            }

            ColorModel model = ColorParser.TryParseColor(hex.Text, ColorParser.Options.None);

            if (model != null)
            {
                if (ColorConverterSmartTagAction.GetNamedColor(model.Color) != null)
                {
                    yield return(new ColorConverterSmartTagAction(itemTrackingSpan, hex, model, ColorFormat.Name));
                }

                if (model.Format == ColorFormat.RgbHex6)
                {
                    string hex3 = ColorFormatter.FormatColor(model, ColorFormat.RgbHex3);

                    if (hex3.Length == 4)
                    {
                        yield return(new ColorConverterSmartTagAction(itemTrackingSpan, hex, model, ColorFormat.RgbHex3));
                    }
                }

                yield return(new ColorConverterSmartTagAction(itemTrackingSpan, hex, model, ColorFormat.Rgb));

                yield return(new ColorConverterSmartTagAction(itemTrackingSpan, hex, model, ColorFormat.Hsl));
            }
        }