BMTuneSource/frmAdvancedGraph.cs

686 lines
27 KiB
C#

using System;
using System.ComponentModel;
using System.Diagnostics;
using System.IO;
using System.Collections.Generic;
using System.ComponentModel;
using System.Reflection;
using System.Windows.Forms;
using System.Drawing;
using System.Drawing.Drawing2D;
internal class frmAdvancedGraph : Form
{
//private BackgroundWorker backgroundWorker_0 = new BackgroundWorker();
private FrmMain frmMain_0;
private IContainer icontainer_0;
public Graphics graphics_0;
private Brush brush_0;
public ctrlAdvTable ctrlAdvTable_0;
private Class18 class18_0;
private Class10_settings class10_settings_0;
private double double_0;
private double double_1;
private int TopOffset = 30;
private int BottomOffset = 50;
private int LeftOffset = 40;
private int RightOffset = 20;
private int TWidht = 0;
private int THeight = 0;
private int MaxColumns = 0;
private int MaxRows = 0;
private double MaxValueY = 0;
private double MaxValueX = 0;
private double MinValueY = 0;
private double MinValueX = 0;
//private bool bool_1 = false;
//private bool bool_4 = false;
//private bool bool_2 = false;
//private bool SingleChange = false;
private bool IsSelected = false;
//private bool Dragging = false;
private int RowSelected = 0;
private int ColumnSelected = 0;
private Point point_0;
private Point point_1;
private Point point_2;
private Rectangle rectangle_0;
private List<double> TitleList = new List<double>();
private List<double[]> ValuesList = new List<double[]>();
private List<int[]> Xposs = new List<int[]>();
private List<int[]> Yposs = new List<int[]>();
private List<bool[]> EditingList = new List<bool[]>();
private bool EditMain = false;
private List<int> Xposs2 = new List<int>();
private List<int> Yposs2 = new List<int>();
private List<bool> EditingList2 = new List<bool>();
public frmAdvancedGraph(ref Class18 class18_1, ref ctrlAdvTable ctrlAdvTable_1)
{
this.InitializeComponent();
class18_0 = class18_1;
class10_settings_0 = this.class18_0.class10_settings_0;
ctrlAdvTable_0 = ctrlAdvTable_1;
foreach (Control control in base.Controls)
{
float emSize = control.Font.Size * (class18_0.class10_settings_0.scaleRate / 100f);
control.Font = new Font(control.Font.Name, emSize, control.Font.Style, control.Font.Unit);
}
//this.backgroundWorker_0.DoWork += new DoWorkEventHandler(this.backgroundWorker_0_DoWork);
}
/*private void backgroundWorker_0_DoWork(object sender, DoWorkEventArgs e)
{
while (this.bool_2)
{
int x;
int num2;
int y;
int num4;
int num5;
int num6;
MouseEventArgs argument = (MouseEventArgs)e.Argument;
if (argument.X > this.point_0.X)
{
x = argument.X;
num2 = this.point_0.X;
num5 = this.point_0.X;
}
else
{
x = this.point_0.X;
num2 = argument.X;
num5 = argument.X;
}
if (argument.Y > this.point_0.Y)
{
y = argument.Y;
num4 = this.point_0.Y;
num6 = this.point_0.Y;
}
else
{
y = this.point_0.Y;
num4 = argument.Y;
num6 = argument.Y;
}
this.rectangle_0 = new Rectangle(num5, num6, x - num2, y - num4);
this.bool_2 = true;
for (int i = 0; i < MaxRows; i++)
{
for (int j = 0; j < MaxColumns; j++)
{
try
{
if (this.rectangle_0.Contains(this.Xposs[i][j], this.Yposs[i][j]))
{
this.EditingList[i][j] = true;
this.ctrlAdvTable_0.grid.ClearSelection();
this.ctrlAdvTable_0.grid[i, j].Selected = true;
base.Invalidate(false);
base.Update();
return;
}
}
catch { }
}
}
this.Invalidate();
}
}*/
protected override void Dispose(bool disposing)
{
if (disposing && (this.icontainer_0 != null))
{
this.icontainer_0.Dispose();
}
base.Dispose(disposing);
}
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(frmAdvancedGraph));
this.SuspendLayout();
//
// frmAdvancedGraph
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 14F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(528, 430);
this.Font = new System.Drawing.Font("Lucida Sans", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.MaximizeBox = false;
this.Name = "frmAdvancedGraph";
this.Padding = new System.Windows.Forms.Padding(10);
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
this.Text = "Advanced Table Graph";
this.TopMost = true;
this.Load += new System.EventHandler(this.frmAboutBox_Load);
this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.frmAdvancedGraph_MouseDown);
this.MouseEnter += new System.EventHandler(this.frmAdvancedGraph_MouseEnter);
this.MouseLeave += new System.EventHandler(this.frmAdvancedGraph_MouseLeave);
this.MouseHover += new System.EventHandler(this.frmAdvancedGraph_MouseHover);
this.MouseMove += new System.Windows.Forms.MouseEventHandler(this.frmAdvancedGraph_MouseMove);
this.MouseUp += new System.Windows.Forms.MouseEventHandler(this.frmAdvancedGraph_MouseUp);
this.Resize += new System.EventHandler(this.frmAdvancedGraph_Resize);
this.ResumeLayout(false);
}
private void frmAboutBox_Load(object sender, EventArgs e)
{
}
protected override void OnPaint(PaintEventArgs pe)
{
this.graphics_0 = pe.Graphics;
this.graphics_0.SmoothingMode = SmoothingMode.None;
//Rectangle ThisRec = new Rectangle(pe.ClipRectangle.X, pe.ClipRectangle.Y, pe.ClipRectangle.Width, pe.ClipRectangle.Height);
//this.graphics_0.DrawImage(ThisI, ThisRec);
Pen pen = new Pen(this.class10_settings_0.color_11);
Pen pen2 = new Pen(this.class10_settings_0.color_14, 1f);
this.brush_0 = new SolidBrush(this.class10_settings_0.color_3);
TWidht = base.ClientRectangle.Width - LeftOffset - RightOffset;
THeight = base.ClientRectangle.Height - TopOffset - BottomOffset;
this.graphics_0.FillRectangle(this.brush_0, 0, 0, base.ClientRectangle.Width, base.ClientRectangle.Height);
this.graphics_0.DrawLine(pen, LeftOffset, base.ClientRectangle.Top + TopOffset, LeftOffset, base.ClientRectangle.Bottom - BottomOffset); //left
this.graphics_0.DrawLine(pen, LeftOffset, base.ClientRectangle.Bottom - BottomOffset, base.ClientRectangle.Width - RightOffset, base.ClientRectangle.Bottom - BottomOffset); //down
this.graphics_0.DrawLine(pen, base.ClientRectangle.Width - RightOffset, base.ClientRectangle.Top + TopOffset, base.ClientRectangle.Width - RightOffset, base.ClientRectangle.Bottom - BottomOffset); //right
this.graphics_0.DrawLine(pen, LeftOffset, base.ClientRectangle.Top + TopOffset, base.ClientRectangle.Width - RightOffset, base.ClientRectangle.Top + TopOffset); //top
string str = "";
SolidBrush brush2 = new SolidBrush(this.class10_settings_0.color_12);
MaxColumns = ctrlAdvTable_0.method_3();
MaxRows = ctrlAdvTable_0.method_5();
//if (!this.Dragging && !this.SingleChange && !this.IsSelected)
if (!this.IsSelected)
{
TitleList.Clear();
ValuesList.Clear();
this.Xposs.Clear();
this.Yposs.Clear();
this.EditingList.Clear();
this.Xposs2.Clear();
this.Yposs2.Clear();
this.EditingList2.Clear();
//Get values and max/min values
for (int i = 0; i < MaxRows; i++)
{
//add to list
double[] NewD = new double[MaxColumns];
for (int i2 = 0; i2 < MaxColumns; i2++)
{
//Calculate max Y (first rows only)
if (i == 0)
{
double ThisV = double.Parse(ctrlAdvTable_0.grid.Rows[i].Cells[i2].Value.ToString());
if (i2 == 0)
{
MaxValueY = ThisV;
MinValueY = ThisV;
}
if (ThisV > MaxValueY) MaxValueY = ThisV;
if (ThisV < MinValueY) MinValueY = ThisV;
TitleList.Add(double.Parse(ctrlAdvTable_0.grid.Rows[i].Cells[i2].Value.ToString()));
}
else
{
double ThisV = double.Parse(ctrlAdvTable_0.grid.Rows[i].Cells[i2].Value.ToString());
if (i == 1 && i2 == 0)
{
MaxValueX = ThisV;
MinValueX = ThisV;
}
if (ThisV > MaxValueX) MaxValueX = ThisV;
if (ThisV < MinValueX) MinValueX = ThisV;
NewD[i2] = double.Parse(ctrlAdvTable_0.grid.Rows[i].Cells[i2].Value.ToString());
}
}
//add to list
if (i != 0) ValuesList.Add(NewD);
}
}
//Console.WriteLine(MaxValueX);
//Console.WriteLine(MinValueX);
//Spawn Graph
Font font = new Font("Lucida Sans", 12f, FontStyle.Bold);
str = this.ctrlAdvTable_0.method_24().ToString();
this.graphics_0.DrawString(str, font, brush2, LeftOffset + (TWidht / 2) - (this.graphics_0.MeasureString(str, font).Width / 2f), base.ClientRectangle.Bottom - 20);
font = new Font("Lucida Sans", 8f, FontStyle.Regular);
for (int i = 0; i < MaxColumns; i++)
{
double ThisVal = TitleList[i];
double Ypercent = (((ThisVal - MinValueY) * 100) / (MaxValueY - MinValueY)) / 100;
str = ThisVal.ToString();
int YPos = (int)(LeftOffset + (Ypercent * TWidht));
this.graphics_0.DrawString(str, font, brush2, YPos - (this.graphics_0.MeasureString(str, font).Width / 2f), base.ClientRectangle.Bottom - BottomOffset + 4);
if (this.IsSelected && this.EditingList2[i] == true) pen = new Pen(Color.FromArgb(0, 0, 200));
else pen = new Pen(this.class10_settings_0.color_11);
this.graphics_0.DrawLine(pen, YPos, base.ClientRectangle.Bottom - BottomOffset + 20, YPos, base.ClientRectangle.Bottom - BottomOffset + 30);
if (this.IsSelected && EditMain && ColumnSelected == i)
{
pen = new Pen(this.class10_settings_0.color_11, 2f);
this.graphics_0.DrawLine(pen, this.point_1.X, base.ClientRectangle.Bottom - BottomOffset + 20, this.point_1.X, base.ClientRectangle.Bottom - BottomOffset + 32);
}
//if (!this.Dragging && !this.SingleChange && !this.IsSelected)
if (!this.IsSelected)
{
Xposs2.Add(YPos);
Yposs2.Add(base.ClientRectangle.Bottom - BottomOffset + 20);
EditingList2.Add(false);
}
//pen = new Pen(this.class10_0.color_11);
if (i != 0 && i != MaxColumns - 1) this.graphics_0.DrawLine(pen2, YPos, base.ClientRectangle.Bottom - BottomOffset, YPos, base.ClientRectangle.Top + TopOffset); //down
}
for (int i = 0; i < MaxRows - 1; i++)
{
int XLast = 0;
int YLast = 0;
int XLastEdit = 0;
int YLastEdit = 0;
//pen = new Pen(Color.FromArgb(200 - (i * 50), 255, 200 - (i * 50)));
//this.brush_0 = new SolidBrush(Color.FromArgb(200 - (i * 50), 255, 200 - (i * 50)));
//if (!this.Dragging && !this.SingleChange && !this.IsSelected)
if (!this.IsSelected)
{
this.Xposs.Add(new int[MaxColumns]);
this.Yposs.Add(new int[MaxColumns]);
this.EditingList.Add(new bool[MaxColumns]);
}
for (int i2 = 0; i2 < MaxColumns; i2++)
{
double Thistitle = TitleList[i2];
double ThisVal = ValuesList[i][i2];
str = ThisVal.ToString();
double Ypercent = 0;
double Xpercent = 0;
if (MinValueY != MaxValueY) Ypercent = (((Thistitle - MinValueY) * 100) / (MaxValueY - MinValueY)) / 100;
if (MinValueX != MaxValueX) Xpercent = (((ThisVal - MinValueX) * 100) / (MaxValueX - MinValueX)) / 100;
if (Ypercent < 0) Ypercent = 0;
if (Ypercent > 1) Ypercent = 1;
if (Xpercent < 0) Xpercent = 0;
if (Xpercent > 1) Xpercent = 1;
int YPos = (int)(LeftOffset + 2 + (Ypercent * (TWidht - 2)));
int Xpos = (int)(BottomOffset + (Xpercent * (THeight)));
pen = new Pen(Color.FromArgb(200 - (i * 50), 255, 200 - (i * 50)));
//if ((this.Dragging || this.SingleChange || this.IsSelected) && this.EditingList[i][i2] == true) this.brush_0 = new SolidBrush(Color.FromArgb(0, 0, 200));
if (this.IsSelected && this.EditingList[i][i2] == true) this.brush_0 = new SolidBrush(Color.FromArgb(0, 0, 200));
else this.brush_0 = new SolidBrush(Color.FromArgb(200 - (i * 50), 255, 200 - (i * 50)));
//line from last spot to current
if (i2 != 0) this.graphics_0.DrawLine(pen, YLast, base.ClientRectangle.Bottom - XLast, YPos, base.ClientRectangle.Bottom - Xpos);
if (i2 != 0 && !EditMain)
{
if (IsSelected && ((RowSelected == i && ColumnSelected == i2) || (RowSelected == i && ColumnSelected == i2-1)))
{
pen = new Pen(this.class10_settings_0.color_11, 2f);
pen.DashStyle = DashStyle.Dash;
if (RowSelected == i && ColumnSelected == i2)
{
this.graphics_0.DrawLine(pen, YLast, base.ClientRectangle.Bottom - XLast, YPos, this.point_1.Y);
XLastEdit = YPos;
YLastEdit = this.point_1.Y;
}
if (RowSelected == i && ColumnSelected == i2 - 1)
{
this.graphics_0.DrawLine(pen, XLastEdit, YLastEdit, YPos, base.ClientRectangle.Bottom - Xpos);
}
}
}
//draw square at current position
this.graphics_0.FillRectangle(this.brush_0, YPos - 3, base.ClientRectangle.Bottom - Xpos - 3, 6, 6);
//if (!this.Dragging && !this.SingleChange && !this.IsSelected)
if (!this.IsSelected)
{
this.Xposs[i][i2] = YPos;
this.Yposs[i][i2] = base.ClientRectangle.Bottom - Xpos;
this.EditingList[i][i2] = false;
}
brush2 = new SolidBrush(this.class10_settings_0.color_13);
this.graphics_0.DrawString(str, font, brush2, 5, base.ClientRectangle.Bottom - Xpos - 8);
XLast = Xpos;
YLast = YPos;
}
}
if (this.IsSelected)
{
this.method_12(Math.Round(this.double_1, 2).ToString() + "(" + Math.Round(this.double_0, 0).ToString() + "%)", (float)this.point_1.X, (float)this.point_1.Y, this.double_0 > 0.0);
}
}
private void method_12(string string_0, float float_28, float float_29, bool bool_5)
{
if (bool_5) this.graphics_0.FillRectangle(new SolidBrush(Color.FromArgb(20, 190, 20)), (float)(float_28 - 5f), (float)(float_29 - 20f), (float)55f, (float)15f);
else this.graphics_0.FillRectangle(new SolidBrush(Color.FromArgb(215, 120, 120)), (float)(float_28 - 5f), (float)(float_29 - 20f), (float)55f, (float)15f);
this.graphics_0.DrawString(string_0, new Font("Lucida Sans", 7f, FontStyle.Regular), new SolidBrush(this.class10_settings_0.color_11), (float)(float_28 - 5f), (float)(float_29 - 20f));
}
private void frmAdvancedGraph_Resize(object sender, EventArgs e)
{
if (base.WindowState == FormWindowState.Normal)
{
//this.Invalidate();
this.Refresh();
}
}
private void frmAdvancedGraph_MouseEnter(object sender, EventArgs e)
{
this.Cursor = Cursors.Cross;
}
private void frmAdvancedGraph_MouseHover(object sender, EventArgs e)
{
base.Focus();
}
private void frmAdvancedGraph_MouseLeave(object sender, EventArgs e)
{
this.Cursor = Cursors.Default;
}
private void frmAdvancedGraph_MouseMove(object sender, MouseEventArgs e)
{
if (IsSelected)
{
this.point_1.X = e.X;
this.point_1.Y = e.Y;
if (!EditMain)
{
this.double_0 = ((float)(base.ClientRectangle.Bottom - BottomOffset - e.Y) / (float)(this.THeight)) * 100.0;
this.double_1 = MinValueX + ((this.double_0 * (MaxValueX - MinValueX)) / 100);
}
else
{
this.double_0 = ((float)(base.ClientRectangle.Width - RightOffset - e.X) / (float)(this.TWidht)) * 100.0;
this.double_1 = MaxValueY + ((this.double_0 * (MinValueY - MaxValueY)) / 100);
}
base.Invalidate();
}
//try
//{
/*this.point_1.X = e.X;
this.point_1.Y = e.Y;
if (this.SingleChange)
{
this.double_0 = -((float)(e.Y - this.point_0.Y) / (float)(this.THeight - this.point_0.Y)) * 100.0;
base.Invalidate();
}
else if (this.Dragging && !this.SingleChange)
{
int x;
int num5;
int y;
int num7;
int num8;
int num9;
MouseEventArgs args = e;
if (args.X > this.point_0.X)
{
x = args.X;
num5 = this.point_0.X;
num8 = this.point_0.X;
}
else
{
x = this.point_0.X;
num5 = args.X;
num8 = args.X;
}
if (args.Y > this.point_0.Y)
{
y = args.Y;
num7 = this.point_0.Y;
num9 = this.point_0.Y;
}
else
{
y = this.point_0.Y;
num7 = args.Y;
num9 = args.Y;
}
this.rectangle_0 = new Rectangle(num8, num9, x - num5, y - num7);
this.bool_2 = true;
for (int i = 0; i < MaxRows-1; i++)
{
for (int j = 0; j < MaxColumns; j++)
{
//Refresh
if (this.rectangle_0.Contains(this.Xposs[i][j], this.Yposs[i][j]))
{
if (!this.EditingList[i][j])
{
this.EditingList[i][j] = true;
//method15 replacement
this.ctrlAdvTable_0.grid.ClearSelection();
this.ctrlAdvTable_0.grid[j, i+1].Selected = true;
}
}
else
{
this.EditingList[i][j] = false;
this.ctrlAdvTable_0.grid[j, i+1].Selected = false;
}
}
}
this.Refresh();
}
else
{
for (int k = 0; k < MaxRows - 1; k++)
{
for (int m = 0; m < MaxColumns; m++)
{
Rectangle rectangle = new Rectangle((this.Xposs[k][m]) - 4, (this.Yposs[k][m]) - 4, 8, 8);
Point p = new Point(Control.MousePosition.X, Control.MousePosition.Y);
p = base.PointToClient(p);
if (rectangle.Contains(p.X, p.Y) && this.EditingList[k][m])
{
if (!this.bool_1)
{
this.bool_1 = true;
base.Invalidate();
}
break;
}
this.bool_1 = false;
}
//base.Invalidate();
}
}
this.point_2.X = e.X;
this.point_2.Y = e.Y;*/
//}
//catch { }
}
private void frmAdvancedGraph_MouseDown(object sender, MouseEventArgs e)
{
this.point_0.X = e.X;
this.point_0.Y = e.Y;
this.point_1.Y = e.Y;
this.point_1.X = e.X;
IsSelected = false;
if (e.Button == MouseButtons.Left)
{
for (int i = 0; i < MaxRows - 1; i++)
{
for (int j = 0; j < MaxColumns; j++)
{
Rectangle rectangle = new Rectangle(this.Xposs[i][j] - 4, this.Yposs[i][j] - 4, 8, 8);
Point p = new Point(Control.MousePosition.X, Control.MousePosition.Y);
p = base.PointToClient(p);
if (rectangle.Contains(p.X, p.Y) && !this.EditingList[i][j])
{
RowSelected = i;
ColumnSelected = j;
EditMain = false;
this.ctrlAdvTable_0.grid.ClearSelection();
IsSelected = true;
this.EditingList[i][j] = true;
this.ctrlAdvTable_0.grid[j, i + 1].Selected = true;
this.Refresh();
return;
}
//if (!rectangle.Contains(p.X, p.Y) && this.EditingList[i][j]) this.EditingList[i][j] = false;
//if (rectangle.Contains(p.X, p.Y) && this.EditingList[i][j]) this.SingleChange = true;
//else this.Dragging = true;
}
}
for (int j = 0; j < MaxColumns; j++)
{
Rectangle rectangle = new Rectangle(this.Xposs2[j] - 1, this.Yposs2[j] - 1, 3, 12);
Point p = new Point(Control.MousePosition.X, Control.MousePosition.Y);
p = base.PointToClient(p);
if (rectangle.Contains(p.X, p.Y) && !this.EditingList2[j])
{
ColumnSelected = j;
EditMain = true;
this.ctrlAdvTable_0.grid.ClearSelection();
IsSelected = true;
this.EditingList2[j] = true;
this.ctrlAdvTable_0.grid[j, 0].Selected = true;
this.Refresh();
return;
}
}
}
}
private void frmAdvancedGraph_MouseUp(object sender, MouseEventArgs e)
{
//this.Dragging = false;
this.Refresh();
if (this.IsSelected)
{
this.class18_0.method_155("ADV Table : " + this.class18_0.method_4().ToString() + " graph adjustments");
try
{
if (!EditMain) this.ctrlAdvTable_0.grid[ColumnSelected, RowSelected + 1].Value = this.double_1;
else this.ctrlAdvTable_0.grid[ColumnSelected, 0].Value = this.double_1;
}
catch { }
//foreach (Class7_u class2 in this.list_0)
//{
// try
// {
//float num = this.class18_0.method_174((byte)class2.method_0(), (byte)class2.method_2());
//this.class18_0.method_176((byte)class2.method_0(), (byte)class2.method_2(), num + (num * ((float)(Math.Round(this.double_0, 0) / 100.0))));
//this.ctrlGrid_0.method_34(class2.method_0(), class2.method_2());
// }
// catch (Exception exception)
// {
// throw exception;
// }
//}
this.class18_0.method_153();
this.IsSelected = false;
this.Refresh();
}
}
/*private void frmAdvancedGraph_KeyUp(object sender, KeyEventArgs e)
{
this.bool_4 = e.Control;
}
private void frmAdvancedGraph_KeyDown(object sender, KeyEventArgs e)
{
this.bool_4 = e.Control;
if (((e.KeyCode == Keys.Up) && e.Control))
{
//this.frmGridChart_0.toolIncrease_Click(null, null);
e.SuppressKeyPress = true;
e.Handled = true;
}
else if (((e.KeyCode == Keys.Down) && e.Control))
{
//this.frmGridChart_0.toolDecrease_Click(null, null);
e.SuppressKeyPress = true;
e.Handled = true;
}
else if (e.KeyCode == Keys.Escape)
{
this.SingleChange = false;
}
else
{
e.Handled = false;
}
}
private void frmAdvancedGraph_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
{
if (e.KeyCode == Keys.Escape)
{
this.Dragging = false;
this.SingleChange = false;
base.Invalidate();
}
}*/
}