Migrate YogaValue
to Kotlin (#1838)
Summary: Migrate com.facebook.yoga.YogaValue to Kotlin. Pull Request resolved: https://github.com/facebook/yoga/pull/1838 Test Plan: RN ```sh yarn android yarn test-android ``` Yoga ```sh ./gradlew :yoga:assembleDebug ``` Reviewed By: rshest Differential Revision: D79897668 Pulled By: cortinico fbshipit-source-id: dffe2b29087c35e4797f46dea756c51f841590d8
This commit is contained in:
committed by
Facebook GitHub Bot
parent
c582f7caa6
commit
93bea17635
@@ -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)
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user