/Main/src/DynamicDataDisplay/Charts/Axes/TimeSpan/TimeSpanToDoubleConversion.cs
C# | 44 lines | 36 code | 8 blank | 0 comment | 0 complexity | 79aecbb8b679a31274ecc9e13dc7c249 MD5 | raw file
Possible License(s): CC-BY-SA-3.0
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
-
- namespace Microsoft.Research.DynamicDataDisplay.Charts
- {
- internal sealed class TimeSpanToDoubleConversion
- {
- public TimeSpanToDoubleConversion(TimeSpan minSpan, TimeSpan maxSpan)
- : this(0, minSpan, 1, maxSpan)
- { }
-
- public TimeSpanToDoubleConversion(double min, TimeSpan minSpan, double max, TimeSpan maxSpan)
- {
- this.min = min;
- this.length = max - min;
- this.ticksMin = minSpan.Ticks;
- this.ticksLength = maxSpan.Ticks - ticksMin;
- }
-
- private double min;
- private double length;
- private long ticksMin;
- private long ticksLength;
-
- internal TimeSpan FromDouble(double d)
- {
- double ratio = (d - min) / length;
- long ticks = (long)(ticksMin + ticksLength * ratio);
-
- ticks = MathHelper.Clamp(ticks, TimeSpan.MinValue.Ticks, TimeSpan.MaxValue.Ticks);
-
- return new TimeSpan(ticks);
- }
-
- internal double ToDouble(TimeSpan span)
- {
- double ratio = (span.Ticks - ticksMin) / (double)ticksLength;
- return min + ratio * length;
- }
- }
-
- }