using System; using System.Globalization; using System.Windows.Data; using DTS.Common.Enums; using DTS.Common.Enums.DASFactory; 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 && values[2] is double preTrigger && values[3] is double postTrigger && values[4] is RecordingModes recordingMode) { if (RecordingModeExtensions.IsAHybridRecorderMode((RecordingModes)values[4]) && values[0] is double d && d == double.MinValue) { return double.NegativeInfinity; } 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(); } } }