mirror of
https://github.com/status-im/react-native.git
synced 2025-01-31 03:35:22 +00:00
bcd12f1e87
Reviewed By: emilsjolander Differential Revision: D7302651 fbshipit-source-id: 53e3b4c9627207a379f927b1f3485e36a9c70601
107 lines
3.8 KiB
C++
107 lines
3.8 KiB
C++
/**
|
|
* Copyright (c) 2014-present, Facebook, Inc.
|
|
*
|
|
* This source code is licensed under the MIT license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
*/
|
|
|
|
#include "YGStyle.h"
|
|
|
|
const YGValue kYGValueUndefined = {0, YGUnitUndefined};
|
|
|
|
const YGValue kYGValueAuto = {0, YGUnitAuto};
|
|
|
|
const std::array<YGValue, YGEdgeCount> kYGDefaultEdgeValuesUnit = {
|
|
{kYGValueUndefined,
|
|
kYGValueUndefined,
|
|
kYGValueUndefined,
|
|
kYGValueUndefined,
|
|
kYGValueUndefined,
|
|
kYGValueUndefined,
|
|
kYGValueUndefined,
|
|
kYGValueUndefined,
|
|
kYGValueUndefined}};
|
|
|
|
const std::array<YGValue, 2> kYGDefaultDimensionValuesAutoUnit = {
|
|
{kYGValueAuto, kYGValueAuto}};
|
|
|
|
const std::array<YGValue, 2> kYGDefaultDimensionValuesUnit = {
|
|
{kYGValueUndefined, kYGValueUndefined}};
|
|
|
|
YGStyle::YGStyle()
|
|
: direction(YGDirectionInherit),
|
|
flexDirection(YGFlexDirectionColumn),
|
|
justifyContent(YGJustifyFlexStart),
|
|
alignContent(YGAlignFlexStart),
|
|
alignItems(YGAlignStretch),
|
|
alignSelf(YGAlignAuto),
|
|
positionType(YGPositionTypeRelative),
|
|
flexWrap(YGWrapNoWrap),
|
|
overflow(YGOverflowVisible),
|
|
display(YGDisplayFlex),
|
|
flex(YGFloatOptional()),
|
|
flexGrow(YGFloatOptional()),
|
|
flexShrink(YGFloatOptional()),
|
|
flexBasis(kYGValueAuto),
|
|
margin(kYGDefaultEdgeValuesUnit),
|
|
position(kYGDefaultEdgeValuesUnit),
|
|
padding(kYGDefaultEdgeValuesUnit),
|
|
border(kYGDefaultEdgeValuesUnit),
|
|
dimensions(kYGDefaultDimensionValuesAutoUnit),
|
|
minDimensions(kYGDefaultDimensionValuesUnit),
|
|
maxDimensions(kYGDefaultDimensionValuesUnit),
|
|
aspectRatio(YGFloatOptional()) {}
|
|
|
|
// Yoga specific properties, not compatible with flexbox specification
|
|
bool YGStyle::operator==(const YGStyle& style) {
|
|
bool areNonFloatValuesEqual = direction == style.direction &&
|
|
flexDirection == style.flexDirection &&
|
|
justifyContent == style.justifyContent &&
|
|
alignContent == style.alignContent && alignItems == style.alignItems &&
|
|
alignSelf == style.alignSelf && positionType == style.positionType &&
|
|
flexWrap == style.flexWrap && overflow == style.overflow &&
|
|
display == style.display && YGValueEqual(flexBasis, style.flexBasis) &&
|
|
YGValueArrayEqual(margin, style.margin) &&
|
|
YGValueArrayEqual(position, style.position) &&
|
|
YGValueArrayEqual(padding, style.padding) &&
|
|
YGValueArrayEqual(border, style.border) &&
|
|
YGValueArrayEqual(dimensions, style.dimensions) &&
|
|
YGValueArrayEqual(minDimensions, style.minDimensions) &&
|
|
YGValueArrayEqual(maxDimensions, style.maxDimensions);
|
|
|
|
areNonFloatValuesEqual =
|
|
areNonFloatValuesEqual && flex.isUndefined() == style.flex.isUndefined();
|
|
if (areNonFloatValuesEqual && !flex.isUndefined() &&
|
|
!style.flex.isUndefined()) {
|
|
areNonFloatValuesEqual =
|
|
areNonFloatValuesEqual && flex.getValue() == style.flex.getValue();
|
|
}
|
|
|
|
areNonFloatValuesEqual = areNonFloatValuesEqual &&
|
|
flexGrow.isUndefined() == style.flexGrow.isUndefined();
|
|
if (areNonFloatValuesEqual && !flexGrow.isUndefined()) {
|
|
areNonFloatValuesEqual = areNonFloatValuesEqual &&
|
|
flexGrow.getValue() == style.flexGrow.getValue();
|
|
}
|
|
|
|
areNonFloatValuesEqual = areNonFloatValuesEqual &&
|
|
flexShrink.isUndefined() == style.flexShrink.isUndefined();
|
|
if (areNonFloatValuesEqual && !style.flexShrink.isUndefined()) {
|
|
areNonFloatValuesEqual = areNonFloatValuesEqual &&
|
|
flexShrink.getValue() == style.flexShrink.getValue();
|
|
}
|
|
|
|
if (!(aspectRatio.isUndefined() && style.aspectRatio.isUndefined())) {
|
|
areNonFloatValuesEqual = areNonFloatValuesEqual &&
|
|
aspectRatio.getValue() == style.aspectRatio.getValue();
|
|
}
|
|
|
|
return areNonFloatValuesEqual;
|
|
}
|
|
|
|
bool YGStyle::operator!=(YGStyle style) {
|
|
return !(*this == style);
|
|
}
|
|
|
|
YGStyle::~YGStyle() {}
|