diff options
Diffstat (limited to 'src/ui/render/BorderRenderObject.cpp')
| -rw-r--r-- | src/ui/render/BorderRenderObject.cpp | 47 |
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() { |
