Files
DynamicDataDisplay/Charts/Axes/DateTime/DateTimeToDoubleConversion.cs
2024-02-23 00:46:06 -05:00

40 lines
942 B
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Microsoft.Research.DynamicDataDisplay.Charts
{
internal sealed class DateTimeToDoubleConversion
{
public DateTimeToDoubleConversion(double min, DateTime minDate, double max, DateTime maxDate)
{
this.min = min;
this.length = max - min;
this.ticksMin = minDate.Ticks;
this.ticksLength = maxDate.Ticks - ticksMin;
}
private double min;
private double length;
private long ticksMin;
private long ticksLength;
internal DateTime FromDouble(double d)
{
double ratio = (d - min) / length;
long tick = (long)(ticksMin + ticksLength * ratio);
tick = MathHelper.Clamp(tick, DateTime.MinValue.Ticks, DateTime.MaxValue.Ticks);
return new DateTime(tick);
}
internal double ToDouble(DateTime dt)
{
double ratio = (dt.Ticks - ticksMin) / (double)ticksLength;
return min + ratio * length;
}
}
}