diff --git a/src/Avalonia.Visuals/Rect.cs b/src/Avalonia.Visuals/Rect.cs index 8dadaa3b0f..d1110e0613 100644 --- a/src/Avalonia.Visuals/Rect.cs +++ b/src/Avalonia.Visuals/Rect.cs @@ -421,7 +421,8 @@ namespace Avalonia } /// - /// Normalizes the rectangle so both the and are positive, without changing the location of the rectangle + /// Normalizes the rectangle so both the and are positive, without changing the location of the rectangle /// /// Normalized Rect /// @@ -431,24 +432,25 @@ namespace Avalonia { Rect rect = this; - if(double.IsNaN(rect.Right) || double.IsNaN(rect.Bottom) || double.IsNaN(rect.X) || double.IsNaN(rect.Y) || double.IsNaN(Height) || double.IsNaN(Width)) + if(double.IsNaN(rect.Right) || double.IsNaN(rect.Bottom) || + double.IsNaN(rect.X) || double.IsNaN(rect.Y) || + double.IsNaN(Height) || double.IsNaN(Width)) { return Rect.Empty; } if (rect.Width < 0) { - var old = X; var x = X + Width; - var width = old - x; + var width = X - x; rect = rect.WithX(x).WithWidth(width); } + if (rect.Height < 0) { - var old = Y; var y = Y + Height; - var height = old - y; + var height = Y - y; rect = rect.WithY(y).WithHeight(height); } diff --git a/src/Avalonia.Visuals/Rendering/SceneGraph/DrawOperation.cs b/src/Avalonia.Visuals/Rendering/SceneGraph/DrawOperation.cs index 38df0cb289..c49e7705e0 100644 --- a/src/Avalonia.Visuals/Rendering/SceneGraph/DrawOperation.cs +++ b/src/Avalonia.Visuals/Rendering/SceneGraph/DrawOperation.cs @@ -11,9 +11,7 @@ namespace Avalonia.Rendering.SceneGraph { public DrawOperation(Rect bounds, Matrix transform) { - bounds = bounds.Normalize(); - - bounds = bounds.TransformToAABB(transform); + bounds = bounds.Normalize().TransformToAABB(transform); Bounds = new Rect( new Point(Math.Floor(bounds.X), Math.Floor(bounds.Y)), diff --git a/tests/Avalonia.Visuals.UnitTests/RectTests.cs b/tests/Avalonia.Visuals.UnitTests/RectTests.cs index 89800e41bf..a2b0569949 100644 --- a/tests/Avalonia.Visuals.UnitTests/RectTests.cs +++ b/tests/Avalonia.Visuals.UnitTests/RectTests.cs @@ -47,7 +47,10 @@ namespace Avalonia.Visuals.UnitTests [Fact] public void Normalize_Should_Make_Invalid_Rects_Empty() { - var result = new Rect(double.NegativeInfinity,double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity).Normalize(); + var result = new Rect( + double.NegativeInfinity, double.PositiveInfinity, + double.PositiveInfinity, double.PositiveInfinity) + .Normalize(); Assert.Equal(Rect.Empty, result); }