From 427bd31059fcdca5806a149238e91173667953c1 Mon Sep 17 00:00:00 2001 From: crupest Date: Sun, 28 Jun 2020 22:17:14 +0800 Subject: ... --- src/ui/render/BorderRenderObject.cpp | 43 ++++++++++++++++++------------------ 1 file changed, 21 insertions(+), 22 deletions(-) (limited to 'src/ui/render/BorderRenderObject.cpp') diff --git a/src/ui/render/BorderRenderObject.cpp b/src/ui/render/BorderRenderObject.cpp index 74e50561..6513c4c4 100644 --- a/src/ui/render/BorderRenderObject.cpp +++ b/src/ui/render/BorderRenderObject.cpp @@ -16,28 +16,6 @@ BorderRenderObject::BorderRenderObject() { BorderRenderObject::~BorderRenderObject() {} -void BorderRenderObject::Draw(platform::graph::IPainter* painter) { - if (background_brush_ != nullptr) - painter->FillGeometry(border_inner_geometry_.get(), - background_brush_.get()); - if (is_border_enabled_) { - if (border_brush_ == nullptr) { - log::Warn("Border is enabled but brush is null"); - } else { - painter->FillGeometry(geometry_.get(), border_brush_.get()); - } - } - if (const auto child = GetSingleChild()) { - auto offset = child->GetOffset(); - platform::graph::util::WithTransform( - painter, platform::Matrix::Translation(offset.x, offset.y), - [child](auto p) { child->Draw(p); }); - } - if (foreground_brush_ != nullptr) - painter->FillGeometry(border_inner_geometry_.get(), - foreground_brush_.get()); -} - void BorderRenderObject::SetBorderStyle(const BorderStyle& style) { border_brush_ = style.border_brush; border_thickness_ = style.border_thickness; @@ -73,6 +51,27 @@ RenderObject* BorderRenderObject::HitTest(const Point& point) { } } +void BorderRenderObject::OnDrawCore(platform::graph::IPainter* painter) { + if (background_brush_ != nullptr) + painter->FillGeometry(border_inner_geometry_.get(), + background_brush_.get()); + if (is_border_enabled_) { + if (border_brush_ == nullptr) { + log::Warn("Border is enabled but brush is null"); + } else { + painter->FillGeometry(geometry_.get(), border_brush_.get()); + } + } + + DefaultDrawContent(painter); + + if (foreground_brush_ != nullptr) + painter->FillGeometry(border_inner_geometry_.get(), + foreground_brush_.get()); + + DefaultDrawChildren(painter); +} + Size BorderRenderObject::OnMeasureCore(const MeasureRequirement& requirement, const MeasureSize& preferred_size) { if (!is_border_enabled_) { -- cgit v1.2.3