Implement java bindings for custom baseline function

Summary: Implement java bindings for custom baseline function

Differential Revision: D4392516

fbshipit-source-id: 39cf6066f8e5982268becd87e54c9ab51fbf7a90
This commit is contained in:
Emil Sjolander
2017-01-10 07:03:56 -08:00
committed by Facebook Github Bot
parent 1782646723
commit c04604dbc0
5 changed files with 78 additions and 0 deletions

View File

@@ -0,0 +1,22 @@
/**
* Copyright (c) 2014-present, Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
package com.facebook.yoga;
import com.facebook.proguard.annotations.DoNotStrip;
@DoNotStrip
public interface YogaBaselineFunction {
/**
* Return the baseline of the node in pixels. When no baseline function is set the baseline
* default to the computed height of the node.
*/
@DoNotStrip
float baseline(YogaNodeAPI node, float width, float height);
}

View File

@@ -52,6 +52,7 @@ public class YogaNode implements YogaNodeAPI<YogaNode> {
private YogaNode mParent;
private List<YogaNode> mChildren;
private YogaMeasureFunction mMeasureFunction;
private YogaBaselineFunction mBaselineFunction;
private long mNativePointer;
private Object mData;
@@ -623,6 +624,18 @@ public class YogaNode implements YogaNodeAPI<YogaNode> {
YogaMeasureMode.values()[heightMode]);
}
private native void jni_YGNodeSetHasBaselineFunc(long nativePointer, boolean hasMeasureFunc);
@Override
public void setBaselineFunction(YogaBaselineFunction baselineFunction) {
mBaselineFunction = baselineFunction;
jni_YGNodeSetHasBaselineFunc(mNativePointer, baselineFunction != null);
}
@DoNotStrip
public final float baseline(float width, float height) {
return mBaselineFunction.baseline(this, width, height);
}
@Override
public boolean isMeasureDefined() {
return mMeasureFunction != null;

View File

@@ -18,6 +18,7 @@ public interface YogaNodeAPI<YogaNodeType extends YogaNodeAPI> {
YogaNodeType getParent();
int indexOf(YogaNodeType child);
void setMeasureFunction(YogaMeasureFunction measureFunction);
void setBaselineFunction(YogaBaselineFunction measureFunction);
boolean isMeasureDefined();
void calculateLayout();
boolean isDirty();