Loading files
This file is pinned to the selected release. Download the original to open it in your design tool.
using System;
namespace MikroPic.EdaTools.v1.Base.Geometry {
public static class EdaRectExtensions {
/// <summary>
/// Obte un rectangle desplaçat.
/// </summary>
/// <param name="dx">Desplaçament X</param>
/// <param name="dy">Desplaçament Y</param>
/// <returns>El resultat de l'operacio.</returns>
///
public static EdaRect Offset(this EdaRect r, int dx, int dy) =>
new(r.X + dx, r.Y + dy, r.Width, r.Height);
/// <summary>
/// Obte un rectangle inflat.
/// </summary>
/// <param name="dx">Increment X</param>
/// <param name="dy">Increment Y</param>
/// <returns>El resultat de l'operacio.</returns>
///
public static EdaRect Inflated(this EdaRect r, int dx, int dy) =>
new(r.X - dx, r.Y - dy, r.Width + dx + dx, r.Height + dy + dy);
/// <summary>
/// Obte un rectangle inflat.
/// </summary>
/// <param name="ratio">Percentatge d'inflat.</param>
/// <returns>El resultat de l'operacio.</returns>
///
public static EdaRect Inflated(this EdaRect r, EdaRatio ratio) {
var delta = Math.Min(r.Width, r.Height) * ratio / 2;
return new(r.X - delta, r.Y - delta, r.Width + delta + delta, r.Height + delta + delta);
}
/// <summary>
/// Obte un rectangle desinflat.
/// </summary>
/// <param name="ratio">Percentatge de desinflat.</param>
/// <returns>El resultat de l'operacio.</returns>
///
public static EdaRect Deflated(this EdaRect r, EdaRatio ratio) {
var delta = -Math.Min(r.Width, r.Height) * ratio / 2;
return new(r.X - delta, r.Y - delta, r.Width + delta + delta, r.Height + delta + delta);
}
/// <summary>
/// Obte la unio amb un altre rectangle
/// </summary>
/// <param name="rect">Rectangle a unir.</param>
/// <returns>El resultat de la unio.</returns>
///
public static EdaRect Union(this EdaRect r, EdaRect rect) {
int left = Math.Min(r.Left, rect.Left);
int right = Math.Max(r.Right, rect.Right);
int top = Math.Min(r.Top, rect.Top);
int bottom = Math.Max(r.Bottom, rect.Bottom);
return new(left, top, right - left + 1, bottom - top + 1);
}
/// <summary>
/// Comprova si intersecta amb un rectangle
/// </summary>
/// <param name="rect">El rectangle a verificar.</param>
/// <returns>True si intersecten, false en cas contrari.</returns>
///
public static bool IntersectsWith(this EdaRect r, EdaRect rect) {
return (rect.Left <= r.Right) && (rect.Right >= r.Left) &&
(rect.Bottom <= r.Top) && (rect.Top >= r.Bottom);
}
}
}
1de7a351fThis file is pinned to the selected release. Download the original to open it in your design tool.