mirror of
https://github.com/ZuneDev/Xune.git
synced 2026-07-27 13:13:10 -07:00
206 lines
6.7 KiB
C#
206 lines
6.7 KiB
C#
// Decompiled with JetBrains decompiler
|
|
// Type: Microsoft.Iris.RenderAPI.Drawing.RectangleF
|
|
// Assembly: UIX, Version=4.8.0.0, Culture=neutral, PublicKeyToken=ddd0da4d3e678217
|
|
// MVID: A56C6C9D-B7F6-46A9-8BDE-B3D9B8D60B11
|
|
// Assembly location: C:\Program Files\Zune\UIX.dll
|
|
|
|
using Microsoft.Iris.Library;
|
|
using Microsoft.Iris.Render;
|
|
using System;
|
|
using System.Globalization;
|
|
using System.Text;
|
|
|
|
namespace Microsoft.Iris.RenderAPI.Drawing
|
|
{
|
|
[Serializable]
|
|
internal struct RectangleF
|
|
{
|
|
public static readonly RectangleF Zero = new RectangleF(0.0f, 0.0f, 0.0f, 0.0f);
|
|
private float x;
|
|
private float y;
|
|
private float width;
|
|
private float height;
|
|
|
|
public RectangleF(float x, float y, float width, float height)
|
|
{
|
|
this.x = x;
|
|
this.y = y;
|
|
this.width = width;
|
|
this.height = height;
|
|
}
|
|
|
|
public RectangleF(PointF location, SizeF size)
|
|
{
|
|
x = location.X;
|
|
y = location.Y;
|
|
width = size.Width;
|
|
height = size.Height;
|
|
}
|
|
|
|
public RectangleF(Point location, Microsoft.Iris.Render.Size size)
|
|
{
|
|
x = location.X;
|
|
y = location.Y;
|
|
width = size.Width;
|
|
height = size.Height;
|
|
}
|
|
|
|
public static RectangleF FromLTRB(float left, float top, float right, float bottom) => new RectangleF(left, top, right - left, bottom - top);
|
|
|
|
public static RectangleF FromRectangle(Rectangle r) => new RectangleF(r.X, r.Y, r.Width, r.Height);
|
|
|
|
public PointF Location
|
|
{
|
|
get => new PointF(X, Y);
|
|
set
|
|
{
|
|
X = value.X;
|
|
Y = value.Y;
|
|
}
|
|
}
|
|
|
|
public SizeF Size
|
|
{
|
|
get => new SizeF(Width, Height);
|
|
set
|
|
{
|
|
Width = value.Width;
|
|
Height = value.Height;
|
|
}
|
|
}
|
|
|
|
public float X
|
|
{
|
|
get => x;
|
|
set => x = value;
|
|
}
|
|
|
|
public float Y
|
|
{
|
|
get => y;
|
|
set => y = value;
|
|
}
|
|
|
|
public float Width
|
|
{
|
|
get => width;
|
|
set => width = value;
|
|
}
|
|
|
|
public float Height
|
|
{
|
|
get => height;
|
|
set => height = value;
|
|
}
|
|
|
|
public float Left => X;
|
|
|
|
public float Top => Y;
|
|
|
|
public float Right => X + Width;
|
|
|
|
public float Bottom => Y + Height;
|
|
|
|
public bool IsEmpty => Math2.WithinEpsilon(width, 0.0f) || Math2.WithinEpsilon(height, 0.0f);
|
|
|
|
public override bool Equals(object obj) => obj is RectangleF rectangleF && rectangleF.X == (double)X && (rectangleF.Y == (double)Y && rectangleF.Width == (double)Width) && rectangleF.Height == (double)Height;
|
|
|
|
public static bool operator ==(RectangleF left, RectangleF right) => left.X == (double)right.X && left.Y == (double)right.Y && left.Width == (double)right.Width && left.Height == (double)right.Height;
|
|
|
|
public static bool operator !=(RectangleF left, RectangleF right) => !(left == right);
|
|
|
|
public bool Contains(float x, float y) => X <= (double)x && x < X + (double)Width && Y <= (double)y && y < Y + (double)Height;
|
|
|
|
public bool Contains(PointF pt) => Contains(pt.X, pt.Y);
|
|
|
|
public bool Contains(RectangleF rect) => X <= (double)rect.X && rect.X + (double)rect.Width <= X + (double)Width && Y <= (double)rect.Y && rect.Y + (double)rect.Height <= Y + (double)Height;
|
|
|
|
public override int GetHashCode() => (int)(uint)X ^ ((int)(uint)Y << 13 | (int)((uint)Y >> 19)) ^ ((int)(uint)Width << 26 | (int)((uint)Width >> 6)) ^ ((int)(uint)Height << 7 | (int)((uint)Height >> 25));
|
|
|
|
public void Inflate(float x, float y)
|
|
{
|
|
X -= x;
|
|
Y -= y;
|
|
Width += 2f * x;
|
|
Height += 2f * y;
|
|
}
|
|
|
|
public void Inflate(SizeF size) => Inflate(size.Width, size.Height);
|
|
|
|
public static RectangleF Inflate(RectangleF rect, float x, float y)
|
|
{
|
|
RectangleF rectangleF = rect;
|
|
rectangleF.Inflate(x, y);
|
|
return rectangleF;
|
|
}
|
|
|
|
public void Intersect(RectangleF rect)
|
|
{
|
|
RectangleF rectangleF = Intersect(rect, this);
|
|
X = rectangleF.X;
|
|
Y = rectangleF.Y;
|
|
Width = rectangleF.Width;
|
|
Height = rectangleF.Height;
|
|
}
|
|
|
|
public static RectangleF Intersect(RectangleF a, RectangleF b)
|
|
{
|
|
float x = Math.Max(a.X, b.X);
|
|
float num1 = Math.Min(a.X + a.Width, b.X + b.Width);
|
|
float y = Math.Max(a.Y, b.Y);
|
|
float num2 = Math.Min(a.Y + a.Height, b.Y + b.Height);
|
|
return num1 >= (double)x && num2 >= (double)y ? new RectangleF(x, y, num1 - x, num2 - y) : Zero;
|
|
}
|
|
|
|
public bool IntersectsWith(RectangleF rect) => Left < (double)rect.Right && Top < (double)rect.Bottom && Right > (double)rect.Left && Bottom > (double)rect.Top;
|
|
|
|
public static RectangleF Union(RectangleF a, RectangleF b)
|
|
{
|
|
float x = Math.Min(a.X, b.X);
|
|
float num1 = Math.Max(a.X + a.Width, b.X + b.Width);
|
|
float y = Math.Min(a.Y, b.Y);
|
|
float num2 = Math.Max(a.Y + a.Height, b.Y + b.Height);
|
|
return new RectangleF(x, y, num1 - x, num2 - y);
|
|
}
|
|
|
|
public void Offset(PointF pos) => Offset(pos.X, pos.Y);
|
|
|
|
public void Offset(float x, float y)
|
|
{
|
|
X += x;
|
|
Y += y;
|
|
}
|
|
|
|
public static RectangleF Offset(RectangleF rect, PointF pos)
|
|
{
|
|
rect.Offset(pos);
|
|
return rect;
|
|
}
|
|
|
|
public PointF TopLeft => new PointF(Left, Top);
|
|
|
|
public PointF TopRight => new PointF(Right, Top);
|
|
|
|
public PointF BottomLeft => new PointF(Left, Bottom);
|
|
|
|
public PointF BottomRight => new PointF(Right, Bottom);
|
|
|
|
public PointF Center => new PointF(x + width / 2f, y + height / 2f);
|
|
|
|
public override string ToString()
|
|
{
|
|
StringBuilder stringBuilder = new StringBuilder(128);
|
|
stringBuilder.Append("(X=");
|
|
stringBuilder.Append(X.ToString(NumberFormatInfo.InvariantInfo));
|
|
stringBuilder.Append(", Y=");
|
|
stringBuilder.Append(Y.ToString(NumberFormatInfo.InvariantInfo));
|
|
stringBuilder.Append(", Width=");
|
|
stringBuilder.Append(Width.ToString(NumberFormatInfo.InvariantInfo));
|
|
stringBuilder.Append(", Height=");
|
|
stringBuilder.Append(Height.ToString(NumberFormatInfo.InvariantInfo));
|
|
stringBuilder.Append(")");
|
|
return stringBuilder.ToString();
|
|
}
|
|
}
|
|
}
|