コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        /// <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");
        }
コード例 #4
0
 /// <summary>
 /// Find the best rational that approximates the fraction
 /// </summary>
 /// <param name="factor">Divisor &lt;1 1 scaled by 2^32.</param>
 /// <returns></returns>
 public static Rational FindBestRational(uint factor)
 {
     return(Rational.FromDouble(factor * Math.Pow(2.0, -32)));
 }
コード例 #5
0
    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()");
    }