aboutsummaryrefslogtreecommitdiff
path: root/src/ui/render/TextRenderObject.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui/render/TextRenderObject.cpp')
-rw-r--r--src/ui/render/TextRenderObject.cpp31
1 files changed, 7 insertions, 24 deletions
diff --git a/src/ui/render/TextRenderObject.cpp b/src/ui/render/TextRenderObject.cpp
index b9ab8dd9..44dee1aa 100644
--- a/src/ui/render/TextRenderObject.cpp
+++ b/src/ui/render/TextRenderObject.cpp
@@ -8,7 +8,6 @@
#include "cru/ui/DebugFlags.h"
#include "cru/ui/render/RenderObject.h"
-#include <algorithm>
#include <limits>
namespace cru::ui::render {
@@ -180,7 +179,7 @@ void TextRenderObject::Draw(platform::graphics::IPainter* painter) {
CRU_LOG_TAG_DEBUG(
"Begin to paint, total_offset: {}, size: {}, text_layout: "
"{}, brush: {}.",
- this->GetTotalOffset(), this->GetDesiredSize(),
+ this->GetTotalOffset(), this->GetMeasureResultSize(),
this->text_layout_->GetDebugString(), this->brush_->GetDebugString());
}
@@ -197,32 +196,16 @@ void TextRenderObject::Draw(platform::graphics::IPainter* painter) {
}
}
-Size TextRenderObject::OnMeasureContent(const MeasureRequirement& requirement,
- const MeasureSize& preferred_size) {
- float measure_width;
- if (preferred_size.width.IsSpecified())
- measure_width = preferred_size.width.GetLengthOrUndefined();
- else
- measure_width = requirement.max.width.GetLengthOrMax();
+Size TextRenderObject::OnMeasureContent(const MeasureRequirement& requirement) {
+ float measure_width = requirement.suggest.width.GetLengthOr(
+ requirement.max.width.GetLengthOrMaxFloat());
text_layout_->SetMaxWidth(measure_width);
text_layout_->SetMaxHeight(std::numeric_limits<float>::max());
- const Size text_size(
- text_layout_->GetTextBounds(is_measure_including_trailing_space_)
- .GetRightBottom());
- auto result = text_size;
-
- result.width = std::max(result.width, preferred_size.width.GetLengthOr0());
- result.width = std::max(result.width, requirement.min.width.GetLengthOr0());
- result.width = std::min(result.width, requirement.max.width.GetLengthOrMax());
-
- result.height = std::max(result.height, preferred_size.height.GetLengthOr0());
- result.height =
- std::max(result.height, requirement.min.height.GetLengthOr0());
- result.height =
- std::min(result.height, requirement.max.height.GetLengthOrMax());
-
+ Size result(text_layout_->GetTextBounds(is_measure_including_trailing_space_)
+ .GetRightBottom());
+ result = requirement.ExpandToSuggestAndCoerce(result);
return result;
}