diff options
Diffstat (limited to 'Xamarin.Forms.Core/Thickness.cs')
-rw-r--r-- | Xamarin.Forms.Core/Thickness.cs | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/Xamarin.Forms.Core/Thickness.cs b/Xamarin.Forms.Core/Thickness.cs new file mode 100644 index 00000000..ee1850df --- /dev/null +++ b/Xamarin.Forms.Core/Thickness.cs @@ -0,0 +1,92 @@ +using System.Diagnostics; + +namespace Xamarin.Forms +{ + [DebuggerDisplay("Left={Left}, Top={Top}, Right={Right}, Bottom={Bottom}, HorizontalThickness={HorizontalThickness}, VerticalThickness={VerticalThickness}")] + [TypeConverter(typeof(ThicknessTypeConverter))] + public struct Thickness + { + public double Left { get; set; } + + public double Top { get; set; } + + public double Right { get; set; } + + public double Bottom { get; set; } + + public double HorizontalThickness + { + get { return Left + Right; } + } + + public double VerticalThickness + { + get { return Top + Bottom; } + } + + internal bool IsDefault + { + get { return Left == 0 && Top == 0 && Right == 0 && Left == 0; } + } + + public Thickness(double uniformSize) : this(uniformSize, uniformSize, uniformSize, uniformSize) + { + } + + public Thickness(double horizontalSize, double verticalSize) : this(horizontalSize, verticalSize, horizontalSize, verticalSize) + { + } + + public Thickness(double left, double top, double right, double bottom) : this() + { + Left = left; + Top = top; + Right = right; + Bottom = bottom; + } + + public static implicit operator Thickness(Size size) + { + return new Thickness(size.Width, size.Height, size.Width, size.Height); + } + + public static implicit operator Thickness(double uniformSize) + { + return new Thickness(uniformSize); + } + + bool Equals(Thickness other) + { + return Left.Equals(other.Left) && Top.Equals(other.Top) && Right.Equals(other.Right) && Bottom.Equals(other.Bottom); + } + + public override bool Equals(object obj) + { + if (ReferenceEquals(null, obj)) + return false; + return obj is Thickness && Equals((Thickness)obj); + } + + public override int GetHashCode() + { + unchecked + { + int hashCode = Left.GetHashCode(); + hashCode = (hashCode * 397) ^ Top.GetHashCode(); + hashCode = (hashCode * 397) ^ Right.GetHashCode(); + hashCode = (hashCode * 397) ^ Bottom.GetHashCode(); + return hashCode; + } + } + + public static bool operator ==(Thickness left, Thickness right) + { + return left.Equals(right); + } + + public static bool operator !=(Thickness left, Thickness right) + { + return !left.Equals(right); + } + } +}
\ No newline at end of file |