3#ifndef YAZE_APP_PLATFORM_SDL3_WINDOW_BACKEND_H_
4#define YAZE_APP_PLATFORM_SDL3_WINDOW_BACKEND_H_
14#include "absl/status/status.h"
21struct SDL3WindowDeleter {
22 void operator()(SDL_Window* p)
const {
37class SDL3WindowBackend :
public IWindowBackend {
39 SDL3WindowBackend() =
default;
40 ~SDL3WindowBackend()
override;
46 absl::Status Initialize(
const WindowConfig& config)
override;
47 absl::Status Shutdown()
override;
48 bool IsInitialized()
const override {
return initialized_; }
50 bool PollEvent(WindowEvent& out_event)
override;
51 void ProcessNativeEvent(
void* native_event)
override;
52 bool WaitForEvent(
int timeout_ms)
override;
54 WindowStatus GetStatus()
const override;
55 bool IsActive()
const override {
return active_; }
56 void SetActive(
bool active)
override { active_ = active; }
58 void GetSize(
int* width,
int* height)
const override;
59 void SetSize(
int width,
int height)
override;
60 std::string GetTitle()
const override;
61 void SetTitle(
const std::string& title)
override;
63 void ShowWindow()
override;
64 void HideWindow()
override;
66 bool InitializeRenderer(gfx::IRenderer* renderer)
override;
67 SDL_Window* GetNativeWindow()
override {
return window_.get(); }
69 absl::Status InitializeImGui(gfx::IRenderer* renderer)
override;
70 void ShutdownImGui()
override;
71 void NewImGuiFrame()
override;
72 void RenderImGui(gfx::IRenderer* renderer)
override;
74 uint32_t GetAudioDevice()
const override {
return 0; }
75 std::shared_ptr<int16_t> GetAudioBuffer()
const override {
79 std::string GetBackendName()
const override {
return "SDL3"; }
80 int GetSDLVersion()
const override {
return 3; }
84 WindowEvent ConvertSDL3Event(
const SDL_Event& sdl_event);
87 void UpdateModifierState();
89 std::unique_ptr<SDL_Window, SDL3WindowDeleter> window_;
90 bool initialized_ =
false;
92 bool is_resizing_ =
false;
93 bool imgui_initialized_ =
false;
96 bool key_shift_ =
false;
97 bool key_ctrl_ =
false;
98 bool key_alt_ =
false;
99 bool key_super_ =
false;
102 std::shared_ptr<int16_t> audio_buffer_;