diff options
author | crupest <crupest@outlook.com> | 2020-06-28 22:17:14 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2020-06-28 22:17:14 +0800 |
commit | 427bd31059fcdca5806a149238e91173667953c1 (patch) | |
tree | dec0794e8445040f8b177aaa29e0600380e5420f /src/ui/render/BorderRenderObject.cpp | |
parent | 26da84f59396075118ee769654471159e1f49980 (diff) | |
download | cru-427bd31059fcdca5806a149238e91173667953c1.tar.gz cru-427bd31059fcdca5806a149238e91173667953c1.tar.bz2 cru-427bd31059fcdca5806a149238e91173667953c1.zip |
...
Diffstat (limited to 'src/ui/render/BorderRenderObject.cpp')
-rw-r--r-- | src/ui/render/BorderRenderObject.cpp | 43 |
1 files changed, 21 insertions, 22 deletions
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_) { |