Files
DP44/Common/DTS.CommonCore/Converters/TestDataToRegionOfInterestMinimumConverter.cs
2026-04-17 14:55:32 -04:00

61 lines
3.1 KiB
C#

using System;
using System.Globalization;
using System.Windows.Data;
using DTS.Common.Enums;
namespace DTS.Common.Converters
{
public class TestDataToRegionOfInterestMinimumConverter : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
//values: DataStart, DataEnd, PreTrigger, PostTrigger, RecordingMode
if (values.Length == 5)
{
if (values[2] is double preTrigger && values[3] is double postTrigger &&
values[4] is RecordingModes recordingMode)
{
switch (recordingMode)
{
case RecordingModes.CircularBuffer:
case RecordingModes.RAMActive:
case RecordingModes.MultipleEventRAMActive:
case RecordingModes.MultipleEventCircularBuffer:
case RecordingModes.CircularBufferPlusUART:
case RecordingModes.MultipleEventCircularBufferPlusUART:
case RecordingModes.CircularBufferAndStreamSubSample:
case RecordingModes.MultipleEventCircularBufferAndStream:
//minimum is -PreTrigger
return -1D * preTrigger;
case RecordingModes.Recorder:
case RecordingModes.RecorderPlusUART:
case RecordingModes.HybridRecorder:
case RecordingModes.HybridAndStream:
case RecordingModes.MultipleEventHybridAndStream:
case RecordingModes.MultipleEventHybridRecorder:
case RecordingModes.MultipleEventRecorder:
case RecordingModes.MultipleEventRecorderPlusUART:
case RecordingModes.ContinuousRecorder:
case RecordingModes.ContinuousRecorderPlusUART:
case RecordingModes.RecordOnBoot:
case RecordingModes.RecordOnBootPlusUART:
case RecordingModes.RecorderAndStreamSubSample:
case RecordingModes.MultipleEventRecorderAndStream:
case RecordingModes.Active:
case RecordingModes.MultipleEventActive:
// FB16465: minimum is DataStart. if it's currently unknown, return -PostTrigger
// FB17991: could also be set to Min instead of unknown, same difference
return values[0] is double recStart ? recStart > double.MinValue ? recStart : -1D * postTrigger : -1D * postTrigger;
}
}
}
return double.NegativeInfinity;
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
}