aboutsummaryrefslogtreecommitdiff
path: root/include/cru/platform/native/ui_applicaition.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'include/cru/platform/native/ui_applicaition.hpp')
-rw-r--r--include/cru/platform/native/ui_applicaition.hpp32
1 files changed, 22 insertions, 10 deletions
diff --git a/include/cru/platform/native/ui_applicaition.hpp b/include/cru/platform/native/ui_applicaition.hpp
index 655b8ea0..aa8d98da 100644
--- a/include/cru/platform/native/ui_applicaition.hpp
+++ b/include/cru/platform/native/ui_applicaition.hpp
@@ -1,29 +1,41 @@
#pragma once
-#include "cru/common/base.hpp"
-
-#include "cru/common/auto_delete.hpp"
+#include "../native_resource.hpp"
#include <chrono>
#include <functional>
#include <vector>
namespace cru::platform::native {
-struct INativeWindow;
+class NativeWindow;
// The entry point of a ui application.
// It will call IGraphFactory::CreateInstance during its creation
// and set graph factory to be auto deleted. If you want to keep
// the graph factory then you should manually set it to false after
// creating the ui application.
-struct IUiApplication : virtual Interface, virtual IAutoDelete {
+class UiApplication : public NativeResource {
+ public:
// Create a platform-specific instance and save it as the global instance.
// Do not create the instance twice. Implements should assert for that.
// After creating, get the instance by GetInstance.
- static IUiApplication* CreateInstance();
+ static UiApplication* CreateInstance();
// Get the global instance. If it is not created, then return nullptr.
- static IUiApplication* GetInstance();
+ static UiApplication* GetInstance();
+
+ protected:
+ UiApplication() = default;
+
+ public:
+ UiApplication(const UiApplication& other) = delete;
+ UiApplication& operator=(const UiApplication& other) = delete;
+
+ UiApplication(UiApplication&& other) = delete;
+ UiApplication& operator=(UiApplication&& other) = delete;
+
+ ~UiApplication() override = default;
+ public:
virtual int Run() = 0;
virtual void Quit(int quite_code) = 0;
@@ -36,7 +48,7 @@ struct IUiApplication : virtual Interface, virtual IAutoDelete {
const std::function<void()>& action) = 0;
virtual void CancelTimer(unsigned long id) = 0;
- virtual std::vector<INativeWindow*> GetAllWindow() = 0;
- virtual INativeWindow* CreateWindow(INativeWindow* parent) = 0;
+ virtual std::vector<NativeWindow*> GetAllWindow() = 0;
+ virtual NativeWindow* CreateWindow(NativeWindow* parent) = 0;
};
-} // namespace cru::platform::ui
+} // namespace cru::platform::native