From dea11f34bfab5bfd5f66dec9f2fa0239abf44d89 Mon Sep 17 00:00:00 2001 From: crupest Date: Wed, 19 Sep 2018 23:43:26 +0800 Subject: Improve linear layout. Add debug border visualization. --- CruUI/ui/layout_base.h | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) (limited to 'CruUI/ui/layout_base.h') diff --git a/CruUI/ui/layout_base.h b/CruUI/ui/layout_base.h index 08f36769..25a6774c 100644 --- a/CruUI/ui/layout_base.h +++ b/CruUI/ui/layout_base.h @@ -22,13 +22,30 @@ namespace cru struct MeasureLength final { - explicit MeasureLength(const float length = 0.0, const MeasureMode mode = MeasureMode::Content) + constexpr static MeasureLength Exactly(const float length) + { + return MeasureLength(MeasureMode::Exactly, length); + } + + constexpr static MeasureLength Content() + { + return MeasureLength(MeasureMode::Content, 0); + } + + constexpr static MeasureLength Stretch() + { + return MeasureLength(MeasureMode::Stretch, 0); + } + + constexpr MeasureLength() = default; + + constexpr explicit MeasureLength(const MeasureMode mode, const float length) : length(length), mode(mode) { } - bool Validate() const + constexpr bool Validate() const { if (mode == MeasureMode::Exactly && length < 0.0) { @@ -40,8 +57,8 @@ namespace cru return true; } - float length; - MeasureMode mode; + float length = 0.0; + MeasureMode mode = MeasureMode::Content; }; struct BasicLayoutParams -- cgit v1.2.3