aboutsummaryrefslogtreecommitdiff
path: root/include/cru
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2019-04-10 19:42:46 +0800
committercrupest <crupest@outlook.com>2019-04-10 19:42:46 +0800
commit7351020a582d70a1495249fba87d342c8a1fb634 (patch)
treee80f225041dc3816b3dce21c7e15aadbb211602e /include/cru
parenta94a806f69586e08a30fff0cdb3e52b0ce7acfa5 (diff)
downloadcru-7351020a582d70a1495249fba87d342c8a1fb634.tar.gz
cru-7351020a582d70a1495249fba87d342c8a1fb634.tar.bz2
cru-7351020a582d70a1495249fba87d342c8a1fb634.zip
Refactor.
Diffstat (limited to 'include/cru')
-rw-r--r--include/cru/platform/debug.hpp2
-rw-r--r--include/cru/platform/exception.hpp11
-rw-r--r--include/cru/platform/graph/brush.hpp (renamed from include/cru/platform/brush.hpp)2
-rw-r--r--include/cru/platform/graph/font.hpp (renamed from include/cru/platform/font.hpp)2
-rw-r--r--include/cru/platform/graph/geometry.hpp (renamed from include/cru/platform/geometry.hpp)3
-rw-r--r--include/cru/platform/graph/graph_factory.hpp (renamed from include/cru/platform/graph_factory.hpp)4
-rw-r--r--include/cru/platform/graph/painter.hpp (renamed from include/cru/platform/painter.hpp)4
-rw-r--r--include/cru/platform/graph/painter_util.hpp (renamed from include/cru/platform/painter_util.hpp)2
-rw-r--r--include/cru/platform/graph/text_layout.hpp (renamed from include/cru/platform/text_layout.hpp)2
-rw-r--r--include/cru/platform/native/basic_types.hpp (renamed from include/cru/platform/basic_types.hpp)2
-rw-r--r--include/cru/platform/native/native_window.hpp (renamed from include/cru/platform/native_window.hpp)8
-rw-r--r--include/cru/platform/native/ui_applicaition.hpp (renamed from include/cru/platform/ui_applicaition.hpp)13
-rw-r--r--include/cru/platform/string_util.hpp2
-rw-r--r--include/cru/platform/win/win_graph_factory.hpp28
-rw-r--r--include/cru/platform/win/win_painter.hpp42
-rw-r--r--include/cru/ui/control.hpp6
-rw-r--r--include/cru/ui/event/ui_event.hpp23
-rw-r--r--include/cru/ui/render/border_render_object.hpp16
-rw-r--r--include/cru/ui/render/flex_layout_render_object.hpp2
-rw-r--r--include/cru/ui/render/render_object.hpp4
-rw-r--r--include/cru/ui/render/text_render_object.hpp32
-rw-r--r--include/cru/ui/render/window_render_object.hpp2
-rw-r--r--include/cru/ui/ui_manager.hpp10
-rw-r--r--include/cru/ui/window.hpp13
-rw-r--r--include/cru/win/exception.hpp (renamed from include/cru/platform/win/exception.hpp)10
-rw-r--r--include/cru/win/graph/d2d_util.hpp (renamed from include/cru/platform/win/d2d_util.hpp)16
-rw-r--r--include/cru/win/graph/graph_manager.hpp (renamed from include/cru/platform/win/graph_manager.hpp)17
-rw-r--r--include/cru/win/graph/win_brush.hpp (renamed from include/cru/platform/win/win_brush.hpp)18
-rw-r--r--include/cru/win/graph/win_font.hpp (renamed from include/cru/platform/win/win_font.hpp)14
-rw-r--r--include/cru/win/graph/win_geometry.hpp (renamed from include/cru/platform/win/win_geometry.hpp)19
-rw-r--r--include/cru/win/graph/win_graph_factory.hpp30
-rw-r--r--include/cru/win/graph/win_painter.hpp48
-rw-r--r--include/cru/win/graph/win_text_layout.hpp (renamed from include/cru/platform/win/win_text_layout.hpp)14
-rw-r--r--include/cru/win/native/god_window.hpp (renamed from include/cru/platform/win/god_window.hpp)10
-rw-r--r--include/cru/win/native/win_application.hpp (renamed from include/cru/platform/win/win_application.hpp)26
-rw-r--r--include/cru/win/native/win_native_window.hpp (renamed from include/cru/platform/win/win_native_window.hpp)31
-rw-r--r--include/cru/win/native/window_class.hpp (renamed from include/cru/platform/win/window_class.hpp)9
-rw-r--r--include/cru/win/native/window_native_message_event_args.hpp (renamed from include/cru/platform/win/window_native_message_event_args.hpp)6
-rw-r--r--include/cru/win/native/window_render_target.hpp (renamed from include/cru/platform/win/window_render_target.hpp)15
-rw-r--r--include/cru/win/win_pre_config.hpp (renamed from include/cru/platform/win/win_pre_config.hpp)0
40 files changed, 277 insertions, 241 deletions
diff --git a/include/cru/platform/debug.hpp b/include/cru/platform/debug.hpp
index 21c2b646..18472201 100644
--- a/include/cru/platform/debug.hpp
+++ b/include/cru/platform/debug.hpp
@@ -3,6 +3,6 @@
#include <string_view>
-namespace cru::platform::debug {
+namespace cru::platform {
void DebugMessage(const std::wstring_view& message);
}
diff --git a/include/cru/platform/exception.hpp b/include/cru/platform/exception.hpp
new file mode 100644
index 00000000..6dae08c5
--- /dev/null
+++ b/include/cru/platform/exception.hpp
@@ -0,0 +1,11 @@
+#pragma once
+#include "cru/common/pre_config.hpp"
+
+#include <stdexcept>
+
+namespace cru::platform {
+class PlatformException : public std::runtime_error {
+ public:
+ using runtime_error::runtime_error; // inherent constructors
+};
+} // namespace cru::platform
diff --git a/include/cru/platform/brush.hpp b/include/cru/platform/graph/brush.hpp
index 713d302d..8ffbfc97 100644
--- a/include/cru/platform/brush.hpp
+++ b/include/cru/platform/graph/brush.hpp
@@ -3,7 +3,7 @@
#include "cru/common/ui_base.hpp"
-namespace cru::platform {
+namespace cru::platform::graph {
struct Brush : public virtual Interface {};
struct SolidColorBrush : public virtual Brush {
diff --git a/include/cru/platform/font.hpp b/include/cru/platform/graph/font.hpp
index 750aaae1..5af369e5 100644
--- a/include/cru/platform/font.hpp
+++ b/include/cru/platform/graph/font.hpp
@@ -1,7 +1,7 @@
#pragma once
#include "cru/common/base.hpp"
-namespace cru::platform {
+namespace cru::platform::graph {
struct FontDescriptor : virtual Interface {
};
diff --git a/include/cru/platform/geometry.hpp b/include/cru/platform/graph/geometry.hpp
index aa93fe37..7a7ad8b2 100644
--- a/include/cru/platform/geometry.hpp
+++ b/include/cru/platform/graph/geometry.hpp
@@ -1,10 +1,9 @@
#pragma once
#include "cru/common/base.hpp"
-#include "basic_types.hpp"
#include "cru/common/ui_base.hpp"
-namespace cru::platform {
+namespace cru::platform::graph {
struct Geometry : virtual Interface {
virtual bool FillContains(const ui::Point& point) = 0;
};
diff --git a/include/cru/platform/graph_factory.hpp b/include/cru/platform/graph/graph_factory.hpp
index f6122241..51cf6f15 100644
--- a/include/cru/platform/graph_factory.hpp
+++ b/include/cru/platform/graph/graph_factory.hpp
@@ -7,13 +7,15 @@
#include <string>
#include <string_view>
-namespace cru::platform {
+namespace cru::platform::graph {
struct SolidColorBrush;
struct GeometryBuilder;
struct FontDescriptor;
struct TextLayout;
struct GraphFactory : virtual Interface {
+ static GraphFactory* GetInstance();
+
virtual SolidColorBrush* CreateSolidColorBrush(const ui::Color& color) = 0;
virtual GeometryBuilder* CreateGeometryBuilder() = 0;
virtual FontDescriptor* CreateFontDescriptor(
diff --git a/include/cru/platform/painter.hpp b/include/cru/platform/graph/painter.hpp
index b7b89fc9..199ebbad 100644
--- a/include/cru/platform/painter.hpp
+++ b/include/cru/platform/graph/painter.hpp
@@ -2,9 +2,9 @@
#include "cru/common/base.hpp"
#include "cru/common/ui_base.hpp"
-#include "matrix.hpp"
+#include "../matrix.hpp"
-namespace cru::platform {
+namespace cru::platform::graph {
struct Brush;
struct Geometry;
struct TextLayout;
diff --git a/include/cru/platform/painter_util.hpp b/include/cru/platform/graph/painter_util.hpp
index 5711d099..c137e8cb 100644
--- a/include/cru/platform/painter_util.hpp
+++ b/include/cru/platform/graph/painter_util.hpp
@@ -4,7 +4,7 @@
#include <functional>
#include <type_traits>
-namespace cru::platform::util {
+namespace cru::platform::graph::util {
template <typename Fn>
inline void WithTransform(Painter* painter, const Matrix& matrix,
const Fn& action) {
diff --git a/include/cru/platform/text_layout.hpp b/include/cru/platform/graph/text_layout.hpp
index e43adfde..eb13c115 100644
--- a/include/cru/platform/text_layout.hpp
+++ b/include/cru/platform/graph/text_layout.hpp
@@ -7,7 +7,7 @@
#include <string>
#include <vector>
-namespace cru::platform {
+namespace cru::platform::graph {
struct FontDescriptor;
struct TextLayout : virtual Interface {
diff --git a/include/cru/platform/basic_types.hpp b/include/cru/platform/native/basic_types.hpp
index e6ab4b59..573a9e76 100644
--- a/include/cru/platform/basic_types.hpp
+++ b/include/cru/platform/native/basic_types.hpp
@@ -1,7 +1,7 @@
#pragma once
#include "cru/common/pre_config.hpp"
-namespace cru::platform {
+namespace cru::platform::native {
struct Dpi {
float x;
float y;
diff --git a/include/cru/platform/native_window.hpp b/include/cru/platform/native/native_window.hpp
index f68fd3a4..a82e7a23 100644
--- a/include/cru/platform/native_window.hpp
+++ b/include/cru/platform/native/native_window.hpp
@@ -5,9 +5,11 @@
#include "cru/common/event.hpp"
#include "cru/common/ui_base.hpp"
-namespace cru::platform {
+namespace cru::platform::graph {
struct Painter;
+}
+namespace cru::platform::native {
struct NativeWindow : public virtual Interface {
// Return if the window is still valid, that is, hasn't been closed or
// destroyed.
@@ -32,7 +34,7 @@ struct NativeWindow : public virtual Interface {
// The lefttop of the rect is relative to screen lefttop.
virtual void SetWindowRect(const ui::Rect& rect) = 0;
- virtual Painter* BeginPaint() = 0;
+ virtual graph::Painter* BeginPaint() = 0;
virtual Event<>* DestroyEvent() = 0;
virtual Event<const ui::Size&>* ResizeEvent() = 0;
@@ -45,4 +47,4 @@ struct NativeWindow : public virtual Interface {
virtual Event<int>* KeyDownEvent() = 0;
virtual Event<int>* KeyUpEvent() = 0;
};
-} // namespace cru::platform
+} // namespace cru::platform::ui
diff --git a/include/cru/platform/ui_applicaition.hpp b/include/cru/platform/native/ui_applicaition.hpp
index 16739f9d..8d42d813 100644
--- a/include/cru/platform/ui_applicaition.hpp
+++ b/include/cru/platform/native/ui_applicaition.hpp
@@ -1,15 +1,16 @@
#pragma once
#include "cru/common/base.hpp"
-#include "basic_types.hpp"
-
#include <chrono>
#include <functional>
#include <vector>
-namespace cru::platform {
-struct NativeWindow;
+namespace cru::platform::graph {
struct GraphFactory;
+}
+
+namespace cru::platform::native {
+struct NativeWindow;
struct UiApplication : public virtual Interface {
static UiApplication* GetInstance();
@@ -26,7 +27,5 @@ struct UiApplication : public virtual Interface {
virtual std::vector<NativeWindow*> GetAllWindow() = 0;
virtual NativeWindow* CreateWindow(NativeWindow* parent) = 0;
-
- virtual GraphFactory* GetGraphFactory() = 0;
};
-} // namespace cru::platform
+} // namespace cru::platform::ui
diff --git a/include/cru/platform/string_util.hpp b/include/cru/platform/string_util.hpp
index c3b9f93b..822c0c95 100644
--- a/include/cru/platform/string_util.hpp
+++ b/include/cru/platform/string_util.hpp
@@ -4,6 +4,6 @@
#include <string>
#include <string_view>
-namespace cru::platform::util {
+namespace cru::platform {
std::string ToUtf8String(const std::wstring_view& string);
}
diff --git a/include/cru/platform/win/win_graph_factory.hpp b/include/cru/platform/win/win_graph_factory.hpp
deleted file mode 100644
index ca83be86..00000000
--- a/include/cru/platform/win/win_graph_factory.hpp
+++ /dev/null
@@ -1,28 +0,0 @@
-#pragma once
-#include "win_pre_config.hpp"
-
-#include "../graph_factory.hpp"
-
-namespace cru::platform::win {
-class GraphManager;
-
-class WinGraphFactory : public Object, public virtual GraphFactory {
- public:
- explicit WinGraphFactory(GraphManager* graph_manager);
- WinGraphFactory(const WinGraphFactory& other) = delete;
- WinGraphFactory(WinGraphFactory&& other) = delete;
- WinGraphFactory& operator=(const WinGraphFactory& other) = delete;
- WinGraphFactory& operator=(WinGraphFactory&& other) = delete;
- ~WinGraphFactory() override = default;
-
- SolidColorBrush* CreateSolidColorBrush(const ui::Color& color) override;
- GeometryBuilder* CreateGeometryBuilder() override;
- FontDescriptor* CreateFontDescriptor(const std::wstring_view& font_family,
- float font_size);
- TextLayout* CreateTextLayout(std::shared_ptr<FontDescriptor> font,
- std::wstring text);
-
- private:
- GraphManager* graph_manager_;
-};
-} // namespace cru::platform::win
diff --git a/include/cru/platform/win/win_painter.hpp b/include/cru/platform/win/win_painter.hpp
deleted file mode 100644
index 3c37ccb2..00000000
--- a/include/cru/platform/win/win_painter.hpp
+++ /dev/null
@@ -1,42 +0,0 @@
-#pragma once
-#include "win_pre_config.hpp"
-
-#include "../painter.hpp"
-
-namespace cru::platform::win {
-class WinNativeWindow;
-
-class WinPainter : public Object, public virtual Painter {
- public:
- explicit WinPainter(WinNativeWindow* window);
- WinPainter(const WinPainter& other) = delete;
- WinPainter(WinPainter&& other) = delete;
- WinPainter& operator=(const WinPainter& other) = delete;
- WinPainter& operator=(WinPainter&& other) = delete;
- ~WinPainter() override;
-
- Matrix GetTransform() override;
- void SetTransform(const Matrix& matrix) override;
- void Clear(const ui::Color& color) override;
- void StrokeRectangle(const ui::Rect& rectangle, Brush* brush,
- float width) override;
- void FillRectangle(const ui::Rect& rectangle, Brush* brush) override;
- void StrokeGeometry(Geometry* geometry, Brush* brush, float width) override;
- void FillGeometry(Geometry* geometry, Brush* brush) override;
- void DrawText(const ui::Point& offset, TextLayout* text_layout,
- Brush* brush) override;
- void EndDraw() override;
- bool IsDisposed() override { return is_disposed; }
-
- void EndDrawAndDeleteThis() {
- EndDraw();
- delete this;
- }
-
- private:
- WinNativeWindow* window_;
- ID2D1RenderTarget* render_target_;
-
- bool is_disposed = false;
-};
-} // namespace cru::platform::win
diff --git a/include/cru/ui/control.hpp b/include/cru/ui/control.hpp
index 684af2f0..652efe89 100644
--- a/include/cru/ui/control.hpp
+++ b/include/cru/ui/control.hpp
@@ -1,7 +1,7 @@
#pragma once
#include "cru/common/base.hpp"
-#include "cru/platform/basic_types.hpp"
+#include "cru/platform/native/basic_types.hpp"
#include "event/ui_event.hpp"
#include <string_view>
@@ -127,8 +127,8 @@ class Control : public Object {
//*************** region: additional mouse event ***************
protected:
- virtual void OnMouseClickBegin(platform::MouseButton button);
- virtual void OnMouseClickEnd(platform::MouseButton button);
+ virtual void OnMouseClickBegin(platform::native::MouseButton button);
+ virtual void OnMouseClickEnd(platform::native::MouseButton button);
private:
Window* window_ = nullptr;
diff --git a/include/cru/ui/event/ui_event.hpp b/include/cru/ui/event/ui_event.hpp
index ba8940cb..c84116b9 100644
--- a/include/cru/ui/event/ui_event.hpp
+++ b/include/cru/ui/event/ui_event.hpp
@@ -3,11 +3,11 @@
#include "cru/common/event.hpp"
#include "cru/common/ui_base.hpp"
-#include "cru/platform/basic_types.hpp"
+#include "cru/platform/native/basic_types.hpp"
#include <optional>
-namespace cru::platform {
+namespace cru::platform::graph {
struct Painter;
}
@@ -19,9 +19,7 @@ namespace cru::ui::event {
class UiEventArgs : public Object {
public:
UiEventArgs(Object* sender, Object* original_sender)
- : sender_(sender),
- original_sender_(original_sender),
- handled_(false) {}
+ : sender_(sender), original_sender_(original_sender), handled_(false) {}
UiEventArgs(const UiEventArgs& other) = default;
UiEventArgs(UiEventArgs&& other) = default;
@@ -80,7 +78,8 @@ class MouseEventArgs : public UiEventArgs {
class MouseButtonEventArgs : public MouseEventArgs {
public:
MouseButtonEventArgs(Object* sender, Object* original_sender,
- const Point& point, const platform::MouseButton button)
+ const Point& point,
+ const platform::native::MouseButton button)
: MouseEventArgs(sender, original_sender, point), button_(button) {}
MouseButtonEventArgs(const MouseButtonEventArgs& other) = default;
MouseButtonEventArgs(MouseButtonEventArgs&& other) = default;
@@ -88,10 +87,10 @@ class MouseButtonEventArgs : public MouseEventArgs {
MouseButtonEventArgs& operator=(MouseButtonEventArgs&& other) = default;
~MouseButtonEventArgs() override = default;
- platform::MouseButton GetMouseButton() const { return button_; }
+ platform::native::MouseButton GetMouseButton() const { return button_; }
private:
- platform::MouseButton button_;
+ platform::native::MouseButton button_;
};
class MouseWheelEventArgs : public MouseEventArgs {
@@ -114,7 +113,7 @@ class MouseWheelEventArgs : public MouseEventArgs {
class PaintEventArgs : public UiEventArgs {
public:
PaintEventArgs(Object* sender, Object* original_sender,
- platform::Painter* painter)
+ platform::graph::Painter* painter)
: UiEventArgs(sender, original_sender), painter_(painter) {}
PaintEventArgs(const PaintEventArgs& other) = default;
PaintEventArgs(PaintEventArgs&& other) = default;
@@ -122,10 +121,10 @@ class PaintEventArgs : public UiEventArgs {
PaintEventArgs& operator=(PaintEventArgs&& other) = default;
~PaintEventArgs() = default;
- platform::Painter* GetPainter() const { return painter_; }
+ platform::graph::Painter* GetPainter() const { return painter_; }
private:
- platform::Painter* painter_;
+ platform::graph::Painter* painter_;
};
class FocusChangeEventArgs : public UiEventArgs {
@@ -197,4 +196,4 @@ class CharEventArgs : public UiEventArgs {
wchar_t c_;
};
*/
-} // namespace cru::ui::events
+} // namespace cru::ui::event
diff --git a/include/cru/ui/render/border_render_object.hpp b/include/cru/ui/render/border_render_object.hpp
index 35b98948..44382c63 100644
--- a/include/cru/ui/render/border_render_object.hpp
+++ b/include/cru/ui/render/border_render_object.hpp
@@ -3,7 +3,7 @@
#include <memory>
-namespace cru::platform {
+namespace cru::platform::graph {
struct Brush;
struct Geometry;
} // namespace cru::platform
@@ -32,7 +32,7 @@ struct CornerRadius {
class BorderRenderObject : public RenderObject {
public:
- explicit BorderRenderObject(std::shared_ptr<platform::Brush> brush);
+ explicit BorderRenderObject(std::shared_ptr<platform::graph::Brush> brush);
BorderRenderObject(const BorderRenderObject& other) = delete;
BorderRenderObject(BorderRenderObject&& other) = delete;
BorderRenderObject& operator=(const BorderRenderObject& other) = delete;
@@ -42,8 +42,8 @@ class BorderRenderObject : public RenderObject {
bool IsEnabled() const { return is_enabled_; }
void SetEnabled(bool enabled) { is_enabled_ = enabled; }
- std::shared_ptr<platform::Brush> GetBrush() const { return border_brush_; }
- void SetBrush(std::shared_ptr<platform::Brush> new_brush) {
+ std::shared_ptr<platform::graph::Brush> GetBrush() const { return border_brush_; }
+ void SetBrush(std::shared_ptr<platform::graph::Brush> new_brush) {
border_brush_ = std::move(new_brush);
}
@@ -59,7 +59,7 @@ class BorderRenderObject : public RenderObject {
void Refresh() { RecreateGeometry(); }
- void Draw(platform::Painter* painter) override;
+ void Draw(platform::graph::Painter* painter) override;
RenderObject* HitTest(const Point& point) override;
@@ -83,11 +83,11 @@ class BorderRenderObject : public RenderObject {
private:
bool is_enabled_ = false;
- std::shared_ptr<platform::Brush> border_brush_ = nullptr;
+ std::shared_ptr<platform::graph::Brush> border_brush_ = nullptr;
Thickness border_thickness_{};
CornerRadius corner_radius_{};
- std::shared_ptr<platform::Geometry> geometry_ = nullptr;
- std::shared_ptr<platform::Geometry> border_outer_geometry_ = nullptr;
+ std::shared_ptr<platform::graph::Geometry> geometry_ = nullptr;
+ std::shared_ptr<platform::graph::Geometry> border_outer_geometry_ = nullptr;
};
} // namespace cru::ui::render
diff --git a/include/cru/ui/render/flex_layout_render_object.hpp b/include/cru/ui/render/flex_layout_render_object.hpp
index 278bf8c2..d225e679 100644
--- a/include/cru/ui/render/flex_layout_render_object.hpp
+++ b/include/cru/ui/render/flex_layout_render_object.hpp
@@ -38,7 +38,7 @@ class FlexLayoutRenderObject : public RenderObject {
FlexChildLayoutData* GetChildLayoutData(int position);
- void Draw(platform::Painter* painter) override;
+ void Draw(platform::graph::Painter* painter) override;
RenderObject* HitTest(const Point& point) override;
diff --git a/include/cru/ui/render/render_object.hpp b/include/cru/ui/render/render_object.hpp
index 3cd14a6a..7f5f7ac6 100644
--- a/include/cru/ui/render/render_object.hpp
+++ b/include/cru/ui/render/render_object.hpp
@@ -10,7 +10,7 @@ namespace cru::ui {
class Control;
}
-namespace cru::platform {
+namespace cru::platform::graph {
struct Painter;
}
@@ -58,7 +58,7 @@ class RenderObject : public Object {
void Measure(const Size& available_size);
void Layout(const Rect& rect);
- virtual void Draw(platform::Painter* render_target) = 0;
+ virtual void Draw(platform::graph::Painter* painter) = 0;
virtual RenderObject* HitTest(const Point& point) = 0;
diff --git a/include/cru/ui/render/text_render_object.hpp b/include/cru/ui/render/text_render_object.hpp
index 527fcd71..9f03551d 100644
--- a/include/cru/ui/render/text_render_object.hpp
+++ b/include/cru/ui/render/text_render_object.hpp
@@ -5,18 +5,18 @@
#include <string>
// forward declarations
-namespace cru::platform {
+namespace cru::platform::graph {
struct Brush;
struct FontDescriptor;
struct TextLayout;
-} // namespace cru::platform
+} // namespace cru::platform::graph
namespace cru::ui::render {
class TextRenderObject : public RenderObject {
public:
- TextRenderObject(std::shared_ptr<platform::Brush> brush,
- std::shared_ptr<platform::FontDescriptor> font,
- std::shared_ptr<platform::Brush> selection_brush);
+ TextRenderObject(std::shared_ptr<platform::graph::Brush> brush,
+ std::shared_ptr<platform::graph::FontDescriptor> font,
+ std::shared_ptr<platform::graph::Brush> selection_brush);
TextRenderObject(const TextRenderObject& other) = delete;
TextRenderObject(TextRenderObject&& other) = delete;
TextRenderObject& operator=(const TextRenderObject& other) = delete;
@@ -26,13 +26,13 @@ class TextRenderObject : public RenderObject {
std::wstring GetText() const;
void SetText(std::wstring new_text);
- std::shared_ptr<platform::Brush> GetBrush() const { return brush_; }
- void SetBrush(std::shared_ptr<platform::Brush> new_brush) {
+ std::shared_ptr<platform::graph::Brush> GetBrush() const { return brush_; }
+ void SetBrush(std::shared_ptr<platform::graph::Brush> new_brush) {
new_brush.swap(brush_);
}
- std::shared_ptr<platform::FontDescriptor> GetFont() const;
- void SetFont(std::shared_ptr<platform::FontDescriptor> font);
+ std::shared_ptr<platform::graph::FontDescriptor> GetFont() const;
+ void SetFont(std::shared_ptr<platform::graph::FontDescriptor> font);
std::optional<TextRange> GetSelectionRange() const {
return selection_range_;
@@ -41,14 +41,14 @@ class TextRenderObject : public RenderObject {
selection_range_ = std::move(new_range);
}
- std::shared_ptr<platform::Brush> GetSelectionBrush() const {
+ std::shared_ptr<platform::graph::Brush> GetSelectionBrush() const {
return selection_brush_;
}
- void SetSelectionBrush(std::shared_ptr<platform::Brush> new_brush) {
+ void SetSelectionBrush(std::shared_ptr<platform::graph::Brush> new_brush) {
new_brush.swap(selection_brush_);
}
- void Draw(platform::Painter* painter) override;
+ void Draw(platform::graph::Painter* painter) override;
RenderObject* HitTest(const Point& point) override;
@@ -59,11 +59,11 @@ class TextRenderObject : public RenderObject {
void OnLayoutContent(const Rect& content_rect) override;
private:
- std::shared_ptr<platform::Brush> brush_;
- std::shared_ptr<platform::FontDescriptor> font_;
- std::shared_ptr<platform::TextLayout> text_layout_;
+ std::shared_ptr<platform::graph::Brush> brush_;
+ std::shared_ptr<platform::graph::FontDescriptor> font_;
+ std::shared_ptr<platform::graph::TextLayout> text_layout_;
std::optional<TextRange> selection_range_ = std::nullopt;
- std::shared_ptr<platform::Brush> selection_brush_;
+ std::shared_ptr<platform::graph::Brush> selection_brush_;
};
} // namespace cru::ui::render
diff --git a/include/cru/ui/render/window_render_object.hpp b/include/cru/ui/render/window_render_object.hpp
index e0a7c74e..dfeae487 100644
--- a/include/cru/ui/render/window_render_object.hpp
+++ b/include/cru/ui/render/window_render_object.hpp
@@ -17,7 +17,7 @@ class WindowRenderObject : public RenderObject {
void MeasureAndLayout();
- void Draw(platform::Painter* painter) override;
+ void Draw(platform::graph::Painter* painter) override;
RenderObject* HitTest(const Point& point) override;
diff --git a/include/cru/ui/ui_manager.hpp b/include/cru/ui/ui_manager.hpp
index 6f4a3bc0..5317f579 100644
--- a/include/cru/ui/ui_manager.hpp
+++ b/include/cru/ui/ui_manager.hpp
@@ -3,7 +3,7 @@
#include <memory>
-namespace cru::platform {
+namespace cru::platform::graph {
struct Brush;
struct FontDescriptor;
} // namespace cru::platform
@@ -19,12 +19,12 @@ class PredefineResources : public Object {
~PredefineResources() override = default;
// region Button
- std::shared_ptr<platform::Brush> button_normal_border_brush;
+ std::shared_ptr<platform::graph::Brush> button_normal_border_brush;
// region TextBlock
- std::shared_ptr<platform::Brush> text_block_selection_brush;
- std::shared_ptr<platform::Brush> text_block_text_brush;
- std::shared_ptr<platform::FontDescriptor> text_block_font;
+ std::shared_ptr<platform::graph::Brush> text_block_selection_brush;
+ std::shared_ptr<platform::graph::Brush> text_block_text_brush;
+ std::shared_ptr<platform::graph::FontDescriptor> text_block_font;
};
class UiManager : public Object {
diff --git a/include/cru/ui/window.hpp b/include/cru/ui/window.hpp
index 9a76f30f..0a81e2e1 100644
--- a/include/cru/ui/window.hpp
+++ b/include/cru/ui/window.hpp
@@ -5,7 +5,7 @@
#include <memory>
-namespace cru::platform {
+namespace cru::platform::native {
struct NativeWindow;
}
@@ -38,7 +38,7 @@ class Window final : public ContentControl {
render::RenderObject* GetRenderObject() const override;
- platform::NativeWindow* GetNativeWindow() const { return native_window_; }
+ platform::native::NativeWindow* GetNativeWindow() const { return native_window_; }
Control* GetMouseHoverControl() const { return mouse_hover_control_; }
@@ -66,13 +66,14 @@ class Window final : public ContentControl {
void OnNativeMouseEnterLeave(bool enter);
void OnNativeMouseMove(const Point& point);
- void OnNativeMouseDown(platform::MouseButton button, const Point& point);
- void OnNativeMouseUp(platform::MouseButton button, const Point& point);
+ void OnNativeMouseDown(platform::native::MouseButton button,
+ const Point& point);
+ void OnNativeMouseUp(platform::native::MouseButton button,
+ const Point& point);
void OnNativeKeyDown(int virtual_code);
void OnNativeKeyUp(int virtual_code);
-
//*************** region: event dispatcher helper ***************
void DispatchMouseHoverControlChangeEvent(Control* old_control,
@@ -80,7 +81,7 @@ class Window final : public ContentControl {
const Point& point);
private:
- platform::NativeWindow* native_window_;
+ platform::native::NativeWindow* native_window_;
EventRevokerGuard event_revoker_guard_;
std::shared_ptr<render::WindowRenderObject> render_object_;
diff --git a/include/cru/platform/win/exception.hpp b/include/cru/win/exception.hpp
index 01b139b4..39c52c45 100644
--- a/include/cru/platform/win/exception.hpp
+++ b/include/cru/win/exception.hpp
@@ -1,11 +1,13 @@
#pragma once
#include "win_pre_config.hpp"
+#include "cru/platform/exception.hpp"
+
#include <stdexcept>
#include <string_view>
-namespace cru::platform::win {
-class HResultError : public std::runtime_error {
+namespace cru::win {
+class HResultError : public platform::PlatformException {
public:
explicit HResultError(HRESULT h_result);
explicit HResultError(HRESULT h_result,
@@ -31,7 +33,7 @@ inline void ThrowIfFailed(const HRESULT h_result,
if (FAILED(h_result)) throw HResultError(h_result, message);
}
-class Win32Error : public std::runtime_error {
+class Win32Error : public platform::PlatformException {
public:
explicit Win32Error(DWORD error_code);
Win32Error(DWORD error_code, const std::string_view& additional_message);
@@ -46,4 +48,4 @@ class Win32Error : public std::runtime_error {
private:
DWORD error_code_;
};
-} // namespace cru::platform::win
+} // namespace cru::win
diff --git a/include/cru/platform/win/d2d_util.hpp b/include/cru/win/graph/d2d_util.hpp
index 51aea4f8..7a2da91f 100644
--- a/include/cru/platform/win/d2d_util.hpp
+++ b/include/cru/win/graph/d2d_util.hpp
@@ -1,11 +1,11 @@
#pragma once
-#include "win_pre_config.hpp"
+#include "../win_pre_config.hpp"
-#include "../matrix.hpp"
#include "cru/common/ui_base.hpp"
+#include "cru/platform/matrix.hpp"
-namespace cru::platform::win::util {
-inline D2D1_MATRIX_3X2_F Convert(const Matrix& matrix) {
+namespace cru::win::graph::util {
+inline D2D1_MATRIX_3X2_F Convert(const platform::Matrix& matrix) {
D2D1_MATRIX_3X2_F m;
m._11 = matrix.m11;
m._12 = matrix.m12;
@@ -40,9 +40,9 @@ inline D2D1_ELLIPSE Convert(const ui::Ellipse& ellipse) {
ellipse.radius_y);
}
-inline Matrix Convert(const D2D1_MATRIX_3X2_F& matrix) {
- return Matrix{matrix._11, matrix._12, matrix._21,
- matrix._22, matrix._31, matrix._32};
+inline platform::Matrix Convert(const D2D1_MATRIX_3X2_F& matrix) {
+ return platform::Matrix{matrix._11, matrix._12, matrix._21,
+ matrix._22, matrix._31, matrix._32};
}
inline ui::Color Convert(const D2D1_COLOR_F& color) {
@@ -105,4 +105,4 @@ inline bool operator==(const D2D1_ELLIPSE& left, const D2D1_ELLIPSE& right) {
inline bool operator!=(const D2D1_ELLIPSE& left, const D2D1_ELLIPSE& right) {
return !(left == right);
}
-} // namespace cru::platform::win::util
+} // namespace cru::win::graph::util
diff --git a/include/cru/platform/win/graph_manager.hpp b/include/cru/win/graph/graph_manager.hpp
index f2e29c22..bf14b802 100644
--- a/include/cru/platform/win/graph_manager.hpp
+++ b/include/cru/win/graph/graph_manager.hpp
@@ -1,14 +1,17 @@
#pragma once
-#include "win_pre_config.hpp"
+#include "../win_pre_config.hpp"
-#include "../basic_types.hpp"
#include "cru/common/base.hpp"
+#include "cru/win/graph/win_graph_factory.hpp"
-namespace cru::platform::win {
-class WindowRenderTarget;
+#include <memory>
+namespace cru::win::graph {
class GraphManager final : public Object {
public:
+ static GraphManager* GetInstance();
+
+ public:
GraphManager();
GraphManager(const GraphManager& other) = delete;
GraphManager(GraphManager&& other) = delete;
@@ -33,6 +36,8 @@ class GraphManager final : public Object {
return dwrite_system_font_collection_.Get();
}
+ WinGraphFactory* GetGraphFactory() const { return graph_factory_.get(); }
+
private:
Microsoft::WRL::ComPtr<ID3D11Device> d3d11_device_;
Microsoft::WRL::ComPtr<ID2D1Factory1> d2d1_factory_;
@@ -40,5 +45,7 @@ class GraphManager final : public Object {
Microsoft::WRL::ComPtr<IDXGIFactory2> dxgi_factory_;
Microsoft::WRL::ComPtr<IDWriteFactory> dwrite_factory_;
Microsoft::WRL::ComPtr<IDWriteFontCollection> dwrite_system_font_collection_;
+
+ std::unique_ptr<WinGraphFactory> graph_factory_;
};
-} // namespace cru::platform::win
+} // namespace cru::win::graph
diff --git a/include/cru/platform/win/win_brush.hpp b/include/cru/win/graph/win_brush.hpp
index d32f6bbc..69cd952d 100644
--- a/include/cru/platform/win/win_brush.hpp
+++ b/include/cru/win/graph/win_brush.hpp
@@ -1,19 +1,21 @@
#pragma once
-#include "win_pre_config.hpp"
+#include "../win_pre_config.hpp"
-#include "../brush.hpp"
+#include "cru/platform/graph/brush.hpp"
-namespace cru::platform::win {
-struct WinBrush : virtual Brush {
+namespace cru::win::graph {
+class GraphManager;
+
+struct WinBrush : virtual platform::graph::Brush {
virtual ID2D1Brush* GetD2DBrush() = 0;
};
class WinSolidColorBrush : public Object,
- public virtual SolidColorBrush,
+ public virtual platform::graph::SolidColorBrush,
public virtual WinBrush {
public:
- explicit WinSolidColorBrush(
- Microsoft::WRL::ComPtr<ID2D1SolidColorBrush> brush);
+ explicit WinSolidColorBrush(GraphManager* graph_manager,
+ const ui::Color& color);
WinSolidColorBrush(const WinSolidColorBrush& other) = delete;
WinSolidColorBrush(WinSolidColorBrush&& other) = delete;
WinSolidColorBrush& operator=(const WinSolidColorBrush& other) = delete;
@@ -28,4 +30,4 @@ class WinSolidColorBrush : public Object,
private:
Microsoft::WRL::ComPtr<ID2D1SolidColorBrush> brush_;
};
-} // namespace cru::platform::win
+} // namespace cru::win::graph
diff --git a/include/cru/platform/win/win_font.hpp b/include/cru/win/graph/win_font.hpp
index f03ff3c8..3301e8da 100644
--- a/include/cru/platform/win/win_font.hpp
+++ b/include/cru/win/graph/win_font.hpp
@@ -1,17 +1,19 @@
#pragma once
-#include "win_pre_config.hpp"
+#include "../win_pre_config.hpp"
-#include "../font.hpp"
+#include "cru/platform/graph/font.hpp"
#include <string_view>
-namespace cru::platform::win {
+namespace cru::win::graph {
class GraphManager;
-class WinFontDescriptor : public Object, public virtual FontDescriptor {
+class WinFontDescriptor : public Object,
+ public virtual platform::graph::FontDescriptor {
public:
explicit WinFontDescriptor(GraphManager* graph_manager,
- const std::wstring_view& font_family, float font_size);
+ const std::wstring_view& font_family,
+ float font_size);
WinFontDescriptor(const WinFontDescriptor& other) = delete;
WinFontDescriptor(WinFontDescriptor&& other) = delete;
WinFontDescriptor& operator=(const WinFontDescriptor& other) = delete;
@@ -23,4 +25,4 @@ class WinFontDescriptor : public Object, public virtual FontDescriptor {
private:
Microsoft::WRL::ComPtr<IDWriteTextFormat> text_format_;
};
-} // namespace cru::platform::win
+} // namespace cru::win::graph
diff --git a/include/cru/platform/win/win_geometry.hpp b/include/cru/win/graph/win_geometry.hpp
index e8ab7796..005a4384 100644
--- a/include/cru/platform/win/win_geometry.hpp
+++ b/include/cru/win/graph/win_geometry.hpp
@@ -1,12 +1,15 @@
#pragma once
-#include "win_pre_config.hpp"
+#include "../win_pre_config.hpp"
-#include "../geometry.hpp"
+#include "cru/platform/graph/geometry.hpp"
-namespace cru::platform::win {
-class WinGeometryBuilder : public Object, public virtual GeometryBuilder {
+namespace cru::win::graph {
+class GraphManager;
+
+class WinGeometryBuilder : public Object,
+ public virtual platform::graph::GeometryBuilder {
public:
- explicit WinGeometryBuilder(Microsoft::WRL::ComPtr<ID2D1PathGeometry> geometry);
+ explicit WinGeometryBuilder(GraphManager* graph_manger);
WinGeometryBuilder(const WinGeometryBuilder& other) = delete;
WinGeometryBuilder(WinGeometryBuilder&& other) = delete;
WinGeometryBuilder& operator=(const WinGeometryBuilder& other) = delete;
@@ -19,14 +22,14 @@ class WinGeometryBuilder : public Object, public virtual GeometryBuilder {
void QuadraticBezierTo(const ui::Point& control_point,
const ui::Point& end_point) override;
void CloseFigure(bool close) override;
- Geometry* Build() override;
+ platform::graph::Geometry* Build() override;
private:
Microsoft::WRL::ComPtr<ID2D1PathGeometry> geometry_;
Microsoft::WRL::ComPtr<ID2D1GeometrySink> geometry_sink_;
};
-class WinGeometry : public Object, public virtual Geometry {
+class WinGeometry : public Object, public virtual platform::graph::Geometry {
public:
explicit WinGeometry(Microsoft::WRL::ComPtr<ID2D1PathGeometry> geometry);
WinGeometry(const WinGeometry& other) = delete;
@@ -42,4 +45,4 @@ class WinGeometry : public Object, public virtual Geometry {
private:
Microsoft::WRL::ComPtr<ID2D1PathGeometry> geometry_;
};
-} // namespace cru::platform::win
+} // namespace cru::win::graph
diff --git a/include/cru/win/graph/win_graph_factory.hpp b/include/cru/win/graph/win_graph_factory.hpp
new file mode 100644
index 00000000..f8a07819
--- /dev/null
+++ b/include/cru/win/graph/win_graph_factory.hpp
@@ -0,0 +1,30 @@
+#pragma once
+#include "../win_pre_config.hpp"
+
+#include "cru/platform/graph/graph_factory.hpp"
+
+namespace cru::win::graph {
+class GraphManager;
+
+class WinGraphFactory : public Object,
+ public virtual platform::graph::GraphFactory {
+ public:
+ explicit WinGraphFactory(GraphManager* graph_manager);
+ WinGraphFactory(const WinGraphFactory& other) = delete;
+ WinGraphFactory(WinGraphFactory&& other) = delete;
+ WinGraphFactory& operator=(const WinGraphFactory& other) = delete;
+ WinGraphFactory& operator=(WinGraphFactory&& other) = delete;
+ ~WinGraphFactory() override = default;
+
+ platform::graph::SolidColorBrush* CreateSolidColorBrush(
+ const ui::Color& color) override;
+ platform::graph::GeometryBuilder* CreateGeometryBuilder() override;
+ platform::graph::FontDescriptor* CreateFontDescriptor(
+ const std::wstring_view& font_family, float font_size);
+ platform::graph::TextLayout* CreateTextLayout(
+ std::shared_ptr<platform::graph::FontDescriptor> font, std::wstring text);
+
+ private:
+ GraphManager* graph_manager_;
+};
+} // namespace cru::win::graph
diff --git a/include/cru/win/graph/win_painter.hpp b/include/cru/win/graph/win_painter.hpp
new file mode 100644
index 00000000..8351cb7b
--- /dev/null
+++ b/include/cru/win/graph/win_painter.hpp
@@ -0,0 +1,48 @@
+#pragma once
+#include "../win_pre_config.hpp"
+
+#include "cru/platform/graph/painter.hpp"
+
+namespace cru::win::graph {
+class GraphManager;
+
+class WinPainter : public Object, public virtual platform::graph::Painter {
+ public:
+ explicit WinPainter(ID2D1RenderTarget* render_target);
+ WinPainter(const WinPainter& other) = delete;
+ WinPainter(WinPainter&& other) = delete;
+ WinPainter& operator=(const WinPainter& other) = delete;
+ WinPainter& operator=(WinPainter&& other) = delete;
+ ~WinPainter() override;
+
+ platform::Matrix GetTransform() override;
+ void SetTransform(const platform::Matrix& matrix) override;
+ void Clear(const ui::Color& color) override;
+ void StrokeRectangle(const ui::Rect& rectangle, platform::graph::Brush* brush,
+ float width) override;
+ void FillRectangle(const ui::Rect& rectangle,
+ platform::graph::Brush* brush) override;
+ void StrokeGeometry(platform::graph::Geometry* geometry,
+ platform::graph::Brush* brush, float width) override;
+ void FillGeometry(platform::graph::Geometry* geometry,
+ platform::graph::Brush* brush) override;
+ void DrawText(const ui::Point& offset,
+ platform::graph::TextLayout* text_layout,
+ platform::graph::Brush* brush) override;
+ void EndDraw() override;
+ bool IsDisposed() override { return is_disposed_; }
+
+ void EndDrawAndDeleteThis() {
+ EndDraw();
+ delete this;
+ }
+
+ protected:
+ virtual void DoEndDraw();
+
+ private:
+ ID2D1RenderTarget* render_target_;
+
+ bool is_disposed_ = false;
+};
+} // namespace cru::win::graph
diff --git a/include/cru/platform/win/win_text_layout.hpp b/include/cru/win/graph/win_text_layout.hpp
index dfb54264..b861fda7 100644
--- a/include/cru/platform/win/win_text_layout.hpp
+++ b/include/cru/win/graph/win_text_layout.hpp
@@ -1,15 +1,15 @@
#pragma once
-#include "win_pre_config.hpp"
+#include "../win_pre_config.hpp"
-#include "../text_layout.hpp"
-#include "win_font.hpp"
+#include "cru/platform/graph/text_layout.hpp"
#include <memory>
-namespace cru::platform::win {
+namespace cru::win::graph {
class GraphManager;
+class WinFontDescriptor;
-class WinTextLayout : public Object, public virtual TextLayout {
+class WinTextLayout : public Object, public virtual platform::graph::TextLayout {
public:
explicit WinTextLayout(GraphManager* graph_manager,
std::shared_ptr<WinFontDescriptor> font, std::wstring text);
@@ -21,8 +21,8 @@ class WinTextLayout : public Object, public virtual TextLayout {
std::wstring GetText() override;
void SetText(std::wstring new_text) override;
- std::shared_ptr<FontDescriptor> GetFont();
- void SetFont(std::shared_ptr<FontDescriptor> font);
+ std::shared_ptr<platform::graph::FontDescriptor> GetFont();
+ void SetFont(std::shared_ptr<platform::graph::FontDescriptor> font);
void SetMaxWidth(float max_width) override;
void SetMaxHeight(float max_height) override;
ui::Rect GetTextBounds() override;
diff --git a/include/cru/platform/win/god_window.hpp b/include/cru/win/native/god_window.hpp
index 95a253e9..9ac49858 100644
--- a/include/cru/platform/win/god_window.hpp
+++ b/include/cru/win/native/god_window.hpp
@@ -1,11 +1,11 @@
#pragma once
-#include "win_pre_config.hpp"
-
-#include <memory>
+#include "../win_pre_config.hpp"
#include "cru/common/base.hpp"
-namespace cru::platform::win {
+#include <memory>
+
+namespace cru::win::native {
class WinApplication;
class WindowClass;
@@ -29,4 +29,4 @@ class GodWindow : public Object {
std::shared_ptr<WindowClass> god_window_class_;
HWND hwnd_;
};
-} // namespace cru::platform::win \ No newline at end of file
+} // namespace cru::win::native \ No newline at end of file
diff --git a/include/cru/platform/win/win_application.hpp b/include/cru/win/native/win_application.hpp
index f8150aed..458b10ae 100644
--- a/include/cru/platform/win/win_application.hpp
+++ b/include/cru/win/native/win_application.hpp
@@ -1,19 +1,17 @@
#pragma once
-#include "win_pre_config.hpp"
+#include "../win_pre_config.hpp"
-#include "../ui_applicaition.hpp"
-#include "cru/common/base.hpp"
+#include "cru/platform/native/ui_applicaition.hpp"
#include <memory>
-namespace cru::platform::win {
+namespace cru::win::native {
class GodWindow;
class TimerManager;
class WindowManager;
-class GraphManager;
-class WinGraphFactory;
-class WinApplication : public Object, public virtual UiApplication {
+class WinApplication : public Object,
+ public virtual platform::native::UiApplication {
public:
static WinApplication* GetInstance();
@@ -41,19 +39,15 @@ class WinApplication : public Object, public virtual UiApplication {
const std::function<void()>& action) override;
void CancelTimer(unsigned long id) override;
- std::vector<NativeWindow*> GetAllWindow() override;
- NativeWindow* CreateWindow(NativeWindow* parent) override;
-
- GraphFactory* GetGraphFactory() override;
-
+ std::vector<platform::native::NativeWindow*> GetAllWindow() override;
+ platform::native::NativeWindow* CreateWindow(
+ platform::native::NativeWindow* parent) override;
HINSTANCE GetInstanceHandle() const { return h_instance_; }
GodWindow* GetGodWindow() const { return god_window_.get(); }
TimerManager* GetTimerManager() const { return timer_manager_.get(); }
WindowManager* GetWindowManager() const { return window_manager_.get(); }
- GraphManager* GetGraphManager() const { return graph_manager_.get(); }
- WinGraphFactory* GetWinGraphFactory() const { return graph_factory_.get(); }
private:
HINSTANCE h_instance_;
@@ -61,7 +55,5 @@ class WinApplication : public Object, public virtual UiApplication {
std::shared_ptr<GodWindow> god_window_;
std::shared_ptr<TimerManager> timer_manager_;
std::shared_ptr<WindowManager> window_manager_;
- std::shared_ptr<GraphManager> graph_manager_;
- std::shared_ptr<WinGraphFactory> graph_factory_;
};
-} // namespace cru::platform::win
+} // namespace cru::win::native
diff --git a/include/cru/platform/win/win_native_window.hpp b/include/cru/win/native/win_native_window.hpp
index 7b93fd5c..2b9be25d 100644
--- a/include/cru/platform/win/win_native_window.hpp
+++ b/include/cru/win/native/win_native_window.hpp
@@ -1,18 +1,19 @@
#pragma once
-#include "win_pre_config.hpp"
+#include "../win_pre_config.hpp"
-#include "../native_window.hpp"
+#include "cru/platform/native/native_window.hpp"
#include "window_native_message_event_args.hpp"
#include <memory>
-namespace cru::platform::win {
+namespace cru::win::native {
class WinApplication;
class WindowClass;
class WindowManager;
class WindowRenderTarget;
-class WinNativeWindow : public Object, public virtual NativeWindow {
+class WinNativeWindow : public Object,
+ public virtual platform::native::NativeWindow {
public:
WinNativeWindow(WinApplication* application,
std::shared_ptr<WindowClass> window_class, DWORD window_style,
@@ -44,7 +45,7 @@ class WinNativeWindow : public Object, public virtual NativeWindow {
// The lefttop of the rect is relative to screen lefttop.
void SetWindowRect(const ui::Rect& rect) override;
- Painter* BeginPaint() override;
+ platform::graph::Painter* BeginPaint() override;
Event<>* DestroyEvent() override { return &destroy_event_; }
Event<const ui::Size&>* ResizeEvent() override { return &resize_event_; }
@@ -53,11 +54,15 @@ class WinNativeWindow : public Object, public virtual NativeWindow {
Event<bool>* MouseEnterLeaveEvent() override {
return &mouse_enter_leave_event_;
}
- Event<const ui::Point&>* MouseMoveEvent() override { return &mouse_move_event_; }
- Event<MouseButton, const ui::Point&>* MouseDownEvent() override {
+ Event<const ui::Point&>* MouseMoveEvent() override {
+ return &mouse_move_event_;
+ }
+ Event<platform::native::MouseButton, const ui::Point&>* MouseDownEvent()
+ override {
return &mouse_down_event_;
}
- Event<MouseButton, const ui::Point&>* MouseUpEvent() override {
+ Event<platform::native::MouseButton, const ui::Point&>* MouseUpEvent()
+ override {
return &mouse_up_event_;
}
Event<int>* KeyDownEvent() override { return &key_down_event_; }
@@ -92,8 +97,8 @@ class WinNativeWindow : public Object, public virtual NativeWindow {
void OnMouseMoveInternal(POINT point);
void OnMouseLeaveInternal();
- void OnMouseDownInternal(MouseButton button, POINT point);
- void OnMouseUpInternal(MouseButton button, POINT point);
+ void OnMouseDownInternal(platform::native::MouseButton button, POINT point);
+ void OnMouseUpInternal(platform::native::MouseButton button, POINT point);
void OnMouseWheelInternal(short delta, POINT point);
void OnKeyDownInternal(int virtual_code);
@@ -122,11 +127,11 @@ class WinNativeWindow : public Object, public virtual NativeWindow {
Event<bool> focus_event_;
Event<bool> mouse_enter_leave_event_;
Event<const ui::Point&> mouse_move_event_;
- Event<MouseButton, const ui::Point&> mouse_down_event_;
- Event<MouseButton, const ui::Point&> mouse_up_event_;
+ Event<platform::native::MouseButton, const ui::Point&> mouse_down_event_;
+ Event<platform::native::MouseButton, const ui::Point&> mouse_up_event_;
Event<int> key_down_event_;
Event<int> key_up_event_;
Event<WindowNativeMessageEventArgs&> native_message_event_;
};
-} // namespace cru::platform::win
+} // namespace cru::win::native
diff --git a/include/cru/platform/win/window_class.hpp b/include/cru/win/native/window_class.hpp
index be79af13..17712958 100644
--- a/include/cru/platform/win/window_class.hpp
+++ b/include/cru/win/native/window_class.hpp
@@ -1,14 +1,15 @@
#pragma once
-#include "win_pre_config.hpp"
+#include "../win_pre_config.hpp"
#include "cru/common/base.hpp"
#include <string>
-namespace cru::platform::win {
+namespace cru::win::native {
class WindowClass : public Object {
public:
- WindowClass(const std::wstring& name, WNDPROC window_proc, HINSTANCE h_instance);
+ WindowClass(const std::wstring& name, WNDPROC window_proc,
+ HINSTANCE h_instance);
WindowClass(const WindowClass& other) = delete;
WindowClass(WindowClass&& other) = delete;
WindowClass& operator=(const WindowClass& other) = delete;
@@ -23,4 +24,4 @@ class WindowClass : public Object {
std::wstring name_;
ATOM atom_;
};
-} // namespace cru::ui
+} // namespace cru::win::native
diff --git a/include/cru/platform/win/window_native_message_event_args.hpp b/include/cru/win/native/window_native_message_event_args.hpp
index b3419c24..37149f36 100644
--- a/include/cru/platform/win/window_native_message_event_args.hpp
+++ b/include/cru/win/native/window_native_message_event_args.hpp
@@ -1,9 +1,9 @@
#pragma once
-#include "win_pre_config.hpp"
+#include "../win_pre_config.hpp"
#include "cru/common/base.hpp"
-namespace cru::platform::win {
+namespace cru::win::native {
struct WindowNativeMessage {
HWND hwnd;
UINT msg;
@@ -42,4 +42,4 @@ class WindowNativeMessageEventArgs : public Object {
LRESULT result_;
bool handled_ = false;
};
-} // namespace cru::platform::win
+} // namespace cru::win::native
diff --git a/include/cru/platform/win/window_render_target.hpp b/include/cru/win/native/window_render_target.hpp
index f328a84a..c55055c6 100644
--- a/include/cru/platform/win/window_render_target.hpp
+++ b/include/cru/win/native/window_render_target.hpp
@@ -1,16 +1,17 @@
#pragma once
-#include "win_pre_config.hpp"
+#include "../win_pre_config.hpp"
#include "cru/common/base.hpp"
-
-namespace cru::platform::win {
+namespace cru::win::graph {
class GraphManager;
+}
+namespace cru::win::native {
// Represents a window render target.
class WindowRenderTarget : public Object {
public:
- WindowRenderTarget(GraphManager* graph_manager, HWND hwnd);
+ WindowRenderTarget(graph::GraphManager* graph_manager, HWND hwnd);
WindowRenderTarget(const WindowRenderTarget& other) = delete;
WindowRenderTarget(WindowRenderTarget&& other) = delete;
WindowRenderTarget& operator=(const WindowRenderTarget& other) = delete;
@@ -19,7 +20,7 @@ class WindowRenderTarget : public Object {
public:
// Get the graph manager that created the render target.
- GraphManager* GetGraphManager() const { return graph_manager_; }
+ graph::GraphManager* GetGraphManager() const { return graph_manager_; }
// Get the target bitmap which can be set as the ID2D1DeviceContext's target.
ID2D1Bitmap1* GetTargetBitmap() const { return target_bitmap_.Get(); }
@@ -37,8 +38,8 @@ class WindowRenderTarget : public Object {
void CreateTargetBitmap();
private:
- GraphManager* graph_manager_;
+ graph::GraphManager* graph_manager_;
Microsoft::WRL::ComPtr<IDXGISwapChain1> dxgi_swap_chain_;
Microsoft::WRL::ComPtr<ID2D1Bitmap1> target_bitmap_;
};
-} // namespace cru::graph
+} // namespace cru::win::native
diff --git a/include/cru/platform/win/win_pre_config.hpp b/include/cru/win/win_pre_config.hpp
index 6962eb7b..6962eb7b 100644
--- a/include/cru/platform/win/win_pre_config.hpp
+++ b/include/cru/win/win_pre_config.hpp