From 5be8f17eb1e62b6845d992813054b60fab5db458 Mon Sep 17 00:00:00 2001 From: Steven Kirk Date: Sat, 1 Apr 2017 19:06:01 +0200 Subject: [PATCH] Make all mutable brushes implement IMutableBrush. --- src/Avalonia.Visuals/Media/ImageBrush.cs | 12 +++++++++--- src/Avalonia.Visuals/Media/LinearGradientBrush.cs | 8 +++++++- src/Avalonia.Visuals/Media/RadialGradientBrush.cs | 8 +++++++- src/Avalonia.Visuals/Media/VisualBrush.cs | 8 +++++++- 4 files changed, 30 insertions(+), 6 deletions(-) diff --git a/src/Avalonia.Visuals/Media/ImageBrush.cs b/src/Avalonia.Visuals/Media/ImageBrush.cs index 85c1f6c71a..69b98fd35c 100644 --- a/src/Avalonia.Visuals/Media/ImageBrush.cs +++ b/src/Avalonia.Visuals/Media/ImageBrush.cs @@ -8,7 +8,7 @@ namespace Avalonia.Media /// /// Paints an area with an . /// - public class ImageBrush : TileBrush, IImageBrush + public class ImageBrush : TileBrush, IImageBrush, IMutableBrush { /// /// Defines the property. @@ -17,14 +17,14 @@ namespace Avalonia.Media AvaloniaProperty.Register("Source"); /// - /// Initializes a new instance of the class. + /// Initializes a new instance of the class. /// public ImageBrush() { } /// - /// Initializes a new instance of the class. + /// Initializes a new instance of the class. /// /// The image to draw. public ImageBrush(IBitmap source) @@ -40,5 +40,11 @@ namespace Avalonia.Media get { return GetValue(SourceProperty); } set { SetValue(SourceProperty, value); } } + + /// + IBrush IMutableBrush.ToImmutable() + { + return new Immutable.ImmutableImageBrush(this); + } } } diff --git a/src/Avalonia.Visuals/Media/LinearGradientBrush.cs b/src/Avalonia.Visuals/Media/LinearGradientBrush.cs index 33eea4fbad..6c0d500343 100644 --- a/src/Avalonia.Visuals/Media/LinearGradientBrush.cs +++ b/src/Avalonia.Visuals/Media/LinearGradientBrush.cs @@ -6,7 +6,7 @@ namespace Avalonia.Media /// /// A brush that draws with a linear gradient. /// - public sealed class LinearGradientBrush : GradientBrush, ILinearGradientBrush + public sealed class LinearGradientBrush : GradientBrush, ILinearGradientBrush, IMutableBrush { /// /// Defines the property. @@ -41,5 +41,11 @@ namespace Avalonia.Media get { return GetValue(EndPointProperty); } set { SetValue(EndPointProperty, value); } } + + /// + IBrush IMutableBrush.ToImmutable() + { + return new Immutable.ImmutableLinearGradientBrush(this); + } } } \ No newline at end of file diff --git a/src/Avalonia.Visuals/Media/RadialGradientBrush.cs b/src/Avalonia.Visuals/Media/RadialGradientBrush.cs index b721e19138..9f9c2733ec 100644 --- a/src/Avalonia.Visuals/Media/RadialGradientBrush.cs +++ b/src/Avalonia.Visuals/Media/RadialGradientBrush.cs @@ -7,7 +7,7 @@ namespace Avalonia.Media /// Paints an area with a radial gradient. A focal point defines the beginning of the gradient, /// and a circle defines the end point of the gradient. /// - public sealed class RadialGradientBrush : GradientBrush, IRadialGradientBrush + public sealed class RadialGradientBrush : GradientBrush, IRadialGradientBrush, IMutableBrush { /// /// Defines the property. @@ -61,5 +61,11 @@ namespace Avalonia.Media get { return GetValue(RadiusProperty); } set { SetValue(RadiusProperty, value); } } + + /// + IBrush IMutableBrush.ToImmutable() + { + return new Immutable.ImmutableRadialGradientBrush(this); + } } } \ No newline at end of file diff --git a/src/Avalonia.Visuals/Media/VisualBrush.cs b/src/Avalonia.Visuals/Media/VisualBrush.cs index 85ccf7afc9..a6d2b8ae8f 100644 --- a/src/Avalonia.Visuals/Media/VisualBrush.cs +++ b/src/Avalonia.Visuals/Media/VisualBrush.cs @@ -8,7 +8,7 @@ namespace Avalonia.Media /// /// Paints an area with an . /// - public class VisualBrush : TileBrush, IVisualBrush + public class VisualBrush : TileBrush, IVisualBrush, IMutableBrush { /// /// Defines the property. @@ -40,5 +40,11 @@ namespace Avalonia.Media get { return GetValue(VisualProperty); } set { SetValue(VisualProperty, value); } } + + /// + IBrush IMutableBrush.ToImmutable() + { + return new Immutable.ImmutableVisualBrush(this); + } } }