From 2af1de283c033079270c915468382fe44bde59e2 Mon Sep 17 00:00:00 2001 From: Kazuki Sakamoto Date: Thu, 17 Nov 2016 09:10:47 -0800 Subject: [PATCH] CSSNodeCopyStyle API for Java and C# Reviewed By: emilsjolander Differential Revision: D4189954 fbshipit-source-id: 10759fdb27bf67350d3151614f7815aa09bf7e04 --- .../src/main/java/com/facebook/csslayout/CSSNode.java | 6 ++++++ .../src/main/java/com/facebook/csslayout/CSSNodeAPI.java | 1 + .../main/java/com/facebook/csslayout/CSSNodeDEPRECATED.java | 5 +++++ .../src/main/jni/first-party/csslayoutjni/jni/CSSJNI.cpp | 5 +++++ 4 files changed, 17 insertions(+) diff --git a/ReactAndroid/src/main/java/com/facebook/csslayout/CSSNode.java b/ReactAndroid/src/main/java/com/facebook/csslayout/CSSNode.java index e92f9267c..95a5319e5 100644 --- a/ReactAndroid/src/main/java/com/facebook/csslayout/CSSNode.java +++ b/ReactAndroid/src/main/java/com/facebook/csslayout/CSSNode.java @@ -190,6 +190,12 @@ public class CSSNode implements CSSNodeAPI { jni_CSSNodeMarkLayoutSeen(mNativePointer); } + private native void jni_CSSNodeCopyStyle(long dstNativePointer, long srcNativePointer); + @Override + public void copyStyle(CSSNode srcNode) { + jni_CSSNodeCopyStyle(mNativePointer, srcNode.mNativePointer); + } + private native int jni_CSSNodeStyleGetDirection(long nativePointer); @Override public CSSDirection getStyleDirection() { diff --git a/ReactAndroid/src/main/java/com/facebook/csslayout/CSSNodeAPI.java b/ReactAndroid/src/main/java/com/facebook/csslayout/CSSNodeAPI.java index dd18a54b9..d35d8b48e 100644 --- a/ReactAndroid/src/main/java/com/facebook/csslayout/CSSNodeAPI.java +++ b/ReactAndroid/src/main/java/com/facebook/csslayout/CSSNodeAPI.java @@ -37,6 +37,7 @@ public interface CSSNodeAPI { void dirty(); void markLayoutSeen(); boolean valuesEqual(float f1, float f2); + void copyStyle(CSSNodeType srcNode); CSSDirection getStyleDirection(); void setDirection(CSSDirection direction); CSSFlexDirection getFlexDirection(); diff --git a/ReactAndroid/src/main/java/com/facebook/csslayout/CSSNodeDEPRECATED.java b/ReactAndroid/src/main/java/com/facebook/csslayout/CSSNodeDEPRECATED.java index dc31cc041..0031ee697 100644 --- a/ReactAndroid/src/main/java/com/facebook/csslayout/CSSNodeDEPRECATED.java +++ b/ReactAndroid/src/main/java/com/facebook/csslayout/CSSNodeDEPRECATED.java @@ -222,6 +222,11 @@ public class CSSNodeDEPRECATED implements CSSNodeAPI { return FloatUtil.floatsEqual(f1, f2); } + @Override + public void copyStyle(CSSNodeDEPRECATED srcNode) { + throw new UnsupportedOperationException("copyStyle is not implemented"); + } + /** * Get this node's direction, as defined in the style. */ diff --git a/ReactAndroid/src/main/jni/first-party/csslayoutjni/jni/CSSJNI.cpp b/ReactAndroid/src/main/jni/first-party/csslayoutjni/jni/CSSJNI.cpp index f3bad8067..9c3e39590 100644 --- a/ReactAndroid/src/main/jni/first-party/csslayoutjni/jni/CSSJNI.cpp +++ b/ReactAndroid/src/main/jni/first-party/csslayoutjni/jni/CSSJNI.cpp @@ -187,6 +187,10 @@ void jni_CSSNodeMarkLayoutSeen(alias_ref, jlong nativePointer) { CSSNodeSetHasNewLayout(_jlong2CSSNodeRef(nativePointer), false); } +void jni_CSSNodeCopyStyle(alias_ref, jlong dstNativePointer, jlong srcNativePointer) { + CSSNodeCopyStyle(_jlong2CSSNodeRef(dstNativePointer), _jlong2CSSNodeRef(srcNativePointer)); +} + #define CSS_NODE_JNI_STYLE_PROP(javatype, type, name) \ javatype jni_CSSNodeStyleGet##name(alias_ref, jlong nativePointer) { \ return (javatype) CSSNodeStyleGet##name(_jlong2CSSNodeRef(nativePointer)); \ @@ -257,6 +261,7 @@ jint JNI_OnLoad(JavaVM *vm, void *) { CSSMakeNativeMethod(jni_CSSNodeIsDirty), CSSMakeNativeMethod(jni_CSSNodeMarkLayoutSeen), CSSMakeNativeMethod(jni_CSSNodeSetHasMeasureFunc), + CSSMakeNativeMethod(jni_CSSNodeCopyStyle), CSSMakeNativeMethod(jni_CSSNodeStyleGetDirection), CSSMakeNativeMethod(jni_CSSNodeStyleSetDirection),