diff --git a/java/com/facebook/yoga/YogaValue.java b/java/com/facebook/yoga/YogaValue.java deleted file mode 100644 index 2a266b02..00000000 --- a/java/com/facebook/yoga/YogaValue.java +++ /dev/null @@ -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); - } -} diff --git a/java/com/facebook/yoga/YogaValue.kt b/java/com/facebook/yoga/YogaValue.kt new file mode 100644 index 00000000..ceaf6278 --- /dev/null +++ b/java/com/facebook/yoga/YogaValue.kt @@ -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) + } + } +}