Add jni bindings

Summary: Add jni bindings for csslayout. First step in many of removing LayoutEngine.java and performing all layout in native.

Reviewed By: lucasr

Differential Revision: D3648793
This commit is contained in:
Emil Sjolander 2016-08-04 08:19:59 -07:00 committed by Ahmed El-Helw
parent 0c9afec7dc
commit ca79e6cf30
5 changed files with 14 additions and 12 deletions

View File

@ -12,7 +12,7 @@ package com.facebook.react.flat;
import android.graphics.Bitmap;
import com.facebook.csslayout.CSSMeasureMode;
import com.facebook.csslayout.CSSNode;
import com.facebook.csslayout.CSSNodeAPI;
import com.facebook.csslayout.MeasureOutput;
import com.facebook.react.uimanager.BaseViewManager;
import com.facebook.react.uimanager.ThemedReactContext;
@ -23,10 +23,10 @@ import com.facebook.react.views.art.ARTSurfaceView;
private static final String REACT_CLASS = "ARTSurfaceView";
private static final CSSNode.MeasureFunction MEASURE_FUNCTION = new CSSNode.MeasureFunction() {
private static final CSSNodeAPI.MeasureFunction MEASURE_FUNCTION = new CSSNodeAPI.MeasureFunction() {
@Override
public void measure(
CSSNode node,
CSSNodeAPI node,
float width,
CSSMeasureMode widthMode,
float height,

View File

@ -14,6 +14,7 @@ import javax.annotation.Nullable;
import android.graphics.Rect;
import com.facebook.csslayout.CSSNode;
import com.facebook.csslayout.CSSNodeAPI;
import com.facebook.infer.annotation.Assertions;
import com.facebook.react.uimanager.LayoutShadowNode;
import com.facebook.react.uimanager.OnLayoutEvent;
@ -227,7 +228,7 @@ import com.facebook.react.views.view.ReactClippingViewGroupHelper;
}
@Override
protected void markUpdated() {
public void markUpdated() {
super.markUpdated();
mIsUpdated = true;
invalidate();

View File

@ -12,6 +12,7 @@ package com.facebook.react.flat;
import javax.annotation.Nullable;
import com.facebook.csslayout.CSSNode;
import com.facebook.csslayout.CSSNodeAPI;
import com.facebook.react.uimanager.ReactStylesDiffMap;
import com.facebook.react.uimanager.ReactShadowNode;
import com.facebook.react.uimanager.ThemedReactContext;
@ -27,9 +28,9 @@ import com.facebook.react.uimanager.ViewManager;
/* package */ NativeViewWrapper(ViewManager viewManager) {
ReactShadowNode reactShadowNode = viewManager.createShadowNodeInstance();
if (reactShadowNode instanceof CSSNode.MeasureFunction) {
if (reactShadowNode instanceof CSSNodeAPI.MeasureFunction) {
mReactShadowNode = reactShadowNode;
setMeasureFunction((CSSNode.MeasureFunction) reactShadowNode);
setMeasureFunction((CSSNodeAPI.MeasureFunction) reactShadowNode);
} else {
mReactShadowNode = null;
}

View File

@ -16,7 +16,7 @@ import android.text.Layout;
import android.text.TextUtils;
import com.facebook.csslayout.CSSMeasureMode;
import com.facebook.csslayout.CSSNode;
import com.facebook.csslayout.CSSNodeAPI;
import com.facebook.csslayout.MeasureOutput;
import com.facebook.csslayout.Spacing;
import com.facebook.fbui.widget.text.layoutbuilder.TextLayoutBuilder;
@ -34,7 +34,7 @@ import com.facebook.textcachewarmer.DefaultTextLayoutCacheWarmer;
* a) RCTText is not a virtual node, and can be measured and laid out.
* b) when no font size is specified, a font size of ViewDefaults#FONT_SIZE_SP is assumed.
*/
/* package */ final class RCTText extends RCTVirtualText implements CSSNode.MeasureFunction {
/* package */ final class RCTText extends RCTVirtualText implements CSSNodeAPI.MeasureFunction {
// We set every value we use every time we use the layout builder, so we can get away with only
// using a single instance.
@ -68,7 +68,7 @@ import com.facebook.textcachewarmer.DefaultTextLayoutCacheWarmer;
@Override
public void measure(
CSSNode node,
CSSNodeAPI node,
float width,
CSSMeasureMode widthMode,
float height,

View File

@ -17,7 +17,7 @@ import android.view.ViewGroup;
import android.widget.EditText;
import com.facebook.csslayout.CSSMeasureMode;
import com.facebook.csslayout.CSSNode;
import com.facebook.csslayout.CSSNodeAPI;
import com.facebook.csslayout.MeasureOutput;
import com.facebook.csslayout.Spacing;
import com.facebook.infer.annotation.Assertions;
@ -33,7 +33,7 @@ import com.facebook.react.views.view.MeasureUtil;
import static com.facebook.react.views.text.ReactTextShadowNode.PROP_TEXT;
import static com.facebook.react.views.text.ReactTextShadowNode.UNSET;
public class RCTTextInput extends RCTVirtualText implements AndroidView, CSSNode.MeasureFunction {
public class RCTTextInput extends RCTVirtualText implements AndroidView, CSSNodeAPI.MeasureFunction {
@Nullable private String mText;
private int mJsEventCount = UNSET;
@ -73,7 +73,7 @@ public class RCTTextInput extends RCTVirtualText implements AndroidView, CSSNode
@Override
public void measure(
CSSNode node,
CSSNodeAPI node,
float width,
CSSMeasureMode widthMode,
float height,