Esempio n. 1
0
        private static void SwapColorsWithoutCloning(Drawing drawing, ColorCallback colorCallback)
        {
            if (drawing == null)
            {
                return;
            }
            DrawingGroup drawingGroup;

            if ((drawingGroup = drawing as DrawingGroup) != null)
            {
                for (int index = 0; index < drawingGroup.Children.Count; ++index)
                {
                    ColorSwapper.SwapColorsWithoutCloning(drawingGroup.Children[index], colorCallback);
                }
            }
            else
            {
                GeometryDrawing geometryDrawing;
                if ((geometryDrawing = drawing as GeometryDrawing) != null)
                {
                    ColorSwapper.SwapColorsWithoutCloning(geometryDrawing.Brush, colorCallback);
                    if (geometryDrawing.Pen == null)
                    {
                        return;
                    }
                    ColorSwapper.SwapColorsWithoutCloning(geometryDrawing.Pen.Brush, colorCallback);
                }
                else
                {
                    GlyphRunDrawing glyphRunDrawing;
                    if ((glyphRunDrawing = drawing as GlyphRunDrawing) != null)
                    {
                        ColorSwapper.SwapColorsWithoutCloning(glyphRunDrawing.ForegroundBrush, colorCallback);
                    }
                    else
                    {
                        ImageDrawing imageDrawing;
                        if ((imageDrawing = drawing as ImageDrawing) != null)
                        {
                            imageDrawing.ImageSource = ColorSwapper.SwapColorsWithoutCloningIfPossible(imageDrawing.ImageSource, colorCallback);
                        }
                        else if (!(drawing is VideoDrawing))
                        {
                            throw new ArgumentException(string.Format((IFormatProvider)CultureInfo.CurrentCulture, ExceptionStringTable.UnexpectedDrawingType, new object[1]
                            {
                                (object)drawing.GetType().Name
                            }));
                        }
                    }
                }
            }
        }
Esempio n. 2
0
        private static void SwapColorsWithoutCloning(Brush brush, ColorCallback colorCallback)
        {
            if (brush == null)
            {
                return;
            }
            SolidColorBrush solidColorBrush;

            if ((solidColorBrush = brush as SolidColorBrush) != null)
            {
                solidColorBrush.Color = colorCallback(solidColorBrush.Color);
            }
            else
            {
                GradientBrush gradientBrush;
                if ((gradientBrush = brush as GradientBrush) != null)
                {
                    foreach (GradientStop gradientStop in gradientBrush.GradientStops)
                    {
                        gradientStop.Color = colorCallback(gradientStop.Color);
                    }
                }
                else
                {
                    DrawingBrush drawingBrush;
                    if ((drawingBrush = brush as DrawingBrush) != null)
                    {
                        ColorSwapper.SwapColorsWithoutCloning(drawingBrush.Drawing, colorCallback);
                    }
                    else
                    {
                        ImageBrush imageBrush;
                        if ((imageBrush = brush as ImageBrush) != null)
                        {
                            imageBrush.ImageSource = ColorSwapper.SwapColorsWithoutCloningIfPossible(imageBrush.ImageSource, colorCallback);
                        }
                        else if (!(brush is VisualBrush))
                        {
                            throw new ArgumentException(string.Format((IFormatProvider)CultureInfo.CurrentCulture, ExceptionStringTable.UnexpectedBrushType, new object[1]
                            {
                                (object)brush.GetType().Name
                            }));
                        }
                    }
                }
            }
        }