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);

View File

@@ -59,13 +59,13 @@ public interface CSSNodeAPI<CSSNodeType extends CSSNodeAPI> {
void setFlexShrink(float flexShrink);
float getFlexBasis();
void setFlexBasis(float flexBasis);
Spacing getMargin();
float getMargin(int spacingType);
void setMargin(int spacingType, float margin);
Spacing getPadding();
float getPadding(int spacingType);
void setPadding(int spacingType, float padding);
Spacing getBorder();
float getBorder(int spacingType);
void setBorder(int spacingType, float border);
Spacing getPosition();
float getPosition(int spacingType);
void setPosition(int spacingType, float position);
float getStyleWidth();
void setStyleWidth(float width);

View File

@@ -413,8 +413,8 @@ public class CSSNodeDEPRECATED implements CSSNodeAPI<CSSNodeDEPRECATED> {
* Get this node's margin, as defined by style + default margin.
*/
@Override
public Spacing getMargin() {
return style.margin;
public float getMargin(int spacingType) {
return style.margin.get(spacingType);
}
@Override
@@ -428,8 +428,8 @@ public class CSSNodeDEPRECATED implements CSSNodeAPI<CSSNodeDEPRECATED> {
* Get this node's padding, as defined by style + default padding.
*/
@Override
public Spacing getPadding() {
return style.padding;
public float getPadding(int spacingType) {
return style.padding.get(spacingType);
}
@Override
@@ -443,8 +443,8 @@ public class CSSNodeDEPRECATED implements CSSNodeAPI<CSSNodeDEPRECATED> {
* Get this node's border, as defined by style.
*/
@Override
public Spacing getBorder() {
return style.border;
public float getBorder(int spacingType) {
return style.border.get(spacingType);
}
@Override
@@ -458,8 +458,8 @@ public class CSSNodeDEPRECATED implements CSSNodeAPI<CSSNodeDEPRECATED> {
* Get this node's position, as defined by style.
*/
@Override
public Spacing getPosition() {
return style.position;
public float getPosition(int spacingType) {
return style.position.get(spacingType);
}
@Override