/// <summary> /// Returns starttime for this navigatable. Taking snapping into account /// </summary> /// <param name="timeNavigatable"></param> /// <param name="mode">Custom snapping mode to use</param> /// <param name="start">Start time of selected range</param> /// <param name="end">End time of selected range</param> /// <returns>Start time to send to navigatable. This might be a snapped value of <para>start</para></returns> public static DateTime GetStartTime(ITimeNavigatable timeNavigatable, SnappingMode mode, DateTime start, DateTime? end) { //No snapping is easy if (mode == SnappingMode.None) { return start; } IEnumerable<DateTime> dateTimes = timeNavigatable.Times; DateTime? startTime; if (mode == SnappingMode.Interval) { startTime = GetFirstTimeLeftOfValue(dateTimes, start); } else { startTime = GetFirstTimeInRange(dateTimes, start, end); } return startTime != null ? startTime.Value : GetNearestDefinedTime(dateTimes, start); }
/// <summary> /// Returns starttime for this navigatable. Taking snapping into account /// </summary> /// <param name="timeNavigatable"></param> /// <param name="mode">Custom snapping mode to use</param> /// <param name="start">Start time of selected range</param> /// <param name="end">End time of selected range</param> /// <returns>Start time to send to navigatable. This might be a snapped value of <para>start</para></returns> public static DateTime GetStartTime(ITimeNavigatable timeNavigatable, SnappingMode mode, DateTime start, DateTime?end) { //No snapping is easy if (mode == SnappingMode.None) { return(start); } IEnumerable <DateTime> dateTimes = timeNavigatable.Times; DateTime?startTime; if (mode == SnappingMode.Interval) { startTime = GetFirstTimeLeftOfValue(dateTimes, start); } else { startTime = GetFirstTimeInRange(dateTimes, start, end); } return(startTime != null ? startTime.Value : GetNearestDefinedTime(dateTimes, start)); }
/// <summary> /// Returns end for this navigatable. Taking snapping into account /// </summary> /// <param name="timeNavigatable"></param> /// <param name="start">Start time of selected range</param> /// <param name="end">End time of selected range</param> /// <returns>End time to send to navigatable. This might be a snapped value of <para>end</para></returns> public static DateTime GetEndTime(ITimeNavigatable timeNavigatable, DateTime start, DateTime end) { //No snapping is easy if (timeNavigatable.SnappingMode == SnappingMode.None) { return(end); } //snapping stuff IEnumerable <DateTime> dateTimes = timeNavigatable.Times; DateTime?endTime; if (timeNavigatable.SnappingMode == SnappingMode.Interval) { endTime = GetFirstTimeLeftOfValue(dateTimes, end); } else { endTime = GetLastTimeInRange(dateTimes, start, end); } return(endTime != null ? endTime.Value : GetNearestDefinedTime(dateTimes, end)); }
/// <summary> /// Returns end for this navigatable. Taking snapping into account /// </summary> /// <param name="timeNavigatable"></param> /// <param name="start">Start time of selected range</param> /// <param name="end">End time of selected range</param> /// <returns>End time to send to navigatable. This might be a snapped value of <para>end</para></returns> public static DateTime GetEndTime(ITimeNavigatable timeNavigatable, DateTime start, DateTime end) { //No snapping is easy if (timeNavigatable.SnappingMode == SnappingMode.None) { return end; } //snapping stuff IEnumerable<DateTime> dateTimes = timeNavigatable.Times; DateTime? endTime; if (timeNavigatable.SnappingMode == SnappingMode.Interval) { endTime = GetFirstTimeLeftOfValue(dateTimes, end); } else { endTime = GetLastTimeInRange(dateTimes, start, end); } return endTime != null ? endTime.Value : GetNearestDefinedTime(dateTimes, end); }
/// <summary> /// Returns starttime for this navigatable. Taking snapping into account /// </summary> /// <param name="timeNavigatable"></param> /// <param name="start">Start time of selected range</param> /// <param name="end">End time of selected range</param> /// <returns>Start time to send to navigatable. This might be a snapped value of <para>start</para></returns> public static DateTime GetStartTime(ITimeNavigatable timeNavigatable, DateTime start, DateTime? end) { return GetStartTime(timeNavigatable, timeNavigatable.SnappingMode, start, end); }
/// <summary> /// Returns starttime for this navigatable. Taking snapping into account /// </summary> /// <param name="timeNavigatable"></param> /// <param name="start">Start time of selected range</param> /// <param name="end">End time of selected range</param> /// <returns>Start time to send to navigatable. This might be a snapped value of <para>start</para></returns> public static DateTime GetStartTime(ITimeNavigatable timeNavigatable, DateTime start, DateTime?end) { return(GetStartTime(timeNavigatable, timeNavigatable.SnappingMode, start, end)); }