diff --git a/ReactCommon/yoga/yoga/YGEnums.c b/ReactCommon/yoga/yoga/YGEnums.c new file mode 100644 index 000000000..0108e6a61 --- /dev/null +++ b/ReactCommon/yoga/yoga/YGEnums.c @@ -0,0 +1,219 @@ +/** + * Copyright (c) 2014-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#include "YGEnums.h" + +const char *YGAlignToString(const YGAlign value){ + switch(value){ + case YGAlignAuto: + return "auto"; + case YGAlignFlexStart: + return "flex-start"; + case YGAlignCenter: + return "center"; + case YGAlignFlexEnd: + return "flex-end"; + case YGAlignStretch: + return "stretch"; + case YGAlignBaseline: + return "baseline"; + case YGAlignSpaceBetween: + return "space-between"; + case YGAlignSpaceAround: + return "space-around"; + } + return "unknown"; +} + +const char *YGDimensionToString(const YGDimension value){ + switch(value){ + case YGDimensionWidth: + return "width"; + case YGDimensionHeight: + return "height"; + } + return "unknown"; +} + +const char *YGDirectionToString(const YGDirection value){ + switch(value){ + case YGDirectionInherit: + return "inherit"; + case YGDirectionLTR: + return "ltr"; + case YGDirectionRTL: + return "rtl"; + } + return "unknown"; +} + +const char *YGDisplayToString(const YGDisplay value){ + switch(value){ + case YGDisplayFlex: + return "flex"; + case YGDisplayNone: + return "none"; + } + return "unknown"; +} + +const char *YGEdgeToString(const YGEdge value){ + switch(value){ + case YGEdgeLeft: + return "left"; + case YGEdgeTop: + return "top"; + case YGEdgeRight: + return "right"; + case YGEdgeBottom: + return "bottom"; + case YGEdgeStart: + return "start"; + case YGEdgeEnd: + return "end"; + case YGEdgeHorizontal: + return "horizontal"; + case YGEdgeVertical: + return "vertical"; + case YGEdgeAll: + return "all"; + } + return "unknown"; +} + +const char *YGExperimentalFeatureToString(const YGExperimentalFeature value){ + switch(value){ + case YGExperimentalFeatureRounding: + return "rounding"; + case YGExperimentalFeatureWebFlexBasis: + return "web-flex-basis"; + case YGExperimentalFeatureMinFlexFix: + return "min-flex-fix"; + } + return "unknown"; +} + +const char *YGFlexDirectionToString(const YGFlexDirection value){ + switch(value){ + case YGFlexDirectionColumn: + return "column"; + case YGFlexDirectionColumnReverse: + return "column-reverse"; + case YGFlexDirectionRow: + return "row"; + case YGFlexDirectionRowReverse: + return "row-reverse"; + } + return "unknown"; +} + +const char *YGJustifyToString(const YGJustify value){ + switch(value){ + case YGJustifyFlexStart: + return "flex-start"; + case YGJustifyCenter: + return "center"; + case YGJustifyFlexEnd: + return "flex-end"; + case YGJustifySpaceBetween: + return "space-between"; + case YGJustifySpaceAround: + return "space-around"; + } + return "unknown"; +} + +const char *YGLogLevelToString(const YGLogLevel value){ + switch(value){ + case YGLogLevelError: + return "error"; + case YGLogLevelWarn: + return "warn"; + case YGLogLevelInfo: + return "info"; + case YGLogLevelDebug: + return "debug"; + case YGLogLevelVerbose: + return "verbose"; + } + return "unknown"; +} + +const char *YGMeasureModeToString(const YGMeasureMode value){ + switch(value){ + case YGMeasureModeUndefined: + return "undefined"; + case YGMeasureModeExactly: + return "exactly"; + case YGMeasureModeAtMost: + return "at-most"; + } + return "unknown"; +} + +const char *YGOverflowToString(const YGOverflow value){ + switch(value){ + case YGOverflowVisible: + return "visible"; + case YGOverflowHidden: + return "hidden"; + case YGOverflowScroll: + return "scroll"; + } + return "unknown"; +} + +const char *YGPositionTypeToString(const YGPositionType value){ + switch(value){ + case YGPositionTypeRelative: + return "relative"; + case YGPositionTypeAbsolute: + return "absolute"; + } + return "unknown"; +} + +const char *YGPrintOptionsToString(const YGPrintOptions value){ + switch(value){ + case YGPrintOptionsLayout: + return "layout"; + case YGPrintOptionsStyle: + return "style"; + case YGPrintOptionsChildren: + return "children"; + } + return "unknown"; +} + +const char *YGUnitToString(const YGUnit value){ + switch(value){ + case YGUnitUndefined: + return "undefined"; + case YGUnitPoint: + return "point"; + case YGUnitPercent: + return "percent"; + case YGUnitAuto: + return "auto"; + } + return "unknown"; +} + +const char *YGWrapToString(const YGWrap value){ + switch(value){ + case YGWrapNoWrap: + return "no-wrap"; + case YGWrapWrap: + return "wrap"; + case YGWrapWrapReverse: + return "wrap-reverse"; + } + return "unknown"; +} + diff --git a/ReactCommon/yoga/yoga/YGEnums.h b/ReactCommon/yoga/yoga/YGEnums.h index 6022f5587..8a929b9e7 100644 --- a/ReactCommon/yoga/yoga/YGEnums.h +++ b/ReactCommon/yoga/yoga/YGEnums.h @@ -24,12 +24,14 @@ typedef YG_ENUM_BEGIN(YGAlign) { YGAlignSpaceBetween, YGAlignSpaceAround, } YG_ENUM_END(YGAlign); +WIN_EXPORT const char *YGAlignToString(const YGAlign value); #define YGDimensionCount 2 typedef YG_ENUM_BEGIN(YGDimension) { YGDimensionWidth, YGDimensionHeight, } YG_ENUM_END(YGDimension); +WIN_EXPORT const char *YGDimensionToString(const YGDimension value); #define YGDirectionCount 3 typedef YG_ENUM_BEGIN(YGDirection) { @@ -37,12 +39,14 @@ typedef YG_ENUM_BEGIN(YGDirection) { YGDirectionLTR, YGDirectionRTL, } YG_ENUM_END(YGDirection); +WIN_EXPORT const char *YGDirectionToString(const YGDirection value); #define YGDisplayCount 2 typedef YG_ENUM_BEGIN(YGDisplay) { YGDisplayFlex, YGDisplayNone, } YG_ENUM_END(YGDisplay); +WIN_EXPORT const char *YGDisplayToString(const YGDisplay value); #define YGEdgeCount 9 typedef YG_ENUM_BEGIN(YGEdge) { @@ -56,6 +60,7 @@ typedef YG_ENUM_BEGIN(YGEdge) { YGEdgeVertical, YGEdgeAll, } YG_ENUM_END(YGEdge); +WIN_EXPORT const char *YGEdgeToString(const YGEdge value); #define YGExperimentalFeatureCount 3 typedef YG_ENUM_BEGIN(YGExperimentalFeature) { @@ -63,6 +68,7 @@ typedef YG_ENUM_BEGIN(YGExperimentalFeature) { YGExperimentalFeatureWebFlexBasis, YGExperimentalFeatureMinFlexFix, } YG_ENUM_END(YGExperimentalFeature); +WIN_EXPORT const char *YGExperimentalFeatureToString(const YGExperimentalFeature value); #define YGFlexDirectionCount 4 typedef YG_ENUM_BEGIN(YGFlexDirection) { @@ -71,6 +77,7 @@ typedef YG_ENUM_BEGIN(YGFlexDirection) { YGFlexDirectionRow, YGFlexDirectionRowReverse, } YG_ENUM_END(YGFlexDirection); +WIN_EXPORT const char *YGFlexDirectionToString(const YGFlexDirection value); #define YGJustifyCount 5 typedef YG_ENUM_BEGIN(YGJustify) { @@ -80,6 +87,7 @@ typedef YG_ENUM_BEGIN(YGJustify) { YGJustifySpaceBetween, YGJustifySpaceAround, } YG_ENUM_END(YGJustify); +WIN_EXPORT const char *YGJustifyToString(const YGJustify value); #define YGLogLevelCount 5 typedef YG_ENUM_BEGIN(YGLogLevel) { @@ -89,6 +97,7 @@ typedef YG_ENUM_BEGIN(YGLogLevel) { YGLogLevelDebug, YGLogLevelVerbose, } YG_ENUM_END(YGLogLevel); +WIN_EXPORT const char *YGLogLevelToString(const YGLogLevel value); #define YGMeasureModeCount 3 typedef YG_ENUM_BEGIN(YGMeasureMode) { @@ -96,6 +105,7 @@ typedef YG_ENUM_BEGIN(YGMeasureMode) { YGMeasureModeExactly, YGMeasureModeAtMost, } YG_ENUM_END(YGMeasureMode); +WIN_EXPORT const char *YGMeasureModeToString(const YGMeasureMode value); #define YGOverflowCount 3 typedef YG_ENUM_BEGIN(YGOverflow) { @@ -103,12 +113,14 @@ typedef YG_ENUM_BEGIN(YGOverflow) { YGOverflowHidden, YGOverflowScroll, } YG_ENUM_END(YGOverflow); +WIN_EXPORT const char *YGOverflowToString(const YGOverflow value); #define YGPositionTypeCount 2 typedef YG_ENUM_BEGIN(YGPositionType) { YGPositionTypeRelative, YGPositionTypeAbsolute, } YG_ENUM_END(YGPositionType); +WIN_EXPORT const char *YGPositionTypeToString(const YGPositionType value); #define YGPrintOptionsCount 3 typedef YG_ENUM_BEGIN(YGPrintOptions) { @@ -116,6 +128,7 @@ typedef YG_ENUM_BEGIN(YGPrintOptions) { YGPrintOptionsStyle = 2, YGPrintOptionsChildren = 4, } YG_ENUM_END(YGPrintOptions); +WIN_EXPORT const char *YGPrintOptionsToString(const YGPrintOptions value); #define YGUnitCount 4 typedef YG_ENUM_BEGIN(YGUnit) { @@ -124,6 +137,7 @@ typedef YG_ENUM_BEGIN(YGUnit) { YGUnitPercent, YGUnitAuto, } YG_ENUM_END(YGUnit); +WIN_EXPORT const char *YGUnitToString(const YGUnit value); #define YGWrapCount 3 typedef YG_ENUM_BEGIN(YGWrap) { @@ -131,5 +145,6 @@ typedef YG_ENUM_BEGIN(YGWrap) { YGWrapWrap, YGWrapWrapReverse, } YG_ENUM_END(YGWrap); +WIN_EXPORT const char *YGWrapToString(const YGWrap value); YG_EXTERN_C_END diff --git a/ReactCommon/yoga/yoga/Yoga.c b/ReactCommon/yoga/yoga/Yoga.c index 52999d2b5..4222c230c 100644 --- a/ReactCommon/yoga/yoga/Yoga.c +++ b/ReactCommon/yoga/yoga/Yoga.c @@ -768,29 +768,36 @@ static void YGIndent(const uint32_t n) { } } -static void YGPrintNumberIfNotZero(const char *str, const YGValue *const number) { - if (!YGFloatsEqual(number->value, 0)) { - YGLog(YGLogLevelDebug, - "%s: %g%s, ", - str, - number->value, - number->unit == YGUnitPoint ? "pt" : "%"); - } -} - static void YGPrintNumberIfNotUndefinedf(const char *str, const float number) { if (!YGFloatIsUndefined(number)) { - YGLog(YGLogLevelDebug, "%s: %g, ", str, number); + YGLog(YGLogLevelDebug, "%s: %g; ", str, number); } } static void YGPrintNumberIfNotUndefined(const char *str, const YGValue *const number) { if (number->unit != YGUnitUndefined) { - YGLog(YGLogLevelDebug, - "%s: %g%s, ", - str, - number->value, - number->unit == YGUnitPoint ? "pt" : "%"); + if (number->unit == YGUnitAuto) { + YGLog(YGLogLevelDebug, "%s: auto; ", str); + } else { + const char *unit = number->unit == YGUnitPoint ? "px" : "%"; + YGLog(YGLogLevelDebug, "%s: %g%s; ", str, number->value, unit); + } + } +} + +static void YGPrintNumberIfNotAuto(const char *str, const YGValue *const number) { + if (number->unit != YGUnitAuto) { + YGPrintNumberIfNotUndefined(str, number); + } +} + +static void YGPrintEdgeIfNotUndefined(const char *str, const YGValue *edges, const YGEdge edge) { + YGPrintNumberIfNotUndefined(str, YGComputedEdgeValue(edges, YGEdgeLeft, &YGValueUndefined)); +} + +static void YGPrintNumberIfNotZero(const char *str, const YGValue *const number) { + if (!YGFloatsEqual(number->value, 0)) { + YGPrintNumberIfNotUndefined(str, number); } } @@ -799,170 +806,113 @@ static bool YGFourValuesEqual(const YGValue four[4]) { YGValueEqual(four[0], four[3]); } +static void YGPrintEdges(const char *str, const YGValue *edges) { + if (YGFourValuesEqual(edges)) { + YGPrintNumberIfNotZero(str, &edges[YGEdgeLeft]); + } else { + for (YGEdge edge = YGEdgeLeft; edge < YGEdgeCount; edge++) { + char buf[30]; + snprintf(buf, sizeof(buf), "%s-%s", str, YGEdgeToString(edge)); + YGPrintNumberIfNotZero(buf, &edges[edge]); + } + } +} + static void YGNodePrintInternal(const YGNodeRef node, const YGPrintOptions options, const uint32_t level) { YGIndent(level); - YGLog(YGLogLevelDebug, "{"); + YGLog(YGLogLevelDebug, "