diff options
| -rw-r--r-- | include/cru/ui/render/BorderRenderObject.h | 2 | ||||
| -rw-r--r-- | src/ui/render/BorderRenderObject.cpp | 13 |
2 files changed, 15 insertions, 0 deletions
diff --git a/include/cru/ui/render/BorderRenderObject.h b/include/cru/ui/render/BorderRenderObject.h index c011cda0..0ceb7091 100644 --- a/include/cru/ui/render/BorderRenderObject.h +++ b/include/cru/ui/render/BorderRenderObject.h @@ -46,8 +46,10 @@ class CRU_UI_API BorderRenderObject : public SingleChildRenderObject { Thickness GetTotalSpaceThickness() override; Thickness GetInnerSpaceThickness() override; + Rect GetBorderRect(); Rect GetPaddingRect() override; Rect GetContentRect() override; + Rect GetRenderRect() override; protected: Size OnMeasureContent(const MeasureRequirement& requirement) override; diff --git a/src/ui/render/BorderRenderObject.cpp b/src/ui/render/BorderRenderObject.cpp index 144ad787..42cd9576 100644 --- a/src/ui/render/BorderRenderObject.cpp +++ b/src/ui/render/BorderRenderObject.cpp @@ -133,6 +133,17 @@ Thickness BorderRenderObject::GetInnerSpaceThickness() { : RenderObject::GetInnerSpaceThickness(); } +Rect BorderRenderObject::GetBorderRect() { + const auto size = GetSize(); + Rect rect{Point{}, size}; + rect = rect.Shrink(GetMargin()); + rect.left = std::min(rect.left, size.width); + rect.top = std::min(rect.top, size.height); + rect.width = std::max(rect.width, 0.0f); + rect.height = std::max(rect.height, 0.0f); + return rect; +} + Rect BorderRenderObject::GetPaddingRect() { const auto size = GetSize(); Rect rect{Point{}, size}; @@ -158,6 +169,8 @@ Rect BorderRenderObject::GetContentRect() { return rect; } +Rect BorderRenderObject::GetRenderRect() { return GetBorderRect(); } + void BorderRenderObject::RecreateGeometry() { geometry_.reset(); border_outer_geometry_.reset(); |
