using System; using System.Globalization; using System.Windows.Data; using DTS.Common.Enums; namespace DTS.Common.Converters { public class TestDataToRegionOfInterestMaximumConverter : 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 && values[3] is double postTrigger && values[4] is RecordingModes recordingMode) { switch (recordingMode) { case RecordingModes.CircularBuffer: case RecordingModes.RAMActive: case RecordingModes.MultipleEventRAMActive: case RecordingModes.CircularBufferAndStreamSubSample: case RecordingModes.CircularBufferPlusUART: case RecordingModes.MultipleEventCircularBuffer: case RecordingModes.MultipleEventCircularBufferPlusUART: //maximum is PostTrigger return postTrigger; case RecordingModes.Recorder: case RecordingModes.RecorderPlusUART: case RecordingModes.MultipleEventRecorder: case RecordingModes.MultipleEventRecorderPlusUART: case RecordingModes.HybridRecorder: case RecordingModes.HybridAndStream: case RecordingModes.MultipleEventHybridAndStream: case RecordingModes.MultipleEventHybridRecorder: case RecordingModes.ContinuousRecorder: case RecordingModes.ContinuousRecorderPlusUART: case RecordingModes.RecordOnBoot: case RecordingModes.RecordOnBootPlusUART: case RecordingModes.RecorderAndStreamSubSample: case RecordingModes.MultipleEventRecorderAndStream: // FB16465: maximum is DataEnd. if it's currently unknown, return PostTrigger // FB17991: could also be set to Max instead of unknown, same difference case RecordingModes.Active: case RecordingModes.MultipleEventActive: // FB18333: max holds for Active too. return values[1] is double end ? end < double.MaxValue ? end : postTrigger : postTrigger; } } } return double.PositiveInfinity; } public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture) { throw new NotImplementedException(); } } }