From b3c0c076e5a1b1e7d76fa8d32af0bcbb2c1cd4cf Mon Sep 17 00:00:00 2001 From: crupest Date: Sun, 28 Jun 2020 21:25:09 +0800 Subject: ... --- src/ui/render/LayoutHelper.cpp | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 src/ui/render/LayoutHelper.cpp (limited to 'src/ui/render/LayoutHelper.cpp') diff --git a/src/ui/render/LayoutHelper.cpp b/src/ui/render/LayoutHelper.cpp new file mode 100644 index 00000000..31cf5c08 --- /dev/null +++ b/src/ui/render/LayoutHelper.cpp @@ -0,0 +1,36 @@ +#include "cru/ui/render/LayoutHelper.hpp" + +#include "cru/common/Logger.hpp" + +namespace cru::ui::render { +float CalculateAnchorByAlignment(Alignment alignment, float start_point, + float content_length, float child_length) { + switch (alignment) { + case FlexCrossAlignment::Start: + return start_point; + case FlexCrossAlignment::Center: + return start_point + (content_length - child_length) / 2.0f; + case FlexCrossAlignment::End: + return start_point + content_length - child_length; + default: + return start_point; + } +} + +MeasureLength StackLayoutCalculateChildMaxLength( + MeasureLength parent_preferred_size, MeasureLength parent_max_size, + MeasureLength child_min_size, std::string_view exceeds_message) { + if (parent_max_size.GetLengthOrMax() < child_min_size.GetLengthOr0()) { + log::Warn(exceeds_message); + return parent_max_size; + } + + if (parent_preferred_size.IsSpecified() && + parent_preferred_size.GetLengthOrUndefined() >= + child_min_size.GetLengthOr0()) { + return parent_preferred_size; + } else { + return parent_max_size; + } +} +} // namespace cru::ui::render -- cgit v1.2.3