aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/cru/platform/GraphBase.hpp5
-rw-r--r--include/cru/ui/render/BorderRenderObject.hpp16
-rw-r--r--include/cru/ui/render/RenderObject.hpp2
-rw-r--r--include/cru/ui/render/ScrollRenderObject.hpp2
-rw-r--r--include/cru/ui/render/StackLayoutRenderObject.hpp4
-rw-r--r--include/cru/ui/render/TextRenderObject.hpp2
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;