public static void SetExifPositionOffset(this IMAGE32 image, POINT offset) { // value should be rational64u var x = Rational.FromDouble(offset.X); var y = Rational.FromDouble(offset.Y); image.MetaData.ExifProfile.SetValue(SixLabors.ImageSharp.MetaData.Profiles.Exif.ExifTag.XPosition, x); image.MetaData.ExifProfile.SetValue(SixLabors.ImageSharp.MetaData.Profiles.Exif.ExifTag.YPosition, y); }
public void TestCast() { Rational f1 = 5; Assert.AreEqual(5, f1.Numerator); Assert.AreEqual(1, f1.Denominator); Rational f2 = -5; Assert.AreEqual(-5, f2.Numerator); Assert.AreEqual(1, f2.Denominator); var i1 = (int)new Rational(1, 2); Assert.AreEqual(0, i1); var i2 = (int)new Rational(3, 2); Assert.AreEqual(1, i2); var d1 = (double)new Rational(1, 2); Assert.AreEqual(0.5, d1, 0.0000001); var d2 = (double)new Rational(3, 2); Assert.AreEqual(1.5, d2, 0.0000001); var d3 = (double)new Rational(1, 3); Assert.AreEqual(0.3333333333333, d3, 0.0000001); var f3 = Rational.FromDouble(0.5, 8); var f4 = Rational.FromDouble(1.0 / 3.0, 8); Assert.AreEqual(1, f4.Numerator); Assert.AreEqual(3, f4.Denominator); var f5 = Rational.FromDouble(1.0 / 2.0, 8); Assert.AreEqual(1, f5.Numerator); Assert.AreEqual(2, f5.Denominator); }
/// <summary> /// Converts the given object to the type of this converter, using the specified context and culture information. /// </summary> /// <param name="context">An <see cref="T:System.ComponentModel.ITypeDescriptorContext" /> that provides a format context.</param> /// <param name="culture">The <see cref="T:System.Globalization.CultureInfo" /> to use as the current culture.</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> /// <exception cref="System.ArgumentException">Inavlid value type: " + value.GetType().FullName - value</exception> public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value) { if (value == null) { return((Rational?)null); } if (value is Rational) { return((Rational)value); } if (value is string) { return(Rational.Parse((string)value, culture)); } if (value is int) { return(new Rational((int)value)); } if (value is double) { return(Rational.FromDouble((double)value)); } if (value is long) { return((Rational)(long)value); } if (value is short) { return((Rational)(short)value); } if (value is uint) { return((Rational)(uint)value); } if (value is ulong) { return((Rational)(ulong)value); } if (value is ushort) { return((Rational)(ushort)value); } if (value is float) { return((Rational)(float)value); } if (value is byte) { return((Rational)(byte)value); } if (value is sbyte) { return((Rational)(sbyte)value); } if (value is bool) { return((bool)value ? Rational.One : Rational.Zero); } throw new ArgumentException("Inavlid value type: " + value.GetType().FullName, "value"); }
/// <summary> /// Find the best rational that approximates the fraction /// </summary> /// <param name="factor">Divisor <1 1 scaled by 2^32.</param> /// <returns></returns> public static Rational FindBestRational(uint factor) { return(Rational.FromDouble(factor * Math.Pow(2.0, -32))); }
public void Enter() { if (m_InErrorState || string.IsNullOrEmpty(m_Input)) { return; } //------------------- // Scan into Tokens //------------------- bool success = m_Scanner.Tokenize(m_Input); if (!success) { Debug.Log("CalculatorScreen: Enter() Error in Scanner."); Error(); return; } //------------------- // Parse //------------------- success = ShuntingYard(); if (!success) { Debug.Log("CalculatorScreen: Enter() Error in ShuntingYard."); Error(); return; } //------------------- // Output Results //------------------- string resultStr = ""; // Format as Fraction? if (m_InFracState) { if (m_HaveResultUnits) { resultStr = Units.FormatCalculator(Units.Type.Standard, Units.RulerUnit.Feet, m_Result); } else { resultStr = Rational.FromDouble(m_Result, 1000, 0.00001).ToString(); } } else { //if (m_HaveResultUnits) { // resultStr = Units.FormatCalculator( Units.Type.Standard, Units.RulerUnit.Feet, m_Result, Units.Format.Decimal ); //} else { resultStr = m_Result.ToString(); //} } m_EnteredText = m_Input + "\n\t" + resultStr + "\n"; m_Input = ""; RefreshDisplay(); Debug.Log("CalculatorScreen: Enter()"); }