TAStudio - anchor icons on frames with savestates, proof of concept. InputRoll - add offsetx,y values to queryItemIcon and queryItemText, also support ability to draw icons and text in the same cell

This commit is contained in:
adelikat 2015-08-24 18:30:45 -04:00
parent 109ee3981b
commit 2a1c9e8602
8 changed files with 62 additions and 24 deletions

View File

@ -1639,6 +1639,7 @@
<None Include="config\ControllerImages\GENController.png" /> <None Include="config\ControllerImages\GENController.png" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="images\tastudio\anchor.png" />
<None Include="Resources\HawkInLove.png" /> <None Include="Resources\HawkInLove.png" />
<None Include="images\Circle.png" /> <None Include="images\Circle.png" />
<None Include="images\Cross.png" /> <None Include="images\Cross.png" />

View File

@ -1,7 +1,7 @@
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// <auto-generated> // <auto-generated>
// This code was generated by a tool. // This code was generated by a tool.
// Runtime Version:4.0.30319.0 // Runtime Version:4.0.30319.42000
// //
// Changes to this file may cause incorrect behavior and will be lost if // Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated. // the code is regenerated.
@ -100,6 +100,16 @@ namespace BizHawk.Client.EmuHawk.Properties {
} }
} }
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap anchor {
get {
object obj = ResourceManager.GetObject("anchor", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary> /// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap. /// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary> /// </summary>

View File

@ -1497,4 +1497,7 @@
<data name="BlankCursor" type="System.Resources.ResXFileRef, System.Windows.Forms"> <data name="BlankCursor" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\images\BlankCursor.cur;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>..\images\BlankCursor.cur;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data> </data>
<data name="anchor" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\images\tastudio\anchor.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
</root> </root>

Binary file not shown.

After

Width:  |  Height:  |  Size: 233 B

View File

@ -73,7 +73,7 @@ namespace BizHawk.Client.EmuHawk
private int CurrentBranch = -1; private int CurrentBranch = -1;
private void QueryItemText(int index, InputRoll.RollColumn column, out string text) private void QueryItemText(int index, InputRoll.RollColumn column, out string text, ref int offsetX, ref int offsetY)
{ {
text = string.Empty; text = string.Empty;

View File

@ -366,7 +366,7 @@ namespace BizHawk.Client.EmuHawk
/// <summary> /// <summary>
/// Retrieve the text for a cell /// Retrieve the text for a cell
/// </summary> /// </summary>
public delegate void QueryItemTextHandler(int index, RollColumn column, out string text); public delegate void QueryItemTextHandler(int index, RollColumn column, out string text, ref int offsetX, ref int offsetY);
/// <summary> /// <summary>
/// Retrieve the background color for a cell /// Retrieve the background color for a cell
@ -377,7 +377,7 @@ namespace BizHawk.Client.EmuHawk
/// <summary> /// <summary>
/// Retrive the image for a given cell /// Retrive the image for a given cell
/// </summary> /// </summary>
public delegate void QueryItemIconHandler(int index, RollColumn column, ref Bitmap icon); public delegate void QueryItemIconHandler(int index, RollColumn column, ref Bitmap icon, ref int offsetX, ref int offsetY);
/// <summary> /// <summary>
/// SuuperW: Check if a given frame is a lag frame /// SuuperW: Check if a given frame is a lag frame
@ -979,9 +979,11 @@ namespace BizHawk.Client.EmuHawk
if (DraggingCell != null) if (DraggingCell != null)
{ {
var text = ""; var text = "";
int offsetX = 0;
int offsetY = 0;
if (QueryItemText != null) if (QueryItemText != null)
{ {
QueryItemText(DraggingCell.RowIndex.Value, DraggingCell.Column, out text); QueryItemText(DraggingCell.RowIndex.Value, DraggingCell.Column, out text, ref offsetX, ref offsetY);
} }
Color bgColor = this.BackColor; Color bgColor = this.BackColor;
@ -999,7 +1001,7 @@ namespace BizHawk.Client.EmuHawk
Gdi.SetBrush(bgColor); Gdi.SetBrush(bgColor);
Gdi.FillRectangle(x1, y1, x2 - x1, y2 - y1); Gdi.FillRectangle(x1, y1, x2 - x1, y2 - y1);
Gdi.PrepDrawString(this.NormalFont, this.ForeColor); Gdi.PrepDrawString(this.NormalFont, this.ForeColor);
Gdi.DrawString(text, new Point(x1 + CellWidthPadding, y1 + CellHeightPadding)); Gdi.DrawString(text, new Point(x1 + CellWidthPadding + offsetX, y1 + CellHeightPadding + offsetY));
} }
} }
@ -1079,25 +1081,31 @@ namespace BizHawk.Client.EmuHawk
Bitmap image = null; Bitmap image = null;
int x = 0; int x = 0;
int y = 0; int y = 0;
int bitmapOffsetX = 0;
int bitmapOffsetY = 0;
if (QueryItemIcon != null) if (QueryItemIcon != null)
QueryItemIcon(f + startRow, columns[j], ref image); {
QueryItemIcon(f + startRow, columns[j], ref image, ref bitmapOffsetX, ref bitmapOffsetY);
}
if (image != null) if (image != null)
{ {
x = RowsToPixels(i) + CellWidthPadding; x = RowsToPixels(i) + CellWidthPadding + bitmapOffsetX;
y = (j * CellHeight) + (CellHeightPadding * 2); y = (j * CellHeight) + (CellHeightPadding * 2) + bitmapOffsetY;
Gdi.DrawBitmap(image, new Point(x, y), true); Gdi.DrawBitmap(image, new Point(x, y), true);
} }
else //else
{ //{
string text; string text;
QueryItemText(f + startRow, columns[j], out text); int strOffsetX = 0;
int strOffsetY = 0;
QueryItemText(f + startRow, columns[j], out text, ref strOffsetX, ref strOffsetY);
// Center Text // Center Text
x = RowsToPixels(i) + (CellWidth - text.Length * _charSize.Width) / 2; x = RowsToPixels(i) + (CellWidth - text.Length * _charSize.Width) / 2;
y = (j * CellHeight) + CellHeightPadding - VBar.Value; y = (j * CellHeight) + CellHeightPadding - VBar.Value;
var point = new Point(x, y); var point = new Point(x + strOffsetX, y + strOffsetY);
var rePrep = false; var rePrep = false;
if (SelectedItems.Contains(new Cell { Column = columns[j], RowIndex = i + startRow })) if (SelectedItems.Contains(new Cell { Column = columns[j], RowIndex = i + startRow }))
@ -1116,7 +1124,7 @@ namespace BizHawk.Client.EmuHawk
{ {
Gdi.PrepDrawString(this.NormalFont, this.ForeColor); Gdi.PrepDrawString(this.NormalFont, this.ForeColor);
} }
} //}
} }
} }
} }
@ -1136,21 +1144,26 @@ namespace BizHawk.Client.EmuHawk
RollColumn col = columns[j]; RollColumn col = columns[j];
string text; string text;
int strOffsetX = 0;
int strOffsetY = 0;
Point point = new Point(col.Left.Value + xPadding, RowsToPixels(i) + CellHeightPadding); Point point = new Point(col.Left.Value + xPadding, RowsToPixels(i) + CellHeightPadding);
Bitmap image = null; Bitmap image = null;
int bitmapOffsetX = 0;
int bitmapOffsetY = 0;
if (QueryItemIcon != null) if (QueryItemIcon != null)
{ {
QueryItemIcon(f + startRow, columns[j], ref image); QueryItemIcon(f + startRow, columns[j], ref image, ref bitmapOffsetX, ref bitmapOffsetY);
} }
if (image != null) if (image != null)
{ {
Gdi.DrawBitmap(image, new Point(point.X, point.Y + CellHeightPadding), true); Gdi.DrawBitmap(image, new Point(point.X + bitmapOffsetX, point.Y + bitmapOffsetY + CellHeightPadding), true);
} }
else //else
{ //{
QueryItemText(f + startRow, columns[j], out text); QueryItemText(f + startRow, columns[j], out text, ref strOffsetX, ref strOffsetY);
bool rePrep = false; bool rePrep = false;
if (SelectedItems.Contains(new Cell { Column = columns[j], RowIndex = f + startRow })) if (SelectedItems.Contains(new Cell { Column = columns[j], RowIndex = f + startRow }))
@ -1161,14 +1174,14 @@ namespace BizHawk.Client.EmuHawk
if (!string.IsNullOrWhiteSpace(text)) if (!string.IsNullOrWhiteSpace(text))
{ {
Gdi.DrawString(text, point); Gdi.DrawString(text, new Point(point.X + strOffsetX, point.Y + strOffsetY));
} }
if (rePrep) if (rePrep)
{ {
Gdi.PrepDrawString(this.NormalFont, this.ForeColor); Gdi.PrepDrawString(this.NormalFont, this.ForeColor);
} }
} //}
} }
} }
} }

View File

@ -81,7 +81,7 @@ namespace BizHawk.Client.EmuHawk
color = Color.White; color = Color.White;
} }
private void MarkerView_QueryItemText(int index, InputRoll.RollColumn column, out string text) private void MarkerView_QueryItemText(int index, InputRoll.RollColumn column, out string text, ref int offsetX, ref int offsetY)
{ {
text = ""; text = "";

View File

@ -86,7 +86,7 @@ namespace BizHawk.Client.EmuHawk
#region Query callbacks #region Query callbacks
private void TasView_QueryItemIcon(int index, InputRoll.RollColumn column, ref Bitmap bitmap) private void TasView_QueryItemIcon(int index, InputRoll.RollColumn column, ref Bitmap bitmap, ref int offsetX, ref int offsetY)
{ {
var overrideIcon = GetIconOverride(index, column); var overrideIcon = GetIconOverride(index, column);
@ -119,6 +119,16 @@ namespace BizHawk.Client.EmuHawk
Properties.Resources.ts_h_arrow_green; Properties.Resources.ts_h_arrow_green;
} }
} }
else if (columnName == FrameColumnName)
{
TasMovieRecord record = CurrentTasMovie[index];
if (record.HasState)
{
offsetX = -2;
offsetY = 2;
bitmap = Properties.Resources.anchor;
}
}
} }
private void TasView_QueryItemBkColor(int index, InputRoll.RollColumn column, ref Color color) private void TasView_QueryItemBkColor(int index, InputRoll.RollColumn column, ref Color color)
@ -183,7 +193,7 @@ namespace BizHawk.Client.EmuHawk
} }
} }
private void TasView_QueryItemText(int index, InputRoll.RollColumn column, out string text) private void TasView_QueryItemText(int index, InputRoll.RollColumn column, out string text, ref int offsetX, ref int offsetY)
{ {
var overrideText = GetTextOverride(index, column); var overrideText = GetTextOverride(index, column);
if (overrideText != null) if (overrideText != null)
@ -207,6 +217,7 @@ namespace BizHawk.Client.EmuHawk
} }
else if (columnName == FrameColumnName) else if (columnName == FrameColumnName)
{ {
offsetX = 7;
text = (index).ToString().PadLeft(CurrentTasMovie.InputLogLength.ToString().Length, '0'); text = (index).ToString().PadLeft(CurrentTasMovie.InputLogLength.ToString().Length, '0');
} }
else else