Add hasErrata()
, addErrata()
, removeErrata()
Summary: X-link: https://github.com/facebook/react-native/pull/37375 Adds internal helpers to YGConfig to make bit manipulation more readable. We also expose `hasErrata()` to YGNode beacuse checking that will be a common pattern. We intentionally don't add mutating functions to the node, since current model is to inval a node on commiting whole config. This is not exposed via the C ABI. Reviewed By: yungsters Differential Revision: D45765971 fbshipit-source-id: eadaee4b9cf5204ac4984ecc52cc08650d144a30
This commit is contained in:
committed by
Facebook GitHub Bot
parent
3b088c3383
commit
9e1b14cd9e
@@ -59,10 +59,22 @@ void YGConfig::setErrata(YGErrata errata) {
|
|||||||
errata_ = errata;
|
errata_ = errata;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void YGConfig::addErrata(YGErrata errata) {
|
||||||
|
errata_ |= errata;
|
||||||
|
}
|
||||||
|
|
||||||
|
void YGConfig::removeErrata(YGErrata errata) {
|
||||||
|
errata_ &= (~errata);
|
||||||
|
}
|
||||||
|
|
||||||
YGErrata YGConfig::getErrata() const {
|
YGErrata YGConfig::getErrata() const {
|
||||||
return errata_;
|
return errata_;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool YGConfig::hasErrata(YGErrata errata) const {
|
||||||
|
return (errata_ & errata) != YGErrataNone;
|
||||||
|
}
|
||||||
|
|
||||||
void YGConfig::setPointScaleFactor(float pointScaleFactor) {
|
void YGConfig::setPointScaleFactor(float pointScaleFactor) {
|
||||||
pointScaleFactor_ = pointScaleFactor;
|
pointScaleFactor_ = pointScaleFactor;
|
||||||
}
|
}
|
||||||
|
@@ -67,7 +67,10 @@ struct YOGA_EXPORT YGConfig {
|
|||||||
facebook::yoga::ExperimentalFeatureSet getEnabledExperiments() const;
|
facebook::yoga::ExperimentalFeatureSet getEnabledExperiments() const;
|
||||||
|
|
||||||
void setErrata(YGErrata errata);
|
void setErrata(YGErrata errata);
|
||||||
|
void addErrata(YGErrata errata);
|
||||||
|
void removeErrata(YGErrata errata);
|
||||||
YGErrata getErrata() const;
|
YGErrata getErrata() const;
|
||||||
|
bool hasErrata(YGErrata errata) const;
|
||||||
|
|
||||||
void setPointScaleFactor(float pointScaleFactor);
|
void setPointScaleFactor(float pointScaleFactor);
|
||||||
float getPointScaleFactor() const;
|
float getPointScaleFactor() const;
|
||||||
|
@@ -118,6 +118,8 @@ public:
|
|||||||
|
|
||||||
float baseline(float width, float height, void* layoutContext);
|
float baseline(float width, float height, void* layoutContext);
|
||||||
|
|
||||||
|
bool hasErrata(YGErrata errata) const { return config_->hasErrata(errata); }
|
||||||
|
|
||||||
YGDirtiedFunc getDirtied() const { return dirtied_; }
|
YGDirtiedFunc getDirtied() const { return dirtied_; }
|
||||||
|
|
||||||
// For Performance reasons passing as reference.
|
// For Performance reasons passing as reference.
|
||||||
|
@@ -2984,7 +2984,7 @@ static void YGNodelayoutImpl(
|
|||||||
availableInnerMainDim = maxInnerMainDim;
|
availableInnerMainDim = maxInnerMainDim;
|
||||||
} else {
|
} else {
|
||||||
bool useLegacyStretchBehaviour =
|
bool useLegacyStretchBehaviour =
|
||||||
node->getConfig()->getErrata() & YGErrataStretchFlexBasis;
|
node->hasErrata(YGErrataStretchFlexBasis);
|
||||||
|
|
||||||
if (!useLegacyStretchBehaviour &&
|
if (!useLegacyStretchBehaviour &&
|
||||||
((!YGFloatIsUndefined(
|
((!YGFloatIsUndefined(
|
||||||
@@ -4313,16 +4313,16 @@ YOGA_EXPORT void YGConfigSetUseWebDefaults(
|
|||||||
|
|
||||||
YOGA_EXPORT bool YGConfigGetUseLegacyStretchBehaviour(
|
YOGA_EXPORT bool YGConfigGetUseLegacyStretchBehaviour(
|
||||||
const YGConfigRef config) {
|
const YGConfigRef config) {
|
||||||
return config->getErrata() & YGErrataStretchFlexBasis;
|
return config->hasErrata(YGErrataStretchFlexBasis);
|
||||||
}
|
}
|
||||||
|
|
||||||
YOGA_EXPORT void YGConfigSetUseLegacyStretchBehaviour(
|
YOGA_EXPORT void YGConfigSetUseLegacyStretchBehaviour(
|
||||||
const YGConfigRef config,
|
const YGConfigRef config,
|
||||||
const bool useLegacyStretchBehaviour) {
|
const bool useLegacyStretchBehaviour) {
|
||||||
if (useLegacyStretchBehaviour) {
|
if (useLegacyStretchBehaviour) {
|
||||||
config->setErrata(config->getErrata() | YGErrataStretchFlexBasis);
|
config->addErrata(YGErrataStretchFlexBasis);
|
||||||
} else {
|
} else {
|
||||||
config->setErrata(config->getErrata() & ~YGErrataStretchFlexBasis);
|
config->removeErrata(YGErrataStretchFlexBasis);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user