Initial Commit

This commit is contained in:
2024-02-23 00:46:06 -05:00
commit 2bbedc0178
470 changed files with 46035 additions and 0 deletions

View File

@@ -0,0 +1,59 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Microsoft.Research.DynamicDataDisplay.Charts
{
public class DefaultDateTimeTicksStrategy : IDateTimeTicksStrategy
{
public virtual DifferenceIn GetDifference(TimeSpan span)
{
span = span.Duration();
DifferenceIn diff;
if (span.Days > 365)
diff = DifferenceIn.Year;
else if (span.Days > 30)
diff = DifferenceIn.Month;
else if (span.Days > 0)
diff = DifferenceIn.Day;
else if (span.Hours > 0)
diff = DifferenceIn.Hour;
else if (span.Minutes > 0)
diff = DifferenceIn.Minute;
else if (span.Seconds > 0)
diff = DifferenceIn.Second;
else
diff = DifferenceIn.Millisecond;
return diff;
}
public virtual bool TryGetLowerDiff(DifferenceIn diff, out DifferenceIn lowerDiff)
{
lowerDiff = diff;
int code = (int)diff;
bool res = code > (int)DifferenceIn.Smallest;
if (res)
{
lowerDiff = (DifferenceIn)(code - 1);
}
return res;
}
public virtual bool TryGetBiggerDiff(DifferenceIn diff, out DifferenceIn biggerDiff)
{
biggerDiff = diff;
int code = (int)diff;
bool res = code < (int)DifferenceIn.Biggest;
if (res)
{
biggerDiff = (DifferenceIn)(code + 1);
}
return res;
}
}
}

View File

@@ -0,0 +1,30 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Microsoft.Research.DynamicDataDisplay.Charts.Axes.DateTime.Strategies
{
public class DelegateDateTimeStrategy : DefaultDateTimeTicksStrategy
{
private readonly Func<TimeSpan, DifferenceIn?> function;
public DelegateDateTimeStrategy(Func<TimeSpan, DifferenceIn?> function)
{
if (function == null)
throw new ArgumentNullException("function");
this.function = function;
}
public override DifferenceIn GetDifference(TimeSpan span)
{
DifferenceIn? customResult = function(span);
DifferenceIn result = customResult.HasValue ?
customResult.Value :
base.GetDifference(span);
return result;
}
}
}

View File

@@ -0,0 +1,67 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Microsoft.Research.DynamicDataDisplay.Charts
{
public class ExtendedDaysStrategy : IDateTimeTicksStrategy
{
private static readonly DifferenceIn[] diffs = new DifferenceIn[] {
DifferenceIn.Year,
DifferenceIn.Day,
DifferenceIn.Hour,
DifferenceIn.Minute,
DifferenceIn.Second,
DifferenceIn.Millisecond
};
public DifferenceIn GetDifference(TimeSpan span)
{
span = span.Duration();
DifferenceIn diff;
if (span.Days > 365)
diff = DifferenceIn.Year;
else if (span.Days > 0)
diff = DifferenceIn.Day;
else if (span.Hours > 0)
diff = DifferenceIn.Hour;
else if (span.Minutes > 0)
diff = DifferenceIn.Minute;
else if (span.Seconds > 0)
diff = DifferenceIn.Second;
else
diff = DifferenceIn.Millisecond;
return diff;
}
public bool TryGetLowerDiff(DifferenceIn diff, out DifferenceIn lowerDiff)
{
lowerDiff = diff;
int index = Array.IndexOf(diffs, diff);
if (index == -1)
return false;
if (index == diffs.Length - 1)
return false;
lowerDiff = diffs[index + 1];
return true;
}
public bool TryGetBiggerDiff(DifferenceIn diff, out DifferenceIn biggerDiff)
{
biggerDiff = diff;
int index = Array.IndexOf(diffs, diff);
if (index == -1 || index == 0)
return false;
biggerDiff = diffs[index - 1];
return true;
}
}
}

View File

@@ -0,0 +1,14 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Microsoft.Research.DynamicDataDisplay.Charts
{
public interface IDateTimeTicksStrategy
{
DifferenceIn GetDifference(TimeSpan span);
bool TryGetLowerDiff(DifferenceIn diff, out DifferenceIn lowerDiff);
bool TryGetBiggerDiff(DifferenceIn diff, out DifferenceIn biggerDiff);
}
}