More Hexeditor Speed optimizatons - don't calculate number of address digits 60 times a second, do it on data size change, add domain name to stringbuilder instead of its own draw method, tighten up drawing area

This commit is contained in:
andres.delikat 2011-08-21 23:34:33 +00:00
parent 680fd8a6e0
commit cdb79b2143
2 changed files with 15 additions and 12 deletions

View File

@ -68,7 +68,7 @@
this.settingsToolStripMenuItem}); this.settingsToolStripMenuItem});
this.menuStrip1.Location = new System.Drawing.Point(0, 0); this.menuStrip1.Location = new System.Drawing.Point(0, 0);
this.menuStrip1.Name = "menuStrip1"; this.menuStrip1.Name = "menuStrip1";
this.menuStrip1.Size = new System.Drawing.Size(558, 24); this.menuStrip1.Size = new System.Drawing.Size(547, 24);
this.menuStrip1.TabIndex = 1; this.menuStrip1.TabIndex = 1;
this.menuStrip1.Text = "menuStrip1"; this.menuStrip1.Text = "menuStrip1";
// //
@ -272,7 +272,7 @@
this.MemoryViewer.ContextMenuStrip = this.ViewerContextMenuStrip; this.MemoryViewer.ContextMenuStrip = this.ViewerContextMenuStrip;
this.MemoryViewer.Location = new System.Drawing.Point(12, 37); this.MemoryViewer.Location = new System.Drawing.Point(12, 37);
this.MemoryViewer.Name = "MemoryViewer"; this.MemoryViewer.Name = "MemoryViewer";
this.MemoryViewer.Size = new System.Drawing.Size(530, 242); this.MemoryViewer.Size = new System.Drawing.Size(519, 230);
this.MemoryViewer.TabIndex = 0; this.MemoryViewer.TabIndex = 0;
this.MemoryViewer.Text = "RAM"; this.MemoryViewer.Text = "RAM";
this.MemoryViewer.Paint += new System.Windows.Forms.PaintEventHandler(this.MemoryViewer_Paint); this.MemoryViewer.Paint += new System.Windows.Forms.PaintEventHandler(this.MemoryViewer_Paint);
@ -282,7 +282,7 @@
// //
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(558, 291); this.ClientSize = new System.Drawing.Size(547, 279);
this.Controls.Add(this.MemoryViewer); this.Controls.Add(this.MemoryViewer);
this.Controls.Add(this.menuStrip1); this.Controls.Add(this.menuStrip1);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));

View File

@ -27,14 +27,15 @@ namespace BizHawk.MultiClient
int DataSize = 1; int DataSize = 1;
public bool BigEndian = false; public bool BigEndian = false;
string Header = ""; string Header = "";
int NumDigits = 4;
char[] nibbles = { 'G', 'G', 'G', 'G' }; //G = off 0-9 & A-F are acceptable values char[] nibbles = { 'G', 'G', 'G', 'G' }; //G = off 0-9 & A-F are acceptable values
int addressHighlighted = -1; int addressHighlighted = -1;
int addressOver = -1; int addressOver = -1;
int addrOffset = 0; //If addresses are > 4 digits, this offset is how much the columns are moved to the right int addrOffset = 0; //If addresses are > 4 digits, this offset is how much the columns are moved to the right
int maxRow = 0; int maxRow = 0;
const int rowX = 12; const int rowX = 1;
const int rowY = 16; const int rowY = 4;
const int rowYoffset = 20; const int rowYoffset = 20;
public bool BlazingFast = false; public bool BlazingFast = false;
@ -61,6 +62,8 @@ namespace BizHawk.MultiClient
this.vScrollBar1.Scroll += new System.Windows.Forms.ScrollEventHandler(this.vScrollBar1_Scroll); this.vScrollBar1.Scroll += new System.Windows.Forms.ScrollEventHandler(this.vScrollBar1_Scroll);
this.Controls.Add(this.vScrollBar1); this.Controls.Add(this.vScrollBar1);
//Debugging control //Debugging control
this.info = new Label(); this.info = new Label();
this.info.Text = ""; this.info.Text = "";
@ -189,7 +192,7 @@ namespace BizHawk.MultiClient
addr = 0; addr = 0;
StringBuilder rowStr = new StringBuilder(""); StringBuilder rowStr = new StringBuilder("");
addrOffset = (GetNumDigits(Domain.Size) % 4) * 9; addrOffset = (NumDigits % 4) * 9;
if (addressHighlighted >= 0 && IsVisible(addressHighlighted)) if (addressHighlighted >= 0 && IsVisible(addressHighlighted))
{ {
@ -200,14 +203,13 @@ namespace BizHawk.MultiClient
e.Graphics.FillRectangle(highlightBrush, rect); e.Graphics.FillRectangle(highlightBrush, rect);
} }
e.Graphics.DrawString(Domain.Name, font, Brushes.Black, new Point(1, 1)); rowStr.Append(Domain.Name + '\n');
//e.Graphics.DrawString(Header, font, Brushes.Black, new Point(rowX + addrOffset, rowY)); rowStr.Append(Header + '\n');
rowStr.Append(Header);
rowStr.Append("\n");
for (int i = 0; i < RowsVisible; i++) for (int i = 0; i < RowsVisible; i++)
{ {
row = i + vScrollBar1.Value; row = i + vScrollBar1.Value;
rowStr.AppendFormat("{0:X" + GetNumDigits(Domain.Size) + "} ", row * 16); rowStr.AppendFormat("{0:X" + NumDigits + "} ", row * 16);
switch (DataSize) switch (DataSize)
{ {
default: default:
@ -319,7 +321,7 @@ namespace BizHawk.MultiClient
public void SetUpScrollBar() public void SetUpScrollBar()
{ {
RowsVisible = ((this.Height - 8) / 13) - 2; RowsVisible = ((this.Height - 8) / 13) - 1;
int totalRows = Domain.Size / 16; int totalRows = Domain.Size / 16;
int MaxRows = (totalRows - RowsVisible) + 16; int MaxRows = (totalRows - RowsVisible) + 16;
@ -377,6 +379,7 @@ namespace BizHawk.MultiClient
Header = " 0 4 8 C"; Header = " 0 4 8 C";
break; break;
} }
NumDigits = GetNumDigits(Domain.Size);
} }
public int GetDataSize() public int GetDataSize()