ui: Remember debug video size, position and state across restarts

This commit is contained in:
7oxicshadow 2023-10-16 06:44:51 +01:00 committed by GitHub
parent 1e73bf5325
commit 51b0cda5ea
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 60 additions and 2 deletions

View File

@ -156,6 +156,26 @@ display:
auto_scale: auto_scale:
type: bool type: bool
default: true default: true
debug:
video:
transparency:
type: bool
default: false
x_pos:
type: number
default: 100.0
y_pos:
type: number
default: 100.0
x_winsize:
type: number
default: 600.0
y_winsize:
type: number
default: 150.0
advanced_tree_state:
type: bool
default: false
audio: audio:
use_dsp: bool use_dsp: bool

View File

@ -230,6 +230,9 @@ DebugVideoWindow::DebugVideoWindow()
{ {
m_is_open = false; m_is_open = false;
m_transparent = false; m_transparent = false;
m_position_restored = false;
m_resize_init_complete = false;
m_prev_scale = g_viewport_mgr.m_scale;
} }
void DebugVideoWindow::Draw() void DebugVideoWindow::Draw()
@ -237,9 +240,25 @@ void DebugVideoWindow::Draw()
if (!m_is_open) if (!m_is_open)
return; return;
if (!m_position_restored) {
ImGui::SetNextWindowPos(ImVec2(g_config.display.debug.video.x_pos,
g_config.display.debug.video.y_pos),
ImGuiCond_Once, ImVec2(0, 0));
m_transparent = g_config.display.debug.video.transparency;
m_position_restored = true;
}
float alpha = m_transparent ? 0.2 : 1.0; float alpha = m_transparent ? 0.2 : 1.0;
PushWindowTransparencySettings(m_transparent, 0.2); PushWindowTransparencySettings(m_transparent, 0.2);
ImGui::SetNextWindowSize(ImVec2(600.0f*g_viewport_mgr.m_scale, 150.0f*g_viewport_mgr.m_scale), ImGuiCond_Once);
if (!m_resize_init_complete || (g_viewport_mgr.m_scale != m_prev_scale)) {
ImGui::SetNextWindowSize(ImVec2(
g_config.display.debug.video.x_winsize * g_viewport_mgr.m_scale,
g_config.display.debug.video.y_winsize * g_viewport_mgr.m_scale));
m_resize_init_complete = true;
}
m_prev_scale = g_viewport_mgr.m_scale;
if (ImGui::Begin("Video Debug", &m_is_open)) { if (ImGui::Begin("Video Debug", &m_is_open)) {
double x_start, x_end; double x_start, x_end;
static ImPlotAxisFlags rt_axis = ImPlotAxisFlags_NoTickLabels; static ImPlotAxisFlags rt_axis = ImPlotAxisFlags_NoTickLabels;
@ -287,7 +306,12 @@ void DebugVideoWindow::Draw()
} }
ImPlot::PopStyleColor(); ImPlot::PopStyleColor();
if (ImGui::TreeNode("Advanced")) { ImGui::SetNextItemOpen(g_config.display.debug.video.advanced_tree_state,
ImGuiCond_Once);
g_config.display.debug.video.advanced_tree_state =
ImGui::TreeNode("Advanced");
if (g_config.display.debug.video.advanced_tree_state) {
ImGui::SetNextWindowBgAlpha(alpha); ImGui::SetNextWindowBgAlpha(alpha);
if (ImPlot::BeginPlot("##ScrollingDraws", ImVec2(-1,-1))) { if (ImPlot::BeginPlot("##ScrollingDraws", ImVec2(-1,-1))) {
ImPlot::SetupAxes(NULL, NULL, ImPlotAxisFlags_None, ImPlotAxisFlags_AutoFit); ImPlot::SetupAxes(NULL, NULL, ImPlotAxisFlags_None, ImPlotAxisFlags_AutoFit);
@ -326,6 +350,17 @@ void DebugVideoWindow::Draw()
} }
ImPlot::PopStyleVar(2); ImPlot::PopStyleVar(2);
ImVec2 debug_window_pos = ImGui::GetWindowPos();
g_config.display.debug.video.x_pos = debug_window_pos.x;
g_config.display.debug.video.y_pos = debug_window_pos.y;
ImVec2 debug_window_size = ImGui::GetWindowSize();
g_config.display.debug.video.x_winsize =
debug_window_size.x / g_viewport_mgr.m_scale;
g_config.display.debug.video.y_winsize =
debug_window_size.y / g_viewport_mgr.m_scale;
g_config.display.debug.video.transparency = m_transparent;
} }
ImGui::End(); ImGui::End();
ImGui::PopStyleColor(5); ImGui::PopStyleColor(5);

View File

@ -31,6 +31,9 @@ class DebugVideoWindow
public: public:
bool m_is_open; bool m_is_open;
bool m_transparent; bool m_transparent;
bool m_position_restored;
bool m_resize_init_complete;
float m_prev_scale;
DebugVideoWindow(); DebugVideoWindow();
void Draw(); void Draw();