slot 0.0.1
A real time UI render framework
载入中...
搜索中...
未找到
LayoutResults.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 <array>
11
15#include <yoga/enums/Edge.h>
19
20namespace facebook::yoga {
21
23 // This value was chosen based on empirical data:
24 // 98% of analyzed layouts require less than 8 entries.
25 static constexpr int32_t MaxCachedMeasurements = 8;
26
29
30 // Instead of recomputing the entire layout every single time, we cache some
31 // information to break early when nothing changed
32 uint32_t generationCount = 0;
33 uint32_t configVersion = 0;
35
37 std::array<CachedMeasurement, MaxCachedMeasurements> cachedMeasurements = {};
38
40
42 return direction_;
43 }
44
48
49 bool hadOverflow() const {
50 return hadOverflow_;
51 }
52
56
57 float dimension(Dimension axis) const {
58 return dimensions_[yoga::to_underlying(axis)];
59 }
60
64
65 float measuredDimension(Dimension axis) const {
67 }
68
69 float rawDimension(Dimension axis) const {
71 }
72
76
80
81 float position(PhysicalEdge physicalEdge) const {
82 return position_[yoga::to_underlying(physicalEdge)];
83 }
84
85 void setPosition(PhysicalEdge physicalEdge, float dimension) {
87 }
88
89 float margin(PhysicalEdge physicalEdge) const {
90 return margin_[yoga::to_underlying(physicalEdge)];
91 }
92
93 void setMargin(PhysicalEdge physicalEdge, float dimension) {
94 margin_[yoga::to_underlying(physicalEdge)] = dimension;
95 }
96
97 float border(PhysicalEdge physicalEdge) const {
98 return border_[yoga::to_underlying(physicalEdge)];
99 }
100
101 void setBorder(PhysicalEdge physicalEdge, float dimension) {
102 border_[yoga::to_underlying(physicalEdge)] = dimension;
103 }
104
105 float padding(PhysicalEdge physicalEdge) const {
106 return padding_[yoga::to_underlying(physicalEdge)];
107 }
108
109 void setPadding(PhysicalEdge physicalEdge, float dimension) {
110 padding_[yoga::to_underlying(physicalEdge)] = dimension;
111 }
112
113 bool operator==(LayoutResults layout) const;
114
115 private:
116 Direction direction_ : bitCount<Direction>() = Direction::Inherit;
117 bool hadOverflow_ : 1 = false;
118
119 std::array<float, 2> dimensions_ = {{YGUndefined, YGUndefined}};
120 std::array<float, 2> measuredDimensions_ = {{YGUndefined, YGUndefined}};
121 std::array<float, 2> rawDimensions_ = {{YGUndefined, YGUndefined}};
122 std::array<float, 4> position_ = {};
123 std::array<float, 4> margin_ = {};
124 std::array<float, 4> border_ = {};
125 std::array<float, 4> padding_ = {};
126};
127
128} // namespace facebook::yoga
#define YGUndefined
Definition YGValue.h:23
Definition Benchmark.cpp:19
Direction
Definition Direction.h:18
constexpr auto to_underlying(Enumeration auto e) noexcept
Definition YogaEnums.h:47
Dimension
Definition Dimension.h:18
PhysicalEdge
Definition PhysicalEdge.h:14
Definition CachedMeasurement.h:19
Definition FloatOptional.h:15
Definition LayoutResults.h:22
std::array< float, 4 > margin_
Definition LayoutResults.h:123
uint32_t generationCount
Definition LayoutResults.h:32
void setDimension(Dimension axis, float dimension)
Definition LayoutResults.h:61
bool operator==(LayoutResults layout) const
Definition LayoutResults.cpp:15
std::array< CachedMeasurement, MaxCachedMeasurements > cachedMeasurements
Definition LayoutResults.h:37
bool hadOverflow() const
Definition LayoutResults.h:49
uint32_t computedFlexBasisGeneration
Definition LayoutResults.h:27
std::array< float, 4 > padding_
Definition LayoutResults.h:125
float measuredDimension(Dimension axis) const
Definition LayoutResults.h:65
uint32_t nextCachedMeasurementsIndex
Definition LayoutResults.h:36
float padding(PhysicalEdge physicalEdge) const
Definition LayoutResults.h:105
std::array< float, 4 > border_
Definition LayoutResults.h:124
float border(PhysicalEdge physicalEdge) const
Definition LayoutResults.h:97
void setRawDimension(Dimension axis, float dimension)
Definition LayoutResults.h:77
FloatOptional computedFlexBasis
Definition LayoutResults.h:28
float margin(PhysicalEdge physicalEdge) const
Definition LayoutResults.h:89
Direction direction() const
Definition LayoutResults.h:41
CachedMeasurement cachedLayout
Definition LayoutResults.h:39
static constexpr int32_t MaxCachedMeasurements
Definition LayoutResults.h:25
float rawDimension(Dimension axis) const
Definition LayoutResults.h:69
uint32_t configVersion
Definition LayoutResults.h:33
float position(PhysicalEdge physicalEdge) const
Definition LayoutResults.h:81
std::array< float, 2 > measuredDimensions_
Definition LayoutResults.h:120
void setPadding(PhysicalEdge physicalEdge, float dimension)
Definition LayoutResults.h:109
void setMargin(PhysicalEdge physicalEdge, float dimension)
Definition LayoutResults.h:93
std::array< float, 2 > rawDimensions_
Definition LayoutResults.h:121
void setHadOverflow(bool hadOverflow)
Definition LayoutResults.h:53
std::array< float, 2 > dimensions_
Definition LayoutResults.h:119
void setPosition(PhysicalEdge physicalEdge, float dimension)
Definition LayoutResults.h:85
void setBorder(PhysicalEdge physicalEdge, float dimension)
Definition LayoutResults.h:101
Direction lastOwnerDirection
Definition LayoutResults.h:34
void setDirection(Direction direction)
Definition LayoutResults.h:45
void setMeasuredDimension(Dimension axis, float dimension)
Definition LayoutResults.h:73
float dimension(Dimension axis) const
Definition LayoutResults.h:57
std::array< float, 4 > position_
Definition LayoutResults.h:122
Direction direction_
Definition LayoutResults.h:116
bool hadOverflow_
Definition LayoutResults.h:117