|
|
|
@ -421,11 +421,48 @@ namespace Avalonia |
|
|
|
} |
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// Gets the union of two rectangles.
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="rect">The other rectangle.</param>
|
|
|
|
/// <returns>The union.</returns>
|
|
|
|
public Rect Union(Rect rect) |
|
|
|
/// Normalizes the rectangle so both the <see cref="Width"/> and <see cref="Height"/> are positive, without changing the location of the rectangle
|
|
|
|
/// </summary>
|
|
|
|
/// <returns>Normalized Rect</returns>
|
|
|
|
/// <remarks>
|
|
|
|
/// Empty rect will be return when Rect contains invalid values. Like NaN.
|
|
|
|
/// </remarks>
|
|
|
|
public Rect Normalize() |
|
|
|
{ |
|
|
|
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)) |
|
|
|
{ |
|
|
|
return Rect.Empty; |
|
|
|
} |
|
|
|
|
|
|
|
if (rect.Width < 0) |
|
|
|
{ |
|
|
|
var old = X; |
|
|
|
var x = X + Width; |
|
|
|
var width = old - x; |
|
|
|
|
|
|
|
rect = rect.WithX(x).WithWidth(width); |
|
|
|
} |
|
|
|
if (rect.Height < 0) |
|
|
|
{ |
|
|
|
var old = Y; |
|
|
|
var y = Y + Height; |
|
|
|
var height = old - y; |
|
|
|
|
|
|
|
rect = rect.WithY(y).WithHeight(height); |
|
|
|
} |
|
|
|
|
|
|
|
return rect; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// Gets the union of two rectangles.
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="rect">The other rectangle.</param>
|
|
|
|
/// <returns>The union.</returns>
|
|
|
|
public Rect Union(Rect rect) |
|
|
|
{ |
|
|
|
if (IsEmpty) |
|
|
|
{ |
|
|
|
|