diff options
author | Jason Smith <jason.smith@xamarin.com> | 2016-03-22 13:02:25 -0700 |
---|---|---|
committer | Jason Smith <jason.smith@xamarin.com> | 2016-03-22 16:13:41 -0700 |
commit | 17fdde66d94155fc62a034fa6658995bef6fd6e5 (patch) | |
tree | b5e5073a2a7b15cdbe826faa5c763e270a505729 /Xamarin.Forms.Core/LayoutOptions.cs | |
download | xamarin-forms-17fdde66d94155fc62a034fa6658995bef6fd6e5.tar.gz xamarin-forms-17fdde66d94155fc62a034fa6658995bef6fd6e5.tar.bz2 xamarin-forms-17fdde66d94155fc62a034fa6658995bef6fd6e5.zip |
Initial import
Diffstat (limited to 'Xamarin.Forms.Core/LayoutOptions.cs')
-rw-r--r-- | Xamarin.Forms.Core/LayoutOptions.cs | 39 |
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 |