in winrt/test.managed/EffectTests.cs [381:494]
static object Box(object value, PropertyInfo property)
{
if (value is int ||
value is bool ||
value is float[])
{
return value;
}
else if (value is float)
{
if (NeedsRadianToDegreeConversion(property))
{
return (float)value * 180f / (float)Math.PI;
}
else
{
return value;
}
}
else if (value is Enum)
{
return (uint)(int)value;
}
else if (value is Vector2)
{
var v = (Vector2)value;
return new float[] { v.X, v.Y };
}
else if (value is Vector3)
{
var v = (Vector3)value;
return new float[] { v.X, v.Y, v.Z };
}
else if (value is Vector4)
{
var v = (Vector4)value;
return new float[] { v.X, v.Y, v.Z, v.W };
}
else if (value is Matrix3x2)
{
var m = (Matrix3x2)value;
return new float[]
{
m.M11, m.M12,
m.M21, m.M22,
m.M31, m.M32
};
}
else if (value is Matrix4x4)
{
var m = (Matrix4x4)value;
return new float[]
{
m.M11, m.M12, m.M13, m.M14,
m.M21, m.M22, m.M23, m.M24,
m.M31, m.M32, m.M33, m.M34,
m.M41, m.M42, m.M43, m.M44,
};
}
else if (value is Matrix5x4)
{
var m = (Matrix5x4)value;
return new float[]
{
m.M11, m.M12, m.M13, m.M14,
m.M21, m.M22, m.M23, m.M24,
m.M31, m.M32, m.M33, m.M34,
m.M41, m.M42, m.M43, m.M44,
m.M51, m.M52, m.M53, m.M54,
};
}
else if (value is Rect)
{
var r = (Rect)value;
return new float[]
{
(float)r.Left,
(float)r.Top,
(float)r.Right,
(float)r.Bottom,
};
}
else if (value is Windows.UI.Color)
{
var c = (Windows.UI.Color)value;
return new float[]
{
(float)c.R / 255,
(float)c.G / 255,
(float)c.B / 255,
(float)c.A / 255,
};
}
else if (value is ColorManagementProfile
#if WINDOWS_UWP
|| value is EffectTransferTable3D
#endif
)
{
return new object[] { value };
}
else
{
throw new NotSupportedException("Unsupported Box type " + value.GetType());
}
}