using System;
using AppConv.General;

namespace AppConv.Units {
	class Angle : DecimalUnitConverterSimple<Angle.Units> {
		internal enum Units {
			Invalid = 0,
			Degree,
			Radian,
			Gradian
		}

		protected override int Precision => 4;

		public Angle() {
			AddUnit(Units.Degree, "deg", "degree", "degrees", "arc degree", "arc degrees", "arcdegree", "arcdegrees", "°");
			AddUnit(Units.Radian, "rad", "radian", "radians");
			AddUnit(Units.Gradian, "grad", "grade", "gon", "gradian", "gradians");

			SetUnitFactor(Units.Radian, (decimal) Math.PI / 180M);
			SetUnitFactor(Units.Gradian, 10M / 9M);

			SetInvalidUnitObject(Units.Invalid);
		}

		// TODO convert degree notation 15°24'9"
	}
}