Initial Commit
This commit is contained in:
67
Common/Auxiliary/RectExtensions.cs
Normal file
67
Common/Auxiliary/RectExtensions.cs
Normal file
@@ -0,0 +1,67 @@
|
||||
using System.Windows;
|
||||
using Microsoft.Research.DynamicDataDisplay.Common;
|
||||
using System.Diagnostics;
|
||||
|
||||
namespace Microsoft.Research.DynamicDataDisplay
|
||||
{
|
||||
public static class RectExtensions
|
||||
{
|
||||
public static Point GetCenter(this Rect rect)
|
||||
{
|
||||
return new Point(rect.Left + rect.Width * 0.5, rect.Top + rect.Height * 0.5);
|
||||
}
|
||||
|
||||
public static Rect FromCenterSize(Point center, Size size)
|
||||
{
|
||||
return FromCenterSize(center, size.Width, size.Height);
|
||||
}
|
||||
|
||||
public static Rect FromCenterSize(Point center, double width, double height)
|
||||
{
|
||||
Rect res = new Rect(center.X - width / 2, center.Y - height / 2, width, height);
|
||||
return res;
|
||||
}
|
||||
|
||||
public static Rect Zoom(this Rect rect, Point to, double ratio)
|
||||
{
|
||||
return CoordinateUtilities.RectZoom(rect, to, ratio);
|
||||
}
|
||||
|
||||
public static Rect ZoomOutFromCenter(this Rect rect, double ratio)
|
||||
{
|
||||
return CoordinateUtilities.RectZoom(rect, rect.GetCenter(), ratio);
|
||||
}
|
||||
|
||||
public static Rect ZoomInToCenter(this Rect rect, double ratio)
|
||||
{
|
||||
return CoordinateUtilities.RectZoom(rect, rect.GetCenter(), 1 / ratio);
|
||||
}
|
||||
|
||||
public static Int32Rect ToInt32Rect(this Rect rect)
|
||||
{
|
||||
Int32Rect intRect = new Int32Rect(
|
||||
(int)rect.X,
|
||||
(int)rect.Y,
|
||||
(int)rect.Width,
|
||||
(int)rect.Height);
|
||||
|
||||
return intRect;
|
||||
}
|
||||
|
||||
[DebuggerStepThrough]
|
||||
public static DataRect ToDataRect(this Rect rect)
|
||||
{
|
||||
return new DataRect(rect);
|
||||
}
|
||||
|
||||
internal static bool IsNaN(this Rect rect)
|
||||
{
|
||||
return !rect.IsEmpty && (
|
||||
rect.X.IsNaN() ||
|
||||
rect.Y.IsNaN() ||
|
||||
rect.Width.IsNaN() ||
|
||||
rect.Height.IsNaN()
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user