summaryrefslogtreecommitdiff
path: root/Xamarin.Forms.Core/LayoutOptions.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Xamarin.Forms.Core/LayoutOptions.cs')
-rw-r--r--Xamarin.Forms.Core/LayoutOptions.cs39
1 files changed, 39 insertions, 0 deletions
diff --git a/Xamarin.Forms.Core/LayoutOptions.cs b/Xamarin.Forms.Core/LayoutOptions.cs
new file mode 100644
index 00000000..a3a900b0
--- /dev/null
+++ b/Xamarin.Forms.Core/LayoutOptions.cs
@@ -0,0 +1,39 @@
+using System;
+
+namespace Xamarin.Forms
+{
+ [TypeConverter(typeof(LayoutOptionsConverter))]
+ public struct LayoutOptions
+ {
+ int _flags;
+
+ public static readonly LayoutOptions Start = new LayoutOptions(LayoutAlignment.Start, false);
+ public static readonly LayoutOptions Center = new LayoutOptions(LayoutAlignment.Center, false);
+ public static readonly LayoutOptions End = new LayoutOptions(LayoutAlignment.End, false);
+ public static readonly LayoutOptions Fill = new LayoutOptions(LayoutAlignment.Fill, false);
+ public static readonly LayoutOptions StartAndExpand = new LayoutOptions(LayoutAlignment.Start, true);
+ public static readonly LayoutOptions CenterAndExpand = new LayoutOptions(LayoutAlignment.Center, true);
+ public static readonly LayoutOptions EndAndExpand = new LayoutOptions(LayoutAlignment.End, true);
+ public static readonly LayoutOptions FillAndExpand = new LayoutOptions(LayoutAlignment.Fill, true);
+
+ public LayoutOptions(LayoutAlignment alignment, bool expands)
+ {
+ var a = (int)alignment;
+ if (a < 0 || a > 3)
+ throw new ArgumentOutOfRangeException();
+ _flags = (int)alignment | (expands ? (int)LayoutExpandFlag.Expand : 0);
+ }
+
+ public LayoutAlignment Alignment
+ {
+ get { return (LayoutAlignment)(_flags & 3); }
+ set { _flags = (_flags & ~3) | (int)value; }
+ }
+
+ public bool Expands
+ {
+ get { return (_flags & (int)LayoutExpandFlag.Expand) != 0; }
+ set { _flags = (_flags & 3) | (value ? (int)LayoutExpandFlag.Expand : 0); }
+ }
+ }
+} \ No newline at end of file