Beispiel #1
0
        private void UpdateAxesMinMax(bool invalidatePlot)
        {
            if (ComparisonRecords == null || !ComparisonRecords.Any())
            {
                return;
            }

            var xAxis = ComparisonModel.GetAxisOrDefault("xAxis", null);
            var yAxis = ComparisonModel.GetAxisOrDefault("yAxis", null);

            if (xAxis == null || yAxis == null)
            {
                return;
            }

            double xMin = 0;
            double xMax = 0;
            double yMin = 0;
            double yMax = 0;

            double startTime = FirstSeconds;
            double endTime   = _maxRecordingTime - LastSeconds;

            var sessionParallelQuery = ComparisonRecords.Select(record => record.WrappedRecordInfo.Session).AsParallel();

            xMin = sessionParallelQuery.Min(session =>
            {
                return(session.GetFrametimePointsTimeWindow(startTime, endTime).First().X);
            });

            xMax = sessionParallelQuery.Max(session =>
            {
                return(session.GetFrametimePointsTimeWindow(startTime, endTime).Last().X);
            });

            yMin = sessionParallelQuery.Min(session =>
            {
                return(session.GetFrametimePointsTimeWindow(startTime, endTime).Min(pnt => pnt.Y));;
            });

            yMax = sessionParallelQuery.Max(session =>
            {
                return(session.GetFrametimePointsTimeWindow(startTime, endTime).Max(pnt => pnt.Y));
            });

            xAxis.Minimum = xMin;
            xAxis.Maximum = xMax;

            yAxis.Minimum = yMin - (yMax - yMin) / 6;
            yAxis.Maximum = yMax + (yMax - yMin) / 6;

            if (invalidatePlot)
            {
                ComparisonModel.InvalidatePlot(true);
            }
        }
        private void UpdateAxesMinMax()
        {
            if (ComparisonRecords == null || !ComparisonRecords.Any())
            {
                return;
            }

            var xAxis = ComparisonModel.GetAxisOrDefault("xAxis", null);
            var yAxis = ComparisonModel.GetAxisOrDefault("yAxis", null);

            if (xAxis == null || yAxis == null)
            {
                return;
            }

            xAxis.Reset();

            double xMin = 0;
            double xMax = 0;
            double yMin = 0;
            double yMax = 0;

            double startTime = FirstSeconds;
            double endTime   = LastSeconds;

            var sessionParallelQuery = ComparisonRecords.Select(record => record.WrappedRecordInfo.Session).AsParallel();

            xMin = sessionParallelQuery.Min(session =>
            {
                var window = session.GetFrametimePointsTimeWindow(startTime, endTime, _appConfiguration);
                if (window.Any())
                {
                    return(window.First().X);
                }
                else
                {
                    return(double.MaxValue);
                }
            });

            xMax = sessionParallelQuery.Max(session =>
            {
                var window = session.GetFrametimePointsTimeWindow(startTime, endTime, _appConfiguration);
                if (window.Any())
                {
                    return(window.Last().X);
                }
                else
                {
                    return(double.MinValue);
                }
            });

            yMin = sessionParallelQuery.Min(session =>
            {
                var window = session.GetFrametimePointsTimeWindow(startTime, endTime, _appConfiguration);
                if (window.Any())
                {
                    return(window.Min(pnt => pnt.Y));
                }
                else
                {
                    return(double.MaxValue);
                }
            });

            yMax = sessionParallelQuery.Max(session =>
            {
                var window = session.GetFrametimePointsTimeWindow(startTime, endTime, _appConfiguration);
                if (window.Any())
                {
                    return(window.Max(pnt => pnt.Y));
                }
                else
                {
                    return(double.MinValue);
                }
            });

            xAxis.Minimum = xMin;
            xAxis.Maximum = xMax;

            yAxis.Minimum = yMin - (yMax - yMin) / 6;
            yAxis.Maximum = yMax + (yMax - yMin) / 6;

            ComparisonModel.InvalidatePlot(true);
        }