aboutsummaryrefslogtreecommitdiff
path: root/src/ui/render/BorderRenderObject.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui/render/BorderRenderObject.cpp')
-rw-r--r--src/ui/render/BorderRenderObject.cpp47
1 files changed, 18 insertions, 29 deletions
diff --git a/src/ui/render/BorderRenderObject.cpp b/src/ui/render/BorderRenderObject.cpp
index 080bcc4f..1fc120f1 100644
--- a/src/ui/render/BorderRenderObject.cpp
+++ b/src/ui/render/BorderRenderObject.cpp
@@ -5,7 +5,6 @@
#include "cru/platform/graphics/Geometry.h"
#include "cru/platform/graphics/Painter.h"
#include "cru/platform/gui/UiApplication.h"
-#include "cru/ui/DebugFlags.h"
#include "cru/ui/render/RenderObject.h"
#include <algorithm>
@@ -80,15 +79,24 @@ RenderObject* BorderRenderObject::HitTest(const Point& point) {
}
}
-void BorderRenderObject::Draw(platform::graphics::IPainter* painter) {
- if constexpr (debug_flags::draw) {
- CruLogDebug(
- kLogTag, "BorderRenderObject draw, background: {}, foreground: {}.",
- background_brush_ == nullptr ? "NONE"
- : background_brush_->GetDebugString(),
- foreground_brush_ == nullptr ? "NONE"
- : foreground_brush_->GetDebugString());
+Size BorderRenderObject::OnMeasureContent(
+ const MeasureRequirement& requirement) {
+ if (auto child = GetChild()) {
+ child->Measure(requirement);
+ return child->GetMeasureResultSize();
+ } else {
+ return requirement.suggest.GetSizeOr0();
+ }
+}
+
+void BorderRenderObject::OnLayoutContent(const Rect& content_rect) {
+ if (auto child = GetChild()) {
+ child->Layout(content_rect.GetLeftTop());
}
+}
+
+void BorderRenderObject::OnDraw(RenderObjectDrawContext& context) {
+ auto painter = context.painter;
if (background_brush_ != nullptr)
painter->FillGeometry(border_inner_geometry_.get(),
@@ -103,10 +111,7 @@ void BorderRenderObject::Draw(platform::graphics::IPainter* painter) {
}
if (auto child = GetChild()) {
- painter->PushState();
- painter->ConcatTransform(Matrix::Translation(child->GetOffset()));
- child->Draw(painter);
- painter->PopState();
+ context.DrawChild(child);
}
if (foreground_brush_ != nullptr)
@@ -114,22 +119,6 @@ void BorderRenderObject::Draw(platform::graphics::IPainter* painter) {
foreground_brush_.get());
}
-Size BorderRenderObject::OnMeasureContent(
- const MeasureRequirement& requirement) {
- if (auto child = GetChild()) {
- child->Measure(requirement);
- return child->GetMeasureResultSize();
- } else {
- return requirement.suggest.GetSizeOr0();
- }
-}
-
-void BorderRenderObject::OnLayoutContent(const Rect& content_rect) {
- if (auto child = GetChild()) {
- child->Layout(content_rect.GetLeftTop());
- }
-}
-
void BorderRenderObject::OnResize(const Size& new_size) { RecreateGeometry(); }
Thickness BorderRenderObject::GetTotalSpaceThickness() {