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 })); } } } } }
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 })); } } } } }