Exemple #1
0
        /// <summary>
        /// Defines a conversion factor between two units.
        /// </summary>
        /// <param name="sourceUnit">The conversion source unit.</param>
        /// <param name="targetUnit">The conversion destination unit.</param>
        /// <param name="factor">The conversion factor.</param>
        public static UnitConversion Define(Unit sourceUnit, Unit targetUnit, double factor)
        {
            var conversion = new UnitConversion(sourceUnit, targetUnit, factor);

            UnitConversionManager.Add(conversion);
            return(conversion);
        }
Exemple #2
0
        private static Tree <UnitConversion> getConversionTree(Unit sourceUnit,
                                                               Unit targetUnit, Recursion <Unit> recursion = null)
        {
            if (recursion == null)
            {
                recursion = new Recursion <Unit>();
            }

            var tree = new Tree <UnitConversion>();
            var sourceUnitConversions = UnitConversionManager.GetDirectFrom(sourceUnit);

            foreach (var conversion in sourceUnitConversions)
            {
                if (!recursion.Contains(conversion.TargetUnit))
                {
                    TreeItem <UnitConversion> subItem;
                    if (Utils.NullableEquals(conversion.TargetUnit, targetUnit))
                    {
                        subItem = new TreeItem <UnitConversion>(conversion);
                        tree.Children.Add(subItem);
                        break;
                    }
                    else
                    {
                        var newRecursion = recursion.Recurse(conversion.TargetUnit);
                        var subTree      = getConversionTree(conversion.TargetUnit, targetUnit, newRecursion);
                        subItem = subTree.ToTreeItem(conversion);
                    }
                    tree.Children.Add(subItem);
                }
            }
            return(tree);
        }
Exemple #3
0
 /// <summary>
 /// Gets all the possible direct conversions to the specified target unit.
 /// </summary>
 /// <param name="targetUnit">The conversion target unit.</param>
 /// <returns></returns>
 public static UnitConversion[] GetDirectTo(Unit targetUnit)
 => UnitConversionManager.GetDirectTo(targetUnit);
Exemple #4
0
 /// <summary>
 /// Gets all the possible direct conversions from the specified source unit.
 /// </summary>
 /// <param name="sourceUnit">The conversion source unit.</param>
 /// <returns></returns>
 public static UnitConversion[] GetDirectFrom(Unit sourceUnit)
 => UnitConversionManager.GetDirectFrom(sourceUnit);
Exemple #5
0
 /// <summary>
 /// Gets the direct conversion between two units.
 /// </summary>
 /// <param name="sourceUnit">The conversion source unit.</param>
 /// <param name="targetUnit">The conversion target unit.</param>
 /// <returns></returns>
 public static UnitConversion GetDirect(Unit sourceUnit, Unit targetUnit)
 => UnitConversionManager.GetDirect(sourceUnit, targetUnit);
Exemple #6
0
 /// <summary>
 /// Gets the scale zero for the specified unit.
 /// </summary>
 /// <param name="unit">The unit.</param>
 /// <returns>The scale zero amount.</returns>
 public static Scalar GetScaleZero(Unit unit) => UnitConversionManager.GetScaleZero(unit);
Exemple #7
0
 /// <summary>
 /// Defines the scale zero for the specified unit.
 /// </summary>
 /// <param name="unit">The unit.</param>
 /// <param name="zero">The scale zero amount.</param>
 public static void DefineScaleZero(Unit unit, Scalar zero)
 => UnitConversionManager.DefineScaleZero(unit, zero);