#ifndef EMULATOR_SRC_GRAPHICS_PRESENTATION_SYSTEMOVERLAY_H_ #define EMULATOR_SRC_GRAPHICS_PRESENTATION_SYSTEMOVERLAY_H_ #include "common/common.h" #include "graphics/host_gpu/vulkanCommon.h" #include #include #include #include #include union SDL_Event; struct SDL_Window; namespace Libs::Graphics { struct GraphicContext; struct SystemOverlayVisualState { bool active; uint64_t revision; }; void InitializeSplashScreen(const std::filesystem::path& sce_sys); void HideSplashScreen(); void InitializeSystemOverlayInput(SDL_Window* window); void ShutdownSystemOverlayInput(); bool ProcessSystemOverlayInput(const SDL_Event& event); SystemOverlayVisualState GetSystemOverlayVisualState() noexcept; void NotifyTrophyUnlocked(std::string_view name, int32_t grade, std::span icon_png); class SystemOverlay final { public: explicit SystemOverlay(GraphicContext& graphics); ~SystemOverlay(); KYTY_CLASS_NO_COPY(SystemOverlay); [[nodiscard]] bool PrepareFrame(vk::Extent2D extent, vk::Format format, uint32_t image_count); void Record(vk::CommandBuffer command, vk::ImageView target); void ReleaseVulkan(); private: struct Impl; std::unique_ptr m_impl; }; } // namespace Libs::Graphics #endif // EMULATOR_SRC_GRAPHICS_PRESENTATION_SYSTEMOVERLAY_H_