Time
Represents a time value.
using System;
namespace AngleSharp.Css.Values
{
public struct Time : IEquatable<Time>, IComparable<Time>, IFormattable
{
public enum Unit : ushort
{
Ms,
S
}
public static readonly Time Zero = new Time(0, Unit.S);
private readonly float _value;
private readonly Unit _unit;
public float Value {
get {
if (_unit != Unit.S)
return _value;
return _value * 1000;
}
}
public Unit Type => _unit;
public string UnitString {
get {
switch (_unit) {
case Unit.Ms:
return Units.Ms;
case Unit.S:
return Units.S;
default:
return string.Empty;
}
}
}
public Time(float value, Unit unit)
{
_value = value;
_unit = unit;
}
public static explicit operator float(Time time)
{
return time.Value;
}
public bool Equals(Time other)
{
return Value == other.Value;
}
public int CompareTo(Time other)
{
return Value.CompareTo(other.Value);
}
public override bool Equals(object obj)
{
if (obj is Length)
return Equals((Length)obj);
return false;
}
public override int GetHashCode()
{
return _value.GetHashCode();
}
public override string ToString()
{
return _value.ToString() + UnitString;
}
public string ToString(string format, IFormatProvider formatProvider)
{
return _value.ToString(format, formatProvider) + UnitString;
}
}
}