diff options
Diffstat (limited to 'include/cru/osx/gui/Cursor.hpp')
-rw-r--r-- | include/cru/osx/gui/Cursor.hpp | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/include/cru/osx/gui/Cursor.hpp b/include/cru/osx/gui/Cursor.hpp new file mode 100644 index 00000000..497f5853 --- /dev/null +++ b/include/cru/osx/gui/Cursor.hpp @@ -0,0 +1,43 @@ +#pragma once +#include "Resource.hpp" +#include "cru/platform/gui/Cursor.hpp" + +#include <memory> + +namespace cru::platform::gui::osx { +namespace details { +class OsxWindowPrivate; +class OsxCursorPrivate; +class OsxCursorManagerPrivate; +} // namespace details + +class OsxCursor : public OsxGuiResource, public virtual ICursor { + friend class OsxWindow; + friend class details::OsxWindowPrivate; + + public: + OsxCursor(IUiApplication* ui_application, SystemCursorType cursor_type); + CRU_DELETE_COPY(OsxCursor) + CRU_DELETE_MOVE(OsxCursor) + + ~OsxCursor() override; + + private: + std::unique_ptr<details::OsxCursorPrivate> p_; +}; + +class OsxCursorManager : public OsxGuiResource, public virtual ICursorManager { + public: + explicit OsxCursorManager(IUiApplication* ui_application); + + CRU_DELETE_COPY(OsxCursorManager) + CRU_DELETE_MOVE(OsxCursorManager) + + ~OsxCursorManager() override; + + std::shared_ptr<ICursor> GetSystemCursor(SystemCursorType type) override; + + private: + std::unique_ptr<details::OsxCursorManagerPrivate> p_; +}; +} // namespace cru::platform::gui::osx |