From 87e7912b9580ea8c9229cd77c36cb1d653972722 Mon Sep 17 00:00:00 2001 From: Nick Gerleman Date: Thu, 29 Sep 2022 22:25:24 -0700 Subject: [PATCH] Add YGGutter Enum Summary: This adds the YGGutter enum, used to choose between row/column gap variants (row-gap, column-gap, gap). This used later in changes from https://github.com/facebook/yoga/pull/1116, in the APIs which deal with setting gap on style on yoga node. Note the original PR called this `YGGap`, but this ending up leading to a couple public method signatures that could appear ambiguous: 1. `SetGap(YGGap gap, float gapLength)`: Enums like `YGAlign` are the vaues for an `align` prop. `YGGap` controls the variant of the gap (like `YGEdge` does for left/right/top/bottom variants). So the enum reads as if it is the `gapValue`, and it looks like we have two of the same parameter. 2. `SetGap(YGGap gapDirection, float gap)`: This is misleading, because the direction gaps flow is the cross-axis of flex-direction. 3. `GetGap(YGGap gap)`: `gap` is the variant, but looks like an out param. The [CSS Box Alignment](https://www.w3.org/TR/css-align-3/#column-row-gap) spec refers to these gaps as "Gutters", which removes the ambiguity. Changelog: [General][Added] - Add YGGutter Enum Reviewed By: yungsters Differential Revision: D39922412 fbshipit-source-id: 4b0baf800fecb3d03560a4267c7fb4c4330fd39e --- .../java/com/facebook/yoga/YogaGutter.java | 35 +++++++++++++++++++ ReactCommon/yoga/yoga/YGEnums.cpp | 12 +++++++ ReactCommon/yoga/yoga/YGEnums.h | 6 ++++ 3 files changed, 53 insertions(+) create mode 100644 ReactAndroid/src/main/java/com/facebook/yoga/YogaGutter.java diff --git a/ReactAndroid/src/main/java/com/facebook/yoga/YogaGutter.java b/ReactAndroid/src/main/java/com/facebook/yoga/YogaGutter.java new file mode 100644 index 00000000000000..2b4be1c08d98ce --- /dev/null +++ b/ReactAndroid/src/main/java/com/facebook/yoga/YogaGutter.java @@ -0,0 +1,35 @@ +/* + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +// @generated by enums.py + +package com.facebook.yoga; + +public enum YogaGutter { + COLUMN(0), + ROW(1), + ALL(2); + + private final int mIntValue; + + YogaGutter(int intValue) { + mIntValue = intValue; + } + + public int intValue() { + return mIntValue; + } + + public static YogaGutter fromInt(int value) { + switch (value) { + case 0: return COLUMN; + case 1: return ROW; + case 2: return ALL; + default: throw new IllegalArgumentException("Unknown enum value: " + value); + } + } +} diff --git a/ReactCommon/yoga/yoga/YGEnums.cpp b/ReactCommon/yoga/yoga/YGEnums.cpp index b67b0dac6dd718..3c3c0929a74f21 100644 --- a/ReactCommon/yoga/yoga/YGEnums.cpp +++ b/ReactCommon/yoga/yoga/YGEnums.cpp @@ -109,6 +109,18 @@ const char* YGFlexDirectionToString(const YGFlexDirection value) { return "unknown"; } +const char* YGGutterToString(const YGGutter value) { + switch (value) { + case YGGutterColumn: + return "column"; + case YGGutterRow: + return "row"; + case YGGutterAll: + return "all"; + } + return "unknown"; +} + const char* YGJustifyToString(const YGJustify value) { switch (value) { case YGJustifyFlexStart: diff --git a/ReactCommon/yoga/yoga/YGEnums.h b/ReactCommon/yoga/yoga/YGEnums.h index 9d6abfb1075ad6..8faec2ebb78b64 100644 --- a/ReactCommon/yoga/yoga/YGEnums.h +++ b/ReactCommon/yoga/yoga/YGEnums.h @@ -64,6 +64,12 @@ YG_ENUM_SEQ_DECL( YGFlexDirectionRow, YGFlexDirectionRowReverse) +YG_ENUM_SEQ_DECL( + YGGutter, + YGGutterColumn, + YGGutterRow, + YGGutterAll) + YG_ENUM_SEQ_DECL( YGJustify, YGJustifyFlexStart,