-
Notifications
You must be signed in to change notification settings - Fork 580
Expand file tree
/
Copy pathJniSkiaDomView.h
More file actions
80 lines (61 loc) · 2.46 KB
/
JniSkiaDomView.h
File metadata and controls
80 lines (61 loc) · 2.46 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#pragma once
#include <memory>
#include <string>
#include <fbjni/fbjni.h>
#include <jni.h>
#include <jsi/jsi.h>
#include "JniSkiaBaseView.h"
#include "JniSkiaManager.h"
#include "RNSkAndroidView.h"
#include "RNSkDomView.h"
#include <android/native_window.h>
#include <android/native_window_jni.h>
#include <fbjni/detail/Hybrid.h>
namespace RNSkia {
namespace jsi = facebook::jsi;
namespace jni = facebook::jni;
class JniSkiaDomView : public jni::HybridClass<JniSkiaDomView>,
public JniSkiaBaseView {
public:
static auto constexpr kJavaDescriptor =
"Lcom/shopify/reactnative/skia/SkiaDomView;";
static jni::local_ref<jhybriddata>
initHybrid(jni::alias_ref<jhybridobject> jThis,
jni::alias_ref<JniSkiaManager::javaobject> skiaManager) {
return makeCxxInstance(jThis, skiaManager);
}
static void registerNatives() {
registerHybrid(
{makeNativeMethod("initHybrid", JniSkiaDomView::initHybrid),
makeNativeMethod("surfaceAvailable", JniSkiaDomView::surfaceAvailable),
makeNativeMethod("surfaceDestroyed", JniSkiaDomView::surfaceDestroyed),
makeNativeMethod("surfaceSizeChanged",
JniSkiaDomView::surfaceSizeChanged),
makeNativeMethod("setDebugMode", JniSkiaDomView::setDebugMode),
makeNativeMethod("registerView", JniSkiaDomView::registerView),
makeNativeMethod("unregisterView", JniSkiaDomView::unregisterView)});
}
protected:
void surfaceAvailable(jobject surface, int width, int height) override {
JniSkiaBaseView::surfaceAvailable(surface, width, height);
}
void surfaceSizeChanged(jobject surface, int width, int height) override {
JniSkiaBaseView::surfaceSizeChanged(surface, width, height);
}
void surfaceDestroyed() override { JniSkiaBaseView::surfaceDestroyed(); }
void setDebugMode(bool show) override { JniSkiaBaseView::setDebugMode(show); }
void registerView(int nativeId) override {
JniSkiaBaseView::registerView(nativeId);
}
void unregisterView() override { JniSkiaBaseView::unregisterView(); }
private:
friend HybridBase;
explicit JniSkiaDomView(
jni::alias_ref<jhybridobject> jThis,
jni::alias_ref<JniSkiaManager::javaobject> skiaManager)
: JniSkiaBaseView(skiaManager,
std::make_shared<RNSkAndroidView<RNSkia::RNSkDomView>>(
skiaManager->cthis()->getPlatformContext())) {}
jni::global_ref<javaobject> javaPart_;
};
} // namespace RNSkia