Show/hide inactive button

Some other touchups
This commit is contained in:
Andy Adshead 2019-01-26 18:45:59 +00:00
commit a6d7f91168
2 changed files with 54 additions and 14 deletions

View file

@ -32,18 +32,22 @@ namespace Ryujinx.Profiler.UI
public ProfileButton(FontService fontService, string label, Action clicked, int x, int y, int padding, int height, int width = -1) public ProfileButton(FontService fontService, string label, Action clicked, int x, int y, int padding, int height, int width = -1)
{ {
Visible = true;
FontService = fontService; FontService = fontService;
Label = label;
Clicked = clicked; Clicked = clicked;
UpdateSize(label, x, y, padding, height, width);
}
public int UpdateSize(string label, int x, int y, int padding, int height, int width = -1)
{
Visible = true;
Label = label;
if (width == -1) if (width == -1)
{ {
// Dummy draw to measure size // Dummy draw to measure size
width = (int)fontService.DrawText(Label, 0, 0, height, false); width = (int)FontService.DrawText(label, 0, 0, height, false);
} }
UpdateSize(x, y, padding, width, height); UpdateSize(x, y, padding, width, height);
return Right - X;
} }
public void UpdateSize(int x, int y, int padding, int width, int height) public void UpdateSize(int x, int y, int padding, int width, int height)
@ -65,7 +69,7 @@ namespace Ryujinx.Profiler.UI
} }
GL.Begin(PrimitiveType.Triangles); GL.Begin(PrimitiveType.Triangles);
GL.Color3(Color.Blue); GL.Color3(Color.Black);
GL.Vertex2(X, Y); GL.Vertex2(X, Y);
GL.Vertex2(X, Top); GL.Vertex2(X, Top);
GL.Vertex2(Right, Top); GL.Vertex2(Right, Top);

View file

@ -22,6 +22,7 @@ namespace Ryujinx
AverageTitle = 2, AverageTitle = 2,
TotalTitle = 3, TotalTitle = 3,
FilterBar = 4, FilterBar = 4,
ShowHideInactive = 5
} }
private bool visible = true, initComplete = false; private bool visible = true, initComplete = false;
@ -38,6 +39,7 @@ namespace Ryujinx
private string FilterText = ""; private string FilterText = "";
private double BackspaceDownTime, UpdateTimer; private double BackspaceDownTime, UpdateTimer;
private bool BackspaceDown = false, prevBackspaceDown = false, regexEnabled = false, ProfileUpdated = false; private bool BackspaceDown = false, prevBackspaceDown = false, regexEnabled = false, ProfileUpdated = false;
private bool showInactive = true;
public ProfileWindow() public ProfileWindow()
: base(400, 720) : base(400, 720)
@ -71,12 +73,21 @@ namespace Ryujinx
fontService.InitalizeTextures(); fontService.InitalizeTextures();
fontService.UpdateScreenHeight(Height); fontService.UpdateScreenHeight(Height);
buttons = new ProfileButton[5]; buttons = new ProfileButton[6];
buttons[(int)ButtonIndex.TagTitle] = new ProfileButton(fontService, () => sortAction = new ProfileSorters.TagAscending()); buttons[(int)ButtonIndex.TagTitle] = new ProfileButton(fontService, () => sortAction = new ProfileSorters.TagAscending());
buttons[(int)ButtonIndex.InstantTitle] = new ProfileButton(fontService, () => sortAction = new ProfileSorters.InstantAscending()); buttons[(int)ButtonIndex.InstantTitle] = new ProfileButton(fontService, () => sortAction = new ProfileSorters.InstantAscending());
buttons[(int)ButtonIndex.AverageTitle] = new ProfileButton(fontService, () => sortAction = new ProfileSorters.AverageAscending()); buttons[(int)ButtonIndex.AverageTitle] = new ProfileButton(fontService, () => sortAction = new ProfileSorters.AverageAscending());
buttons[(int)ButtonIndex.TotalTitle] = new ProfileButton(fontService, () => sortAction = new ProfileSorters.TotalAscending()); buttons[(int)ButtonIndex.TotalTitle] = new ProfileButton(fontService, () => sortAction = new ProfileSorters.TotalAscending());
buttons[(int)ButtonIndex.FilterBar] = new ProfileButton(fontService, () => regexEnabled = !regexEnabled); buttons[(int)ButtonIndex.FilterBar] = new ProfileButton(fontService, () =>
{
ProfileUpdated = true;
regexEnabled = !regexEnabled;
});
buttons[(int)ButtonIndex.ShowHideInactive] = new ProfileButton(fontService, () =>
{
ProfileUpdated = true;
showInactive = !showInactive;
});
} }
#endregion #endregion
@ -153,7 +164,14 @@ namespace Ryujinx
// Filtering // Filtering
if (ProfileUpdated) if (ProfileUpdated)
{ {
profileData = rawPofileData; if (showInactive)
{
profileData = rawPofileData;
}
else
{
profileData = rawPofileData.FindAll(kvp => kvp.Value.Instant > 0.001f);
}
if (sortAction != null) if (sortAction != null)
{ {
@ -406,9 +424,12 @@ namespace Ryujinx
fontService.DrawText("Total (ms)", columnSpacing + columnSpacing + 200 + xOffset, yHeight, titleFontHeight); fontService.DrawText("Total (ms)", columnSpacing + columnSpacing + 200 + xOffset, yHeight, titleFontHeight);
buttons[(int)ButtonIndex.TotalTitle].UpdateSize((int)(columnSpacing + columnSpacing + 200 + xOffset), (int)yHeight, 0, Width, titleFontHeight); buttons[(int)ButtonIndex.TotalTitle].UpdateSize((int)(columnSpacing + columnSpacing + 200 + xOffset), (int)yHeight, 0, Width, titleFontHeight);
// Show/Hide Inactive
width = buttons[(int)ButtonIndex.ShowHideInactive].UpdateSize($"{(showInactive ? "Hide" : "Show")} Inactive", 5, 5, 4, 16);
// Filter bar // Filter bar
fontService.DrawText($"{(regexEnabled ? "Regex " : "Filter")}: {FilterText}", 10, 5, 16); fontService.DrawText($"{(regexEnabled ? "Regex " : "Filter")}: {FilterText}", 15 + width, 7, 16);
buttons[(int) ButtonIndex.FilterBar].UpdateSize(0, 0, 0, Width, filterHeight); buttons[(int) ButtonIndex.FilterBar].UpdateSize((int)(15 + width), 0, 0, Width, filterHeight);
// Draw buttons // Draw buttons
foreach (ProfileButton button in buttons) foreach (ProfileButton button in buttons)
@ -416,6 +437,21 @@ namespace Ryujinx
button.Draw(); button.Draw();
} }
// Dividing lines
GL.Color3(Color.White);
GL.Begin(PrimitiveType.Lines);
// Top divider
GL.Vertex2(0, Height -titleHeight);
GL.Vertex2(Width, Height - titleHeight);
// Bottom divider
GL.Vertex2(0, filterHeight);
GL.Vertex2(Width, filterHeight);
// Bottom vertical divider
GL.Vertex2(width + 10, 0);
GL.Vertex2(width + 10, filterHeight);
GL.End();
SwapBuffers(); SwapBuffers();
} }
#endregion #endregion