aboutsummaryrefslogtreecommitdiff
path: root/include/cru/ui/render
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2019-12-13 01:02:47 +0800
committercrupest <crupest@outlook.com>2019-12-13 01:02:47 +0800
commit9110574bb51e9e2959842a7641f598d34c3cd847 (patch)
tree96ee1f5b3c40095e4e923fc763de0663ee6a01aa /include/cru/ui/render
parentf2aa96fba0b72eeeadf5160ea5df2c8143ec8aa0 (diff)
downloadcru-9110574bb51e9e2959842a7641f598d34c3cd847.tar.gz
cru-9110574bb51e9e2959842a7641f598d34c3cd847.tar.bz2
cru-9110574bb51e9e2959842a7641f598d34c3cd847.zip
...
Diffstat (limited to 'include/cru/ui/render')
-rw-r--r--include/cru/ui/render/border_render_object.hpp30
-rw-r--r--include/cru/ui/render/flex_layout_render_object.hpp2
-rw-r--r--include/cru/ui/render/render_object.hpp7
-rw-r--r--include/cru/ui/render/text_render_object.hpp38
-rw-r--r--include/cru/ui/render/window_render_object.hpp2
5 files changed, 38 insertions, 41 deletions
diff --git a/include/cru/ui/render/border_render_object.hpp b/include/cru/ui/render/border_render_object.hpp
index 5520ab2e..726510a8 100644
--- a/include/cru/ui/render/border_render_object.hpp
+++ b/include/cru/ui/render/border_render_object.hpp
@@ -1,13 +1,11 @@
#pragma once
-#include "cru/platform/graph/brush.hpp"
-#include "cru/ui/base.hpp"
#include "render_object.hpp"
#include <memory>
namespace cru::platform::graph {
-class Brush;
-class IGeometry;
+struct IBrush;
+struct IGeometry;
} // namespace cru::platform::graph
namespace cru::ui::render {
@@ -55,19 +53,19 @@ class BorderRenderObject : public RenderObject {
bool IsBorderEnabled() const { return is_border_enabled_; }
void SetBorderEnabled(bool enabled) { is_border_enabled_ = enabled; }
- std::shared_ptr<platform::graph::Brush> GetBorderBrush() {
+ std::shared_ptr<platform::graph::IBrush> GetBorderBrush() {
return border_brush_;
}
- void SetBorderBrush(std::shared_ptr<platform::graph::Brush> brush) {
+ void SetBorderBrush(std::shared_ptr<platform::graph::IBrush> brush) {
if (brush == border_brush_) return;
border_brush_ = std::move(brush);
InvalidatePaint();
}
- platform::Thickness GetBorderThickness() { return border_thickness_; }
+ Thickness GetBorderThickness() { return border_thickness_; }
- void SetBorderThickness(const platform::Thickness thickness) {
+ void SetBorderThickness(const Thickness thickness) {
if (thickness == border_thickness_) return;
border_thickness_ = thickness;
InvalidateLayout();
@@ -81,27 +79,27 @@ class BorderRenderObject : public RenderObject {
RecreateGeometry();
}
- std::shared_ptr<platform::graph::Brush> GetForegroundBrush() {
+ std::shared_ptr<platform::graph::IBrush> GetForegroundBrush() {
return foreground_brush_;
}
- void SetForegroundBrush(std::shared_ptr<platform::graph::Brush> brush) {
+ void SetForegroundBrush(std::shared_ptr<platform::graph::IBrush> brush) {
if (brush == foreground_brush_) return;
foreground_brush_ = std::move(brush);
InvalidatePaint();
}
- std::shared_ptr<platform::graph::Brush> GetBackgroundBrush() {
+ std::shared_ptr<platform::graph::IBrush> GetBackgroundBrush() {
return background_brush_;
}
- void SetBackgroundBrush(std::shared_ptr<platform::graph::Brush> brush) {
+ void SetBackgroundBrush(std::shared_ptr<platform::graph::IBrush> brush) {
if (brush == background_brush_) return;
background_brush_ = std::move(brush);
InvalidatePaint();
}
- void Draw(platform::graph::Painter* painter) override;
+ void Draw(platform::graph::IPainter* painter) override;
RenderObject* HitTest(const Point& point) override;
@@ -123,12 +121,12 @@ class BorderRenderObject : public RenderObject {
private:
bool is_border_enabled_ = false;
- std::shared_ptr<platform::graph::Brush> border_brush_;
+ std::shared_ptr<platform::graph::IBrush> border_brush_;
platform::Thickness border_thickness_;
CornerRadius border_radius_;
- std::shared_ptr<platform::graph::Brush> foreground_brush_;
- std::shared_ptr<platform::graph::Brush> background_brush_;
+ std::shared_ptr<platform::graph::IBrush> foreground_brush_;
+ std::shared_ptr<platform::graph::IBrush> background_brush_;
// The ring. Used for painting.
std::unique_ptr<platform::graph::IGeometry> geometry_;
diff --git a/include/cru/ui/render/flex_layout_render_object.hpp b/include/cru/ui/render/flex_layout_render_object.hpp
index 7b71b96e..5a8d09ba 100644
--- a/include/cru/ui/render/flex_layout_render_object.hpp
+++ b/include/cru/ui/render/flex_layout_render_object.hpp
@@ -78,7 +78,7 @@ class FlexLayoutRenderObject : public RenderObject {
InvalidateLayout();
}
- void Draw(platform::graph::Painter* painter) override;
+ void Draw(platform::graph::IPainter* 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 befaa3ec..55b7f2da 100644
--- a/include/cru/ui/render/render_object.hpp
+++ b/include/cru/ui/render/render_object.hpp
@@ -1,7 +1,6 @@
#pragma once
-#include "cru/common/base.hpp"
-
#include "../base.hpp"
+
#include "cru/common/event.hpp"
#include <vector>
@@ -12,7 +11,7 @@ class Control;
}
namespace cru::platform::graph {
-class Painter;
+struct IPainter;
}
namespace cru::ui::render {
@@ -75,7 +74,7 @@ class RenderObject : public Object {
void Measure(const Size& available_size);
void Layout(const Rect& rect);
- virtual void Draw(platform::graph::Painter* painter) = 0;
+ virtual void Draw(platform::graph::IPainter* 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 a10e3b74..6c01ed93 100644
--- a/include/cru/ui/render/text_render_object.hpp
+++ b/include/cru/ui/render/text_render_object.hpp
@@ -6,33 +6,33 @@
// forward declarations
namespace cru::platform::graph {
-class Brush;
-class Font;
-class TextLayout;
+struct IBrush;
+struct IFont;
+struct ITextLayout;
} // namespace cru::platform::graph
namespace cru::ui::render {
class TextRenderObject : public RenderObject {
public:
- TextRenderObject(std::shared_ptr<platform::graph::Brush> brush,
- std::shared_ptr<platform::graph::Font> font,
- std::shared_ptr<platform::graph::Brush> selection_brush);
+ TextRenderObject(std::shared_ptr<platform::graph::IBrush> brush,
+ std::shared_ptr<platform::graph::IFont> font,
+ std::shared_ptr<platform::graph::IBrush> selection_brush);
TextRenderObject(const TextRenderObject& other) = delete;
TextRenderObject(TextRenderObject&& other) = delete;
TextRenderObject& operator=(const TextRenderObject& other) = delete;
TextRenderObject& operator=(TextRenderObject&& other) = delete;
~TextRenderObject() override = default;
- std::wstring GetText() const;
- void SetText(std::wstring new_text);
+ std::string GetText() const;
+ void SetText(std::string new_text);
- std::shared_ptr<platform::graph::Brush> GetBrush() const { return brush_; }
- void SetBrush(std::shared_ptr<platform::graph::Brush> new_brush) {
+ std::shared_ptr<platform::graph::IBrush> GetBrush() const { return brush_; }
+ void SetBrush(std::shared_ptr<platform::graph::IBrush> new_brush) {
new_brush.swap(brush_);
}
- std::shared_ptr<platform::graph::Font> GetFont() const;
- void SetFont(std::shared_ptr<platform::graph::Font> font);
+ std::shared_ptr<platform::graph::IFont> GetFont() const;
+ void SetFont(std::shared_ptr<platform::graph::IFont> 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::graph::Brush> GetSelectionBrush() const {
+ std::shared_ptr<platform::graph::IBrush> GetSelectionBrush() const {
return selection_brush_;
}
- void SetSelectionBrush(std::shared_ptr<platform::graph::Brush> new_brush) {
+ void SetSelectionBrush(std::shared_ptr<platform::graph::IBrush> new_brush) {
new_brush.swap(selection_brush_);
}
- void Draw(platform::graph::Painter* painter) override;
+ void Draw(platform::graph::IPainter* painter) override;
RenderObject* HitTest(const Point& point) override;
@@ -59,11 +59,11 @@ class TextRenderObject : public RenderObject {
void OnAfterLayout() override;
private:
- std::shared_ptr<platform::graph::Brush> brush_;
- std::shared_ptr<platform::graph::Font> font_;
- std::shared_ptr<platform::graph::TextLayout> text_layout_;
+ std::shared_ptr<platform::graph::IBrush> brush_;
+ std::shared_ptr<platform::graph::IFont> font_;
+ std::unique_ptr<platform::graph::ITextLayout> text_layout_;
std::optional<TextRange> selection_range_ = std::nullopt;
- std::shared_ptr<platform::graph::Brush> selection_brush_;
+ std::shared_ptr<platform::graph::IBrush> 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 2260c293..8f35ad80 100644
--- a/include/cru/ui/render/window_render_object.hpp
+++ b/include/cru/ui/render/window_render_object.hpp
@@ -21,7 +21,7 @@ class WindowRenderObject : public RenderObject {
void Relayout();
- void Draw(platform::graph::Painter* painter) override;
+ void Draw(platform::graph::IPainter* painter) override;
RenderObject* HitTest(const Point& point) override;