Esempio n. 1
0
        public Tracker Smooth(SmoothMode smoothMode, Log log)
        {
            log.AddLine("Smoothing Tracker");

            Tracker SmoothTracker = new Tracker(this.Name, this.DrawColor, null, log);

            double RunningValue = 0;
            double RunningTime  = 0;
            int    MergeSize    = (smoothMode == SmoothMode.Moderate ? 4 : 8);

            for (int i = 0; i < this.Samples.Count(); i++)
            {
                if (i % MergeSize == 0)
                {
                    RunningValue = 0;
                    RunningTime  = 0;
                }
                RunningTime  += this.Samples[i].Time;
                RunningValue += this.Samples[i].Value;
                if (i % MergeSize == (MergeSize - 1) || i == (this.Samples.Count() - 1))
                {
                    SmoothTracker.Samples.Add(new Sample(RunningValue / ((i % MergeSize) + 1), RunningTime / ((i % MergeSize) + 1)));
                }
            }

            return(SmoothTracker);
        }
Esempio n. 2
0
        public static byte[] Blend(this byte[] pixels, byte[] blendPixels, SmoothMode smoothMode)
        {
            if (smoothMode == SmoothMode.None || pixels.Length != blendPixels.Length)
            {
                return(blendPixels);
            }

            var percentage = smoothMode == SmoothMode.Low
                ? 0.25
                : (smoothMode == SmoothMode.Medium ? 0.075 : 0.025 /*high*/);

            var blended = new byte[pixels.Length];

            for (var i = 0; i < blended.Length; i++)
            {
                blended[i] = GetIntColor(blendPixels[i] / 255.0 * percentage + pixels[i] / 255.0 * (1 - percentage));
            }

            return(blended);
        }
Esempio n. 3
0
        public MainWindow()
        {
            InitializeComponent();
            log = new Log();
            hardwareMonitors = new Dictionary <string, HardwareMonitor>();
            hardwareMonitors.Add("CPULoad", new CPUHardwareMonitor());
            hardwareMonitors.Add("GPULoad", new GPUHardwareMonitor());
            hardwareMonitors.Add("RAMLoad", new RAMHardwareMonitor());

            this.sampleChart = new SampleChart(plotView1);
            ResetProfiler();
            smoothMode = SmoothMode.None;
            timeUnit   = TimeUnit.Seconds;

            UpdateView();

            viewUpdateTimer          = new Timer();
            viewUpdateTimer.Interval = 1000;
            viewUpdateTimer.Enabled  = true;
            viewUpdateTimer.Tick    += (object o, EventArgs e) => { UpdateView(); };
        }
Esempio n. 4
0
        public void Draw(Profiler profiler, bool showMarkers, SmoothMode smoothMode, TimeUnit timeUnit)
        {
            //Clear and re-add all series:
            this.plotView.Model.Series.Clear();
            foreach (Tracker tracker in profiler.Trackers)
            {
                this.plotView.Model.Series.Add(new LineSeries()
                {
                    Color                 = OxyColor.FromArgb(tracker.DrawColor.A, tracker.DrawColor.R, tracker.DrawColor.G, tracker.DrawColor.B),
                    MarkerType            = MarkerType.None,
                    MarkerSize            = 3,
                    MarkerStroke          = OxyColor.FromArgb(tracker.DrawColor.A, tracker.DrawColor.R, tracker.DrawColor.G, tracker.DrawColor.B),
                    MarkerStrokeThickness = 1.5,
                    Title                 = tracker.Name,
                });
            }

            //For every tracker in the profiler...
            for (var tracker_i = 0; tracker_i < profiler.Trackers.Count(); tracker_i++)
            {
                LineSeries lineSeries = (LineSeries)this.plotView.Model.Series[tracker_i];
                lineSeries.Points.Clear();
                Tracker tracker = profiler.Trackers[tracker_i];

                double runningValue = 0;
                double runningTime  = 0;
                int    mergeSize    = smoothMode == SmoothMode.None ? 1 : smoothMode == SmoothMode.Moderate ? 4 : 8;

                for (int i = 0; i < tracker.Samples.Count(); i++)
                {
                    if (i % mergeSize == 0)
                    {
                        runningValue = 0;
                        runningTime  = 0;
                    }

                    runningValue += tracker.Samples[i].Value;
                    runningTime  += tracker.Samples[i].Time;
                    if (i % mergeSize == (mergeSize - 1) || i == (tracker.Samples.Count() - 1))
                    {
                        lineSeries.Points.Add(new DataPoint((runningTime / ((i % mergeSize) + 1)) / TimeUnitDivisor(timeUnit), runningValue / ((i % mergeSize) + 1)));
                    }
                }
            }

            //Markers...
            this.plotView.Model.Annotations.Clear();
            if (showMarkers)
            {
                int i = 90;
                foreach (Marker marker in profiler.Markers)
                {
                    i -= 10;
                    if (i < 10)
                    {
                        i = 90;
                    }
                    this.plotView.Model.Annotations.Add(new LineAnnotation()
                    {
                        StrokeThickness = 1,
                        Color           = OxyColors.Green,
                        Type            = LineAnnotationType.Vertical,
                        Font            = "Segoe",
                        LineStyle       = LineStyle.LongDash,
                        FontSize        = 10,
                        Text            = marker.Name + " (" + Math.Round(marker.Time / 1000, 2).ToString() + " s)",
                        TextColor       = OxyColors.Black,
                        X                       = marker.Time / TimeUnitDivisor(timeUnit),
                        TextPosition            = new DataPoint(marker.Time / TimeUnitDivisor(timeUnit), i),
                        TextHorizontalAlignment = HorizontalAlignment.Left
                    });
                }
            }

            this.plotView.Model.InvalidatePlot(true);
            ((IPlotModel)this.plotView.Model).Update(true);
        }
Esempio n. 5
0
 private void highToolStripMenuItem_Click(object sender, EventArgs e)
 {
     smoothMode = SmoothMode.Heavy;
     UpdateView(true);
 }
Esempio n. 6
0
 private void moderateToolStripMenuItem_Click(object sender, EventArgs e)
 {
     smoothMode = SmoothMode.Moderate;
     UpdateView(true);
 }