Encapsulate all used java classes
Summary: @public Moves all Java classes used from C++ to their own header + implementation file. In `YGJNI.cpp`, we only call methods on these objects deriving from `jni::JavaClass`. This is only a bit of cleanup, no functional change. Reviewed By: SidharthGuglani Differential Revision: D14261043 fbshipit-source-id: 2db1d81cb7f56a4cdc24b182b2166e1d7e24ba3c
This commit is contained in:
committed by
Facebook Github Bot
parent
de79f2a1d4
commit
888892885e
@@ -29,7 +29,7 @@ add_compile_options(
|
|||||||
-Wall
|
-Wall
|
||||||
-std=c++11)
|
-std=c++11)
|
||||||
|
|
||||||
add_library(yoga SHARED jni/YGJNI.cpp)
|
add_library(yoga SHARED jni/YGJNI.cpp jni/YGJTypes.cpp)
|
||||||
|
|
||||||
target_include_directories(yoga PRIVATE
|
target_include_directories(yoga PRIVATE
|
||||||
${libfb_DIR}/include
|
${libfb_DIR}/include
|
||||||
|
@@ -11,6 +11,8 @@
|
|||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <map>
|
#include <map>
|
||||||
|
|
||||||
|
#include "YGJTypes.h"
|
||||||
|
|
||||||
using namespace facebook::jni;
|
using namespace facebook::jni;
|
||||||
using namespace std;
|
using namespace std;
|
||||||
using facebook::yoga::detail::Log;
|
using facebook::yoga::detail::Log;
|
||||||
@@ -58,14 +60,6 @@ enum YGStyleInput {
|
|||||||
IsReferenceBaseline,
|
IsReferenceBaseline,
|
||||||
};
|
};
|
||||||
|
|
||||||
struct JYogaNode : public JavaClass<JYogaNode> {
|
|
||||||
static constexpr auto kJavaDescriptor = "Lcom/facebook/yoga/YogaNodeJNI;";
|
|
||||||
};
|
|
||||||
|
|
||||||
struct JYogaConfig : public JavaClass<JYogaConfig> {
|
|
||||||
static constexpr auto kJavaDescriptor = "Lcom/facebook/yoga/YogaConfig;";
|
|
||||||
};
|
|
||||||
|
|
||||||
class PtrJNodeMap {
|
class PtrJNodeMap {
|
||||||
using JNodeArray = JArrayClass<JYogaNode::javaobject>;
|
using JNodeArray = JArrayClass<JYogaNode::javaobject>;
|
||||||
std::map<YGNodeRef, size_t> ptrsToIdxs_;
|
std::map<YGNodeRef, size_t> ptrsToIdxs_;
|
||||||
@@ -250,10 +244,7 @@ static float YGJNIBaselineFunc(
|
|||||||
float height,
|
float height,
|
||||||
void* layoutContext) {
|
void* layoutContext) {
|
||||||
if (auto obj = YGNodeJobject(node, layoutContext)) {
|
if (auto obj = YGNodeJobject(node, layoutContext)) {
|
||||||
static auto baselineFunc =
|
return obj->baseline(width, height);
|
||||||
findClassStatic("com/facebook/yoga/YogaNodeJNI")
|
|
||||||
->getMethod<jfloat(jfloat, jfloat)>("baseline");
|
|
||||||
return baselineFunc(obj, width, height);
|
|
||||||
} else {
|
} else {
|
||||||
return height;
|
return height;
|
||||||
}
|
}
|
||||||
@@ -275,13 +266,9 @@ static YGSize YGJNIMeasureFunc(
|
|||||||
YGMeasureMode heightMode,
|
YGMeasureMode heightMode,
|
||||||
void* layoutContext) {
|
void* layoutContext) {
|
||||||
if (auto obj = YGNodeJobject(node, layoutContext)) {
|
if (auto obj = YGNodeJobject(node, layoutContext)) {
|
||||||
static auto measureFunc =
|
|
||||||
findClassStatic("com/facebook/yoga/YogaNodeJNI")
|
|
||||||
->getMethod<jlong(jfloat, jint, jfloat, jint)>("measure");
|
|
||||||
|
|
||||||
YGTransferLayoutDirection(node, obj);
|
YGTransferLayoutDirection(node, obj);
|
||||||
const auto measureResult =
|
const auto measureResult =
|
||||||
measureFunc(obj, width, widthMode, height, heightMode);
|
obj->measure(width, widthMode, height, heightMode);
|
||||||
|
|
||||||
static_assert(
|
static_assert(
|
||||||
sizeof(measureResult) == 8,
|
sizeof(measureResult) == 8,
|
||||||
@@ -307,10 +294,6 @@ static YGSize YGJNIMeasureFunc(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
struct JYogaLogLevel : public JavaClass<JYogaLogLevel> {
|
|
||||||
static constexpr auto kJavaDescriptor = "Lcom/facebook/yoga/YogaLogLevel;";
|
|
||||||
};
|
|
||||||
|
|
||||||
static int YGJNILogFunc(
|
static int YGJNILogFunc(
|
||||||
const YGConfigRef config,
|
const YGConfigRef config,
|
||||||
const YGNodeRef node,
|
const YGNodeRef node,
|
||||||
@@ -322,25 +305,15 @@ static int YGJNILogFunc(
|
|||||||
std::vector<char> buffer(1 + result);
|
std::vector<char> buffer(1 + result);
|
||||||
vsnprintf(buffer.data(), buffer.size(), format, args);
|
vsnprintf(buffer.data(), buffer.size(), format, args);
|
||||||
|
|
||||||
static auto logFunc =
|
|
||||||
findClassStatic("com/facebook/yoga/YogaLogger")
|
|
||||||
->getMethod<void(
|
|
||||||
local_ref<JYogaNode>, local_ref<JYogaLogLevel>, jstring)>("log");
|
|
||||||
|
|
||||||
static auto logLevelFromInt =
|
|
||||||
JYogaLogLevel::javaClassStatic()
|
|
||||||
->getStaticMethod<JYogaLogLevel::javaobject(jint)>("fromInt");
|
|
||||||
|
|
||||||
auto jloggerPtr =
|
auto jloggerPtr =
|
||||||
static_cast<global_ref<jobject>*>(YGConfigGetContext(config));
|
static_cast<global_ref<JYogaLogger>*>(YGConfigGetContext(config));
|
||||||
if (jloggerPtr != nullptr) {
|
if (jloggerPtr != nullptr) {
|
||||||
if (auto obj = YGNodeJobject(node, layoutContext)) {
|
if (auto obj = YGNodeJobject(node, layoutContext)) {
|
||||||
logFunc(
|
(*jloggerPtr)
|
||||||
*jloggerPtr,
|
->log(
|
||||||
obj,
|
obj,
|
||||||
logLevelFromInt(
|
JYogaLogLevel::fromInt(level),
|
||||||
JYogaLogLevel::javaClassStatic(), static_cast<jint>(level)),
|
Environment::current()->NewStringUTF(buffer.data()));
|
||||||
Environment::current()->NewStringUTF(buffer.data()));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -479,14 +452,6 @@ void jni_YGNodeCopyStyle(jlong dstNativePointer, jlong srcNativePointer) {
|
|||||||
_jlong2YGNodeRef(dstNativePointer), _jlong2YGNodeRef(srcNativePointer));
|
_jlong2YGNodeRef(dstNativePointer), _jlong2YGNodeRef(srcNativePointer));
|
||||||
}
|
}
|
||||||
|
|
||||||
struct JYogaValue : public JavaClass<JYogaValue> {
|
|
||||||
constexpr static auto kJavaDescriptor = "Lcom/facebook/yoga/YogaValue;";
|
|
||||||
|
|
||||||
static local_ref<javaobject> create(YGValue value) {
|
|
||||||
return newInstance(value.value, static_cast<int>(value.unit));
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
#define YG_NODE_JNI_STYLE_PROP(javatype, type, name) \
|
#define YG_NODE_JNI_STYLE_PROP(javatype, type, name) \
|
||||||
javatype jni_YGNodeStyleGet##name(jlong nativePointer) { \
|
javatype jni_YGNodeStyleGet##name(jlong nativePointer) { \
|
||||||
return (javatype) YGNodeStyleGet##name(_jlong2YGNodeRef(nativePointer)); \
|
return (javatype) YGNodeStyleGet##name(_jlong2YGNodeRef(nativePointer)); \
|
||||||
@@ -605,8 +570,8 @@ jlong jni_YGConfigNew(alias_ref<jobject>) {
|
|||||||
void jni_YGConfigFree(alias_ref<jobject>, jlong nativePointer) {
|
void jni_YGConfigFree(alias_ref<jobject>, jlong nativePointer) {
|
||||||
const YGConfigRef config = _jlong2YGConfigRef(nativePointer);
|
const YGConfigRef config = _jlong2YGConfigRef(nativePointer);
|
||||||
// unique_ptr will destruct the underlying global_ref, if present.
|
// unique_ptr will destruct the underlying global_ref, if present.
|
||||||
auto context = std::unique_ptr<global_ref<jobject>>{
|
auto context = std::unique_ptr<global_ref<JYogaLogger>>{
|
||||||
static_cast<global_ref<jobject>*>(YGConfigGetContext(config))};
|
static_cast<global_ref<JYogaLogger>*>(YGConfigGetContext(config))};
|
||||||
YGConfigFree(config);
|
YGConfigFree(config);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -666,14 +631,15 @@ void jni_YGConfigSetLogger(
|
|||||||
alias_ref<jobject> logger) {
|
alias_ref<jobject> logger) {
|
||||||
const YGConfigRef config = _jlong2YGConfigRef(nativePointer);
|
const YGConfigRef config = _jlong2YGConfigRef(nativePointer);
|
||||||
auto context =
|
auto context =
|
||||||
reinterpret_cast<global_ref<jobject>*>(YGConfigGetContext(config));
|
reinterpret_cast<global_ref<JYogaLogger>*>(YGConfigGetContext(config));
|
||||||
|
|
||||||
if (logger) {
|
if (logger) {
|
||||||
if (context == nullptr) {
|
if (context == nullptr) {
|
||||||
context = new global_ref<jobject>{};
|
context = new global_ref<JYogaLogger>{};
|
||||||
YGConfigSetContext(config, context);
|
YGConfigSetContext(config, context);
|
||||||
}
|
}
|
||||||
*context = make_global(logger);
|
|
||||||
|
*context = make_global(static_ref_cast<JYogaLogger::javaobject>(logger));
|
||||||
config->setLogger(YGJNILogFunc);
|
config->setLogger(YGJNILogFunc);
|
||||||
} else {
|
} else {
|
||||||
if (context != nullptr) {
|
if (context != nullptr) {
|
||||||
@@ -955,94 +921,92 @@ void jni_YGNodeStyleSetBorder(jlong nativePointer, jint edge, jfloat border) {
|
|||||||
|
|
||||||
jint JNI_OnLoad(JavaVM* vm, void*) {
|
jint JNI_OnLoad(JavaVM* vm, void*) {
|
||||||
return initialize(vm, [] {
|
return initialize(vm, [] {
|
||||||
registerNatives(
|
JYogaNode::javaClassStatic()->registerNatives({
|
||||||
"com/facebook/yoga/YogaNodeJNI",
|
YGMakeNativeMethod(jni_YGNodeNew),
|
||||||
{
|
YGMakeNativeMethod(jni_YGNodeNewWithConfig),
|
||||||
YGMakeNativeMethod(jni_YGNodeNew),
|
YGMakeNativeMethod(jni_YGNodeFree),
|
||||||
YGMakeNativeMethod(jni_YGNodeNewWithConfig),
|
YGMakeCriticalNativeMethod(jni_YGNodeReset),
|
||||||
YGMakeNativeMethod(jni_YGNodeFree),
|
YGMakeCriticalNativeMethod(jni_YGNodeClearChildren),
|
||||||
YGMakeCriticalNativeMethod(jni_YGNodeReset),
|
YGMakeCriticalNativeMethod(jni_YGNodeInsertChild),
|
||||||
YGMakeCriticalNativeMethod(jni_YGNodeClearChildren),
|
YGMakeCriticalNativeMethod(jni_YGNodeRemoveChild),
|
||||||
YGMakeCriticalNativeMethod(jni_YGNodeInsertChild),
|
YGMakeCriticalNativeMethod(jni_YGNodeSetIsReferenceBaseline),
|
||||||
YGMakeCriticalNativeMethod(jni_YGNodeRemoveChild),
|
YGMakeCriticalNativeMethod(jni_YGNodeIsReferenceBaseline),
|
||||||
YGMakeCriticalNativeMethod(jni_YGNodeSetIsReferenceBaseline),
|
YGMakeNativeMethod(jni_YGNodeCalculateLayout),
|
||||||
YGMakeCriticalNativeMethod(jni_YGNodeIsReferenceBaseline),
|
YGMakeCriticalNativeMethod(jni_YGNodeMarkDirty),
|
||||||
YGMakeNativeMethod(jni_YGNodeCalculateLayout),
|
YGMakeCriticalNativeMethod(
|
||||||
YGMakeCriticalNativeMethod(jni_YGNodeMarkDirty),
|
jni_YGNodeMarkDirtyAndPropogateToDescendants),
|
||||||
YGMakeCriticalNativeMethod(
|
YGMakeCriticalNativeMethod(jni_YGNodeIsDirty),
|
||||||
jni_YGNodeMarkDirtyAndPropogateToDescendants),
|
YGMakeCriticalNativeMethod(jni_YGNodeSetHasMeasureFunc),
|
||||||
YGMakeCriticalNativeMethod(jni_YGNodeIsDirty),
|
YGMakeCriticalNativeMethod(jni_YGNodeSetHasBaselineFunc),
|
||||||
YGMakeCriticalNativeMethod(jni_YGNodeSetHasMeasureFunc),
|
YGMakeCriticalNativeMethod(jni_YGNodeCopyStyle),
|
||||||
YGMakeCriticalNativeMethod(jni_YGNodeSetHasBaselineFunc),
|
YGMakeCriticalNativeMethod(jni_YGNodeStyleGetDirection),
|
||||||
YGMakeCriticalNativeMethod(jni_YGNodeCopyStyle),
|
YGMakeCriticalNativeMethod(jni_YGNodeStyleSetDirection),
|
||||||
YGMakeCriticalNativeMethod(jni_YGNodeStyleGetDirection),
|
YGMakeCriticalNativeMethod(jni_YGNodeStyleGetFlexDirection),
|
||||||
YGMakeCriticalNativeMethod(jni_YGNodeStyleSetDirection),
|
YGMakeCriticalNativeMethod(jni_YGNodeStyleSetFlexDirection),
|
||||||
YGMakeCriticalNativeMethod(jni_YGNodeStyleGetFlexDirection),
|
YGMakeCriticalNativeMethod(jni_YGNodeStyleGetJustifyContent),
|
||||||
YGMakeCriticalNativeMethod(jni_YGNodeStyleSetFlexDirection),
|
YGMakeCriticalNativeMethod(jni_YGNodeStyleSetJustifyContent),
|
||||||
YGMakeCriticalNativeMethod(jni_YGNodeStyleGetJustifyContent),
|
YGMakeCriticalNativeMethod(jni_YGNodeStyleGetAlignItems),
|
||||||
YGMakeCriticalNativeMethod(jni_YGNodeStyleSetJustifyContent),
|
YGMakeCriticalNativeMethod(jni_YGNodeStyleSetAlignItems),
|
||||||
YGMakeCriticalNativeMethod(jni_YGNodeStyleGetAlignItems),
|
YGMakeCriticalNativeMethod(jni_YGNodeStyleGetAlignSelf),
|
||||||
YGMakeCriticalNativeMethod(jni_YGNodeStyleSetAlignItems),
|
YGMakeCriticalNativeMethod(jni_YGNodeStyleSetAlignSelf),
|
||||||
YGMakeCriticalNativeMethod(jni_YGNodeStyleGetAlignSelf),
|
YGMakeCriticalNativeMethod(jni_YGNodeStyleGetAlignContent),
|
||||||
YGMakeCriticalNativeMethod(jni_YGNodeStyleSetAlignSelf),
|
YGMakeCriticalNativeMethod(jni_YGNodeStyleSetAlignContent),
|
||||||
YGMakeCriticalNativeMethod(jni_YGNodeStyleGetAlignContent),
|
YGMakeCriticalNativeMethod(jni_YGNodeStyleGetPositionType),
|
||||||
YGMakeCriticalNativeMethod(jni_YGNodeStyleSetAlignContent),
|
YGMakeCriticalNativeMethod(jni_YGNodeStyleSetPositionType),
|
||||||
YGMakeCriticalNativeMethod(jni_YGNodeStyleGetPositionType),
|
YGMakeCriticalNativeMethod(jni_YGNodeStyleGetFlexWrap),
|
||||||
YGMakeCriticalNativeMethod(jni_YGNodeStyleSetPositionType),
|
YGMakeCriticalNativeMethod(jni_YGNodeStyleSetFlexWrap),
|
||||||
YGMakeCriticalNativeMethod(jni_YGNodeStyleGetFlexWrap),
|
YGMakeCriticalNativeMethod(jni_YGNodeStyleGetOverflow),
|
||||||
YGMakeCriticalNativeMethod(jni_YGNodeStyleSetFlexWrap),
|
YGMakeCriticalNativeMethod(jni_YGNodeStyleSetOverflow),
|
||||||
YGMakeCriticalNativeMethod(jni_YGNodeStyleGetOverflow),
|
YGMakeCriticalNativeMethod(jni_YGNodeStyleGetDisplay),
|
||||||
YGMakeCriticalNativeMethod(jni_YGNodeStyleSetOverflow),
|
YGMakeCriticalNativeMethod(jni_YGNodeStyleSetDisplay),
|
||||||
YGMakeCriticalNativeMethod(jni_YGNodeStyleGetDisplay),
|
YGMakeCriticalNativeMethod(jni_YGNodeStyleGetFlex),
|
||||||
YGMakeCriticalNativeMethod(jni_YGNodeStyleSetDisplay),
|
YGMakeCriticalNativeMethod(jni_YGNodeStyleSetFlex),
|
||||||
YGMakeCriticalNativeMethod(jni_YGNodeStyleGetFlex),
|
YGMakeCriticalNativeMethod(jni_YGNodeStyleGetFlexGrow),
|
||||||
YGMakeCriticalNativeMethod(jni_YGNodeStyleSetFlex),
|
YGMakeCriticalNativeMethod(jni_YGNodeStyleSetFlexGrow),
|
||||||
YGMakeCriticalNativeMethod(jni_YGNodeStyleGetFlexGrow),
|
YGMakeCriticalNativeMethod(jni_YGNodeStyleGetFlexShrink),
|
||||||
YGMakeCriticalNativeMethod(jni_YGNodeStyleSetFlexGrow),
|
YGMakeCriticalNativeMethod(jni_YGNodeStyleSetFlexShrink),
|
||||||
YGMakeCriticalNativeMethod(jni_YGNodeStyleGetFlexShrink),
|
YGMakeNativeMethod(jni_YGNodeStyleGetFlexBasis),
|
||||||
YGMakeCriticalNativeMethod(jni_YGNodeStyleSetFlexShrink),
|
YGMakeCriticalNativeMethod(jni_YGNodeStyleSetFlexBasis),
|
||||||
YGMakeNativeMethod(jni_YGNodeStyleGetFlexBasis),
|
YGMakeCriticalNativeMethod(jni_YGNodeStyleSetFlexBasisPercent),
|
||||||
YGMakeCriticalNativeMethod(jni_YGNodeStyleSetFlexBasis),
|
YGMakeCriticalNativeMethod(jni_YGNodeStyleSetFlexBasisAuto),
|
||||||
YGMakeCriticalNativeMethod(jni_YGNodeStyleSetFlexBasisPercent),
|
YGMakeNativeMethod(jni_YGNodeStyleGetMargin),
|
||||||
YGMakeCriticalNativeMethod(jni_YGNodeStyleSetFlexBasisAuto),
|
YGMakeCriticalNativeMethod(jni_YGNodeStyleSetMargin),
|
||||||
YGMakeNativeMethod(jni_YGNodeStyleGetMargin),
|
YGMakeCriticalNativeMethod(jni_YGNodeStyleSetMarginPercent),
|
||||||
YGMakeCriticalNativeMethod(jni_YGNodeStyleSetMargin),
|
YGMakeCriticalNativeMethod(jni_YGNodeStyleSetMarginAuto),
|
||||||
YGMakeCriticalNativeMethod(jni_YGNodeStyleSetMarginPercent),
|
YGMakeNativeMethod(jni_YGNodeStyleGetPadding),
|
||||||
YGMakeCriticalNativeMethod(jni_YGNodeStyleSetMarginAuto),
|
YGMakeCriticalNativeMethod(jni_YGNodeStyleSetPadding),
|
||||||
YGMakeNativeMethod(jni_YGNodeStyleGetPadding),
|
YGMakeCriticalNativeMethod(jni_YGNodeStyleSetPaddingPercent),
|
||||||
YGMakeCriticalNativeMethod(jni_YGNodeStyleSetPadding),
|
YGMakeCriticalNativeMethod(jni_YGNodeStyleGetBorder),
|
||||||
YGMakeCriticalNativeMethod(jni_YGNodeStyleSetPaddingPercent),
|
YGMakeCriticalNativeMethod(jni_YGNodeStyleSetBorder),
|
||||||
YGMakeCriticalNativeMethod(jni_YGNodeStyleGetBorder),
|
YGMakeNativeMethod(jni_YGNodeStyleGetPosition),
|
||||||
YGMakeCriticalNativeMethod(jni_YGNodeStyleSetBorder),
|
YGMakeCriticalNativeMethod(jni_YGNodeStyleSetPosition),
|
||||||
YGMakeNativeMethod(jni_YGNodeStyleGetPosition),
|
YGMakeCriticalNativeMethod(jni_YGNodeStyleSetPositionPercent),
|
||||||
YGMakeCriticalNativeMethod(jni_YGNodeStyleSetPosition),
|
YGMakeNativeMethod(jni_YGNodeStyleGetWidth),
|
||||||
YGMakeCriticalNativeMethod(jni_YGNodeStyleSetPositionPercent),
|
YGMakeCriticalNativeMethod(jni_YGNodeStyleSetWidth),
|
||||||
YGMakeNativeMethod(jni_YGNodeStyleGetWidth),
|
YGMakeCriticalNativeMethod(jni_YGNodeStyleSetWidthPercent),
|
||||||
YGMakeCriticalNativeMethod(jni_YGNodeStyleSetWidth),
|
YGMakeCriticalNativeMethod(jni_YGNodeStyleSetWidthAuto),
|
||||||
YGMakeCriticalNativeMethod(jni_YGNodeStyleSetWidthPercent),
|
YGMakeNativeMethod(jni_YGNodeStyleGetHeight),
|
||||||
YGMakeCriticalNativeMethod(jni_YGNodeStyleSetWidthAuto),
|
YGMakeCriticalNativeMethod(jni_YGNodeStyleSetHeight),
|
||||||
YGMakeNativeMethod(jni_YGNodeStyleGetHeight),
|
YGMakeCriticalNativeMethod(jni_YGNodeStyleSetHeightPercent),
|
||||||
YGMakeCriticalNativeMethod(jni_YGNodeStyleSetHeight),
|
YGMakeCriticalNativeMethod(jni_YGNodeStyleSetHeightAuto),
|
||||||
YGMakeCriticalNativeMethod(jni_YGNodeStyleSetHeightPercent),
|
YGMakeNativeMethod(jni_YGNodeStyleGetMinWidth),
|
||||||
YGMakeCriticalNativeMethod(jni_YGNodeStyleSetHeightAuto),
|
YGMakeCriticalNativeMethod(jni_YGNodeStyleSetMinWidth),
|
||||||
YGMakeNativeMethod(jni_YGNodeStyleGetMinWidth),
|
YGMakeCriticalNativeMethod(jni_YGNodeStyleSetMinWidthPercent),
|
||||||
YGMakeCriticalNativeMethod(jni_YGNodeStyleSetMinWidth),
|
YGMakeNativeMethod(jni_YGNodeStyleGetMinHeight),
|
||||||
YGMakeCriticalNativeMethod(jni_YGNodeStyleSetMinWidthPercent),
|
YGMakeCriticalNativeMethod(jni_YGNodeStyleSetMinHeight),
|
||||||
YGMakeNativeMethod(jni_YGNodeStyleGetMinHeight),
|
YGMakeCriticalNativeMethod(jni_YGNodeStyleSetMinHeightPercent),
|
||||||
YGMakeCriticalNativeMethod(jni_YGNodeStyleSetMinHeight),
|
YGMakeNativeMethod(jni_YGNodeStyleGetMaxWidth),
|
||||||
YGMakeCriticalNativeMethod(jni_YGNodeStyleSetMinHeightPercent),
|
YGMakeCriticalNativeMethod(jni_YGNodeStyleSetMaxWidth),
|
||||||
YGMakeNativeMethod(jni_YGNodeStyleGetMaxWidth),
|
YGMakeCriticalNativeMethod(jni_YGNodeStyleSetMaxWidthPercent),
|
||||||
YGMakeCriticalNativeMethod(jni_YGNodeStyleSetMaxWidth),
|
YGMakeNativeMethod(jni_YGNodeStyleGetMaxHeight),
|
||||||
YGMakeCriticalNativeMethod(jni_YGNodeStyleSetMaxWidthPercent),
|
YGMakeCriticalNativeMethod(jni_YGNodeStyleSetMaxHeight),
|
||||||
YGMakeNativeMethod(jni_YGNodeStyleGetMaxHeight),
|
YGMakeCriticalNativeMethod(jni_YGNodeStyleSetMaxHeightPercent),
|
||||||
YGMakeCriticalNativeMethod(jni_YGNodeStyleSetMaxHeight),
|
YGMakeCriticalNativeMethod(jni_YGNodeStyleGetAspectRatio),
|
||||||
YGMakeCriticalNativeMethod(jni_YGNodeStyleSetMaxHeightPercent),
|
YGMakeCriticalNativeMethod(jni_YGNodeStyleSetAspectRatio),
|
||||||
YGMakeCriticalNativeMethod(jni_YGNodeStyleGetAspectRatio),
|
YGMakeCriticalNativeMethod(jni_YGNodeGetInstanceCount),
|
||||||
YGMakeCriticalNativeMethod(jni_YGNodeStyleSetAspectRatio),
|
YGMakeCriticalNativeMethod(jni_YGNodePrint),
|
||||||
YGMakeCriticalNativeMethod(jni_YGNodeGetInstanceCount),
|
YGMakeNativeMethod(jni_YGNodeSetStyleInputs),
|
||||||
YGMakeCriticalNativeMethod(jni_YGNodePrint),
|
});
|
||||||
YGMakeNativeMethod(jni_YGNodeSetStyleInputs),
|
|
||||||
});
|
|
||||||
registerNatives(
|
registerNatives(
|
||||||
"com/facebook/yoga/YogaConfig",
|
"com/facebook/yoga/YogaConfig",
|
||||||
{
|
{
|
||||||
|
44
java/jni/YGJTypes.cpp
Normal file
44
java/jni/YGJTypes.cpp
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||||
|
*
|
||||||
|
* This source code is licensed under the MIT license found in the LICENSE
|
||||||
|
* file in the root directory of this source tree.
|
||||||
|
*/
|
||||||
|
#include "YGJTypes.h"
|
||||||
|
|
||||||
|
using facebook::jni::alias_ref;
|
||||||
|
using facebook::jni::local_ref;
|
||||||
|
|
||||||
|
jfloat JYogaNode::baseline(jfloat width, jfloat height) {
|
||||||
|
static auto javaMethod =
|
||||||
|
javaClassLocal()->getMethod<jfloat(jfloat, jfloat)>("baseline");
|
||||||
|
return javaMethod(self(), width, height);
|
||||||
|
}
|
||||||
|
|
||||||
|
jlong JYogaNode::measure(
|
||||||
|
jfloat width,
|
||||||
|
jint widthMode,
|
||||||
|
jfloat height,
|
||||||
|
jint heightMode) {
|
||||||
|
static auto javaMethod =
|
||||||
|
javaClassLocal()->getMethod<jlong(jfloat, jint, jfloat, jint)>("measure");
|
||||||
|
return javaMethod(self(), width, widthMode, height, heightMode);
|
||||||
|
}
|
||||||
|
|
||||||
|
facebook::jni::local_ref<JYogaLogLevel> JYogaLogLevel::fromInt(jint logLevel) {
|
||||||
|
static auto javaMethod =
|
||||||
|
javaClassStatic()->getStaticMethod<alias_ref<JYogaLogLevel>(jint)>(
|
||||||
|
"fromInt");
|
||||||
|
return javaMethod(javaClassStatic(), logLevel);
|
||||||
|
}
|
||||||
|
|
||||||
|
void JYogaLogger::log(
|
||||||
|
facebook::jni::alias_ref<JYogaNode> node,
|
||||||
|
facebook::jni::alias_ref<JYogaLogLevel> logLevel,
|
||||||
|
jstring message) {
|
||||||
|
static auto javaMethod =
|
||||||
|
javaClassLocal()
|
||||||
|
->getMethod<void(
|
||||||
|
alias_ref<JYogaNode>, alias_ref<JYogaLogLevel>, jstring)>("log");
|
||||||
|
javaMethod(self(), node, logLevel, message);
|
||||||
|
}
|
42
java/jni/YGJTypes.h
Normal file
42
java/jni/YGJTypes.h
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||||
|
*
|
||||||
|
* This source code is licensed under the MIT license found in the LICENSE
|
||||||
|
* file in the root directory of this source tree.
|
||||||
|
*/
|
||||||
|
#include <fb/fbjni.h>
|
||||||
|
#include <yoga/YGValue.h>
|
||||||
|
|
||||||
|
struct JYogaNode : public facebook::jni::JavaClass<JYogaNode> {
|
||||||
|
static constexpr auto kJavaDescriptor = "Lcom/facebook/yoga/YogaNodeJNI;";
|
||||||
|
|
||||||
|
jfloat baseline(jfloat width, jfloat height);
|
||||||
|
jlong measure(jfloat width, jint widthMode, jfloat height, jint heightMode);
|
||||||
|
};
|
||||||
|
|
||||||
|
struct JYogaConfig : public facebook::jni::JavaClass<JYogaConfig> {
|
||||||
|
static constexpr auto kJavaDescriptor = "Lcom/facebook/yoga/YogaConfig;";
|
||||||
|
};
|
||||||
|
|
||||||
|
struct JYogaLogLevel : public facebook::jni::JavaClass<JYogaLogLevel> {
|
||||||
|
static constexpr auto kJavaDescriptor = "Lcom/facebook/yoga/YogaLogLevel;";
|
||||||
|
|
||||||
|
static facebook::jni::local_ref<JYogaLogLevel> fromInt(jint);
|
||||||
|
};
|
||||||
|
|
||||||
|
struct JYogaLogger : public facebook::jni::JavaClass<JYogaLogger> {
|
||||||
|
static constexpr auto kJavaDescriptor = "Lcom/facebook/yoga/YogaLogger";
|
||||||
|
|
||||||
|
void log(
|
||||||
|
facebook::jni::alias_ref<JYogaNode>,
|
||||||
|
facebook::jni::alias_ref<JYogaLogLevel>,
|
||||||
|
jstring);
|
||||||
|
};
|
||||||
|
|
||||||
|
struct JYogaValue : public facebook::jni::JavaClass<JYogaValue> {
|
||||||
|
constexpr static auto kJavaDescriptor = "Lcom/facebook/yoga/YogaValue;";
|
||||||
|
|
||||||
|
static facebook::jni::local_ref<javaobject> create(YGValue value) {
|
||||||
|
return newInstance(value.value, static_cast<int>(value.unit));
|
||||||
|
}
|
||||||
|
};
|
Reference in New Issue
Block a user