aboutsummaryrefslogtreecommitdiff
path: root/src/ui/ui_manager.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui/ui_manager.hpp')
-rw-r--r--src/ui/ui_manager.hpp92
1 files changed, 92 insertions, 0 deletions
diff --git a/src/ui/ui_manager.hpp b/src/ui/ui_manager.hpp
new file mode 100644
index 00000000..753da907
--- /dev/null
+++ b/src/ui/ui_manager.hpp
@@ -0,0 +1,92 @@
+#pragma once
+
+#include "system_headers.hpp"
+
+#include "base.hpp"
+#include "border_property.hpp"
+
+namespace cru::graph
+{
+ class GraphManager;
+}
+
+namespace cru::ui
+{
+ struct CaretInfo
+ {
+ std::chrono::milliseconds caret_blink_duration;
+ float half_caret_width;
+ };
+
+
+ class PredefineResources : public Object
+ {
+ public:
+ explicit PredefineResources(graph::GraphManager* graph_manager);
+ PredefineResources(const PredefineResources& other) = delete;
+ PredefineResources(PredefineResources&& other) = delete;
+ PredefineResources& operator=(const PredefineResources& other) = delete;
+ PredefineResources& operator=(PredefineResources&& other) = delete;
+ ~PredefineResources() override = default;
+
+ //region BorderProperty
+ Microsoft::WRL::ComPtr<ID2D1Brush> border_property_brush;
+
+ //region Button
+ BorderProperty button_normal_border;
+ BorderProperty button_press_border;
+
+ //region TextControl
+ Microsoft::WRL::ComPtr<ID2D1Brush> text_control_selection_brush;
+
+ //region TextBox
+ BorderProperty text_box_border;
+ Microsoft::WRL::ComPtr<ID2D1Brush> text_box_text_brush;
+ Microsoft::WRL::ComPtr<IDWriteTextFormat> text_box_text_format;
+ Microsoft::WRL::ComPtr<ID2D1Brush> text_box_caret_brush;
+
+ //region TextBlock
+ Microsoft::WRL::ComPtr<ID2D1Brush> text_block_text_brush;
+ Microsoft::WRL::ComPtr<IDWriteTextFormat> text_block_text_format;
+
+ //region ToggleButton
+ Microsoft::WRL::ComPtr<ID2D1Brush> toggle_button_on_brush;
+ Microsoft::WRL::ComPtr<ID2D1Brush> toggle_button_off_brush;
+
+#ifdef CRU_DEBUG_LAYOUT
+ //region debug
+ Microsoft::WRL::ComPtr<ID2D1Brush> debug_layout_out_border_brush;
+ Microsoft::WRL::ComPtr<ID2D1Brush> debug_layout_margin_brush;
+ Microsoft::WRL::ComPtr<ID2D1Brush> debug_layout_padding_brush;
+#endif
+ };
+
+ class UiManager : public Object
+ {
+ public:
+ static UiManager* GetInstance();
+ private:
+ UiManager();
+ public:
+ UiManager(const UiManager& other) = delete;
+ UiManager(UiManager&& other) = delete;
+ UiManager& operator=(const UiManager& other) = delete;
+ UiManager& operator=(UiManager&& other) = delete;
+ ~UiManager() override = default;
+
+ CaretInfo GetCaretInfo() const
+ {
+ return caret_info_;
+ }
+
+ const PredefineResources* GetPredefineResources() const
+ {
+ return &predefine_resources_;
+ }
+
+ private:
+ CaretInfo caret_info_;
+
+ PredefineResources predefine_resources_;
+ };
+}