slot 0.0.1
A real time UI render framework
载入中...
搜索中...
未找到
StyleSizeLength.h
浏览该文件的文档.
1/*
2 * Copyright (c) Meta Platforms, Inc. and affiliates.
3 *
4 * This source code is licensed under the MIT license found in the
5 * LICENSE file in the root directory of this source tree.
6 */
7
8#pragma once
9
10#include <yoga/enums/Unit.h>
12
13namespace facebook::yoga {
14
30 public:
31 constexpr StyleSizeLength() = default;
32
38
44
45 constexpr static StyleSizeLength stretch(float fraction) {
46 return yoga::isUndefined(fraction) || yoga::isinf(fraction)
47 ? undefined()
49 }
50
51 constexpr static StyleSizeLength ofAuto() {
52 return StyleSizeLength{{}, Unit::Auto};
53 }
54
55 constexpr static StyleSizeLength ofMaxContent() {
57 }
58
59 constexpr static StyleSizeLength ofFitContent() {
61 }
62
63 constexpr static StyleSizeLength ofStretch() {
65 }
66
67 constexpr static StyleSizeLength undefined() {
69 }
70
71 constexpr bool isAuto() const {
72 return unit_ == Unit::Auto;
73 }
74
75 constexpr bool isMaxContent() const {
76 return unit_ == Unit::MaxContent;
77 }
78
79 constexpr bool isFitContent() const {
80 return unit_ == Unit::FitContent;
81 }
82
83 constexpr bool isStretch() const {
84 return unit_ == Unit::Stretch;
85 }
86
87 constexpr bool isUndefined() const {
88 return unit_ == Unit::Undefined;
89 }
90
91 constexpr bool isDefined() const {
92 return !isUndefined();
93 }
94
95 constexpr bool isPoints() const {
96 return unit_ == Unit::Point;
97 }
98
99 constexpr bool isPercent() const {
100 return unit_ == Unit::Percent;
101 }
102
103 constexpr FloatOptional value() const {
104 return value_;
105 }
106
107 constexpr FloatOptional resolve(float referenceLength) const {
108#ifdef __clang__
109#pragma clang diagnostic push
110#pragma clang diagnostic ignored "-Wswitch-enum"
111#endif
112 switch (unit_) {
113#ifdef __clang__
114#pragma clang diagnostic pop
115#endif
116 case Unit::Point:
117 return value_;
118 case Unit::Percent:
119 return FloatOptional{value_.unwrap() * referenceLength * 0.01f};
120 default:
121 return FloatOptional{};
122 }
123 }
124
125 explicit constexpr operator YGValue() const {
127 }
128
129 constexpr bool operator==(const StyleSizeLength& rhs) const {
130 return value_ == rhs.value_ && unit_ == rhs.unit_;
131 }
132
133 constexpr bool inexactEquals(const StyleSizeLength& other) const {
134 return unit_ == other.unit_ &&
136 }
137
138 private:
139 // We intentionally do not allow direct construction using value and unit, to
140 // avoid invalid, or redundant combinations.
142 : value_(value), unit_(unit) {}
143
146};
147
148inline bool inexactEquals(const StyleSizeLength& a, const StyleSizeLength& b) {
149 return a.inexactEquals(b);
150}
151
152} // namespace facebook::yoga
YG_EXTERN_C_BEGIN struct YGValue YGValue
Definition StyleSizeLength.h:29
constexpr bool isPoints() const
Definition StyleSizeLength.h:95
constexpr bool inexactEquals(const StyleSizeLength &other) const
Definition StyleSizeLength.h:133
constexpr FloatOptional resolve(float referenceLength) const
Definition StyleSizeLength.h:107
static constexpr StyleSizeLength ofMaxContent()
Definition StyleSizeLength.h:55
constexpr bool isStretch() const
Definition StyleSizeLength.h:83
constexpr bool isDefined() const
Definition StyleSizeLength.h:91
constexpr StyleSizeLength(FloatOptional value, Unit unit)
Definition StyleSizeLength.h:141
Unit unit_
Definition StyleSizeLength.h:145
constexpr StyleSizeLength()=default
static constexpr StyleSizeLength undefined()
Definition StyleSizeLength.h:67
static constexpr StyleSizeLength ofFitContent()
Definition StyleSizeLength.h:59
constexpr bool isFitContent() const
Definition StyleSizeLength.h:79
constexpr bool isMaxContent() const
Definition StyleSizeLength.h:75
static constexpr StyleSizeLength points(float value)
Definition StyleSizeLength.h:33
constexpr FloatOptional value() const
Definition StyleSizeLength.h:103
static constexpr StyleSizeLength percent(float value)
Definition StyleSizeLength.h:39
FloatOptional value_
Definition StyleSizeLength.h:144
static constexpr StyleSizeLength stretch(float fraction)
Definition StyleSizeLength.h:45
constexpr bool isAuto() const
Definition StyleSizeLength.h:71
constexpr bool isUndefined() const
Definition StyleSizeLength.h:87
constexpr bool operator==(const StyleSizeLength &rhs) const
Definition StyleSizeLength.h:129
static constexpr StyleSizeLength ofStretch()
Definition StyleSizeLength.h:63
constexpr bool isPercent() const
Definition StyleSizeLength.h:99
static constexpr StyleSizeLength ofAuto()
Definition StyleSizeLength.h:51
Definition Benchmark.cpp:19
Unit
Definition Unit.h:18
static bool isUndefined(json &j)
Definition TreeDeserialization.cpp:24
constexpr bool isinf(auto value)
Definition Comparison.h:30
constexpr YGAlign unscopedEnum(Align scoped)
Definition Align.h:41
bool inexactEquals(float a, float b)
Definition Comparison.h:56
Definition YGValue.h:31
Definition FloatOptional.h:15
constexpr float unwrap() const
Definition FloatOptional.h:24