From b20ced7c2bd97eb50646790803c9c8ae91e8ba33 Mon Sep 17 00:00:00 2001 From: Steven Kirk Date: Sun, 5 Feb 2017 23:08:22 +0100 Subject: [PATCH] Refactored brushes. `SolidColorBrush` is now mutable. There are immutable versions of brushes in the `Avalona.Media.Immutable` namespace and the static `Brushes.Xxx` properties return these. --- .../Accents/BaseLight.xaml | 1 - src/Avalonia.Visuals/Avalonia.Visuals.csproj | 11 +- src/Avalonia.Visuals/Media/Brush.cs | 3 +- src/Avalonia.Visuals/Media/Brushes.cs | 566 +++++++++--------- src/Avalonia.Visuals/Media/IMutableBrush.cs | 16 + src/Avalonia.Visuals/Media/ImageBush.cs | 12 +- .../Media/Immutable/ImmutableImageBrush.cs | 58 ++ .../Immutable/ImmutableSolidColorBrush.cs | 59 ++ .../Media/Immutable/ImmutableTileBrush.cs | 77 +++ .../Media/Immutable/ImmutableVisualBrush.cs | 58 ++ .../Media/Mutable/SolidColorBrush.cs | 35 -- src/Avalonia.Visuals/Media/SolidColorBrush.cs | 36 +- src/Avalonia.Visuals/Media/VisualBrush.cs | 8 +- .../Rendering/DeferredRenderer.cs | 3 +- .../SceneGraph/BrushDrawOperation.cs | 26 +- .../Rendering/SceneGraph/GeometryNode.cs | 4 +- .../Rendering/SceneGraph/LineNode.cs | 2 +- .../SceneGraph/Media/SceneImageBrush.cs | 37 -- .../SceneGraph/Media/SceneVisualBrush.cs | 37 -- .../Rendering/SceneGraph/RectangleNode.cs | 4 +- .../Rendering/SceneGraph/TextNode.cs | 12 +- .../Xaml/Style2.xaml | 9 +- .../Xaml/StyleTests.cs | 20 +- ...alonia.Cairo.RenderTests.v3.ncrunchproject | 76 +++ ...ia.Direct2D1.RenderTests.v3.ncrunchproject | 9 +- 25 files changed, 719 insertions(+), 460 deletions(-) create mode 100644 src/Avalonia.Visuals/Media/IMutableBrush.cs create mode 100644 src/Avalonia.Visuals/Media/Immutable/ImmutableImageBrush.cs create mode 100644 src/Avalonia.Visuals/Media/Immutable/ImmutableSolidColorBrush.cs create mode 100644 src/Avalonia.Visuals/Media/Immutable/ImmutableTileBrush.cs create mode 100644 src/Avalonia.Visuals/Media/Immutable/ImmutableVisualBrush.cs delete mode 100644 src/Avalonia.Visuals/Media/Mutable/SolidColorBrush.cs delete mode 100644 src/Avalonia.Visuals/Rendering/SceneGraph/Media/SceneImageBrush.cs delete mode 100644 src/Avalonia.Visuals/Rendering/SceneGraph/Media/SceneVisualBrush.cs create mode 100644 tests/Avalonia.RenderTests/Avalonia.Cairo.RenderTests.v3.ncrunchproject diff --git a/src/Avalonia.Themes.Default/Accents/BaseLight.xaml b/src/Avalonia.Themes.Default/Accents/BaseLight.xaml index 38786f54d3..cb86598a42 100644 --- a/src/Avalonia.Themes.Default/Accents/BaseLight.xaml +++ b/src/Avalonia.Themes.Default/Accents/BaseLight.xaml @@ -1,6 +1,5 @@ \ No newline at end of file diff --git a/tests/Avalonia.Markup.Xaml.UnitTests/Xaml/StyleTests.cs b/tests/Avalonia.Markup.Xaml.UnitTests/Xaml/StyleTests.cs index 308a65dcd4..61bbcc1939 100644 --- a/tests/Avalonia.Markup.Xaml.UnitTests/Xaml/StyleTests.cs +++ b/tests/Avalonia.Markup.Xaml.UnitTests/Xaml/StyleTests.cs @@ -124,13 +124,12 @@ namespace Avalonia.Markup.Xaml.UnitTests.Xaml { var xaml = @" @@ -139,12 +138,12 @@ namespace Avalonia.Markup.Xaml.UnitTests.Xaml var loader = new AvaloniaXamlLoader(); var window = (Window)loader.Load(xaml); - var brush = (Avalonia.Media.Mutable.SolidColorBrush)window.FindStyleResource("brush"); + var brush = (Avalonia.Media.ISolidColorBrush)window.FindStyleResource("brush"); var button = window.FindControl