aboutsummaryrefslogtreecommitdiff
path: root/src/ui/render/border_render_object.cpp
diff options
context:
space:
mode:
author杨宇千 <crupest@outlook.com>2019-09-17 16:05:17 +0800
committer杨宇千 <crupest@outlook.com>2019-09-17 16:05:17 +0800
commite8dd10eec26d26c3fb30f2712ccf58ac72edc8a2 (patch)
tree75293a2bb477fb1872087fab8bfd2c89b6d2051f /src/ui/render/border_render_object.cpp
parent465d89b4207cce929dc8e0b6ac93c3533ba19408 (diff)
downloadcru-e8dd10eec26d26c3fb30f2712ccf58ac72edc8a2.tar.gz
cru-e8dd10eec26d26c3fb30f2712ccf58ac72edc8a2.tar.bz2
cru-e8dd10eec26d26c3fb30f2712ccf58ac72edc8a2.zip
...
Diffstat (limited to 'src/ui/render/border_render_object.cpp')
-rw-r--r--src/ui/render/border_render_object.cpp35
1 files changed, 17 insertions, 18 deletions
diff --git a/src/ui/render/border_render_object.cpp b/src/ui/render/border_render_object.cpp
index 6af76b32..2ca55f4d 100644
--- a/src/ui/render/border_render_object.cpp
+++ b/src/ui/render/border_render_object.cpp
@@ -21,10 +21,10 @@ void BorderRenderObject::Draw(platform::graph::Painter* painter) {
painter->FillGeometry(border_inner_geometry_.get(),
background_brush_.get());
if (is_border_enabled_) {
- if (border_style_.brush == nullptr) {
+ if (border_brush_ == nullptr) {
log::Warn(L"Border is enabled but brush is null");
} else {
- painter->FillGeometry(geometry_.get(), border_style_.brush.get());
+ painter->FillGeometry(geometry_.get(), border_brush_.get());
}
}
if (const auto child = GetChild()) {
@@ -64,11 +64,6 @@ RenderObject* BorderRenderObject::HitTest(const Point& point) {
}
}
-void BorderRenderObject::OnSizeChanged(const Size& old_size,
- const Size& new_size) {
- RecreateGeometry();
-}
-
void BorderRenderObject::OnMeasureCore(const Size& available_size) {
const auto margin = GetMargin();
const auto padding = GetPadding();
@@ -78,9 +73,9 @@ void BorderRenderObject::OnMeasureCore(const Size& available_size) {
if (is_border_enabled_) {
margin_border_padding_size.width +=
- border_style_.thickness.GetHorizontalTotal();
+ border_thickness_.GetHorizontalTotal();
margin_border_padding_size.height +=
- border_style_.thickness.GetVerticalTotal();
+ border_thickness_.GetVerticalTotal();
}
auto coerced_margin_border_padding_size = margin_border_padding_size;
@@ -115,9 +110,9 @@ void BorderRenderObject::OnLayoutCore(const Rect& rect) {
if (is_border_enabled_) {
margin_border_padding_size.width +=
- border_style_.thickness.GetHorizontalTotal();
+ border_thickness_.GetHorizontalTotal();
margin_border_padding_size.height +=
- border_style_.thickness.GetVerticalTotal();
+ border_thickness_.GetVerticalTotal();
}
const auto content_available_size =
@@ -138,9 +133,9 @@ void BorderRenderObject::OnLayoutCore(const Rect& rect) {
}
OnLayoutContent(Rect{
- margin.left + (is_border_enabled_ ? border_style_.thickness.left : 0) +
+ margin.left + (is_border_enabled_ ? border_thickness_.left : 0) +
padding.left,
- margin.top + (is_border_enabled_ ? border_style_.thickness.top : 0) +
+ margin.top + (is_border_enabled_ ? border_thickness_.top : 0) +
padding.top,
coerced_content_available_size.width,
coerced_content_available_size.height});
@@ -163,6 +158,10 @@ void BorderRenderObject::OnLayoutContent(const Rect& content_rect) {
}
}
+void BorderRenderObject::OnAfterLayout() {
+ RecreateGeometry();
+}
+
void BorderRenderObject::RecreateGeometry() {
geometry_.reset();
border_outer_geometry_.reset();
@@ -197,20 +196,20 @@ void BorderRenderObject::RecreateGeometry() {
const auto graph_factory = platform::graph::GraphFactory::GetInstance();
std::unique_ptr<platform::graph::GeometryBuilder> builder{
graph_factory->CreateGeometryBuilder()};
- f(builder.get(), outer_rect, border_style_.corner_radius);
+ f(builder.get(), outer_rect, border_radius_);
border_outer_geometry_.reset(builder->Build());
builder.reset();
- const Rect inner_rect = outer_rect.Shrink(border_style_.thickness);
+ const Rect inner_rect = outer_rect.Shrink(border_thickness_);
builder.reset(graph_factory->CreateGeometryBuilder());
- f(builder.get(), inner_rect, border_style_.corner_radius);
+ f(builder.get(), inner_rect, border_radius_);
border_inner_geometry_.reset(builder->Build());
builder.reset();
builder.reset(graph_factory->CreateGeometryBuilder());
- f(builder.get(), outer_rect, border_style_.corner_radius);
- f(builder.get(), inner_rect, border_style_.corner_radius);
+ f(builder.get(), outer_rect, border_radius_);
+ f(builder.get(), inner_rect, border_radius_);
geometry_.reset(builder->Build());
builder.reset();
}