Compare commits

..

1 Commits

Author SHA1 Message Date
Mateo Guzmán
0ea3cc6d2e Migrate YogaNode to Kotlin 2025-08-08 00:37:23 +02:00
25 changed files with 755 additions and 915 deletions

View File

@@ -0,0 +1,43 @@
/*
* 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.
*/
package com.facebook.yoga;
public enum LayoutPassReason {
INITIAL(0),
ABS_LAYOUT(1),
STRETCH(2),
MULTILINE_STRETCH(3),
FLEX_LAYOUT(4),
MEASURE(5),
ABS_MEASURE(6),
FLEX_MEASURE(7);
private final int mIntValue;
LayoutPassReason(int intValue) {
mIntValue = intValue;
}
public int intValue() {
return mIntValue;
}
public static LayoutPassReason fromInt(int value) {
switch (value) {
case 0: return INITIAL;
case 1: return ABS_LAYOUT;
case 2: return STRETCH;
case 3: return MULTILINE_STRETCH;
case 4: return FLEX_LAYOUT;
case 5: return MEASURE;
case 6: return ABS_MEASURE;
case 7: return FLEX_MEASURE;
default: throw new IllegalArgumentException("Unknown enum value: " + value);
}
}
}

View File

@@ -1,35 +0,0 @@
/*
* 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.
*/
package com.facebook.yoga
public enum class LayoutPassReason(public val intValue: Int) {
INITIAL(0),
ABS_LAYOUT(1),
STRETCH(2),
MULTILINE_STRETCH(3),
FLEX_LAYOUT(4),
MEASURE(5),
ABS_MEASURE(6),
FLEX_MEASURE(7);
public companion object {
@JvmStatic
public fun fromInt(value: Int): LayoutPassReason =
when (value) {
0 -> INITIAL
1 -> ABS_LAYOUT
2 -> STRETCH
3 -> MULTILINE_STRETCH
4 -> FLEX_LAYOUT
5 -> MEASURE
6 -> ABS_MEASURE
7 -> FLEX_MEASURE
else -> throw IllegalArgumentException("Unknown enum value: $value")
}
}
}

View File

@@ -5,12 +5,12 @@
* LICENSE file in the root directory of this source tree.
*/
package com.facebook.yoga
package com.facebook.yoga;
public fun interface YogaBaselineFunction {
public interface YogaBaselineFunction {
/**
* Return the baseline of the node in points. When no baseline function is set the baseline
* default to the computed height of the node.
*/
public fun baseline(node: YogaNode, width: Float, height: Float): Float
float baseline(YogaNode node, float width, float height);
}

View File

@@ -0,0 +1,29 @@
/*
* 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.
*/
package com.facebook.yoga;
public abstract class YogaConfig {
public static int SPACING_TYPE = 1;
public abstract void setExperimentalFeatureEnabled(YogaExperimentalFeature feature, boolean enabled);
public abstract void setUseWebDefaults(boolean useWebDefaults);
public abstract void setPointScaleFactor(float pixelsInPoint);
public abstract void setErrata(YogaErrata errata);
public abstract YogaErrata getErrata();
public abstract void setLogger(YogaLogger logger);
public abstract YogaLogger getLogger();
protected abstract long getNativePointer();
}

View File

@@ -1,33 +0,0 @@
/*
* 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.
*/
package com.facebook.yoga
public abstract class YogaConfig {
public abstract fun setExperimentalFeatureEnabled(
feature: YogaExperimentalFeature,
enabled: Boolean,
)
public abstract fun setUseWebDefaults(useWebDefaults: Boolean)
public abstract fun setPointScaleFactor(pixelsInPoint: Float)
public abstract fun setErrata(errata: YogaErrata)
public abstract fun getErrata(): YogaErrata
public abstract fun setLogger(logger: YogaLogger)
public abstract fun getLogger(): YogaLogger
protected abstract fun getNativePointer(): Long
public companion object {
public var SPACING_TYPE: Int = 1
}
}

View File

@@ -5,8 +5,10 @@
* LICENSE file in the root directory of this source tree.
*/
package com.facebook.yoga
package com.facebook.yoga;
public object YogaConfigFactory {
@JvmStatic public fun create(): YogaConfig = YogaConfigJNIFinalizer()
public abstract class YogaConfigFactory {
public static YogaConfig create() {
return new YogaConfigJNIFinalizer();
}
}

View File

@@ -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.
*/
package com.facebook.yoga;
public enum YogaLayoutType {
LAYOUT(0),
MEASURE(1),
CACHED_LAYOUT(2),
CACHED_MEASURE(3);
private final int mIntValue;
YogaLayoutType(int intValue) {
mIntValue = intValue;
}
public int intValue() {
return mIntValue;
}
public static YogaLayoutType fromInt(int value) {
switch (value) {
case 0: return LAYOUT;
case 1: return MEASURE;
case 2: return CACHED_LAYOUT;
case 3: return CACHED_MEASURE;
default: throw new IllegalArgumentException("Unknown enum value: " + value);
}
}
}

View File

@@ -1,27 +0,0 @@
/*
* 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.
*/
package com.facebook.yoga
public enum class YogaLayoutType(public val intValue: Int) {
LAYOUT(0),
MEASURE(1),
CACHED_LAYOUT(2),
CACHED_MEASURE(3);
public companion object {
@JvmStatic
public fun fromInt(value: Int): YogaLayoutType =
when (value) {
0 -> LAYOUT
1 -> MEASURE
2 -> CACHED_LAYOUT
3 -> CACHED_MEASURE
else -> throw IllegalArgumentException("Unknown enum value: $value")
}
}
}

View File

@@ -5,15 +5,16 @@
* LICENSE file in the root directory of this source tree.
*/
package com.facebook.yoga
package com.facebook.yoga;
import com.facebook.yoga.annotations.DoNotStrip
import com.facebook.yoga.annotations.DoNotStrip;
/**
* Interface for receiving logs from native layer. Use by setting YogaNode.setLogger(myLogger); See
* YogaLogLevel for the different log levels.
* Interface for receiving logs from native layer. Use by setting YogaNode.setLogger(myLogger);
* See YogaLogLevel for the different log levels.
*/
@DoNotStrip
public fun interface YogaLogger {
@DoNotStrip public fun log(level: YogaLogLevel, message: String)
public interface YogaLogger {
@DoNotStrip
void log(YogaLogLevel level, String message);
}

View File

@@ -0,0 +1,20 @@
/*
* 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.
*/
package com.facebook.yoga;
public interface YogaMeasureFunction {
/**
* Return a value created by YogaMeasureOutput.make(width, height);
*/
long measure(
YogaNode node,
float width,
YogaMeasureMode widthMode,
float height,
YogaMeasureMode heightMode);
}

View File

@@ -1,19 +0,0 @@
/*
* 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.
*/
package com.facebook.yoga
public fun interface YogaMeasureFunction {
/** Return a value created by YogaMeasureOutput.make(width, height); */
public fun measure(
node: YogaNode,
width: Float,
widthMode: YogaMeasureMode,
height: Float,
heightMode: YogaMeasureMode,
): Long
}

View File

@@ -0,0 +1,32 @@
/*
* 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.
*/
package com.facebook.yoga;
/**
* Helpers for building measure output value.
*/
public class YogaMeasureOutput {
public static long make(float width, float height) {
final int wBits = Float.floatToRawIntBits(width);
final int hBits = Float.floatToRawIntBits(height);
return ((long) wBits) << 32 | ((long) hBits);
}
public static long make(int width, int height) {
return make((float) width, (float) height);
}
public static float getWidth(long measureOutput) {
return Float.intBitsToFloat((int) (0xFFFFFFFF & (measureOutput >> 32)));
}
public static float getHeight(long measureOutput) {
return Float.intBitsToFloat((int) (0xFFFFFFFF & measureOutput));
}
}

View File

@@ -1,29 +0,0 @@
/*
* 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.
*/
package com.facebook.yoga
/** Helpers for building measure output value. */
public object YogaMeasureOutput {
@JvmStatic
public fun make(width: Float, height: Float): Long {
val wBits = java.lang.Float.floatToRawIntBits(width)
val hBits = java.lang.Float.floatToRawIntBits(height)
return (wBits.toLong()) shl 32 or (hBits.toLong())
}
@JvmStatic
public fun make(width: Int, height: Int): Long = make(width.toFloat(), height.toFloat())
@JvmStatic
public fun getWidth(measureOutput: Long): Float =
java.lang.Float.intBitsToFloat((0xFFFFFFFFL and (measureOutput shr 32)).toInt())
@JvmStatic
public fun getHeight(measureOutput: Long): Float =
java.lang.Float.intBitsToFloat((0xFFFFFFFFL and measureOutput).toInt())
}

View File

@@ -0,0 +1,141 @@
/*
* 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.
*/
package com.facebook.yoga;
import com.facebook.yoga.annotations.DoNotStrip;
import com.facebook.soloader.SoLoader;
@DoNotStrip
public class YogaNative {
static {
SoLoader.loadLibrary("yoga");
}
// JNI methods that use Vanilla JNI
// YGConfig related
static native long jni_YGConfigNewJNI();
static native void jni_YGConfigFreeJNI(long nativePointer);
static native void jni_YGConfigSetExperimentalFeatureEnabledJNI(long nativePointer, int feature, boolean enabled);
static native void jni_YGConfigSetUseWebDefaultsJNI(long nativePointer, boolean useWebDefaults);
static native void jni_YGConfigSetPointScaleFactorJNI(long nativePointer, float pixelsInPoint);
static native void jni_YGConfigSetErrataJNI(long nativePointer, int errata);
static native int jni_YGConfigGetErrataJNI(long nativePointer);
static native void jni_YGConfigSetLoggerJNI(long nativePointer, YogaLogger logger);
// YGNode related
static native long jni_YGNodeNewJNI();
static native long jni_YGNodeNewWithConfigJNI(long configPointer);
static native void jni_YGNodeFinalizeJNI(long nativePointer);
static native void jni_YGNodeResetJNI(long nativePointer);
static native void jni_YGNodeInsertChildJNI(long nativePointer, long childPointer, int index);
static native void jni_YGNodeSwapChildJNI(long nativePointer, long childPointer, int index);
static native void jni_YGNodeSetIsReferenceBaselineJNI(long nativePointer, boolean isReferenceBaseline);
static native boolean jni_YGNodeIsReferenceBaselineJNI(long nativePointer);
static native void jni_YGNodeRemoveAllChildrenJNI(long nativePointer);
static native void jni_YGNodeRemoveChildJNI(long nativePointer, long childPointer);
static native void jni_YGNodeCalculateLayoutJNI(long nativePointer, float width, float height, long[] nativePointers, YogaNodeJNIBase[] nodes);
static native void jni_YGNodeMarkDirtyJNI(long nativePointer);
static native boolean jni_YGNodeIsDirtyJNI(long nativePointer);
static native void jni_YGNodeCopyStyleJNI(long dstNativePointer, long srcNativePointer);
static native int jni_YGNodeStyleGetDirectionJNI(long nativePointer);
static native void jni_YGNodeStyleSetDirectionJNI(long nativePointer, int direction);
static native int jni_YGNodeStyleGetFlexDirectionJNI(long nativePointer);
static native void jni_YGNodeStyleSetFlexDirectionJNI(long nativePointer, int flexDirection);
static native int jni_YGNodeStyleGetJustifyContentJNI(long nativePointer);
static native void jni_YGNodeStyleSetJustifyContentJNI(long nativePointer, int justifyContent);
static native int jni_YGNodeStyleGetAlignItemsJNI(long nativePointer);
static native void jni_YGNodeStyleSetAlignItemsJNI(long nativePointer, int alignItems);
static native int jni_YGNodeStyleGetAlignSelfJNI(long nativePointer);
static native void jni_YGNodeStyleSetAlignSelfJNI(long nativePointer, int alignSelf);
static native int jni_YGNodeStyleGetAlignContentJNI(long nativePointer);
static native void jni_YGNodeStyleSetAlignContentJNI(long nativePointer, int alignContent);
static native int jni_YGNodeStyleGetPositionTypeJNI(long nativePointer);
static native void jni_YGNodeStyleSetPositionTypeJNI(long nativePointer, int positionType);
static native int jni_YGNodeStyleGetBoxSizingJNI(long nativePointer);
static native void jni_YGNodeStyleSetBoxSizingJNI(long nativePointer, int boxSizing);
static native int jni_YGNodeStyleGetFlexWrapJNI(long nativePointer);
static native void jni_YGNodeStyleSetFlexWrapJNI(long nativePointer, int wrapType);
static native int jni_YGNodeStyleGetOverflowJNI(long nativePointer);
static native void jni_YGNodeStyleSetOverflowJNI(long nativePointer, int overflow);
static native int jni_YGNodeStyleGetDisplayJNI(long nativePointer);
static native void jni_YGNodeStyleSetDisplayJNI(long nativePointer, int display);
static native float jni_YGNodeStyleGetFlexJNI(long nativePointer);
static native void jni_YGNodeStyleSetFlexJNI(long nativePointer, float flex);
static native float jni_YGNodeStyleGetFlexGrowJNI(long nativePointer);
static native void jni_YGNodeStyleSetFlexGrowJNI(long nativePointer, float flexGrow);
static native float jni_YGNodeStyleGetFlexShrinkJNI(long nativePointer);
static native void jni_YGNodeStyleSetFlexShrinkJNI(long nativePointer, float flexShrink);
static native long jni_YGNodeStyleGetFlexBasisJNI(long nativePointer);
static native void jni_YGNodeStyleSetFlexBasisJNI(long nativePointer, float flexBasis);
static native void jni_YGNodeStyleSetFlexBasisPercentJNI(long nativePointer, float percent);
static native void jni_YGNodeStyleSetFlexBasisAutoJNI(long nativePointer);
static native void jni_YGNodeStyleSetFlexBasisMaxContentJNI(long nativePointer);
static native void jni_YGNodeStyleSetFlexBasisFitContentJNI(long nativePointer);
static native void jni_YGNodeStyleSetFlexBasisStretchJNI(long nativePointer);
static native long jni_YGNodeStyleGetMarginJNI(long nativePointer, int edge);
static native void jni_YGNodeStyleSetMarginJNI(long nativePointer, int edge, float margin);
static native void jni_YGNodeStyleSetMarginPercentJNI(long nativePointer, int edge, float percent);
static native void jni_YGNodeStyleSetMarginAutoJNI(long nativePointer, int edge);
static native long jni_YGNodeStyleGetPaddingJNI(long nativePointer, int edge);
static native void jni_YGNodeStyleSetPaddingJNI(long nativePointer, int edge, float padding);
static native void jni_YGNodeStyleSetPaddingPercentJNI(long nativePointer, int edge, float percent);
static native float jni_YGNodeStyleGetBorderJNI(long nativePointer, int edge);
static native void jni_YGNodeStyleSetBorderJNI(long nativePointer, int edge, float border);
static native long jni_YGNodeStyleGetPositionJNI(long nativePointer, int edge);
static native void jni_YGNodeStyleSetPositionJNI(long nativePointer, int edge, float position);
static native void jni_YGNodeStyleSetPositionPercentJNI(long nativePointer, int edge, float percent);
static native void jni_YGNodeStyleSetPositionAutoJNI(long nativePointer, int edge);
static native long jni_YGNodeStyleGetWidthJNI(long nativePointer);
static native void jni_YGNodeStyleSetWidthJNI(long nativePointer, float width);
static native void jni_YGNodeStyleSetWidthPercentJNI(long nativePointer, float percent);
static native void jni_YGNodeStyleSetWidthAutoJNI(long nativePointer);
static native void jni_YGNodeStyleSetWidthMaxContentJNI(long nativePointer);
static native void jni_YGNodeStyleSetWidthFitContentJNI(long nativePointer);
static native void jni_YGNodeStyleSetWidthStretchJNI(long nativePointer);
static native long jni_YGNodeStyleGetHeightJNI(long nativePointer);
static native void jni_YGNodeStyleSetHeightJNI(long nativePointer, float height);
static native void jni_YGNodeStyleSetHeightPercentJNI(long nativePointer, float percent);
static native void jni_YGNodeStyleSetHeightAutoJNI(long nativePointer);
static native void jni_YGNodeStyleSetHeightMaxContentJNI(long nativePointer);
static native void jni_YGNodeStyleSetHeightFitContentJNI(long nativePointer);
static native void jni_YGNodeStyleSetHeightStretchJNI(long nativePointer);
static native long jni_YGNodeStyleGetMinWidthJNI(long nativePointer);
static native void jni_YGNodeStyleSetMinWidthJNI(long nativePointer, float minWidth);
static native void jni_YGNodeStyleSetMinWidthPercentJNI(long nativePointer, float percent);
static native void jni_YGNodeStyleSetMinWidthMaxContentJNI(long nativePointer);
static native void jni_YGNodeStyleSetMinWidthFitContentJNI(long nativePointer);
static native void jni_YGNodeStyleSetMinWidthStretchJNI(long nativePointer);
static native long jni_YGNodeStyleGetMinHeightJNI(long nativePointer);
static native void jni_YGNodeStyleSetMinHeightJNI(long nativePointer, float minHeight);
static native void jni_YGNodeStyleSetMinHeightPercentJNI(long nativePointer, float percent);
static native void jni_YGNodeStyleSetMinHeightMaxContentJNI(long nativePointer);
static native void jni_YGNodeStyleSetMinHeightFitContentJNI(long nativePointer);
static native void jni_YGNodeStyleSetMinHeightStretchJNI(long nativePointer);
static native long jni_YGNodeStyleGetMaxWidthJNI(long nativePointer);
static native void jni_YGNodeStyleSetMaxWidthJNI(long nativePointer, float maxWidth);
static native void jni_YGNodeStyleSetMaxWidthPercentJNI(long nativePointer, float percent);
static native void jni_YGNodeStyleSetMaxWidthMaxContentJNI(long nativePointer);
static native void jni_YGNodeStyleSetMaxWidthFitContentJNI(long nativePointer);
static native void jni_YGNodeStyleSetMaxWidthStretchJNI(long nativePointer);
static native long jni_YGNodeStyleGetMaxHeightJNI(long nativePointer);
static native void jni_YGNodeStyleSetMaxHeightJNI(long nativePointer, float maxheight);
static native void jni_YGNodeStyleSetMaxHeightPercentJNI(long nativePointer, float percent);
static native void jni_YGNodeStyleSetMaxHeightMaxContentJNI(long nativePointer);
static native void jni_YGNodeStyleSetMaxHeightFitContentJNI(long nativePointer);
static native void jni_YGNodeStyleSetMaxHeightStretchJNI(long nativePointer);
static native float jni_YGNodeStyleGetAspectRatioJNI(long nativePointer);
static native void jni_YGNodeStyleSetAspectRatioJNI(long nativePointer, float aspectRatio);
static native long jni_YGNodeStyleGetGapJNI(long nativePointer, int gutter);
static native void jni_YGNodeStyleSetGapJNI(long nativePointer, int gutter, float gapLength);
static native void jni_YGNodeStyleSetGapPercentJNI(long nativePointer, int gutter, float gapLength);
static native void jni_YGNodeSetHasMeasureFuncJNI(long nativePointer, boolean hasMeasureFunc);
static native void jni_YGNodeSetHasBaselineFuncJNI(long nativePointer, boolean hasMeasureFunc);
static native void jni_YGNodeSetStyleInputsJNI(long nativePointer, float[] styleInputsArray, int size);
static native long jni_YGNodeCloneJNI(long nativePointer);
static native void jni_YGNodeSetAlwaysFormsContainingBlockJNI(long nativePointer, boolean alwaysFormContainingBlock);
}

View File

@@ -1,331 +0,0 @@
/*
* 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.
*/
package com.facebook.yoga
import com.facebook.soloader.SoLoader
import com.facebook.yoga.annotations.DoNotStrip
@DoNotStrip
public object YogaNative {
init {
SoLoader.loadLibrary("yoga")
}
// JNI methods that use Vanilla JNI
// YGConfig related
@JvmStatic public external fun jni_YGConfigNewJNI(): Long
@JvmStatic public external fun jni_YGConfigFreeJNI(nativePointer: Long)
@JvmStatic
public external fun jni_YGConfigSetExperimentalFeatureEnabledJNI(
nativePointer: Long,
feature: Int,
enabled: Boolean,
)
@JvmStatic
public external fun jni_YGConfigSetUseWebDefaultsJNI(nativePointer: Long, useWebDefaults: Boolean)
@JvmStatic
public external fun jni_YGConfigSetPointScaleFactorJNI(nativePointer: Long, pixelsInPoint: Float)
@JvmStatic public external fun jni_YGConfigSetErrataJNI(nativePointer: Long, errata: Int)
@JvmStatic public external fun jni_YGConfigGetErrataJNI(nativePointer: Long): Int
@JvmStatic public external fun jni_YGConfigSetLoggerJNI(nativePointer: Long, logger: YogaLogger)
// YGNode related
@JvmStatic public external fun jni_YGNodeNewJNI(): Long
@JvmStatic public external fun jni_YGNodeNewWithConfigJNI(configPointer: Long): Long
@JvmStatic public external fun jni_YGNodeFinalizeJNI(nativePointer: Long)
@JvmStatic public external fun jni_YGNodeResetJNI(nativePointer: Long)
@JvmStatic
public external fun jni_YGNodeInsertChildJNI(nativePointer: Long, childPointer: Long, index: Int)
@JvmStatic
public external fun jni_YGNodeSwapChildJNI(nativePointer: Long, childPointer: Long, index: Int)
@JvmStatic
public external fun jni_YGNodeSetIsReferenceBaselineJNI(
nativePointer: Long,
isReferenceBaseline: Boolean,
)
@JvmStatic public external fun jni_YGNodeIsReferenceBaselineJNI(nativePointer: Long): Boolean
@JvmStatic public external fun jni_YGNodeRemoveAllChildrenJNI(nativePointer: Long)
@JvmStatic public external fun jni_YGNodeRemoveChildJNI(nativePointer: Long, childPointer: Long)
@JvmStatic
public external fun jni_YGNodeCalculateLayoutJNI(
nativePointer: Long,
width: Float,
height: Float,
nativePointers: LongArray,
nodes: Array<YogaNodeJNIBase>,
)
@JvmStatic public external fun jni_YGNodeMarkDirtyJNI(nativePointer: Long)
@JvmStatic public external fun jni_YGNodeIsDirtyJNI(nativePointer: Long): Boolean
@JvmStatic
public external fun jni_YGNodeCopyStyleJNI(dstNativePointer: Long, srcNativePointer: Long)
@JvmStatic public external fun jni_YGNodeStyleGetDirectionJNI(nativePointer: Long): Int
@JvmStatic public external fun jni_YGNodeStyleSetDirectionJNI(nativePointer: Long, direction: Int)
@JvmStatic public external fun jni_YGNodeStyleGetFlexDirectionJNI(nativePointer: Long): Int
@JvmStatic
public external fun jni_YGNodeStyleSetFlexDirectionJNI(nativePointer: Long, flexDirection: Int)
@JvmStatic public external fun jni_YGNodeStyleGetJustifyContentJNI(nativePointer: Long): Int
@JvmStatic
public external fun jni_YGNodeStyleSetJustifyContentJNI(nativePointer: Long, justifyContent: Int)
@JvmStatic public external fun jni_YGNodeStyleGetAlignItemsJNI(nativePointer: Long): Int
@JvmStatic
public external fun jni_YGNodeStyleSetAlignItemsJNI(nativePointer: Long, alignItems: Int)
@JvmStatic public external fun jni_YGNodeStyleGetAlignSelfJNI(nativePointer: Long): Int
@JvmStatic public external fun jni_YGNodeStyleSetAlignSelfJNI(nativePointer: Long, alignSelf: Int)
@JvmStatic public external fun jni_YGNodeStyleGetAlignContentJNI(nativePointer: Long): Int
@JvmStatic
public external fun jni_YGNodeStyleSetAlignContentJNI(nativePointer: Long, alignContent: Int)
@JvmStatic public external fun jni_YGNodeStyleGetPositionTypeJNI(nativePointer: Long): Int
@JvmStatic
public external fun jni_YGNodeStyleSetPositionTypeJNI(nativePointer: Long, positionType: Int)
@JvmStatic public external fun jni_YGNodeStyleGetBoxSizingJNI(nativePointer: Long): Int
@JvmStatic public external fun jni_YGNodeStyleSetBoxSizingJNI(nativePointer: Long, boxSizing: Int)
@JvmStatic public external fun jni_YGNodeStyleGetFlexWrapJNI(nativePointer: Long): Int
@JvmStatic public external fun jni_YGNodeStyleSetFlexWrapJNI(nativePointer: Long, wrapType: Int)
@JvmStatic public external fun jni_YGNodeStyleGetOverflowJNI(nativePointer: Long): Int
@JvmStatic public external fun jni_YGNodeStyleSetOverflowJNI(nativePointer: Long, overflow: Int)
@JvmStatic public external fun jni_YGNodeStyleGetDisplayJNI(nativePointer: Long): Int
@JvmStatic public external fun jni_YGNodeStyleSetDisplayJNI(nativePointer: Long, display: Int)
@JvmStatic public external fun jni_YGNodeStyleGetFlexJNI(nativePointer: Long): Float
@JvmStatic public external fun jni_YGNodeStyleSetFlexJNI(nativePointer: Long, flex: Float)
@JvmStatic public external fun jni_YGNodeStyleGetFlexGrowJNI(nativePointer: Long): Float
@JvmStatic public external fun jni_YGNodeStyleSetFlexGrowJNI(nativePointer: Long, flexGrow: Float)
@JvmStatic public external fun jni_YGNodeStyleGetFlexShrinkJNI(nativePointer: Long): Float
@JvmStatic
public external fun jni_YGNodeStyleSetFlexShrinkJNI(nativePointer: Long, flexShrink: Float)
@JvmStatic public external fun jni_YGNodeStyleGetFlexBasisJNI(nativePointer: Long): Long
@JvmStatic
public external fun jni_YGNodeStyleSetFlexBasisJNI(nativePointer: Long, flexBasis: Float)
@JvmStatic
public external fun jni_YGNodeStyleSetFlexBasisPercentJNI(nativePointer: Long, percent: Float)
@JvmStatic public external fun jni_YGNodeStyleSetFlexBasisAutoJNI(nativePointer: Long)
@JvmStatic public external fun jni_YGNodeStyleSetFlexBasisMaxContentJNI(nativePointer: Long)
@JvmStatic public external fun jni_YGNodeStyleSetFlexBasisFitContentJNI(nativePointer: Long)
@JvmStatic public external fun jni_YGNodeStyleSetFlexBasisStretchJNI(nativePointer: Long)
@JvmStatic public external fun jni_YGNodeStyleGetMarginJNI(nativePointer: Long, edge: Int): Long
@JvmStatic
public external fun jni_YGNodeStyleSetMarginJNI(nativePointer: Long, edge: Int, margin: Float)
@JvmStatic
public external fun jni_YGNodeStyleSetMarginPercentJNI(
nativePointer: Long,
edge: Int,
percent: Float,
)
@JvmStatic public external fun jni_YGNodeStyleSetMarginAutoJNI(nativePointer: Long, edge: Int)
@JvmStatic public external fun jni_YGNodeStyleGetPaddingJNI(nativePointer: Long, edge: Int): Long
@JvmStatic
public external fun jni_YGNodeStyleSetPaddingJNI(nativePointer: Long, edge: Int, padding: Float)
@JvmStatic
public external fun jni_YGNodeStyleSetPaddingPercentJNI(
nativePointer: Long,
edge: Int,
percent: Float,
)
@JvmStatic public external fun jni_YGNodeStyleGetBorderJNI(nativePointer: Long, edge: Int): Float
@JvmStatic
public external fun jni_YGNodeStyleSetBorderJNI(nativePointer: Long, edge: Int, border: Float)
@JvmStatic public external fun jni_YGNodeStyleGetPositionJNI(nativePointer: Long, edge: Int): Long
@JvmStatic
public external fun jni_YGNodeStyleSetPositionJNI(nativePointer: Long, edge: Int, position: Float)
@JvmStatic
public external fun jni_YGNodeStyleSetPositionPercentJNI(
nativePointer: Long,
edge: Int,
percent: Float,
)
@JvmStatic public external fun jni_YGNodeStyleSetPositionAutoJNI(nativePointer: Long, edge: Int)
@JvmStatic public external fun jni_YGNodeStyleGetWidthJNI(nativePointer: Long): Long
@JvmStatic public external fun jni_YGNodeStyleSetWidthJNI(nativePointer: Long, width: Float)
@JvmStatic
public external fun jni_YGNodeStyleSetWidthPercentJNI(nativePointer: Long, percent: Float)
@JvmStatic public external fun jni_YGNodeStyleSetWidthAutoJNI(nativePointer: Long)
@JvmStatic public external fun jni_YGNodeStyleSetWidthMaxContentJNI(nativePointer: Long)
@JvmStatic public external fun jni_YGNodeStyleSetWidthFitContentJNI(nativePointer: Long)
@JvmStatic public external fun jni_YGNodeStyleSetWidthStretchJNI(nativePointer: Long)
@JvmStatic public external fun jni_YGNodeStyleGetHeightJNI(nativePointer: Long): Long
@JvmStatic public external fun jni_YGNodeStyleSetHeightJNI(nativePointer: Long, height: Float)
@JvmStatic
public external fun jni_YGNodeStyleSetHeightPercentJNI(nativePointer: Long, percent: Float)
@JvmStatic public external fun jni_YGNodeStyleSetHeightAutoJNI(nativePointer: Long)
@JvmStatic public external fun jni_YGNodeStyleSetHeightMaxContentJNI(nativePointer: Long)
@JvmStatic public external fun jni_YGNodeStyleSetHeightFitContentJNI(nativePointer: Long)
@JvmStatic public external fun jni_YGNodeStyleSetHeightStretchJNI(nativePointer: Long)
@JvmStatic public external fun jni_YGNodeStyleGetMinWidthJNI(nativePointer: Long): Long
@JvmStatic public external fun jni_YGNodeStyleSetMinWidthJNI(nativePointer: Long, minWidth: Float)
@JvmStatic
public external fun jni_YGNodeStyleSetMinWidthPercentJNI(nativePointer: Long, percent: Float)
@JvmStatic public external fun jni_YGNodeStyleSetMinWidthMaxContentJNI(nativePointer: Long)
@JvmStatic public external fun jni_YGNodeStyleSetMinWidthFitContentJNI(nativePointer: Long)
@JvmStatic public external fun jni_YGNodeStyleSetMinWidthStretchJNI(nativePointer: Long)
@JvmStatic public external fun jni_YGNodeStyleGetMinHeightJNI(nativePointer: Long): Long
@JvmStatic
public external fun jni_YGNodeStyleSetMinHeightJNI(nativePointer: Long, minHeight: Float)
@JvmStatic
public external fun jni_YGNodeStyleSetMinHeightPercentJNI(nativePointer: Long, percent: Float)
@JvmStatic public external fun jni_YGNodeStyleSetMinHeightMaxContentJNI(nativePointer: Long)
@JvmStatic public external fun jni_YGNodeStyleSetMinHeightFitContentJNI(nativePointer: Long)
@JvmStatic public external fun jni_YGNodeStyleSetMinHeightStretchJNI(nativePointer: Long)
@JvmStatic public external fun jni_YGNodeStyleGetMaxWidthJNI(nativePointer: Long): Long
@JvmStatic public external fun jni_YGNodeStyleSetMaxWidthJNI(nativePointer: Long, maxWidth: Float)
@JvmStatic
public external fun jni_YGNodeStyleSetMaxWidthPercentJNI(nativePointer: Long, percent: Float)
@JvmStatic public external fun jni_YGNodeStyleSetMaxWidthMaxContentJNI(nativePointer: Long)
@JvmStatic public external fun jni_YGNodeStyleSetMaxWidthFitContentJNI(nativePointer: Long)
@JvmStatic public external fun jni_YGNodeStyleSetMaxWidthStretchJNI(nativePointer: Long)
@JvmStatic public external fun jni_YGNodeStyleGetMaxHeightJNI(nativePointer: Long): Long
@JvmStatic
public external fun jni_YGNodeStyleSetMaxHeightJNI(nativePointer: Long, maxheight: Float)
@JvmStatic
public external fun jni_YGNodeStyleSetMaxHeightPercentJNI(nativePointer: Long, percent: Float)
@JvmStatic public external fun jni_YGNodeStyleSetMaxHeightMaxContentJNI(nativePointer: Long)
@JvmStatic public external fun jni_YGNodeStyleSetMaxHeightFitContentJNI(nativePointer: Long)
@JvmStatic public external fun jni_YGNodeStyleSetMaxHeightStretchJNI(nativePointer: Long)
@JvmStatic public external fun jni_YGNodeStyleGetAspectRatioJNI(nativePointer: Long): Float
@JvmStatic
public external fun jni_YGNodeStyleSetAspectRatioJNI(nativePointer: Long, aspectRatio: Float)
@JvmStatic public external fun jni_YGNodeStyleGetGapJNI(nativePointer: Long, gutter: Int): Long
@JvmStatic
public external fun jni_YGNodeStyleSetGapJNI(nativePointer: Long, gutter: Int, gapLength: Float)
@JvmStatic
public external fun jni_YGNodeStyleSetGapPercentJNI(
nativePointer: Long,
gutter: Int,
gapLength: Float,
)
@JvmStatic
public external fun jni_YGNodeSetHasMeasureFuncJNI(nativePointer: Long, hasMeasureFunc: Boolean)
@JvmStatic
public external fun jni_YGNodeSetHasBaselineFuncJNI(nativePointer: Long, hasMeasureFunc: Boolean)
@JvmStatic
public external fun jni_YGNodeSetStyleInputsJNI(
nativePointer: Long,
styleInputsArray: FloatArray,
size: Int,
)
@JvmStatic public external fun jni_YGNodeCloneJNI(nativePointer: Long): Long
@JvmStatic
public external fun jni_YGNodeSetAlwaysFormsContainingBlockJNI(
nativePointer: Long,
alwaysFormContainingBlock: Boolean,
)
}

View File

@@ -1,279 +0,0 @@
/*
* 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.
*/
package com.facebook.yoga;
import javax.annotation.Nullable;
public abstract class YogaNode implements YogaProps {
/** The interface the {@link #getData()} object can optionally implement. */
public interface Inputs {
/** Requests the data object to disable mutations of its inputs. */
void freeze(final YogaNode node, final @Nullable YogaNode parent);
}
public abstract void reset();
public abstract int getChildCount();
public abstract YogaNode getChildAt(int i);
public abstract void addChildAt(YogaNode child, int i);
public abstract void setIsReferenceBaseline(boolean isReferenceBaseline);
public abstract boolean isReferenceBaseline();
public abstract YogaNode removeChildAt(int i);
/**
* @returns the {@link YogaNode} that owns this {@link YogaNode}. The owner is used to identify
* the YogaTree that a {@link YogaNode} belongs to. This method will return the parent of the
* {@link YogaNode} when the {@link YogaNode} only belongs to one YogaTree or null when the
* {@link YogaNode} is shared between two or more YogaTrees.
*/
@Nullable
public abstract YogaNode getOwner();
/** @deprecated Use #getOwner() instead. This will be removed in the next version. */
@Deprecated
@Nullable
public abstract YogaNode getParent();
public abstract int indexOf(YogaNode child);
public abstract void calculateLayout(float width, float height);
public abstract boolean hasNewLayout();
public abstract void dirty();
public abstract boolean isDirty();
public abstract void copyStyle(YogaNode srcNode);
public abstract void markLayoutSeen();
public abstract YogaDirection getStyleDirection();
public abstract void setDirection(YogaDirection direction);
public abstract YogaFlexDirection getFlexDirection();
public abstract void setFlexDirection(YogaFlexDirection flexDirection);
public abstract YogaJustify getJustifyContent();
public abstract void setJustifyContent(YogaJustify justifyContent);
public abstract YogaAlign getAlignItems();
public abstract void setAlignItems(YogaAlign alignItems);
public abstract YogaAlign getAlignSelf();
public abstract void setAlignSelf(YogaAlign alignSelf);
public abstract YogaAlign getAlignContent();
public abstract void setAlignContent(YogaAlign alignContent);
public abstract YogaPositionType getPositionType();
public abstract void setPositionType(YogaPositionType positionType);
public abstract YogaBoxSizing getBoxSizing();
public abstract void setBoxSizing(YogaBoxSizing boxSizing);
public abstract YogaWrap getWrap();
public abstract void setWrap(YogaWrap flexWrap);
public abstract YogaOverflow getOverflow();
public abstract void setOverflow(YogaOverflow overflow);
public abstract YogaDisplay getDisplay();
public abstract void setDisplay(YogaDisplay display);
public abstract float getFlex();
public abstract void setFlex(float flex);
public abstract float getFlexGrow();
public abstract void setFlexGrow(float flexGrow);
public abstract float getFlexShrink();
public abstract void setFlexShrink(float flexShrink);
public abstract YogaValue getFlexBasis();
public abstract void setFlexBasis(float flexBasis);
public abstract void setFlexBasisPercent(float percent);
public abstract void setFlexBasisAuto();
public abstract void setFlexBasisMaxContent();
public abstract void setFlexBasisFitContent();
public abstract void setFlexBasisStretch();
public abstract YogaValue getMargin(YogaEdge edge);
public abstract void setMargin(YogaEdge edge, float margin);
public abstract void setMarginPercent(YogaEdge edge, float percent);
public abstract void setMarginAuto(YogaEdge edge);
public abstract YogaValue getPadding(YogaEdge edge);
public abstract void setPadding(YogaEdge edge, float padding);
public abstract void setPaddingPercent(YogaEdge edge, float percent);
public abstract float getBorder(YogaEdge edge);
public abstract void setBorder(YogaEdge edge, float border);
public abstract YogaValue getPosition(YogaEdge edge);
public abstract void setPosition(YogaEdge edge, float position);
public abstract void setPositionPercent(YogaEdge edge, float percent);
public abstract void setPositionAuto(YogaEdge edge);
public abstract YogaValue getWidth();
public abstract void setWidth(float width);
public abstract void setWidthPercent(float percent);
public abstract void setWidthAuto();
public abstract void setWidthMaxContent();
public abstract void setWidthFitContent();
public abstract void setWidthStretch();
public abstract YogaValue getHeight();
public abstract void setHeight(float height);
public abstract void setHeightPercent(float percent);
public abstract void setHeightAuto();
public abstract void setHeightMaxContent();
public abstract void setHeightFitContent();
public abstract void setHeightStretch();
public abstract YogaValue getMinWidth();
public abstract void setMinWidth(float minWidth);
public abstract void setMinWidthPercent(float percent);
public abstract void setMinWidthMaxContent();
public abstract void setMinWidthFitContent();
public abstract void setMinWidthStretch();
public abstract YogaValue getMinHeight();
public abstract void setMinHeight(float minHeight);
public abstract void setMinHeightPercent(float percent);
public abstract void setMinHeightMaxContent();
public abstract void setMinHeightFitContent();
public abstract void setMinHeightStretch();
public abstract YogaValue getMaxWidth();
public abstract void setMaxWidth(float maxWidth);
public abstract void setMaxWidthPercent(float percent);
public abstract void setMaxWidthMaxContent();
public abstract void setMaxWidthFitContent();
public abstract void setMaxWidthStretch();
public abstract YogaValue getMaxHeight();
public abstract void setMaxHeight(float maxheight);
public abstract void setMaxHeightPercent(float percent);
public abstract void setMaxHeightMaxContent();
public abstract void setMaxHeightFitContent();
public abstract void setMaxHeightStretch();
public abstract float getAspectRatio();
public abstract void setAspectRatio(float aspectRatio);
public abstract YogaValue getGap(YogaGutter gutter);
public abstract void setGap(YogaGutter gutter, float gapLength);
public abstract void setGapPercent(YogaGutter gutter, float gapLength);
public abstract float getLayoutX();
public abstract float getLayoutY();
public abstract float getLayoutWidth();
public abstract float getLayoutHeight();
public abstract float getLayoutMargin(YogaEdge edge);
public abstract float getLayoutPadding(YogaEdge edge);
public abstract float getLayoutBorder(YogaEdge edge);
public abstract YogaDirection getLayoutDirection();
public abstract void setMeasureFunction(YogaMeasureFunction measureFunction);
public abstract void setBaselineFunction(YogaBaselineFunction baselineFunction);
public abstract boolean isMeasureDefined();
public abstract boolean isBaselineDefined();
public abstract void setData(Object data);
@Nullable
public abstract Object getData();
public abstract YogaNode cloneWithoutChildren();
public abstract YogaNode cloneWithChildren();
public abstract void setAlwaysFormsContainingBlock(boolean alwaysFormsContainingBlock);
}

View File

@@ -0,0 +1,273 @@
/*
* 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.
*/
package com.facebook.yoga
public abstract class YogaNode : YogaProps {
/** The interface the [getData] object can optionally implement. */
public fun interface Inputs {
/** Requests the data object to disable mutations of its inputs. */
public fun freeze(node: YogaNode, parent: YogaNode?)
}
public abstract fun reset()
public abstract fun getChildCount(): Int
public abstract fun getChildAt(i: Int): YogaNode
public abstract fun addChildAt(child: YogaNode, i: Int)
abstract override fun setIsReferenceBaseline(isReferenceBaseline: Boolean)
public abstract fun isReferenceBaseline(): Boolean
public abstract fun removeChildAt(i: Int): YogaNode
/**
* @returns the [YogaNode] that owns this [YogaNode]. The owner is used to identify the YogaTree
* that a [YogaNode] belongs to. This method will return the parent of the [YogaNode] when the
* [YogaNode] only belongs to one YogaTree or null when the [YogaNode] is shared between two or
* more YogaTrees.
*/
public abstract fun getOwner(): YogaNode?
@Deprecated(
"Use getOwner() instead. This will be removed in the next version. ",
replaceWith = ReplaceWith("getOwner()"))
public abstract fun getParent(): YogaNode?
public abstract fun indexOf(child: YogaNode): Int
public abstract fun calculateLayout(width: Float, height: Float)
public abstract fun hasNewLayout(): Boolean
public abstract fun dirty()
public abstract fun isDirty(): Boolean
public abstract fun copyStyle(srcNode: YogaNode)
public abstract fun markLayoutSeen()
abstract override fun getStyleDirection(): YogaDirection
abstract override fun setDirection(direction: YogaDirection)
abstract override fun getFlexDirection(): YogaFlexDirection
abstract override fun setFlexDirection(flexDirection: YogaFlexDirection)
abstract override fun getJustifyContent(): YogaJustify
abstract override fun setJustifyContent(justifyContent: YogaJustify)
abstract override fun getAlignItems(): YogaAlign
abstract override fun setAlignItems(alignItems: YogaAlign)
abstract override fun getAlignSelf(): YogaAlign
abstract override fun setAlignSelf(alignSelf: YogaAlign)
abstract override fun getAlignContent(): YogaAlign
abstract override fun setAlignContent(alignContent: YogaAlign)
abstract override fun getPositionType(): YogaPositionType
abstract override fun setPositionType(positionType: YogaPositionType)
abstract override fun getBoxSizing(): YogaBoxSizing
abstract override fun setBoxSizing(boxSizing: YogaBoxSizing)
public abstract fun getWrap(): YogaWrap
abstract override fun setWrap(flexWrap: YogaWrap)
public abstract fun getOverflow(): YogaOverflow
public abstract fun setOverflow(overflow: YogaOverflow)
public abstract fun getDisplay(): YogaDisplay
public abstract fun setDisplay(display: YogaDisplay)
public abstract fun getFlex(): Float
abstract override fun setFlex(flex: Float)
abstract override fun getFlexGrow(): Float
abstract override fun setFlexGrow(flexGrow: Float)
abstract override fun getFlexShrink(): Float
abstract override fun setFlexShrink(flexShrink: Float)
abstract override fun getFlexBasis(): YogaValue
abstract override fun setFlexBasis(flexBasis: Float)
abstract override fun setFlexBasisPercent(percent: Float)
abstract override fun setFlexBasisAuto()
abstract override fun setFlexBasisMaxContent()
abstract override fun setFlexBasisFitContent()
abstract override fun setFlexBasisStretch()
abstract override fun getMargin(edge: YogaEdge): YogaValue
abstract override fun setMargin(edge: YogaEdge, margin: Float)
abstract override fun setMarginPercent(edge: YogaEdge, percent: Float)
abstract override fun setMarginAuto(edge: YogaEdge)
abstract override fun getPadding(edge: YogaEdge): YogaValue
abstract override fun setPadding(edge: YogaEdge, padding: Float)
abstract override fun setPaddingPercent(edge: YogaEdge, percent: Float)
abstract override fun getBorder(edge: YogaEdge): Float
abstract override fun setBorder(edge: YogaEdge, border: Float)
abstract override fun getPosition(edge: YogaEdge): YogaValue
abstract override fun setPosition(edge: YogaEdge, position: Float)
abstract override fun setPositionPercent(edge: YogaEdge, percent: Float)
public abstract fun setPositionAuto(edge: YogaEdge)
abstract override fun getWidth(): YogaValue
abstract override fun setWidth(width: Float)
abstract override fun setWidthPercent(percent: Float)
abstract override fun setWidthAuto()
abstract override fun setWidthMaxContent()
abstract override fun setWidthFitContent()
abstract override fun setWidthStretch()
abstract override fun getHeight(): YogaValue
abstract override fun setHeight(height: Float)
abstract override fun setHeightPercent(percent: Float)
abstract override fun setHeightAuto()
abstract override fun setHeightMaxContent()
abstract override fun setHeightFitContent()
abstract override fun setHeightStretch()
abstract override fun getMinWidth(): YogaValue
abstract override fun setMinWidth(minWidth: Float)
abstract override fun setMinWidthPercent(percent: Float)
abstract override fun setMinWidthMaxContent()
abstract override fun setMinWidthFitContent()
abstract override fun setMinWidthStretch()
abstract override fun getMinHeight(): YogaValue
abstract override fun setMinHeight(minHeight: Float)
abstract override fun setMinHeightPercent(percent: Float)
abstract override fun setMinHeightMaxContent()
abstract override fun setMinHeightFitContent()
abstract override fun setMinHeightStretch()
abstract override fun getMaxWidth(): YogaValue
abstract override fun setMaxWidth(maxWidth: Float)
abstract override fun setMaxWidthPercent(percent: Float)
abstract override fun setMaxWidthMaxContent()
abstract override fun setMaxWidthFitContent()
abstract override fun setMaxWidthStretch()
abstract override fun getMaxHeight(): YogaValue
abstract override fun setMaxHeight(maxheight: Float)
abstract override fun setMaxHeightPercent(percent: Float)
abstract override fun setMaxHeightMaxContent()
abstract override fun setMaxHeightFitContent()
abstract override fun setMaxHeightStretch()
abstract override fun getAspectRatio(): Float
abstract override fun setAspectRatio(aspectRatio: Float)
public abstract fun getGap(gutter: YogaGutter): YogaValue
public abstract fun setGap(gutter: YogaGutter, gapLength: Float)
public abstract fun setGapPercent(gutter: YogaGutter, gapLength: Float)
public abstract fun getLayoutX(): Float
public abstract fun getLayoutY(): Float
public abstract fun getLayoutWidth(): Float
public abstract fun getLayoutHeight(): Float
public abstract fun getLayoutMargin(edge: YogaEdge): Float
public abstract fun getLayoutPadding(edge: YogaEdge): Float
public abstract fun getLayoutBorder(edge: YogaEdge): Float
public abstract fun getLayoutDirection(): YogaDirection
abstract override fun setMeasureFunction(measureFunction: YogaMeasureFunction)
abstract override fun setBaselineFunction(baselineFunction: YogaBaselineFunction)
public abstract fun isMeasureDefined(): Boolean
public abstract fun isBaselineDefined(): Boolean
public abstract fun setData(data: Any)
public abstract fun getData(): Any?
public abstract fun cloneWithoutChildren(): YogaNode
public abstract fun cloneWithChildren(): YogaNode
public abstract fun setAlwaysFormsContainingBlock(alwaysFormsContainingBlock: Boolean)
}

View File

@@ -0,0 +1,18 @@
/*
* 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.
*/
package com.facebook.yoga;
public abstract class YogaNodeFactory {
public static YogaNode create() {
return new YogaNodeJNIFinalizer();
}
public static YogaNode create(YogaConfig config) {
return new YogaNodeJNIFinalizer(config);
}
}

View File

@@ -1,14 +0,0 @@
/*
* 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.
*/
package com.facebook.yoga
public object YogaNodeFactory {
@JvmStatic public fun create(): YogaNode = YogaNodeJNIFinalizer()
@JvmStatic public fun create(config: YogaConfig): YogaNode = YogaNodeJNIFinalizer(config)
}

View File

@@ -0,0 +1,51 @@
/*
* 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.
*/
package com.facebook.yoga;
public class YogaStyleInputs {
public static final short LAYOUT_DIRECTION = 0;
public static final short FLEX_DIRECTION = 1;
public static final short FLEX = 2;
public static final short FLEX_GROW = 3;
public static final short FLEX_SHRINK = 4;
public static final short FLEX_BASIS = 5;
public static final short FLEX_BASIS_PERCENT = 6;
public static final short FLEX_BASIS_AUTO = 7;
public static final short FLEX_WRAP = 8;
public static final short WIDTH = 9;
public static final short WIDTH_PERCENT = 10;
public static final short WIDTH_AUTO = 11;
public static final short MIN_WIDTH = 12;
public static final short MIN_WIDTH_PERCENT = 13;
public static final short MAX_WIDTH = 14;
public static final short MAX_WIDTH_PERCENT = 15;
public static final short HEIGHT = 16;
public static final short HEIGHT_PERCENT = 17;
public static final short HEIGHT_AUTO = 18;
public static final short MIN_HEIGHT = 19;
public static final short MIN_HEIGHT_PERCENT = 20;
public static final short MAX_HEIGHT = 21;
public static final short MAX_HEIGHT_PERCENT = 22;
public static final short JUSTIFY_CONTENT = 23;
public static final short ALIGN_ITEMS = 24;
public static final short ALIGN_SELF = 25;
public static final short ALIGN_CONTENT = 26;
public static final short POSITION_TYPE = 27;
public static final short ASPECT_RATIO = 28;
public static final short OVERFLOW = 29;
public static final short DISPLAY = 30;
public static final short MARGIN = 31;
public static final short MARGIN_PERCENT = 32;
public static final short MARGIN_AUTO = 33;
public static final short PADDING = 34;
public static final short PADDING_PERCENT = 35;
public static final short BORDER = 36;
public static final short POSITION = 37;
public static final short POSITION_PERCENT = 38;
public static final short IS_REFERENCE_BASELINE = 39;
}

View File

@@ -1,51 +0,0 @@
/*
* 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.
*/
package com.facebook.yoga
public object YogaStyleInputs {
public const val LAYOUT_DIRECTION: Short = 0
public const val FLEX_DIRECTION: Short = 1
public const val FLEX: Short = 2
public const val FLEX_GROW: Short = 3
public const val FLEX_SHRINK: Short = 4
public const val FLEX_BASIS: Short = 5
public const val FLEX_BASIS_PERCENT: Short = 6
public const val FLEX_BASIS_AUTO: Short = 7
public const val FLEX_WRAP: Short = 8
public const val WIDTH: Short = 9
public const val WIDTH_PERCENT: Short = 10
public const val WIDTH_AUTO: Short = 11
public const val MIN_WIDTH: Short = 12
public const val MIN_WIDTH_PERCENT: Short = 13
public const val MAX_WIDTH: Short = 14
public const val MAX_WIDTH_PERCENT: Short = 15
public const val HEIGHT: Short = 16
public const val HEIGHT_PERCENT: Short = 17
public const val HEIGHT_AUTO: Short = 18
public const val MIN_HEIGHT: Short = 19
public const val MIN_HEIGHT_PERCENT: Short = 20
public const val MAX_HEIGHT: Short = 21
public const val MAX_HEIGHT_PERCENT: Short = 22
public const val JUSTIFY_CONTENT: Short = 23
public const val ALIGN_ITEMS: Short = 24
public const val ALIGN_SELF: Short = 25
public const val ALIGN_CONTENT: Short = 26
public const val POSITION_TYPE: Short = 27
public const val ASPECT_RATIO: Short = 28
public const val OVERFLOW: Short = 29
public const val DISPLAY: Short = 30
public const val MARGIN: Short = 31
public const val MARGIN_PERCENT: Short = 32
public const val MARGIN_AUTO: Short = 33
public const val PADDING: Short = 34
public const val PADDING_PERCENT: Short = 35
public const val BORDER: Short = 36
public const val POSITION: Short = 37
public const val POSITION_PERCENT: Short = 38
public const val IS_REFERENCE_BASELINE: Short = 39
}

View File

@@ -0,0 +1,80 @@
/*
* 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.
*/
package com.facebook.yoga;
public class YogaValue {
static final YogaValue UNDEFINED = new YogaValue(YogaConstants.UNDEFINED, YogaUnit.UNDEFINED);
static final YogaValue ZERO = new YogaValue(0, YogaUnit.POINT);
static final YogaValue AUTO = new YogaValue(YogaConstants.UNDEFINED, YogaUnit.AUTO);
public final float value;
public final YogaUnit unit;
public YogaValue(float value, YogaUnit unit) {
this.value = value;
this.unit = unit;
}
YogaValue(float value, int unit) {
this(value, YogaUnit.fromInt(unit));
}
@Override
public boolean equals(Object other) {
if (other instanceof YogaValue) {
final YogaValue otherValue = (YogaValue) other;
if (unit == otherValue.unit) {
return unit == YogaUnit.UNDEFINED
|| unit == YogaUnit.AUTO
|| Float.compare(value, otherValue.value) == 0;
}
}
return false;
}
@Override
public int hashCode() {
return Float.floatToIntBits(value) + unit.intValue();
}
@Override
public String toString() {
switch (unit) {
case UNDEFINED:
return "undefined";
case POINT:
return Float.toString(value);
case PERCENT:
return value + "%";
case AUTO:
return "auto";
default:
throw new IllegalStateException();
}
}
public static YogaValue parse(String s) {
if (s == null) {
return null;
}
if ("undefined".equals(s)) {
return UNDEFINED;
}
if ("auto".equals(s)) {
return AUTO;
}
if (s.endsWith("%")) {
return new YogaValue(Float.parseFloat(s.substring(0, s.length() - 1)), YogaUnit.PERCENT);
}
return new YogaValue(Float.parseFloat(s), YogaUnit.POINT);
}
}

View File

@@ -1,66 +0,0 @@
/*
* 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.
*/
package com.facebook.yoga
public class YogaValue
public constructor(@JvmField public val value: Float, @JvmField public val unit: YogaUnit) {
internal constructor(value: Float, unit: Int) : this(value, YogaUnit.fromInt(unit))
override fun equals(other: Any?): Boolean {
if (other is YogaValue) {
val otherValue = other
if (unit == otherValue.unit) {
return unit == YogaUnit.UNDEFINED ||
unit == YogaUnit.AUTO ||
value.compareTo(otherValue.value) == 0
}
}
return false
}
override fun hashCode(): Int = java.lang.Float.floatToIntBits(value) + unit.intValue()
override fun toString(): String =
when (unit) {
YogaUnit.UNDEFINED -> "undefined"
YogaUnit.POINT -> value.toString()
YogaUnit.PERCENT -> "$value%"
YogaUnit.AUTO -> "auto"
else -> throw IllegalStateException()
}
public companion object {
@JvmField
public val UNDEFINED: YogaValue = YogaValue(YogaConstants.UNDEFINED, YogaUnit.UNDEFINED)
@JvmField public val ZERO: YogaValue = YogaValue(0f, YogaUnit.POINT)
@JvmField public val AUTO: YogaValue = YogaValue(YogaConstants.UNDEFINED, YogaUnit.AUTO)
@JvmStatic
public fun parse(s: String?): YogaValue? {
if (s == null) {
return null
}
if ("undefined" == s) {
return UNDEFINED
}
if ("auto" == s) {
return AUTO
}
if (s.endsWith("%")) {
return YogaValue(s.substring(0, s.length - 1).toFloat(), YogaUnit.PERCENT)
}
return YogaValue(s.toFloat(), YogaUnit.POINT)
}
}
}

View File

@@ -0,0 +1,18 @@
/*
* 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.
*/
package com.facebook.yoga.annotations;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
import static java.lang.annotation.RetentionPolicy.CLASS;
@Target({ ElementType.TYPE, ElementType.FIELD, ElementType.METHOD, ElementType.CONSTRUCTOR })
@Retention(CLASS)
public @interface DoNotStrip { }

View File

@@ -1,19 +0,0 @@
/*
* 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.
*/
package com.facebook.yoga.annotations
@Target(
AnnotationTarget.CLASS,
AnnotationTarget.FIELD,
AnnotationTarget.FUNCTION,
AnnotationTarget.PROPERTY_GETTER,
AnnotationTarget.PROPERTY_SETTER,
AnnotationTarget.CONSTRUCTOR,
)
@Retention(AnnotationRetention.BINARY)
public annotation class DoNotStrip