Compare commits
21 Commits
NSProgramm
...
main
Author | SHA1 | Date | |
---|---|---|---|
|
dc2581f229 | ||
|
f16fee8c2e | ||
|
89fc160151 | ||
|
d1246f6f0d | ||
|
93bea17635 | ||
|
c582f7caa6 | ||
|
bf1cbd29c0 | ||
|
499a825836 | ||
|
8087edaafe | ||
|
c90aecbdfe | ||
|
c54215fd77 | ||
|
cf50bc9adf | ||
|
d1037226c0 | ||
|
714d4b2ebe | ||
|
d4b5220e6c | ||
|
da5ba7f7c6 | ||
|
8bf7a34d02 | ||
|
82671c0132 | ||
|
9f2a9476e5 | ||
|
c7c85621fc | ||
|
73980a3cf8 |
3
.gitignore
vendored
3
.gitignore
vendored
@@ -73,3 +73,6 @@ local.properties
|
|||||||
|
|
||||||
# Docusarus build
|
# Docusarus build
|
||||||
.docusaurus
|
.docusaurus
|
||||||
|
|
||||||
|
# Android Studio
|
||||||
|
.idea
|
||||||
|
@@ -9,6 +9,7 @@ plugins {
|
|||||||
id("com.android.library") version "8.7.1" apply false
|
id("com.android.library") version "8.7.1" apply false
|
||||||
id("com.android.application") version "8.7.1" apply false
|
id("com.android.application") version "8.7.1" apply false
|
||||||
id("io.github.gradle-nexus.publish-plugin") version "1.3.0"
|
id("io.github.gradle-nexus.publish-plugin") version "1.3.0"
|
||||||
|
id 'org.jetbrains.kotlin.android' version '2.1.20' apply false
|
||||||
}
|
}
|
||||||
|
|
||||||
allprojects {
|
allprojects {
|
||||||
|
@@ -9,6 +9,7 @@ plugins {
|
|||||||
id("com.android.library")
|
id("com.android.library")
|
||||||
id("maven-publish")
|
id("maven-publish")
|
||||||
id("signing")
|
id("signing")
|
||||||
|
id("org.jetbrains.kotlin.android")
|
||||||
}
|
}
|
||||||
|
|
||||||
group = "com.facebook.yoga"
|
group = "com.facebook.yoga"
|
||||||
@@ -48,6 +49,8 @@ android {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
kotlinOptions { jvmTarget = "1.8" }
|
||||||
|
|
||||||
publishing {
|
publishing {
|
||||||
multipleVariants {
|
multipleVariants {
|
||||||
withSourcesJar()
|
withSourcesJar()
|
||||||
@@ -60,6 +63,7 @@ android {
|
|||||||
dependencies {
|
dependencies {
|
||||||
implementation("com.google.code.findbugs:jsr305:3.0.2")
|
implementation("com.google.code.findbugs:jsr305:3.0.2")
|
||||||
implementation("com.facebook.soloader:soloader:0.10.5")
|
implementation("com.facebook.soloader:soloader:0.10.5")
|
||||||
|
implementation("androidx.core:core-ktx:1.16.0")
|
||||||
testImplementation("junit:junit:4.12")
|
testImplementation("junit:junit:4.12")
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -79,7 +83,8 @@ publishing {
|
|||||||
afterEvaluate { from(components["default"]) }
|
afterEvaluate { from(components["default"]) }
|
||||||
pom {
|
pom {
|
||||||
description.set(
|
description.set(
|
||||||
"An embeddable and performant flexbox layout engine with bindings for multiple languages")
|
"An embeddable and performant flexbox layout engine with bindings for multiple languages"
|
||||||
|
)
|
||||||
name.set(project.name)
|
name.set(project.name)
|
||||||
url.set("https://github.com/facebook/yoga.git")
|
url.set("https://github.com/facebook/yoga.git")
|
||||||
licenses {
|
licenses {
|
||||||
|
@@ -1,43 +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 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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
35
java/com/facebook/yoga/LayoutPassReason.kt
Normal file
35
java/com/facebook/yoga/LayoutPassReason.kt
Normal 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 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")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@@ -5,12 +5,12 @@
|
|||||||
* LICENSE file in the root directory of this source tree.
|
* LICENSE file in the root directory of this source tree.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package com.facebook.yoga;
|
package com.facebook.yoga
|
||||||
|
|
||||||
public interface YogaBaselineFunction {
|
public fun interface YogaBaselineFunction {
|
||||||
/**
|
/**
|
||||||
* Return the baseline of the node in points. When no baseline function is set the baseline
|
* Return the baseline of the node in points. When no baseline function is set the baseline
|
||||||
* default to the computed height of the node.
|
* default to the computed height of the node.
|
||||||
*/
|
*/
|
||||||
float baseline(YogaNode node, float width, float height);
|
public fun baseline(node: YogaNode, width: Float, height: Float): Float
|
||||||
}
|
}
|
@@ -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;
|
|
||||||
|
|
||||||
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();
|
|
||||||
}
|
|
33
java/com/facebook/yoga/YogaConfig.kt
Normal file
33
java/com/facebook/yoga/YogaConfig.kt
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
/*
|
||||||
|
* 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
|
||||||
|
}
|
||||||
|
}
|
@@ -5,10 +5,8 @@
|
|||||||
* LICENSE file in the root directory of this source tree.
|
* LICENSE file in the root directory of this source tree.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package com.facebook.yoga;
|
package com.facebook.yoga
|
||||||
|
|
||||||
public abstract class YogaConfigFactory {
|
public object YogaConfigFactory {
|
||||||
public static YogaConfig create() {
|
@JvmStatic public fun create(): YogaConfig = YogaConfigJNIFinalizer()
|
||||||
return new YogaConfigJNIFinalizer();
|
|
||||||
}
|
|
||||||
}
|
}
|
@@ -1,25 +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 YogaConstants {
|
|
||||||
|
|
||||||
public static final float UNDEFINED = Float.NaN;
|
|
||||||
|
|
||||||
public static boolean isUndefined(float value) {
|
|
||||||
return Float.compare(value, UNDEFINED) == 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static boolean isUndefined(YogaValue value) {
|
|
||||||
return value.unit == YogaUnit.UNDEFINED;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static float getUndefined() {
|
|
||||||
return UNDEFINED;
|
|
||||||
}
|
|
||||||
}
|
|
18
java/com/facebook/yoga/YogaConstants.kt
Normal file
18
java/com/facebook/yoga/YogaConstants.kt
Normal 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 object YogaConstants {
|
||||||
|
@JvmField public val UNDEFINED: Float = Float.NaN
|
||||||
|
|
||||||
|
@JvmStatic public fun isUndefined(value: Float): Boolean = value.compareTo(UNDEFINED) == 0
|
||||||
|
|
||||||
|
@JvmStatic public fun isUndefined(value: YogaValue): Boolean = value.unit == YogaUnit.UNDEFINED
|
||||||
|
|
||||||
|
@JvmStatic public fun getUndefined(): Float = UNDEFINED
|
||||||
|
}
|
@@ -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 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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
27
java/com/facebook/yoga/YogaLayoutType.kt
Normal file
27
java/com/facebook/yoga/YogaLayoutType.kt
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
/*
|
||||||
|
* 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")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@@ -5,16 +5,15 @@
|
|||||||
* LICENSE file in the root directory of this source tree.
|
* 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);
|
* Interface for receiving logs from native layer. Use by setting YogaNode.setLogger(myLogger); See
|
||||||
* See YogaLogLevel for the different log levels.
|
* YogaLogLevel for the different log levels.
|
||||||
*/
|
*/
|
||||||
@DoNotStrip
|
@DoNotStrip
|
||||||
public interface YogaLogger {
|
public fun interface YogaLogger {
|
||||||
@DoNotStrip
|
@DoNotStrip public fun log(level: YogaLogLevel, message: String)
|
||||||
void log(YogaLogLevel level, String message);
|
|
||||||
}
|
}
|
@@ -1,20 +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 interface YogaMeasureFunction {
|
|
||||||
/**
|
|
||||||
* Return a value created by YogaMeasureOutput.make(width, height);
|
|
||||||
*/
|
|
||||||
long measure(
|
|
||||||
YogaNode node,
|
|
||||||
float width,
|
|
||||||
YogaMeasureMode widthMode,
|
|
||||||
float height,
|
|
||||||
YogaMeasureMode heightMode);
|
|
||||||
}
|
|
19
java/com/facebook/yoga/YogaMeasureFunction.kt
Normal file
19
java/com/facebook/yoga/YogaMeasureFunction.kt
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
/*
|
||||||
|
* 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
|
||||||
|
}
|
@@ -1,32 +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 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));
|
|
||||||
}
|
|
||||||
}
|
|
29
java/com/facebook/yoga/YogaMeasureOutput.kt
Normal file
29
java/com/facebook/yoga/YogaMeasureOutput.kt
Normal 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
|
||||||
|
|
||||||
|
/** 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())
|
||||||
|
}
|
@@ -1,141 +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.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);
|
|
||||||
}
|
|
331
java/com/facebook/yoga/YogaNative.kt
Normal file
331
java/com/facebook/yoga/YogaNative.kt
Normal file
@@ -0,0 +1,331 @@
|
|||||||
|
/*
|
||||||
|
* 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,
|
||||||
|
)
|
||||||
|
}
|
@@ -1,18 +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 YogaNodeFactory {
|
|
||||||
public static YogaNode create() {
|
|
||||||
return new YogaNodeJNIFinalizer();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static YogaNode create(YogaConfig config) {
|
|
||||||
return new YogaNodeJNIFinalizer(config);
|
|
||||||
}
|
|
||||||
}
|
|
14
java/com/facebook/yoga/YogaNodeFactory.kt
Normal file
14
java/com/facebook/yoga/YogaNodeFactory.kt
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
/*
|
||||||
|
* 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)
|
||||||
|
}
|
@@ -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 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;
|
|
||||||
}
|
|
51
java/com/facebook/yoga/YogaStyleInputs.kt
Normal file
51
java/com/facebook/yoga/YogaStyleInputs.kt
Normal 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 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
|
||||||
|
}
|
@@ -1,80 +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 {
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
|
66
java/com/facebook/yoga/YogaValue.kt
Normal file
66
java/com/facebook/yoga/YogaValue.kt
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
/*
|
||||||
|
* 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)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@@ -1,18 +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;
|
|
||||||
|
|
||||||
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 { }
|
|
19
java/com/facebook/yoga/annotations/DoNotStrip.kt
Normal file
19
java/com/facebook/yoga/annotations/DoNotStrip.kt
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
/*
|
||||||
|
* 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
|
7
tests/.clang-tidy
Normal file
7
tests/.clang-tidy
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
---
|
||||||
|
InheritParentConfig: true
|
||||||
|
Checks: '
|
||||||
|
-facebook-hte-CArray,
|
||||||
|
-modernize-avoid-c-arrays,
|
||||||
|
'
|
||||||
|
...
|
@@ -181,4 +181,34 @@ TEST_F(
|
|||||||
EXPECT_EQ(nodesCloned[0], a.get());
|
EXPECT_EQ(nodesCloned[0], a.get());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST_F(YGPersistentNodeCloningTest, clone_leaf_display_contents_node) {
|
||||||
|
// <View id="A">
|
||||||
|
// <View id="B" style={{ display: 'contents' }} />
|
||||||
|
// </View>
|
||||||
|
|
||||||
|
auto b = std::make_shared<NodeWrapper>(config);
|
||||||
|
auto a = std::make_shared<NodeWrapper>(config, std::vector{b});
|
||||||
|
YGNodeStyleSetDisplay(b->node, YGDisplayContents);
|
||||||
|
|
||||||
|
// We don't expect any cloning during the first layout
|
||||||
|
onClone = [](...) { FAIL(); };
|
||||||
|
|
||||||
|
YGNodeCalculateLayout(a->node, YGUndefined, YGUndefined, YGDirectionLTR);
|
||||||
|
|
||||||
|
auto aPrime = std::make_shared<NodeWrapper>(config, std::vector{b});
|
||||||
|
|
||||||
|
std::vector<NodeWrapper*> nodesCloned;
|
||||||
|
// We should clone "C"
|
||||||
|
onClone = [&](YGNodeConstRef oldNode,
|
||||||
|
YGNodeConstRef /*owner*/,
|
||||||
|
size_t /*childIndex*/) {
|
||||||
|
nodesCloned.push_back(static_cast<NodeWrapper*>(YGNodeGetContext(oldNode)));
|
||||||
|
};
|
||||||
|
|
||||||
|
YGNodeCalculateLayout(aPrime->node, 100, 100, YGDirectionLTR);
|
||||||
|
|
||||||
|
EXPECT_EQ(nodesCloned.size(), 1);
|
||||||
|
EXPECT_EQ(nodesCloned[0], b.get());
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace facebook::yoga
|
} // namespace facebook::yoga
|
||||||
|
16
yoga/Yoga.h
16
yoga/Yoga.h
@@ -11,11 +11,11 @@
|
|||||||
* `#include <yoga/Yoga.h>` includes all of Yoga's public headers.
|
* `#include <yoga/Yoga.h>` includes all of Yoga's public headers.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <yoga/YGConfig.h>
|
#include <yoga/YGConfig.h> // IWYU pragma: export
|
||||||
#include <yoga/YGEnums.h>
|
#include <yoga/YGEnums.h> // IWYU pragma: export
|
||||||
#include <yoga/YGMacros.h>
|
#include <yoga/YGMacros.h> // IWYU pragma: export
|
||||||
#include <yoga/YGNode.h>
|
#include <yoga/YGNode.h> // IWYU pragma: export
|
||||||
#include <yoga/YGNodeLayout.h>
|
#include <yoga/YGNodeLayout.h> // IWYU pragma: export
|
||||||
#include <yoga/YGNodeStyle.h>
|
#include <yoga/YGNodeStyle.h> // IWYU pragma: export
|
||||||
#include <yoga/YGPixelGrid.h>
|
#include <yoga/YGPixelGrid.h> // IWYU pragma: export
|
||||||
#include <yoga/YGValue.h>
|
#include <yoga/YGValue.h> // IWYU pragma: export
|
||||||
|
@@ -478,6 +478,8 @@ static void zeroOutLayoutRecursively(yoga::Node* const node) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void cleanupContentsNodesRecursively(yoga::Node* const node) {
|
static void cleanupContentsNodesRecursively(yoga::Node* const node) {
|
||||||
|
if (node->hasContentsChildren()) [[unlikely]] {
|
||||||
|
node->cloneContentsChildrenIfNeeded();
|
||||||
for (auto child : node->getChildren()) {
|
for (auto child : node->getChildren()) {
|
||||||
if (child->style().display() == Display::Contents) {
|
if (child->style().display() == Display::Contents) {
|
||||||
child->getLayout() = {};
|
child->getLayout() = {};
|
||||||
@@ -490,6 +492,7 @@ static void cleanupContentsNodesRecursively(yoga::Node* const node) {
|
|||||||
cleanupContentsNodesRecursively(child);
|
cleanupContentsNodesRecursively(child);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static float calculateAvailableInnerDimension(
|
static float calculateAvailableInnerDimension(
|
||||||
|
@@ -181,6 +181,17 @@ void Node::setDirty(bool isDirty) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Node::setChildren(const std::vector<Node*>& children) {
|
||||||
|
children_ = children;
|
||||||
|
|
||||||
|
contentsChildrenCount_ = 0;
|
||||||
|
for (const auto& child : children) {
|
||||||
|
if (child->style().display() == Display::Contents) {
|
||||||
|
contentsChildrenCount_++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
bool Node::removeChild(Node* child) {
|
bool Node::removeChild(Node* child) {
|
||||||
auto p = std::find(children_.begin(), children_.end(), child);
|
auto p = std::find(children_.begin(), children_.end(), child);
|
||||||
if (p != children_.end()) {
|
if (p != children_.end()) {
|
||||||
@@ -380,6 +391,23 @@ void Node::cloneChildrenIfNeeded() {
|
|||||||
if (child->getOwner() != this) {
|
if (child->getOwner() != this) {
|
||||||
child = resolveRef(config_->cloneNode(child, this, i));
|
child = resolveRef(config_->cloneNode(child, this, i));
|
||||||
child->setOwner(this);
|
child->setOwner(this);
|
||||||
|
|
||||||
|
if (child->hasContentsChildren()) [[unlikely]] {
|
||||||
|
child->cloneContentsChildrenIfNeeded();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
i += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Node::cloneContentsChildrenIfNeeded() {
|
||||||
|
size_t i = 0;
|
||||||
|
for (Node*& child : children_) {
|
||||||
|
if (child->style().display() == Display::Contents &&
|
||||||
|
child->getOwner() != this) {
|
||||||
|
child = resolveRef(config_->cloneNode(child, this, i));
|
||||||
|
child->setOwner(this);
|
||||||
|
child->cloneChildrenIfNeeded();
|
||||||
}
|
}
|
||||||
i += 1;
|
i += 1;
|
||||||
}
|
}
|
||||||
|
@@ -96,6 +96,10 @@ class YG_EXPORT Node : public ::YGNode {
|
|||||||
return config_->hasErrata(errata);
|
return config_->hasErrata(errata);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool hasContentsChildren() const {
|
||||||
|
return contentsChildrenCount_ != 0;
|
||||||
|
}
|
||||||
|
|
||||||
YGDirtiedFunc getDirtiedFunc() const {
|
YGDirtiedFunc getDirtiedFunc() const {
|
||||||
return dirtiedFunc_;
|
return dirtiedFunc_;
|
||||||
}
|
}
|
||||||
@@ -244,15 +248,12 @@ class YG_EXPORT Node : public ::YGNode {
|
|||||||
owner_ = owner;
|
owner_ = owner;
|
||||||
}
|
}
|
||||||
|
|
||||||
void setChildren(const std::vector<Node*>& children) {
|
|
||||||
children_ = children;
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO: rvalue override for setChildren
|
// TODO: rvalue override for setChildren
|
||||||
|
|
||||||
void setConfig(Config* config);
|
void setConfig(Config* config);
|
||||||
|
|
||||||
void setDirty(bool isDirty);
|
void setDirty(bool isDirty);
|
||||||
|
void setChildren(const std::vector<Node*>& children);
|
||||||
void setLayoutLastOwnerDirection(Direction direction);
|
void setLayoutLastOwnerDirection(Direction direction);
|
||||||
void setLayoutComputedFlexBasis(FloatOptional computedFlexBasis);
|
void setLayoutComputedFlexBasis(FloatOptional computedFlexBasis);
|
||||||
void setLayoutComputedFlexBasisGeneration(
|
void setLayoutComputedFlexBasisGeneration(
|
||||||
@@ -286,6 +287,7 @@ class YG_EXPORT Node : public ::YGNode {
|
|||||||
void removeChild(size_t index);
|
void removeChild(size_t index);
|
||||||
|
|
||||||
void cloneChildrenIfNeeded();
|
void cloneChildrenIfNeeded();
|
||||||
|
void cloneContentsChildrenIfNeeded();
|
||||||
void markDirtyAndPropagate();
|
void markDirtyAndPropagate();
|
||||||
float resolveFlexGrow() const;
|
float resolveFlexGrow() const;
|
||||||
float resolveFlexShrink() const;
|
float resolveFlexShrink() const;
|
||||||
|
Reference in New Issue
Block a user