You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

151 lines
3.3 KiB
C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Globalization;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
namespace GeoSigmaDrawLib
{
[Serializable]
[ComVisible(true)]
public struct SizeD
{
public static readonly SizeD Empty;
private double width;
private double height;
[Browsable(false)]
public bool IsEmpty
{
get
{
if (width == 0f)
{
return height == 0f;
}
return false;
}
}
public double Width
{
get
{
return width;
}
set
{
width = value;
}
}
public double Height
{
get
{
return height;
}
set
{
height = value;
}
}
public SizeD(SizeD size)
{
width = size.width;
height = size.height;
}
public SizeD(PointD pt)
{
width = pt.X;
height = pt.Y;
}
public SizeD(double width, double height)
{
this.width = width;
this.height = height;
}
public static SizeD operator +(SizeD sz1, SizeD sz2)
{
return Add(sz1, sz2);
}
public static SizeD operator -(SizeD sz1, SizeD sz2)
{
return Subtract(sz1, sz2);
}
public static bool operator ==(SizeD sz1, SizeD sz2)
{
if (sz1.Width == sz2.Width)
{
return sz1.Height == sz2.Height;
}
return false;
}
public static bool operator !=(SizeD sz1, SizeD sz2)
{
return !(sz1 == sz2);
}
public static explicit operator PointD(SizeD size)
{
return new PointD(size.Width, size.Height);
}
public static SizeD Add(SizeD sz1, SizeD sz2)
{
return new SizeD(sz1.Width + sz2.Width, sz1.Height + sz2.Height);
}
public static SizeD Subtract(SizeD sz1, SizeD sz2)
{
return new SizeD(sz1.Width - sz2.Width, sz1.Height - sz2.Height);
}
public override bool Equals(object obj)
{
if (!(obj is SizeD))
{
return false;
}
SizeD sizeF = (SizeD)obj;
if (sizeF.Width == Width && sizeF.Height == Height)
{
return sizeF.GetType().Equals(GetType());
}
return false;
}
public override int GetHashCode()
{
return base.GetHashCode();
}
public PointD ToPointF()
{
return (PointD)this;
}
//public Size ToSize()
//{
// return Size.Truncate(this);
//}
public override string ToString()
{
return "{Width=" + width.ToString(CultureInfo.CurrentCulture) + ", Height=" + height.ToString(CultureInfo.CurrentCulture) + "}";
}
}
}