mirror of
https://github.com/RetroDECK/Duckstation.git
synced 2025-01-18 06:25:37 +00:00
HostInterface: Most some imgui logic from SDL to core
This commit is contained in:
parent
9436ffc806
commit
9de0bf0aaf
|
@ -3,9 +3,15 @@
|
||||||
#include "YBaseLib/Log.h"
|
#include "YBaseLib/Log.h"
|
||||||
#include "YBaseLib/Timer.h"
|
#include "YBaseLib/Timer.h"
|
||||||
#include "bios.h"
|
#include "bios.h"
|
||||||
|
#include "cdrom.h"
|
||||||
#include "common/audio_stream.h"
|
#include "common/audio_stream.h"
|
||||||
|
#include "dma.h"
|
||||||
|
#include "gpu.h"
|
||||||
#include "host_display.h"
|
#include "host_display.h"
|
||||||
|
#include "mdec.h"
|
||||||
|
#include "spu.h"
|
||||||
#include "system.h"
|
#include "system.h"
|
||||||
|
#include "timers.h"
|
||||||
#include <imgui.h>
|
#include <imgui.h>
|
||||||
Log_SetChannel(HostInterface);
|
Log_SetChannel(HostInterface);
|
||||||
|
|
||||||
|
@ -98,6 +104,73 @@ void HostInterface::ReportMessage(const char* message)
|
||||||
Log_InfoPrintf(message);
|
Log_InfoPrintf(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void HostInterface::DrawFPSWindow()
|
||||||
|
{
|
||||||
|
const bool show_fps = true;
|
||||||
|
const bool show_vps = true;
|
||||||
|
const bool show_speed = true;
|
||||||
|
|
||||||
|
if (!(show_fps | show_vps | show_speed))
|
||||||
|
return;
|
||||||
|
|
||||||
|
ImGui::SetNextWindowPos(ImVec2(ImGui::GetIO().DisplaySize.x - 175.0f, 0.0f), ImGuiCond_Always);
|
||||||
|
ImGui::SetNextWindowSize(ImVec2(175.0f, 16.0f));
|
||||||
|
|
||||||
|
if (!ImGui::Begin("FPSWindow", nullptr,
|
||||||
|
ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoScrollbar | ImGuiWindowFlags_NoCollapse |
|
||||||
|
ImGuiWindowFlags_NoBackground | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoMouseInputs |
|
||||||
|
ImGuiWindowFlags_NoBringToFrontOnFocus))
|
||||||
|
{
|
||||||
|
ImGui::End();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool first = true;
|
||||||
|
if (show_fps)
|
||||||
|
{
|
||||||
|
ImGui::Text("%.2f", m_fps);
|
||||||
|
first = false;
|
||||||
|
}
|
||||||
|
if (show_vps)
|
||||||
|
{
|
||||||
|
if (first)
|
||||||
|
{
|
||||||
|
first = false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ImGui::SameLine();
|
||||||
|
ImGui::Text("/");
|
||||||
|
ImGui::SameLine();
|
||||||
|
}
|
||||||
|
|
||||||
|
ImGui::Text("%.2f", m_vps);
|
||||||
|
}
|
||||||
|
if (show_speed)
|
||||||
|
{
|
||||||
|
if (first)
|
||||||
|
{
|
||||||
|
first = false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ImGui::SameLine();
|
||||||
|
ImGui::Text("/");
|
||||||
|
ImGui::SameLine();
|
||||||
|
}
|
||||||
|
|
||||||
|
const u32 rounded_speed = static_cast<u32>(std::round(m_speed));
|
||||||
|
if (m_speed < 90.0f)
|
||||||
|
ImGui::TextColored(ImVec4(1.0f, 0.4f, 0.4f, 1.0f), "%u%%", rounded_speed);
|
||||||
|
else if (m_speed < 110.0f)
|
||||||
|
ImGui::TextColored(ImVec4(1.0f, 1.0f, 1.0f, 1.0f), "%u%%", rounded_speed);
|
||||||
|
else
|
||||||
|
ImGui::TextColored(ImVec4(0.4f, 1.0f, 0.4f, 1.0f), "%u%%", rounded_speed);
|
||||||
|
}
|
||||||
|
|
||||||
|
ImGui::End();
|
||||||
|
}
|
||||||
|
|
||||||
void HostInterface::AddOSDMessage(const char* message, float duration /*= 2.0f*/)
|
void HostInterface::AddOSDMessage(const char* message, float duration /*= 2.0f*/)
|
||||||
{
|
{
|
||||||
OSDMessage msg;
|
OSDMessage msg;
|
||||||
|
@ -150,6 +223,22 @@ void HostInterface::DrawOSDMessages()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void HostInterface::DrawDebugWindows()
|
||||||
|
{
|
||||||
|
const Settings::DebugSettings& debug_settings = m_system->GetSettings().debugging;
|
||||||
|
|
||||||
|
if (debug_settings.show_gpu_state)
|
||||||
|
m_system->GetGPU()->DrawDebugStateWindow();
|
||||||
|
if (debug_settings.show_cdrom_state)
|
||||||
|
m_system->GetCDROM()->DrawDebugWindow();
|
||||||
|
if (debug_settings.show_timers_state)
|
||||||
|
m_system->GetTimers()->DrawDebugStateWindow();
|
||||||
|
if (debug_settings.show_spu_state)
|
||||||
|
m_system->GetSPU()->DrawDebugStateWindow();
|
||||||
|
if (debug_settings.show_mdec_state)
|
||||||
|
m_system->GetMDEC()->DrawDebugStateWindow();
|
||||||
|
}
|
||||||
|
|
||||||
void HostInterface::ClearImGuiFocus()
|
void HostInterface::ClearImGuiFocus()
|
||||||
{
|
{
|
||||||
ImGui::SetWindowFocus(nullptr);
|
ImGui::SetWindowFocus(nullptr);
|
||||||
|
|
|
@ -65,7 +65,9 @@ protected:
|
||||||
|
|
||||||
void UpdateSpeedLimiterState();
|
void UpdateSpeedLimiterState();
|
||||||
|
|
||||||
|
void DrawFPSWindow();
|
||||||
void DrawOSDMessages();
|
void DrawOSDMessages();
|
||||||
|
void DrawDebugWindows();
|
||||||
void ClearImGuiFocus();
|
void ClearImGuiFocus();
|
||||||
|
|
||||||
void UpdatePerformanceCounters();
|
void UpdatePerformanceCounters();
|
||||||
|
|
|
@ -1,23 +1,18 @@
|
||||||
#include "sdl_host_interface.h"
|
#include "sdl_host_interface.h"
|
||||||
#include "sdl_settings_interface.h"
|
|
||||||
#include "YBaseLib/AutoReleasePtr.h"
|
#include "YBaseLib/AutoReleasePtr.h"
|
||||||
#include "YBaseLib/ByteStream.h"
|
#include "YBaseLib/ByteStream.h"
|
||||||
#include "YBaseLib/Error.h"
|
#include "YBaseLib/Error.h"
|
||||||
#include "YBaseLib/Log.h"
|
#include "YBaseLib/Log.h"
|
||||||
#include "common/null_audio_stream.h"
|
#include "common/null_audio_stream.h"
|
||||||
#include "core/cdrom.h"
|
#include "core/controller.h"
|
||||||
#include "core/dma.h"
|
|
||||||
#include "core/gpu.h"
|
#include "core/gpu.h"
|
||||||
#include "core/host_display.h"
|
#include "core/host_display.h"
|
||||||
#include "core/mdec.h"
|
|
||||||
#include "core/memory_card.h"
|
|
||||||
#include "core/spu.h"
|
|
||||||
#include "core/system.h"
|
#include "core/system.h"
|
||||||
#include "core/timers.h"
|
|
||||||
#include "icon.h"
|
#include "icon.h"
|
||||||
#include "imgui_styles.h"
|
#include "imgui_styles.h"
|
||||||
#include "opengl_host_display.h"
|
#include "opengl_host_display.h"
|
||||||
#include "sdl_audio_stream.h"
|
#include "sdl_audio_stream.h"
|
||||||
|
#include "sdl_settings_interface.h"
|
||||||
#include <cinttypes>
|
#include <cinttypes>
|
||||||
#include <imgui.h>
|
#include <imgui.h>
|
||||||
#include <imgui_impl_sdl.h>
|
#include <imgui_impl_sdl.h>
|
||||||
|
@ -1412,22 +1407,6 @@ void SDLHostInterface::DrawAboutWindow()
|
||||||
ImGui::EndPopup();
|
ImGui::EndPopup();
|
||||||
}
|
}
|
||||||
|
|
||||||
void SDLHostInterface::DrawDebugWindows()
|
|
||||||
{
|
|
||||||
const Settings::DebugSettings& debug_settings = m_system->GetSettings().debugging;
|
|
||||||
|
|
||||||
if (debug_settings.show_gpu_state)
|
|
||||||
m_system->GetGPU()->DrawDebugStateWindow();
|
|
||||||
if (debug_settings.show_cdrom_state)
|
|
||||||
m_system->GetCDROM()->DrawDebugWindow();
|
|
||||||
if (debug_settings.show_timers_state)
|
|
||||||
m_system->GetTimers()->DrawDebugStateWindow();
|
|
||||||
if (debug_settings.show_spu_state)
|
|
||||||
m_system->GetSPU()->DrawDebugStateWindow();
|
|
||||||
if (debug_settings.show_mdec_state)
|
|
||||||
m_system->GetMDEC()->DrawDebugStateWindow();
|
|
||||||
}
|
|
||||||
|
|
||||||
bool SDLHostInterface::DrawFileChooser(const char* label, std::string* path, const char* filter /* = nullptr */)
|
bool SDLHostInterface::DrawFileChooser(const char* label, std::string* path, const char* filter /* = nullptr */)
|
||||||
{
|
{
|
||||||
ImGui::SetNextItemWidth(ImGui::CalcItemWidth() - 50.0f);
|
ImGui::SetNextItemWidth(ImGui::CalcItemWidth() - 50.0f);
|
||||||
|
|
|
@ -124,7 +124,6 @@ private:
|
||||||
void DrawPoweredOffWindow();
|
void DrawPoweredOffWindow();
|
||||||
void DrawSettingsWindow();
|
void DrawSettingsWindow();
|
||||||
void DrawAboutWindow();
|
void DrawAboutWindow();
|
||||||
void DrawDebugWindows();
|
|
||||||
bool DrawFileChooser(const char* label, std::string* path, const char* filter = nullptr);
|
bool DrawFileChooser(const char* label, std::string* path, const char* filter = nullptr);
|
||||||
|
|
||||||
SDL_Window* m_window = nullptr;
|
SDL_Window* m_window = nullptr;
|
||||||
|
|
Loading…
Reference in a new issue