Browse Source

[SL.Core] Added deconstructors

af/octree-no-pixelmap
Gerard Gunnewijk 7 years ago
parent
commit
25aa8d8b74
  1. 13
      src/SixLabors.Core/Primitives/Point.cs
  2. 13
      src/SixLabors.Core/Primitives/PointF.cs
  3. 17
      src/SixLabors.Core/Primitives/Rectangle.cs
  4. 17
      src/SixLabors.Core/Primitives/RectangleF.cs
  5. 13
      src/SixLabors.Core/Primitives/Size.cs
  6. 13
      src/SixLabors.Core/Primitives/SizeF.cs

13
src/SixLabors.Core/Primitives/Point.cs

@ -1,4 +1,4 @@
// Copyright (c) Six Labors and contributors.
// Copyright (c) Six Labors and contributors.
// Licensed under the Apache License, Version 2.0.
using System;
@ -235,6 +235,17 @@ namespace SixLabors.Primitives
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static Point Transform(Point point, Matrix3x2 matrix) => Round(Vector2.Transform(new Vector2(point.X, point.Y), matrix));
/// <summary>
/// Deconstructs this point into two integers
/// </summary>
/// <param name="x">The out value for X</param>
/// <param name="y">The out value for Y</param>
public void Deconstruct(out int x, out int y)
{
x = this.X;
y = this.Y;
}
/// <summary>
/// Translates this <see cref="Point"/> by the specified amount.
/// </summary>

13
src/SixLabors.Core/Primitives/PointF.cs

@ -1,4 +1,4 @@
// Copyright (c) Six Labors and contributors.
// Copyright (c) Six Labors and contributors.
// Licensed under the Apache License, Version 2.0.
using System;
@ -247,6 +247,17 @@ namespace SixLabors.Primitives
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static PointF Transform(PointF point, Matrix3x2 matrix) => Vector2.Transform(point, matrix);
/// <summary>
/// Deconstructs this point into two floats
/// </summary>
/// <param name="x">The out value for X</param>
/// <param name="y">The out value for Y</param>
public void Deconstruct(out float x, out float y)
{
x = this.X;
y = this.Y;
}
/// <summary>
/// Translates this <see cref="PointF"/> by the specified amount.
/// </summary>

17
src/SixLabors.Core/Primitives/Rectangle.cs

@ -1,4 +1,4 @@
// Copyright (c) Six Labors and contributors.
// Copyright (c) Six Labors and contributors.
// Licensed under the Apache License, Version 2.0.
using System;
@ -320,6 +320,21 @@ namespace SixLabors.Primitives
return new Rectangle(x1, y1, x2 - x1, y2 - y1);
}
/// <summary>
/// Deconstructs this rectangle into four integers
/// </summary>
/// <param name="x">The out value for X</param>
/// <param name="y">The out value for Y</param>
/// <param name="width">The out value for the width</param>
/// <param name="height">The out value for the height</param>
public void Deconstruct(out int x, out int y, out int width, out int height)
{
x = this.X;
y = this.Y;
width = this.Width;
height = this.Height;
}
/// <summary>
/// Creates a Rectangle that represents the intersection between this Rectangle and the <paramref name="rectangle"/>.
/// </summary>

17
src/SixLabors.Core/Primitives/RectangleF.cs

@ -1,4 +1,4 @@
// Copyright (c) Six Labors and contributors.
// Copyright (c) Six Labors and contributors.
// Licensed under the Apache License, Version 2.0.
using System;
@ -259,6 +259,21 @@ namespace SixLabors.Primitives
return new RectangleF(x1, y1, x2 - x1, y2 - y1);
}
/// <summary>
/// Deconstructs this rectangle into four floats
/// </summary>
/// <param name="x">The out value for X</param>
/// <param name="y">The out value for Y</param>
/// <param name="width">The out value for the width</param>
/// <param name="height">The out value for the height</param>
public void Deconstruct(out float x, out float y, out float width, out float height)
{
x = this.X;
y = this.Y;
width = this.Width;
height = this.Height;
}
/// <summary>
/// Creates a RectangleF that represents the intersection between this RectangleF and the <paramref name="rectangle"/>.
/// </summary>

13
src/SixLabors.Core/Primitives/Size.cs

@ -1,4 +1,4 @@
// Copyright (c) Six Labors and contributors.
// Copyright (c) Six Labors and contributors.
// Licensed under the Apache License, Version 2.0.
using System;
@ -251,6 +251,17 @@ namespace SixLabors.Primitives
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static Size Truncate(SizeF size) => new Size(unchecked((int)size.Width), unchecked((int)size.Height));
/// <summary>
/// Deconstructs this size into two integers
/// </summary>
/// <param name="width">The out value for the width</param>
/// <param name="height">The out value for the height</param>
public void Deconstruct(out int width, out int height)
{
width = this.Width;
height = this.Height;
}
/// <inheritdoc/>
public override int GetHashCode() => HashCode.Combine(this.Width, this.Height);

13
src/SixLabors.Core/Primitives/SizeF.cs

@ -1,4 +1,4 @@
// Copyright (c) Six Labors and contributors.
// Copyright (c) Six Labors and contributors.
// Licensed under the Apache License, Version 2.0.
using System;
@ -197,6 +197,17 @@ namespace SixLabors.Primitives
return new SizeF(v.X, v.Y);
}
/// <summary>
/// Deconstructs this size into two floats
/// </summary>
/// <param name="width">The out value for the width</param>
/// <param name="height">The out value for the height</param>
public void Deconstruct(out float width, out float height)
{
width = this.Width;
height = this.Height;
}
/// <inheritdoc/>
public override int GetHashCode() => HashCode.Combine(this.Width, this.Height);

Loading…
Cancel
Save