Fix to use width and height correctly in flex-layout-impl.cpp
[platform/core/uifw/dali-toolkit.git] / dali-toolkit / third-party / yoga / YGLayout.cpp
1 /**
2  * Copyright (c) 2014-present, Facebook, Inc.
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 #include "YGLayout.h"
9 #include "Utils.h"
10
11 const std::array<float, 2> kYGDefaultDimensionValues = {
12     {YGUndefined, YGUndefined}};
13
14 YGLayout::YGLayout()
15     : position(),
16       dimensions(kYGDefaultDimensionValues),
17       margin(),
18       border(),
19       padding(),
20       direction(YGDirectionInherit),
21       computedFlexBasisGeneration(0),
22       computedFlexBasis(YGFloatOptional()),
23       hadOverflow(false),
24       generationCount(0),
25       lastOwnerDirection((YGDirection)-1),
26       nextCachedMeasurementsIndex(0),
27       cachedMeasurements(),
28       measuredDimensions(kYGDefaultDimensionValues),
29       cachedLayout(YGCachedMeasurement()),
30       didUseLegacyFlag(false),
31       doesLegacyStretchFlagAffectsLayout(false) {}
32
33 bool YGLayout::operator==(const YGLayout& layout) const {
34   bool isEqual = YGFloatArrayEqual(position, layout.position) &&
35       YGFloatArrayEqual(dimensions, layout.dimensions) &&
36       YGFloatArrayEqual(margin, layout.margin) &&
37       YGFloatArrayEqual(border, layout.border) &&
38       YGFloatArrayEqual(padding, layout.padding) &&
39       direction == layout.direction && hadOverflow == layout.hadOverflow &&
40       lastOwnerDirection == layout.lastOwnerDirection &&
41       nextCachedMeasurementsIndex == layout.nextCachedMeasurementsIndex &&
42       cachedLayout == layout.cachedLayout &&
43       computedFlexBasis == layout.computedFlexBasis;
44
45   for (uint32_t i = 0; i < YG_MAX_CACHED_RESULT_COUNT && isEqual; ++i) {
46     isEqual = isEqual && cachedMeasurements[i] == layout.cachedMeasurements[i];
47   }
48
49   if (!YGFloatIsUndefined(measuredDimensions[0]) ||
50       !YGFloatIsUndefined(layout.measuredDimensions[0])) {
51     isEqual =
52         isEqual && (measuredDimensions[0] == layout.measuredDimensions[0]);
53   }
54   if (!YGFloatIsUndefined(measuredDimensions[1]) ||
55       !YGFloatIsUndefined(layout.measuredDimensions[1])) {
56     isEqual =
57         isEqual && (measuredDimensions[1] == layout.measuredDimensions[1]);
58   }
59
60   return isEqual;
61 }
62
63 bool YGLayout::operator!=(const YGLayout& layout) const {
64   return !(*this == layout);
65 }