#pragma once #include "Resource.hpp" #include "cru/platform/gui/InputMethod.hpp" namespace cru::platform::gui::osx { class OsxWindow; namespace details { class OsxInputMethodContextPrivate; } class OsxInputMethodContext : public OsxGuiResource, public virtual IInputMethodContext { friend OsxWindow; friend details::OsxInputMethodContextPrivate; public: explicit OsxInputMethodContext(OsxWindow* window); CRU_DELETE_COPY(OsxInputMethodContext) CRU_DELETE_MOVE(OsxInputMethodContext) ~OsxInputMethodContext() override; public: bool ShouldManuallyDrawCompositionText() override; void EnableIME() override; void DisableIME() override; void CompleteComposition() override; void CancelComposition() override; CompositionText GetCompositionText() override; void SetCandidateWindowPosition(const Point& point) override; IEvent* CompositionStartEvent() override; IEvent* CompositionEndEvent() override; IEvent* CompositionEvent() override; IEvent* TextEvent() override; bool IsEnabled(); private: std::unique_ptr p_; }; } // namespace cru::platform::gui::osx