aboutsummaryrefslogtreecommitdiff
path: root/CruUI/ui/layout_base.h
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2018-09-19 23:43:26 +0800
committercrupest <crupest@outlook.com>2018-09-19 23:43:26 +0800
commitdea11f34bfab5bfd5f66dec9f2fa0239abf44d89 (patch)
tree89ba9f88b86c22b25506e43277c3a2fc51a9c2c9 /CruUI/ui/layout_base.h
parent9caec47adf266946fdce290aaf5ec0c865197650 (diff)
downloadcru-dea11f34bfab5bfd5f66dec9f2fa0239abf44d89.tar.gz
cru-dea11f34bfab5bfd5f66dec9f2fa0239abf44d89.tar.bz2
cru-dea11f34bfab5bfd5f66dec9f2fa0239abf44d89.zip
Improve linear layout. Add debug border visualization.
Diffstat (limited to 'CruUI/ui/layout_base.h')
-rw-r--r--CruUI/ui/layout_base.h25
1 files changed, 21 insertions, 4 deletions
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