summaryrefslogtreecommitdiff
path: root/Xamarin.Forms.Core/Thickness.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Xamarin.Forms.Core/Thickness.cs')
-rw-r--r--Xamarin.Forms.Core/Thickness.cs92
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