summaryrefslogtreecommitdiff
path: root/Xamarin.Forms.Platform.Android/Renderers/MeasureSpecification.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Xamarin.Forms.Platform.Android/Renderers/MeasureSpecification.cs')
-rw-r--r--Xamarin.Forms.Platform.Android/Renderers/MeasureSpecification.cs41
1 files changed, 41 insertions, 0 deletions
diff --git a/Xamarin.Forms.Platform.Android/Renderers/MeasureSpecification.cs b/Xamarin.Forms.Platform.Android/Renderers/MeasureSpecification.cs
new file mode 100644
index 00000000..fe38a560
--- /dev/null
+++ b/Xamarin.Forms.Platform.Android/Renderers/MeasureSpecification.cs
@@ -0,0 +1,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);
+ }
+ }
+} \ No newline at end of file