// Copyright (C) 2024 Jérôme "SirLynix" Leclercq (lynix680@gmail.com) // This file is part of the "Nazara Engine - Platform module" // For conditions of distribution and use, see copyright notice in Config.hpp // Interface inspirée de la SFML par Laurent Gomila #pragma once #ifndef NAZARA_PLATFORM_SDL2_WINDOWIMPL_HPP #define NAZARA_PLATFORM_SDL2_WINDOWIMPL_HPP #include #include #include #include #include #include #include #include #include #include #include #include namespace Nz { class Window; class WindowImpl { public: WindowImpl(Window* parent); WindowImpl(const WindowImpl&) = delete; WindowImpl(WindowImpl&&) = delete; ///TODO? ~WindowImpl() = default; bool Create(const VideoMode& mode, const std::string& title, WindowStyleFlags style); bool Create(WindowHandle handle); void Destroy(); Vector2i FetchPosition() const; Vector2ui FetchSize() const; WindowStyleFlags FetchStyle() const; std::string FetchTitle() const; SDL_Window* GetHandle() const; WindowHandle GetSystemHandle() const; bool HasFocus() const; void IgnoreNextMouseEvent(int mouseX, int mouseY); bool IsMinimized() const; bool IsVisible() const; void RaiseFocus(); void RefreshCursor(); void UpdateCursor(const Cursor& cursor); void UpdateIcon(const Icon& icon); void UpdateMaximumSize(int width, int height); void UpdateMinimumSize(int width, int height); void UpdatePosition(int x, int y); void UpdateSize(unsigned int width, unsigned int height); void UpdateStayOnTop(bool stayOnTop); void UpdateTitle(const std::string& title); void Show(bool visible); WindowImpl& operator=(const WindowImpl&) = delete; WindowImpl& operator=(WindowImpl&&) = delete; ///TODO? static void ProcessEvents(); static bool Initialize(); static void Uninitialize(); private: void SetEventListener(bool listener); static int SDLCALL HandleEvent(void* userdata, SDL_Event* event); UInt32 m_windowId; SDL_Cursor* m_cursor; SDL_Window* m_handle; Window* m_parent; bool m_eventListener; bool m_ignoreNextMouseMove; bool m_ownsWindow; int m_lastEditEventLength; }; } #endif // NAZARA_PLATFORM_SDL2_WINDOWIMPL_HPP