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); }
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); }
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(); }; }
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); }
private void highToolStripMenuItem_Click(object sender, EventArgs e) { smoothMode = SmoothMode.Heavy; UpdateView(true); }
private void moderateToolStripMenuItem_Click(object sender, EventArgs e) { smoothMode = SmoothMode.Moderate; UpdateView(true); }