/// <summary> /// Converts the given object to the type of this converter, using the specified context and culture information. /// </summary> /// <param name="context">A <see cref="T:System.ComponentModel.ITypeDescriptorContext" /> that provides a format context.</param> /// <param name="culture">A <see cref="T:System.Globalization.CultureInfo" />. If <c>null</c> is passed, the current culture is assumed.</param> /// <param name="value">The <see cref="T:System.Object" /> to convert.</param> /// <returns>An <see cref="T:System.Object" /> that represents the converted value.</returns> public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value) { if (culture == null) { culture = CultureInfo.CurrentCulture; } string @string = value as string; if (@string == null) { return base.ConvertFrom(context, culture, value); } @string = @string.Trim(); char[] separator = new char[] { culture.TextInfo.ListSeparator[0] }; string[] stringArray = @string.Split(separator); if (stringArray.Length != 1) { throw new ArgumentException("Invalid half format."); } float H = (float) TypeDescriptor.GetConverter(typeof(float)).ConvertFromString(context, culture, stringArray[0]); Half type = new Half(H); return type; }
/// <summary> /// Determines whether the specified object instances are considered equal. /// </summary> /// <param name = "value1" /> /// <param name = "value2" /> /// <returns> /// <c>true</c> if <paramref name = "value1" /> is the same instance as <paramref name = "value2" /> or /// if both are <c>null</c> references or if <c>value1.Equals(value2)</c> returns <c>true</c>; otherwise, <c>false</c>.</returns> public static bool Equals(ref Half value1, ref Half value2) { return value1.value == value2.value; }
/// <summary> /// Returns a value that indicates whether the current instance is equal to the specified object. /// </summary> /// <param name = "other">Object to make the comparison with.</param> /// <returns> /// <c>true</c> if the current instance is equal to the specified object; <c>false</c> otherwise.</returns> public bool Equals(Half other) { return other.value == value; }
/// <summary> /// Converts an array of half precision values into full precision values. /// </summary> /// <param name = "values">The values to be converted.</param> /// <returns>An array of converted values.</returns> public static float[] ConvertToFloat(Half[] values) { float[] results = new float[values.Length]; for(int i = 0; i < results.Length; i++) results[i] = HalfUtils.Unpack(values[i].RawValue); return results; }
/// <summary> /// Converts an array of full precision values into half precision values. /// </summary> /// <param name = "values">The values to be converted.</param> /// <returns>An array of converted values.</returns> public static Half[] ConvertToHalf(float[] values) { Half[] results = new Half[values.Length]; for(int i = 0; i < results.Length; i++) results[i] = new Half(values[i]); return results; }
/// <summary> /// Initializes a new instance of the <see cref="Half2" /> structure. /// </summary> /// <param name="value">Value to initialize X and Y components with.</param> public Half2(float value) { this.X = new Half(value); this.Y = new Half(value); }
/// <summary> /// Initializes a new instance of the <see cref="Half2" /> structure. /// </summary> /// <param name="value">The value to set for both the X and Y components.</param> public Half2(Half value) { this.X = value; this.Y = value; }
/// <summary> /// Initializes a new instance of the <see cref="Half2" /> structure. /// </summary> /// <param name="x">The X component.</param> /// <param name="y">The Y component.</param> public Half2(ushort x, ushort y) { this.X = new Half(x); this.Y = new Half(y); }
/// <summary> /// Initializes a new instance of the <see cref="Half2" /> structure. /// </summary> /// <param name="x">The X component.</param> /// <param name="y">The Y component.</param> public Half2(float x, float y) { this.X = new Half(x); this.Y = new Half(y); }
/// <summary> /// Initializes a new instance of the <see cref="Half2" /> structure. /// </summary> /// <param name="x">The X component.</param> /// <param name="y">The Y component.</param> public Half2(Half x, Half y) { this.X = x; this.Y = y; }