Dont create a spacing object for returning margin, padding, border, and position

Summary: The current implementation was made out of simplicity and to keep the same API as before. Now that the java version of csslayout is deprecated it is time to change the API to make the calls more efficient for the JNI version. This diff with reduce allocations as well as reduce the number of JNI calls done.

Differential Revision: D4050773

fbshipit-source-id: 3fd04c27f887a36875e455b5404a17154ac18f91
This commit is contained in:
Emil Sjolander
2016-10-24 10:35:43 -07:00
committed by Facebook Github Bot
parent 69c374e74e
commit e9b9973cae
4 changed files with 28 additions and 92 deletions

View File

@@ -303,15 +303,8 @@ public class CSSNode implements CSSNodeAPI<CSSNode> {
private native float jni_CSSNodeStyleGetMargin(long nativePointer, int edge);
@Override
public Spacing getMargin() {
Spacing margin = new Spacing();
margin.set(Spacing.LEFT, jni_CSSNodeStyleGetMargin(mNativePointer, Spacing.LEFT));
margin.set(Spacing.TOP, jni_CSSNodeStyleGetMargin(mNativePointer, Spacing.TOP));
margin.set(Spacing.RIGHT, jni_CSSNodeStyleGetMargin(mNativePointer, Spacing.RIGHT));
margin.set(Spacing.BOTTOM, jni_CSSNodeStyleGetMargin(mNativePointer, Spacing.BOTTOM));
margin.set(Spacing.START, jni_CSSNodeStyleGetMargin(mNativePointer, Spacing.START));
margin.set(Spacing.END, jni_CSSNodeStyleGetMargin(mNativePointer, Spacing.END));
return margin;
public float getMargin(int spacingType) {
return jni_CSSNodeStyleGetMargin(mNativePointer, spacingType);
}
private native void jni_CSSNodeStyleSetMargin(long nativePointer, int edge, float margin);
@@ -322,15 +315,8 @@ public class CSSNode implements CSSNodeAPI<CSSNode> {
private native float jni_CSSNodeStyleGetPadding(long nativePointer, int edge);
@Override
public Spacing getPadding() {
Spacing padding = new Spacing();
padding.set(Spacing.LEFT, jni_CSSNodeStyleGetPadding(mNativePointer, Spacing.LEFT));
padding.set(Spacing.TOP, jni_CSSNodeStyleGetPadding(mNativePointer, Spacing.TOP));
padding.set(Spacing.RIGHT, jni_CSSNodeStyleGetPadding(mNativePointer, Spacing.RIGHT));
padding.set(Spacing.BOTTOM, jni_CSSNodeStyleGetPadding(mNativePointer, Spacing.BOTTOM));
padding.set(Spacing.START, jni_CSSNodeStyleGetPadding(mNativePointer, Spacing.START));
padding.set(Spacing.END, jni_CSSNodeStyleGetPadding(mNativePointer, Spacing.END));
return padding;
public float getPadding(int spacingType) {
return jni_CSSNodeStyleGetPadding(mNativePointer, spacingType);
}
private native void jni_CSSNodeStyleSetPadding(long nativePointer, int edge, float padding);
@@ -341,15 +327,8 @@ public class CSSNode implements CSSNodeAPI<CSSNode> {
private native float jni_CSSNodeStyleGetBorder(long nativePointer, int edge);
@Override
public Spacing getBorder() {
Spacing border = new Spacing();
border.set(Spacing.LEFT, jni_CSSNodeStyleGetBorder(mNativePointer, Spacing.LEFT));
border.set(Spacing.TOP, jni_CSSNodeStyleGetBorder(mNativePointer, Spacing.TOP));
border.set(Spacing.RIGHT, jni_CSSNodeStyleGetBorder(mNativePointer, Spacing.RIGHT));
border.set(Spacing.BOTTOM, jni_CSSNodeStyleGetBorder(mNativePointer, Spacing.BOTTOM));
border.set(Spacing.START, jni_CSSNodeStyleGetBorder(mNativePointer, Spacing.START));
border.set(Spacing.END, jni_CSSNodeStyleGetBorder(mNativePointer, Spacing.END));
return border;
public float getBorder(int spacingType) {
return jni_CSSNodeStyleGetBorder(mNativePointer, spacingType);
}
private native void jni_CSSNodeStyleSetBorder(long nativePointer, int edge, float border);
@@ -360,15 +339,8 @@ public class CSSNode implements CSSNodeAPI<CSSNode> {
private native float jni_CSSNodeStyleGetPosition(long nativePointer, int edge);
@Override
public Spacing getPosition() {
Spacing position = new Spacing();
position.set(Spacing.LEFT, jni_CSSNodeStyleGetPosition(mNativePointer, Spacing.LEFT));
position.set(Spacing.TOP, jni_CSSNodeStyleGetPosition(mNativePointer, Spacing.TOP));
position.set(Spacing.RIGHT, jni_CSSNodeStyleGetPosition(mNativePointer, Spacing.RIGHT));
position.set(Spacing.BOTTOM, jni_CSSNodeStyleGetPosition(mNativePointer, Spacing.BOTTOM));
position.set(Spacing.START, jni_CSSNodeStyleGetPosition(mNativePointer, Spacing.START));
position.set(Spacing.END, jni_CSSNodeStyleGetPosition(mNativePointer, Spacing.END));
return position;
public float getPosition(int spacingType) {
return jni_CSSNodeStyleGetPosition(mNativePointer, spacingType);
}
private native void jni_CSSNodeStyleSetPosition(long nativePointer, int edge, float position);