HondaReflashTool/PerfChart.cs

372 lines
10 KiB
C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Windows.Forms;
public class PerfChart : UserControl
{
private const int int_0 = 0x200;
private const int int_1 = 8;
private int int_2;
private int int_3 = 4;
private decimal decimal_0;
private decimal decimal_1;
private int int_4;
private decimal decimal_2;
private Border3DStyle border3DStyle_0 = Border3DStyle.Flat;
private GEnum0 genum0_0;
private GEnum1 genum1_0;
private List<decimal> list_0 = new List<decimal>(0x200);
private Queue<decimal> queue_0 = new Queue<decimal>();
private GClass3 gclass3_0;
private IContainer icontainer_0;
private Timer timer_0;
public PerfChart()
{
this.InitializeComponent();
this.gclass3_0 = new GClass3();
base.SetStyle(ControlStyles.UserPaint, true);
base.SetStyle(ControlStyles.AllPaintingInWmPaint, true);
base.SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
base.SetStyle(ControlStyles.ResizeRedraw, true);
this.Font = SystemInformation.MenuFont;
}
private void InitializeComponent()
{
this.icontainer_0 = new Container();
this.timer_0 = new Timer(this.icontainer_0);
base.SuspendLayout();
this.timer_0.Tick += new EventHandler(this.timer_0_Tick);
base.AutoScaleDimensions = new SizeF(6f, 13f);
base.AutoScaleMode = AutoScaleMode.Font;
base.Name = "PerfChart";
base.Size = new Size(0xeb, 0x57);
base.ResumeLayout(false);
}
public void method_0()
{
this.list_0.Clear();
base.Invalidate();
}
public void method_1(decimal decimal_3)
{
if ((this.genum0_0 == GEnum0.Absolute) && (decimal_3 > 100M))
{
throw new Exception($"Values greater then 100 not allowed in ScaleMode: Absolute ({decimal_3})");
}
GEnum1 enum2 = this.genum1_0;
if (enum2 == GEnum1.Disabled)
{
this.method_3(decimal_3);
base.Invalidate();
}
else
{
if ((enum2 - 1) > GEnum1.SynchronizedAverage)
{
throw new Exception($"Unsupported TimerMode: {this.genum1_0}");
}
this.method_2(decimal_3);
}
}
private void method_10(Graphics graphics_0)
{
Rectangle rect = new Rectangle(0, 0, base.Width, base.Height);
using (Brush brush = new LinearGradientBrush(rect, this.gclass3_0.Color_0, this.gclass3_0.Color_1, LinearGradientMode.Vertical))
{
graphics_0.FillRectangle(brush, rect);
}
if (this.gclass3_0.Boolean_0)
{
for (int i = base.Width - this.int_4; i >= 0; i -= 8)
{
graphics_0.DrawLine(this.gclass3_0.GClass4_0.Pen_0, i, 0, i, base.Height);
}
}
if (this.gclass3_0.Boolean_1)
{
for (int i = 0; i < base.Height; i += 8)
{
graphics_0.DrawLine(this.gclass3_0.GClass4_1.Pen_0, 0, i, base.Width, i);
}
}
}
private void method_11(object sender, EventArgs e)
{
base.Invalidate();
}
private void method_2(decimal decimal_3)
{
this.queue_0.Enqueue(decimal_3);
}
private void method_3(decimal decimal_3)
{
this.list_0.Insert(0, Math.Max(decimal_3, 0M));
if (this.list_0.Count > 0x200)
{
this.list_0.RemoveAt(0x200);
}
this.int_4 += this.int_3;
if (this.int_4 > 8)
{
this.int_4 = this.int_4 % 8;
}
}
private void method_4()
{
if (this.queue_0.Count <= 0)
{
this.method_3(0M);
}
else if (this.genum1_0 == GEnum1.Simple)
{
while (this.queue_0.Count > 0)
{
this.method_3(this.queue_0.Dequeue());
}
}
else if ((this.genum1_0 == GEnum1.SynchronizedAverage) || (this.genum1_0 == GEnum1.SynchronizedSum))
{
decimal num = 0M;
int count = this.queue_0.Count;
while (true)
{
if (this.queue_0.Count <= 0)
{
if (this.genum1_0 == GEnum1.SynchronizedAverage)
{
num = (decimal) (num / count);
}
if (num > 88M)
{
num = (decimal) (num - 10M);
}
if (num < 10M)
{
num = (decimal) (num + 10M);
}
this.method_3(num);
break;
}
num = (decimal) (num + this.queue_0.Dequeue());
}
}
base.Invalidate();
}
private int method_5(decimal decimal_3)
{
decimal num = 0M;
if (this.genum0_0 == GEnum0.Absolute)
{
num = (decimal) ((decimal_3 * base.Height) / 100M);
}
else if (this.genum0_0 == GEnum0.Relative)
{
num = (this.decimal_0 > 0M) ? ((decimal) ((decimal_3 * base.Height) / this.decimal_0)) : 0M;
}
return Convert.ToInt32(Math.Round((decimal) ((base.Height - num) + 6M)));
}
private decimal method_6()
{
decimal num = 0M;
for (int i = 0; i < this.int_2; i++)
{
if (this.list_0[i] > num)
{
num = this.list_0[i];
}
}
return num;
}
private decimal method_7()
{
try
{
return this.list_0[0];
}
catch
{
}
try
{
return this.list_0[1];
}
catch
{
return 0M;
}
}
private void method_8(Graphics graphics_0)
{
this.int_2 = Math.Min(base.Width / this.int_3, this.list_0.Count);
if (this.genum0_0 == GEnum0.Relative)
{
this.decimal_0 = this.method_6();
}
this.decimal_1 = this.method_7();
Point point = new Point(base.Width + this.int_3, base.Height);
Point point2 = new Point();
if ((this.int_2 > 0) && this.gclass3_0.Boolean_2)
{
this.decimal_2 = 0M;
this.method_9(graphics_0);
}
for (int i = 0; i < this.int_2; i++)
{
point2.X = point.X - this.int_3;
point2.Y = this.method_5(this.list_0[i]);
graphics_0.DrawLine(this.gclass3_0.GClass4_3.Pen_0, point, point2);
point = point2;
}
if (this.genum0_0 == GEnum0.Relative)
{
SolidBrush brush = new SolidBrush(this.gclass3_0.GClass4_3.Color_0);
string[] textArray1 = new string[] { "Max: ", this.decimal_0.ToString(), Environment.NewLine, "Current: ", this.decimal_1.ToString() };
graphics_0.DrawString(string.Concat(textArray1), this.Font, brush, (float) 4f, (float) 2f);
}
ControlPaint.DrawBorder3D(graphics_0, 0, 0, base.Width, base.Height, this.border3DStyle_0);
}
private void method_9(Graphics graphics_0)
{
for (int i = 0; i < this.int_2; i++)
{
this.decimal_2 = (decimal) (this.decimal_2 + this.list_0[i]);
}
this.decimal_2 = (decimal) (this.decimal_2 / this.int_2);
int num = this.method_5(this.decimal_2);
graphics_0.DrawLine(this.gclass3_0.GClass4_2.Pen_0, 0, num, base.Width, num);
}
protected override void Dispose(bool disposing)
{
if (disposing && (this.icontainer_0 != null))
{
this.icontainer_0.Dispose();
}
base.Dispose(disposing);
}
protected virtual void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
if (this.gclass3_0.Boolean_3)
{
e.Graphics.SmoothingMode = SmoothingMode.AntiAlias;
}
this.method_10(e.Graphics);
this.method_8(e.Graphics);
}
protected virtual void OnResize(EventArgs e)
{
base.OnResize(e);
base.Invalidate();
}
private void timer_0_Tick(object sender, EventArgs e)
{
if (!base.DesignMode)
{
this.method_4();
}
}
[Description("Appearance and Style"), DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Category("Appearance")]
public GClass3 GClass3_0
{
get
{
return this.gclass3_0;
}
set
{
this.gclass3_0 = value;
}
}
[Description("BorderStyle"), DefaultValue(typeof(Border3DStyle), "Sunken"), Category("Appearance")]
public Border3DStyle Border3DStyle_0
{
get
{
return this.border3DStyle_0;
}
set
{
this.border3DStyle_0 = value;
base.Invalidate();
}
}
public GEnum0 GEnum0_0
{
get
{
return this.genum0_0;
}
set
{
this.genum0_0 = value;
}
}
public GEnum1 GEnum1_0
{
get
{
return this.genum1_0;
}
set
{
if (value == GEnum1.Disabled)
{
if (this.genum1_0 != GEnum1.Disabled)
{
this.genum1_0 = value;
this.timer_0.Stop();
this.method_4();
return;
}
}
else
{
this.genum1_0 = value;
this.timer_0.Start();
}
}
}
public int Int32_0
{
get
{
return this.timer_0.Interval;
}
set
{
if (value < 15)
{
throw new ArgumentOutOfRangeException("TimerInterval", value, "The Timer interval must be greater then 15");
}
this.timer_0.Interval = value;
}
}
}