Browse Source

Use different Try convention.

pull/5109/head
Dariusz Komosinski 6 years ago
parent
commit
713d4698ee
  1. 16
      src/Avalonia.Visuals/Matrix.cs
  2. 8
      src/Avalonia.Visuals/VisualExtensions.cs

16
src/Avalonia.Visuals/Matrix.cs

@ -285,22 +285,26 @@ namespace Avalonia
/// Attempts to invert the Matrix.
/// </summary>
/// <returns>The inverted matrix or <see langword="null"/> when matrix is not invertible.</returns>
public Matrix? TryInvert()
public bool TryInvert(out Matrix inverted)
{
double d = GetDeterminant();
if (MathUtilities.IsZero(d))
{
return null;
inverted = default;
return false;
}
return new Matrix(
inverted = new Matrix(
_m22 / d,
-_m12 / d,
-_m21 / d,
_m11 / d,
((_m21 * _m32) - (_m22 * _m31)) / d,
((_m12 * _m31) - (_m11 * _m32)) / d);
return true;
}
/// <summary>
@ -310,14 +314,12 @@ namespace Avalonia
/// <returns>The inverted matrix.</returns>
public Matrix Invert()
{
Matrix? inverted = TryInvert();
if (!inverted.HasValue)
if (!TryInvert(out Matrix inverted))
{
throw new InvalidOperationException("Transform is not invertible.");
}
return inverted.Value;
return inverted;
}
/// <summary>

8
src/Avalonia.Visuals/VisualExtensions.cs

@ -51,14 +51,12 @@ namespace Avalonia
var thisOffset = GetOffsetFrom(common, from);
var thatOffset = GetOffsetFrom(common, to);
var thatOffsetInverted = thatOffset.TryInvert();
if (!thatOffsetInverted.HasValue)
if (!thatOffset.TryInvert(out var thatOffsetInverted))
{
return null;
}
return thatOffsetInverted.Value * thisOffset;
return thatOffsetInverted * thisOffset;
}
return null;

Loading…
Cancel
Save