diff --git a/src/Avalonia.Controls/Presenters/ScrollContentPresenter.cs b/src/Avalonia.Controls/Presenters/ScrollContentPresenter.cs index d9f0260e39..c217290226 100644 --- a/src/Avalonia.Controls/Presenters/ScrollContentPresenter.cs +++ b/src/Avalonia.Controls/Presenters/ScrollContentPresenter.cs @@ -133,7 +133,7 @@ namespace Avalonia.Controls.Presenters return false; } - var rect = targetRect * transform.Value; + var rect = targetRect.TransformToAABB(transform.Value); var offset = Offset; var result = false; diff --git a/src/Avalonia.Visuals/Rect.cs b/src/Avalonia.Visuals/Rect.cs index 7093250ceb..dec1c79df8 100644 --- a/src/Avalonia.Visuals/Rect.cs +++ b/src/Avalonia.Visuals/Rect.cs @@ -183,7 +183,7 @@ namespace Avalonia } /// - /// Multiplies a rectangle by a vector. + /// Multiplies a rectangle by a scaling vector. /// /// The rectangle. /// The vector scale. @@ -197,17 +197,6 @@ namespace Avalonia rect.Height * scale.Y); } - /// - /// Transforms a rectangle by a matrix and returns the axis-aligned bounding box. - /// - /// The rectangle. - /// The matrix. - /// The axis-aligned bounding box. - public static Rect operator *(Rect rect, Matrix matrix) - { - return new Rect(rect.TopLeft * matrix, rect.BottomRight * matrix); - } - /// /// Divides a rectangle by a vector. /// diff --git a/src/Avalonia.Visuals/Rendering/SceneGraph/GeometryNode.cs b/src/Avalonia.Visuals/Rendering/SceneGraph/GeometryNode.cs index 987cbf3d27..14a1162fd4 100644 --- a/src/Avalonia.Visuals/Rendering/SceneGraph/GeometryNode.cs +++ b/src/Avalonia.Visuals/Rendering/SceneGraph/GeometryNode.cs @@ -11,7 +11,7 @@ namespace Avalonia.Rendering.SceneGraph { public GeometryNode(Matrix transform, IBrush brush, Pen pen, IGeometryImpl geometry) { - Bounds = geometry.Bounds * transform; + Bounds = geometry.Bounds.TransformToAABB(transform); Transform = transform; Brush = brush; Pen = pen; diff --git a/src/Avalonia.Visuals/Rendering/SceneGraph/ImageNode.cs b/src/Avalonia.Visuals/Rendering/SceneGraph/ImageNode.cs index a11aa6f330..77cbba4181 100644 --- a/src/Avalonia.Visuals/Rendering/SceneGraph/ImageNode.cs +++ b/src/Avalonia.Visuals/Rendering/SceneGraph/ImageNode.cs @@ -11,7 +11,7 @@ namespace Avalonia.Rendering.SceneGraph { public ImageNode(Matrix transform, IBitmapImpl source, double opacity, Rect sourceRect, Rect destRect) { - Bounds = destRect * transform; + Bounds = destRect.TransformToAABB(transform); Transform = transform; Source = source; Opacity = opacity; diff --git a/src/Avalonia.Visuals/Rendering/SceneGraph/RectangleNode.cs b/src/Avalonia.Visuals/Rendering/SceneGraph/RectangleNode.cs index fd490e1cea..e73684afa6 100644 --- a/src/Avalonia.Visuals/Rendering/SceneGraph/RectangleNode.cs +++ b/src/Avalonia.Visuals/Rendering/SceneGraph/RectangleNode.cs @@ -10,7 +10,7 @@ namespace Avalonia.Rendering.SceneGraph { public RectangleNode(Matrix transform, IBrush brush, Pen pen, Rect rect, float cornerRadius) { - Bounds = (rect * transform).Inflate(pen?.Thickness ?? 0); + Bounds = rect.TransformToAABB(transform).Inflate(pen?.Thickness ?? 0); Transform = transform; Brush = brush; Pen = pen; diff --git a/src/Avalonia.Visuals/Rendering/SceneGraph/SceneBuilder.cs b/src/Avalonia.Visuals/Rendering/SceneGraph/SceneBuilder.cs index add79086c6..7071320118 100644 --- a/src/Avalonia.Visuals/Rendering/SceneGraph/SceneBuilder.cs +++ b/src/Avalonia.Visuals/Rendering/SceneGraph/SceneBuilder.cs @@ -155,7 +155,7 @@ namespace Avalonia.Rendering.SceneGraph forceRecurse = forceRecurse || node.Transform != contextImpl.Transform; node.Transform = contextImpl.Transform; - node.ClipBounds = (bounds * node.Transform).Intersect(clip); + node.ClipBounds = bounds.TransformToAABB(node.Transform).Intersect(clip); node.ClipToBounds = clipToBounds; node.GeometryClip = visual.Clip; node.Opacity = opacity; diff --git a/src/Avalonia.Visuals/Rendering/SceneGraph/TextNode.cs b/src/Avalonia.Visuals/Rendering/SceneGraph/TextNode.cs index 681bb23423..2bddea88bf 100644 --- a/src/Avalonia.Visuals/Rendering/SceneGraph/TextNode.cs +++ b/src/Avalonia.Visuals/Rendering/SceneGraph/TextNode.cs @@ -11,7 +11,7 @@ namespace Avalonia.Rendering.SceneGraph { public TextNode(Matrix transform, IBrush foreground, Point origin, IFormattedTextImpl text) { - Bounds = new Rect(origin, text.Size) * transform; + Bounds = new Rect(origin, text.Size).TransformToAABB(transform); Transform = transform; Foreground = foreground; Origin = origin;