OnTopReplica/OnTopReplica/Native/Rectangle.cs

67 lines
1.6 KiB
C#

using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
using System.Drawing;
namespace OnTopReplica.Native {
/// <summary>A native Rectangle Structure.</summary>
[StructLayout(LayoutKind.Sequential)]
struct NRectangle {
public NRectangle(int left, int top, int right, int bottom) {
Left = left;
Top = top;
Right = right;
Bottom = bottom;
}
public NRectangle(System.Drawing.Rectangle rect) {
Left = rect.X;
Top = rect.Y;
Right = rect.Right;
Bottom = rect.Bottom;
}
public int Left;
public int Top;
public int Right;
public int Bottom;
public int Width {
get {
return Right - Left;
}
}
public int Height {
get {
return Bottom - Top;
}
}
public System.Drawing.Rectangle ToRectangle() {
return new System.Drawing.Rectangle(Left, Top, Right - Left, Bottom - Top);
}
public System.Drawing.Size Size {
get {
return new System.Drawing.Size(Width, Height);
}
}
public override string ToString() {
return string.Format("{{{0},{1},{2},{3}}}", Left, Top, Right, Bottom);
}
}
static class NRectangleExtensions {
public static NRectangle ToNativeRectangle(this Size size) {
return new NRectangle(0, 0, size.Width, size.Height);
}
}
}