From 9c7d93cdb85ccc89f0804b4f280eac099c4476c6 Mon Sep 17 00:00:00 2001 From: Yuqian Yang Date: Tue, 23 Sep 2025 22:37:42 +0800 Subject: Impl xcb cursor manager. --- include/cru/platform/gui/xcb/Cursor.h | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) (limited to 'include/cru/platform/gui/xcb/Cursor.h') diff --git a/include/cru/platform/gui/xcb/Cursor.h b/include/cru/platform/gui/xcb/Cursor.h index d51c33c1..02ede7dd 100644 --- a/include/cru/platform/gui/xcb/Cursor.h +++ b/include/cru/platform/gui/xcb/Cursor.h @@ -5,17 +5,16 @@ #include "Base.h" #include +#include +#include +#include +#include namespace cru::platform::gui::xcb { class XcbUiApplication; + class XcbCursor : public XcbResource, public virtual ICursor { public: - /** - * Specification at - * https://www.x.org/archive/X11R7.7/doc/man/man3/Xcursor.3.xhtml. - */ - static XcbCursor* LoadXCursor(io::Stream* stream); - XcbCursor(XcbUiApplication* application, xcb_cursor_t cursor, bool auto_free); ~XcbCursor() override; @@ -28,6 +27,18 @@ class XcbCursor : public XcbResource, public virtual ICursor { }; class XcbCursorManager : public XcbResource, public virtual ICursorManager { - virtual std::shared_ptr GetSystemCursor(SystemCursorType type) = 0; + public: + explicit XcbCursorManager(XcbUiApplication* application); + ~XcbCursorManager() override; + + std::shared_ptr GetSystemCursor(SystemCursorType type) override; + + private: + std::shared_ptr LoadXCursor(std::string_view name); + + private: + XcbUiApplication* application_; + xcb_cursor_context_t* xcb_cursor_context_; + std::unordered_map> cursors_; }; } // namespace cru::platform::gui::xcb -- cgit v1.2.3