diff options
author | crupest <crupest@outlook.com> | 2021-11-20 23:02:54 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2021-11-20 23:02:54 +0800 |
commit | 2b28ec296fdc72050569b9fedc1664ada7791497 (patch) | |
tree | 03675b5ca035256b3092657792e5004dde497111 /include/cru/platform/gui | |
parent | a60910cb3db6f47fd8f3b7f31648a9d0514d4f2c (diff) | |
download | cru-2b28ec296fdc72050569b9fedc1664ada7791497.tar.gz cru-2b28ec296fdc72050569b9fedc1664ada7791497.tar.bz2 cru-2b28ec296fdc72050569b9fedc1664ada7791497.zip |
...
Diffstat (limited to 'include/cru/platform/gui')
-rw-r--r-- | include/cru/platform/gui/UiApplication.hpp | 16 | ||||
-rw-r--r-- | include/cru/platform/gui/Window.hpp | 23 |
2 files changed, 22 insertions, 17 deletions
diff --git a/include/cru/platform/gui/UiApplication.hpp b/include/cru/platform/gui/UiApplication.hpp index be95e71c..8bad9668 100644 --- a/include/cru/platform/gui/UiApplication.hpp +++ b/include/cru/platform/gui/UiApplication.hpp @@ -9,16 +9,6 @@ #include <vector> namespace cru::platform::gui { -namespace details { -struct CreateWindowFlagTag; -} - -using CreateWindowFlag = Bitmask<details::CreateWindowFlagTag>; - -struct CreateWindowFlags { - static constexpr CreateWindowFlag NoCaptionAndBorder{0b1}; -}; - // The entry point of a ui application. struct CRU_PLATFORM_GUI_API IUiApplication : public virtual IPlatformResource { public: @@ -56,11 +46,7 @@ struct CRU_PLATFORM_GUI_API IUiApplication : public virtual IPlatformResource { virtual std::vector<INativeWindow*> GetAllWindow() = 0; - INativeWindow* CreateWindow(INativeWindow* parent) { - return this->CreateWindow(parent, CreateWindowFlag(0)); - }; - virtual INativeWindow* CreateWindow(INativeWindow* parent, - CreateWindowFlag flags) = 0; + virtual INativeWindow* CreateWindow() = 0; virtual cru::platform::graphics::IGraphicsFactory* GetGraphicsFactory() = 0; diff --git a/include/cru/platform/gui/Window.hpp b/include/cru/platform/gui/Window.hpp index a1816e4a..ab96045e 100644 --- a/include/cru/platform/gui/Window.hpp +++ b/include/cru/platform/gui/Window.hpp @@ -8,6 +8,18 @@ #include <string_view> namespace cru::platform::gui { +namespace details { +struct WindowStyleFlagTag; +} + +using WindowStyleFlag = Bitmask<details::WindowStyleFlagTag>; + +struct WindowStyleFlags { + static constexpr WindowStyleFlag NoCaptionAndBorder{0b1}; +}; + +enum class WindowVisibilityType { Show, Hide }; + enum class FocusChangeType { Gain, Lost }; enum class MouseEnterLeaveType { Enter, Leave }; @@ -36,9 +48,13 @@ struct INativeWindow : virtual IPlatformResource { virtual void Close() = 0; virtual INativeWindow* GetParent() = 0; + virtual void SetParent(INativeWindow* parent) = 0; + + virtual WindowStyleFlag GetShowFlag() = 0; + virtual void SetShowFlag(WindowStyleFlag flag) = 0; - virtual bool IsVisible() = 0; - virtual void SetVisible(bool is_visible) = 0; + virtual WindowVisibilityType GetVisibility() = 0; + virtual void SetVisibility(WindowVisibilityType visibility) = 0; virtual Size GetClientSize() = 0; virtual void SetClientSize(const Size& size) = 0; @@ -73,8 +89,11 @@ struct INativeWindow : virtual IPlatformResource { virtual IEvent<std::nullptr_t>* CreateEvent() = 0; virtual IEvent<std::nullptr_t>* DestroyEvent() = 0; virtual IEvent<std::nullptr_t>* PaintEvent() = 0; + + virtual IEvent<WindowVisibilityType>* VisibilityChangeEvent(); virtual IEvent<Size>* ResizeEvent() = 0; virtual IEvent<FocusChangeType>* FocusEvent() = 0; + virtual IEvent<MouseEnterLeaveType>* MouseEnterLeaveEvent() = 0; virtual IEvent<Point>* MouseMoveEvent() = 0; virtual IEvent<NativeMouseButtonEventArgs>* MouseDownEvent() = 0; |