#pragma once #include "Base.h" #include #include namespace cru::platform::gui::sdl { class SdlCursor : public SdlResource, public virtual ICursor { public: static std::shared_ptr CreateSystem(SDL_SystemCursor cursor); explicit SdlCursor(SDL_Cursor* cursor, bool auto_destroy = true); ~SdlCursor(); SDL_Cursor* GetSdlCursor(); private: SDL_Cursor* cursor_; bool auto_destroy_; }; struct SdlCursorManager : public SdlResource, public virtual ICursorManager { public: SdlCursorManager(); std::shared_ptr GetSystemCursor(SystemCursorType type) override; private: std::shared_ptr arrow_cursor_; std::shared_ptr hand_cursor_; std::shared_ptr ibeam_cursor_; }; } // namespace cru::platform::gui::sdl