Dont create a spacing object for returning margin, padding, border, and position
Differential Revision: D4050773 fbshipit-source-id: 3fd04c27f887a36875e455b5404a17154ac18f91
This commit is contained in:
Родитель
58b5e28e71
Коммит
6664b816d7
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -36,6 +36,7 @@ import com.facebook.csslayout.CSSMeasureMode;
|
|||
import com.facebook.csslayout.CSSNodeDEPRECATED;
|
||||
import com.facebook.csslayout.CSSNodeAPI;
|
||||
import com.facebook.csslayout.MeasureOutput;
|
||||
import com.facebook.csslayout.Spacing;
|
||||
import com.facebook.infer.annotation.Assertions;
|
||||
import com.facebook.react.bridge.JSApplicationIllegalArgumentException;
|
||||
import com.facebook.react.bridge.ReadableMap;
|
||||
|
@ -585,7 +586,10 @@ public class ReactTextShadowNode extends LayoutShadowNode {
|
|||
mPreparedSpannableText,
|
||||
UNSET,
|
||||
mContainsImages,
|
||||
getPadding(),
|
||||
getPadding(Spacing.START),
|
||||
getPadding(Spacing.TOP),
|
||||
getPadding(Spacing.END),
|
||||
getPadding(Spacing.BOTTOM),
|
||||
getTextAlign()
|
||||
);
|
||||
uiViewOperationQueue.enqueueUpdateExtraData(getReactTag(), reactTextUpdate);
|
||||
|
|
|
@ -11,8 +11,6 @@ package com.facebook.react.views.text;
|
|||
|
||||
import android.text.Spannable;
|
||||
|
||||
import com.facebook.csslayout.Spacing;
|
||||
|
||||
/**
|
||||
* Class that contains the data needed for a text update.
|
||||
* Used by both <Text/> and <TextInput/>
|
||||
|
@ -33,15 +31,18 @@ public class ReactTextUpdate {
|
|||
Spannable text,
|
||||
int jsEventCounter,
|
||||
boolean containsImages,
|
||||
Spacing padding,
|
||||
float paddingStart,
|
||||
float paddingTop,
|
||||
float paddingEnd,
|
||||
float paddingBottom,
|
||||
int textAlign) {
|
||||
mText = text;
|
||||
mJsEventCounter = jsEventCounter;
|
||||
mContainsImages = containsImages;
|
||||
mPaddingLeft = padding.get(Spacing.START);
|
||||
mPaddingTop = padding.get(Spacing.TOP);
|
||||
mPaddingRight = padding.get(Spacing.END);
|
||||
mPaddingBottom = padding.get(Spacing.BOTTOM);
|
||||
mPaddingLeft = paddingStart;
|
||||
mPaddingTop = paddingTop;
|
||||
mPaddingRight = paddingEnd;
|
||||
mPaddingBottom = paddingBottom;
|
||||
mTextAlign = textAlign;
|
||||
}
|
||||
|
||||
|
|
|
@ -62,7 +62,12 @@ public class ReactTextInputShadowNode extends ReactTextShadowNode implements
|
|||
setDefaultPadding(Spacing.TOP, mEditText.getPaddingTop());
|
||||
setDefaultPadding(Spacing.END, mEditText.getPaddingEnd());
|
||||
setDefaultPadding(Spacing.BOTTOM, mEditText.getPaddingBottom());
|
||||
mComputedPadding = spacingToFloatArray(getPadding());
|
||||
mComputedPadding = new float[] {
|
||||
getPadding(Spacing.START),
|
||||
getPadding(Spacing.TOP),
|
||||
getPadding(Spacing.END),
|
||||
getPadding(Spacing.BOTTOM),
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -80,12 +85,17 @@ public class ReactTextInputShadowNode extends ReactTextShadowNode implements
|
|||
TypedValue.COMPLEX_UNIT_PX,
|
||||
mFontSize == UNSET ?
|
||||
(int) Math.ceil(PixelUtil.toPixelFromSP(ViewDefaults.FONT_SIZE_SP)) : mFontSize);
|
||||
mComputedPadding = spacingToFloatArray(getPadding());
|
||||
mComputedPadding = new float[] {
|
||||
getPadding(Spacing.START),
|
||||
getPadding(Spacing.TOP),
|
||||
getPadding(Spacing.END),
|
||||
getPadding(Spacing.BOTTOM),
|
||||
};
|
||||
editText.setPadding(
|
||||
(int) Math.floor(getPadding().get(Spacing.START)),
|
||||
(int) Math.floor(getPadding().get(Spacing.TOP)),
|
||||
(int) Math.floor(getPadding().get(Spacing.END)),
|
||||
(int) Math.floor(getPadding().get(Spacing.BOTTOM)));
|
||||
(int) Math.floor(getPadding(Spacing.START)),
|
||||
(int) Math.floor(getPadding(Spacing.TOP)),
|
||||
(int) Math.floor(getPadding(Spacing.END)),
|
||||
(int) Math.floor(getPadding(Spacing.BOTTOM)));
|
||||
|
||||
if (mNumberOfLines != UNSET) {
|
||||
editText.setLines(mNumberOfLines);
|
||||
|
@ -115,7 +125,12 @@ public class ReactTextInputShadowNode extends ReactTextShadowNode implements
|
|||
if (mComputedPadding != null) {
|
||||
float[] updatedPadding = mComputedPadding;
|
||||
if (getLayoutDirection() == CSSDirection.RTL) {
|
||||
updatedPadding = spacingToFloatArrayForRTL(getPadding());
|
||||
updatedPadding = new float[] {
|
||||
getPadding(Spacing.END),
|
||||
getPadding(Spacing.TOP),
|
||||
getPadding(Spacing.START),
|
||||
getPadding(Spacing.BOTTOM),
|
||||
};
|
||||
}
|
||||
uiViewOperationQueue.enqueueUpdateExtraData(getReactTag(), updatedPadding);
|
||||
mComputedPadding = null;
|
||||
|
@ -128,7 +143,10 @@ public class ReactTextInputShadowNode extends ReactTextShadowNode implements
|
|||
preparedSpannableText,
|
||||
mJsEventCount,
|
||||
mContainsImages,
|
||||
getPadding(),
|
||||
getPadding(Spacing.START),
|
||||
getPadding(Spacing.TOP),
|
||||
getPadding(Spacing.END),
|
||||
getPadding(Spacing.BOTTOM),
|
||||
mTextAlign
|
||||
);
|
||||
uiViewOperationQueue.enqueueUpdateExtraData(getReactTag(), reactTextUpdate);
|
||||
|
@ -138,27 +156,12 @@ public class ReactTextInputShadowNode extends ReactTextShadowNode implements
|
|||
@Override
|
||||
public void setPadding(int spacingType, float padding) {
|
||||
super.setPadding(spacingType, padding);
|
||||
mComputedPadding = spacingToFloatArray(getPadding());
|
||||
mComputedPadding = new float[] {
|
||||
getPadding(Spacing.START),
|
||||
getPadding(Spacing.TOP),
|
||||
getPadding(Spacing.END),
|
||||
getPadding(Spacing.BOTTOM),
|
||||
};
|
||||
markUpdated();
|
||||
}
|
||||
|
||||
private float[] spacingToFloatArray(Spacing spacing) {
|
||||
return new float[] {
|
||||
spacing.get(Spacing.START),
|
||||
spacing.get(Spacing.TOP),
|
||||
spacing.get(Spacing.END),
|
||||
spacing.get(Spacing.BOTTOM),
|
||||
};
|
||||
}
|
||||
|
||||
// Since TextInput communicate with native component but not CSSLayout,
|
||||
// So flip the padding for RTL is necessary when the padding is updated
|
||||
private float[] spacingToFloatArrayForRTL(Spacing spacing) {
|
||||
return new float[] {
|
||||
spacing.get(Spacing.END),
|
||||
spacing.get(Spacing.TOP),
|
||||
spacing.get(Spacing.START),
|
||||
spacing.get(Spacing.BOTTOM),
|
||||
};
|
||||
}
|
||||
}
|
||||
|
|
|
@ -453,39 +453,39 @@ public class LayoutPropertyApplicatorTest {
|
|||
nodes[idx].updateProperties(mapNodes[idx]);
|
||||
}
|
||||
|
||||
assertEquals(10.0, nodes[0].getPadding().get(Spacing.START), .0001);
|
||||
assertEquals(25.0, nodes[0].getPadding().get(Spacing.TOP), .0001);
|
||||
assertEquals(5.0, nodes[0].getPadding().get(Spacing.END), .0001);
|
||||
assertEquals(45.0, nodes[0].getPadding().get(Spacing.BOTTOM), .0001);
|
||||
assertEquals(10.0, nodes[0].getPadding(Spacing.START), .0001);
|
||||
assertEquals(25.0, nodes[0].getPadding(Spacing.TOP), .0001);
|
||||
assertEquals(5.0, nodes[0].getPadding(Spacing.END), .0001);
|
||||
assertEquals(45.0, nodes[0].getPadding(Spacing.BOTTOM), .0001);
|
||||
|
||||
assertEquals(10.0, nodes[1].getPadding().get(Spacing.START), .0001);
|
||||
assertEquals(5.0, nodes[1].getPadding().get(Spacing.TOP), .0001);
|
||||
assertEquals(10.0, nodes[1].getPadding().get(Spacing.END), .0001);
|
||||
assertEquals(10.0, nodes[1].getPadding().get(Spacing.BOTTOM), .0001);
|
||||
assertEquals(10.0, nodes[1].getPadding(Spacing.START), .0001);
|
||||
assertEquals(5.0, nodes[1].getPadding(Spacing.TOP), .0001);
|
||||
assertEquals(10.0, nodes[1].getPadding(Spacing.END), .0001);
|
||||
assertEquals(10.0, nodes[1].getPadding(Spacing.BOTTOM), .0001);
|
||||
|
||||
assertEquals(10.0, nodes[2].getPadding().get(Spacing.START), .0001);
|
||||
assertEquals(5.0, nodes[2].getPadding().get(Spacing.TOP), .0001);
|
||||
assertEquals(35.0, nodes[2].getPadding().get(Spacing.END), .0001);
|
||||
assertEquals(5.0, nodes[2].getPadding().get(Spacing.BOTTOM), .0001);
|
||||
assertEquals(10.0, nodes[2].getPadding(Spacing.START), .0001);
|
||||
assertEquals(5.0, nodes[2].getPadding(Spacing.TOP), .0001);
|
||||
assertEquals(35.0, nodes[2].getPadding(Spacing.END), .0001);
|
||||
assertEquals(5.0, nodes[2].getPadding(Spacing.BOTTOM), .0001);
|
||||
|
||||
assertEquals(5.0, nodes[3].getPadding().get(Spacing.START), .0001);
|
||||
assertEquals(25.0, nodes[3].getPadding().get(Spacing.TOP), .0001);
|
||||
assertEquals(5.0, nodes[3].getPadding().get(Spacing.END), .0001);
|
||||
assertEquals(10.0, nodes[3].getPadding().get(Spacing.BOTTOM), .0001);
|
||||
assertEquals(5.0, nodes[3].getPadding(Spacing.START), .0001);
|
||||
assertEquals(25.0, nodes[3].getPadding(Spacing.TOP), .0001);
|
||||
assertEquals(5.0, nodes[3].getPadding(Spacing.END), .0001);
|
||||
assertEquals(10.0, nodes[3].getPadding(Spacing.BOTTOM), .0001);
|
||||
|
||||
assertEquals(15.0, nodes[4].getPadding().get(Spacing.START), .0001);
|
||||
assertEquals(5.0, nodes[4].getPadding().get(Spacing.TOP), .0001);
|
||||
assertEquals(35.0, nodes[4].getPadding().get(Spacing.END), .0001);
|
||||
assertEquals(45.0, nodes[4].getPadding().get(Spacing.BOTTOM), .0001);
|
||||
assertEquals(15.0, nodes[4].getPadding(Spacing.START), .0001);
|
||||
assertEquals(5.0, nodes[4].getPadding(Spacing.TOP), .0001);
|
||||
assertEquals(35.0, nodes[4].getPadding(Spacing.END), .0001);
|
||||
assertEquals(45.0, nodes[4].getPadding(Spacing.BOTTOM), .0001);
|
||||
|
||||
assertEquals(15.0, nodes[5].getPadding().get(Spacing.START), .0001);
|
||||
assertEquals(7.0, nodes[5].getPadding().get(Spacing.TOP), .0001);
|
||||
assertEquals(10.0, nodes[5].getPadding().get(Spacing.END), .0001);
|
||||
assertEquals(7.0, nodes[5].getPadding().get(Spacing.BOTTOM), .0001);
|
||||
assertEquals(15.0, nodes[5].getPadding(Spacing.START), .0001);
|
||||
assertEquals(7.0, nodes[5].getPadding(Spacing.TOP), .0001);
|
||||
assertEquals(10.0, nodes[5].getPadding(Spacing.END), .0001);
|
||||
assertEquals(7.0, nodes[5].getPadding(Spacing.BOTTOM), .0001);
|
||||
|
||||
assertEquals(15.0, nodes[6].getPadding().get(Spacing.START), .0001);
|
||||
assertEquals(25.0, nodes[6].getPadding().get(Spacing.TOP), .0001);
|
||||
assertEquals(35.0, nodes[6].getPadding().get(Spacing.END), .0001);
|
||||
assertEquals(45.0, nodes[6].getPadding().get(Spacing.BOTTOM), .0001);
|
||||
assertEquals(15.0, nodes[6].getPadding(Spacing.START), .0001);
|
||||
assertEquals(25.0, nodes[6].getPadding(Spacing.TOP), .0001);
|
||||
assertEquals(35.0, nodes[6].getPadding(Spacing.END), .0001);
|
||||
assertEquals(45.0, nodes[6].getPadding(Spacing.BOTTOM), .0001);
|
||||
}
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче