diff options
| author | Yuqian Yang <crupest@crupest.life> | 2025-11-22 21:24:18 +0800 |
|---|---|---|
| committer | Yuqian Yang <crupest@crupest.life> | 2025-11-22 21:24:18 +0800 |
| commit | 8f8b7dfd056dfa23dd1989d3f3dfd3d5d91d0168 (patch) | |
| tree | 435917530667bd4532c9bb70826c5796ca1ffa6a /src/ui/render/TextRenderObject.cpp | |
| parent | 7ce185d5a3fcfad8c8f746f95f3d50a8829faac4 (diff) | |
| download | cru-8f8b7dfd056dfa23dd1989d3f3dfd3d5d91d0168.tar.gz cru-8f8b7dfd056dfa23dd1989d3f3dfd3d5d91d0168.tar.bz2 cru-8f8b7dfd056dfa23dd1989d3f3dfd3d5d91d0168.zip | |
Clean measure requirement codes.
Diffstat (limited to 'src/ui/render/TextRenderObject.cpp')
| -rw-r--r-- | src/ui/render/TextRenderObject.cpp | 31 |
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; } |
