YGLayout.cpp 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  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. #include "YGLayout.h"
  8. #include "Utils.h"
  9. const std::array<float, 2> kYGDefaultDimensionValues = {
  10. {YGUndefined, YGUndefined}};
  11. YGLayout::YGLayout()
  12. : position(),
  13. dimensions(kYGDefaultDimensionValues),
  14. margin(),
  15. border(),
  16. padding(),
  17. direction(YGDirectionInherit),
  18. computedFlexBasisGeneration(0),
  19. computedFlexBasis(YGFloatOptional()),
  20. hadOverflow(false),
  21. generationCount(0),
  22. lastOwnerDirection((YGDirection)-1),
  23. nextCachedMeasurementsIndex(0),
  24. cachedMeasurements(),
  25. measuredDimensions(kYGDefaultDimensionValues),
  26. cachedLayout(YGCachedMeasurement()),
  27. didUseLegacyFlag(false),
  28. doesLegacyStretchFlagAffectsLayout(false) {}
  29. bool YGLayout::operator==(YGLayout layout) const {
  30. bool isEqual = YGFloatArrayEqual(position, layout.position) &&
  31. YGFloatArrayEqual(dimensions, layout.dimensions) &&
  32. YGFloatArrayEqual(margin, layout.margin) &&
  33. YGFloatArrayEqual(border, layout.border) &&
  34. YGFloatArrayEqual(padding, layout.padding) &&
  35. direction == layout.direction && hadOverflow == layout.hadOverflow &&
  36. lastOwnerDirection == layout.lastOwnerDirection &&
  37. nextCachedMeasurementsIndex == layout.nextCachedMeasurementsIndex &&
  38. cachedLayout == layout.cachedLayout &&
  39. computedFlexBasis == layout.computedFlexBasis;
  40. for (uint32_t i = 0; i < YG_MAX_CACHED_RESULT_COUNT && isEqual; ++i) {
  41. isEqual = isEqual && cachedMeasurements[i] == layout.cachedMeasurements[i];
  42. }
  43. if (!YGFloatIsUndefined(measuredDimensions[0]) ||
  44. !YGFloatIsUndefined(layout.measuredDimensions[0])) {
  45. isEqual =
  46. isEqual && (measuredDimensions[0] == layout.measuredDimensions[0]);
  47. }
  48. if (!YGFloatIsUndefined(measuredDimensions[1]) ||
  49. !YGFloatIsUndefined(layout.measuredDimensions[1])) {
  50. isEqual =
  51. isEqual && (measuredDimensions[1] == layout.measuredDimensions[1]);
  52. }
  53. return isEqual;
  54. }
  55. bool YGLayout::operator!=(YGLayout layout) const {
  56. return !(*this == layout);
  57. }