diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/cru/platform/GraphBase.hpp | 5 | ||||
-rw-r--r-- | include/cru/ui/render/BorderRenderObject.hpp | 16 | ||||
-rw-r--r-- | include/cru/ui/render/RenderObject.hpp | 2 | ||||
-rw-r--r-- | include/cru/ui/render/ScrollRenderObject.hpp | 2 | ||||
-rw-r--r-- | include/cru/ui/render/StackLayoutRenderObject.hpp | 4 | ||||
-rw-r--r-- | include/cru/ui/render/TextRenderObject.hpp | 2 |
6 files changed, 24 insertions, 7 deletions
diff --git a/include/cru/platform/GraphBase.hpp b/include/cru/platform/GraphBase.hpp index 6bf2736f..4d3c8f83 100644 --- a/include/cru/platform/GraphBase.hpp +++ b/include/cru/platform/GraphBase.hpp @@ -129,6 +129,11 @@ constexpr Size operator+(const Thickness& thickness, const Size& size) { return operator+(size, thickness); } +constexpr Thickness operator+(const Thickness& left, const Thickness& right) { + return {left.left + right.left, left.top + right.top, + left.right + right.right, left.bottom + right.bottom}; +} + constexpr bool operator==(const Thickness& left, const Thickness& right) { return left.left == right.left && left.top == right.top && left.right == right.right && left.bottom == right.bottom; diff --git a/include/cru/ui/render/BorderRenderObject.hpp b/include/cru/ui/render/BorderRenderObject.hpp index 3d4f4dad..34ad71d6 100644 --- a/include/cru/ui/render/BorderRenderObject.hpp +++ b/include/cru/ui/render/BorderRenderObject.hpp @@ -1,6 +1,8 @@ #pragma once +#include <string_view> #include "../style/ApplyBorderStyleInfo.hpp" #include "RenderObject.hpp" +#include "cru/platform/GraphBase.hpp" #include "cru/ui/Base.hpp" namespace cru::ui::render { @@ -28,7 +30,7 @@ class BorderRenderObject : public RenderObject { InvalidatePaint(); } - Thickness GetBorderThickness() { return border_thickness_; } + Thickness GetBorderThickness() const { return border_thickness_; } void SetBorderThickness(const Thickness thickness) { if (thickness == border_thickness_) return; @@ -68,21 +70,21 @@ class BorderRenderObject : public RenderObject { RenderObject* HitTest(const Point& point) override; + Thickness GetOuterSpaceThickness() const override; + Rect GetPaddingRect() const override; + Rect GetContentRect() const override; + + std::u16string_view GetName() const override { return u"BorderRenderObject"; } + protected: void OnDrawCore(platform::graphics::IPainter* painter) override; - Size OnMeasureCore(const MeasureRequirement& requirement, - const MeasureSize& preferred_size) override; - void OnLayoutCore() override; Size OnMeasureContent(const MeasureRequirement& requirement, const MeasureSize& preferred_size) override; void OnLayoutContent(const Rect& content_rect) override; void OnAfterLayout() override; - Rect GetPaddingRect() const override; - Rect GetContentRect() const override; - private: void RecreateGeometry(); diff --git a/include/cru/ui/render/RenderObject.hpp b/include/cru/ui/render/RenderObject.hpp index 8bcd4c62..622c27f2 100644 --- a/include/cru/ui/render/RenderObject.hpp +++ b/include/cru/ui/render/RenderObject.hpp @@ -4,6 +4,7 @@ #include "MeasureRequirement.hpp" #include "cru/common/Base.hpp" #include "cru/common/Event.hpp" +#include "cru/platform/GraphBase.hpp" #include "cru/ui/Base.hpp" #include <cstddef> @@ -131,6 +132,7 @@ class RenderObject : public Object { // This will set offset of this render object and call OnLayoutCore. void Layout(const Point& offset); + virtual Thickness GetOuterSpaceThickness() const; virtual Rect GetPaddingRect() const; virtual Rect GetContentRect() const; diff --git a/include/cru/ui/render/ScrollRenderObject.hpp b/include/cru/ui/render/ScrollRenderObject.hpp index aed25f8e..7b98ab72 100644 --- a/include/cru/ui/render/ScrollRenderObject.hpp +++ b/include/cru/ui/render/ScrollRenderObject.hpp @@ -60,6 +60,8 @@ class ScrollRenderObject : public RenderObject { // Param margin is just for convenience and it will just add to the rect. void ScrollToContain(const Rect& rect, const Thickness& margin = Thickness{}); + std::u16string_view GetName() const override { return u"ScrollRenderObject"; } + protected: void OnDrawCore(platform::graphics::IPainter* painter) override; diff --git a/include/cru/ui/render/StackLayoutRenderObject.hpp b/include/cru/ui/render/StackLayoutRenderObject.hpp index 303241c5..4f15ad11 100644 --- a/include/cru/ui/render/StackLayoutRenderObject.hpp +++ b/include/cru/ui/render/StackLayoutRenderObject.hpp @@ -31,6 +31,10 @@ class StackLayoutRenderObject CRU_DELETE_MOVE(StackLayoutRenderObject) ~StackLayoutRenderObject() = default; + std::u16string_view GetName() const override { + return u"StackLayoutRenderObject"; + } + protected: Size OnMeasureContent(const MeasureRequirement& requirement, const MeasureSize& preferred_size) override; diff --git a/include/cru/ui/render/TextRenderObject.hpp b/include/cru/ui/render/TextRenderObject.hpp index bdec18d1..cf585d6f 100644 --- a/include/cru/ui/render/TextRenderObject.hpp +++ b/include/cru/ui/render/TextRenderObject.hpp @@ -89,6 +89,8 @@ class TextRenderObject : public RenderObject { RenderObject* HitTest(const Point& point) override; + std::u16string_view GetName() const override { return u"TextRenderObject"; } + protected: void OnDrawContent(platform::graphics::IPainter* painter) override; |