summaryrefslogtreecommitdiff
path: root/Xamarin.Forms.Platform.Android/Renderers/MeasureSpecification.cs
blob: fe38a5607d27e594a3a4c61d5f9579fd98f1d7e1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
namespace Xamarin.Forms.Platform.Android
{
	internal struct MeasureSpecification
	{
		public static explicit operator MeasureSpecification(int measureSpecification)
		{
			return new MeasureSpecification(measureSpecification);
		}

		public static implicit operator int(MeasureSpecification measureSpecification)
		{
			return measureSpecification.Encode();
		}

		internal MeasureSpecification(int measureSpecification)
		{
			Value = measureSpecification & (int)~MeasureSpecificationType.Mask;
			Type = (MeasureSpecificationType)(measureSpecification & (int)MeasureSpecificationType.Mask);
		}

		internal MeasureSpecification(int value, MeasureSpecificationType measureSpecification)
		{
			Value = value;
			Type = measureSpecification;
		}

		internal int Value { get; }

		internal MeasureSpecificationType Type { get; }

		internal int Encode()
		{
			return Value | (int)Type;
		}

		public override string ToString()
		{
			return string.Format("{0} {1}", Value, Type);
		}
	}
}