@shopify/react-native-skia 0.1.154 → 0.1.156

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (167) hide show
  1. package/android/cpp/jni/JniLoad.cpp +5 -5
  2. package/android/cpp/jni/JniPlatformContext.cpp +107 -119
  3. package/android/cpp/jni/JniSkiaManager.cpp +18 -20
  4. package/android/cpp/jni/include/JniPlatformContext.h +41 -45
  5. package/android/cpp/jni/include/JniSkiaBaseView.h +52 -55
  6. package/android/cpp/jni/include/JniSkiaDrawView.h +72 -77
  7. package/android/cpp/jni/include/JniSkiaManager.h +51 -53
  8. package/android/cpp/jni/include/JniSkiaPictureView.h +74 -78
  9. package/android/cpp/rnskia-android/RNSkAndroidPlatformContext.h +36 -45
  10. package/android/cpp/rnskia-android/RNSkAndroidView.h +87 -92
  11. package/android/cpp/rnskia-android/RNSkOpenGLCanvasProvider.cpp +62 -65
  12. package/android/cpp/rnskia-android/RNSkOpenGLCanvasProvider.h +20 -17
  13. package/android/cpp/rnskia-android/SkiaOpenGLRenderer.cpp +257 -313
  14. package/android/cpp/rnskia-android/SkiaOpenGLRenderer.h +107 -110
  15. package/cpp/api/JsiSkApi.h +66 -62
  16. package/cpp/api/JsiSkCanvas.h +38 -30
  17. package/cpp/api/JsiSkColor.h +58 -56
  18. package/cpp/api/JsiSkColorFilter.h +5 -3
  19. package/cpp/api/JsiSkColorFilterFactory.h +23 -21
  20. package/cpp/api/JsiSkContourMeasure.h +74 -85
  21. package/cpp/api/JsiSkContourMeasureIter.h +68 -75
  22. package/cpp/api/JsiSkData.h +16 -22
  23. package/cpp/api/JsiSkDataFactory.h +86 -79
  24. package/cpp/api/JsiSkFont.h +286 -311
  25. package/cpp/api/JsiSkHostObjects.h +15 -16
  26. package/cpp/api/JsiSkImage.h +107 -103
  27. package/cpp/api/JsiSkImageFactory.h +34 -36
  28. package/cpp/api/JsiSkImageFilter.h +5 -3
  29. package/cpp/api/JsiSkImageFilterFactory.h +71 -68
  30. package/cpp/api/JsiSkImageInfo.h +41 -38
  31. package/cpp/api/JsiSkMaskFilter.h +5 -3
  32. package/cpp/api/JsiSkMaskFilterFactory.h +2 -3
  33. package/cpp/api/JsiSkMatrix.h +26 -36
  34. package/cpp/api/JsiSkPaint.h +20 -13
  35. package/cpp/api/JsiSkPath.h +70 -85
  36. package/cpp/api/JsiSkPathEffect.h +5 -3
  37. package/cpp/api/JsiSkPathEffectFactory.h +33 -28
  38. package/cpp/api/JsiSkPathFactory.h +68 -67
  39. package/cpp/api/JsiSkPicture.h +28 -22
  40. package/cpp/api/JsiSkPictureFactory.h +13 -12
  41. package/cpp/api/JsiSkPictureRecorder.h +21 -19
  42. package/cpp/api/JsiSkPoint.h +6 -8
  43. package/cpp/api/JsiSkRRect.h +11 -7
  44. package/cpp/api/JsiSkRSXform.h +82 -85
  45. package/cpp/api/JsiSkRect.h +9 -9
  46. package/cpp/api/JsiSkRuntimeEffect.h +182 -186
  47. package/cpp/api/JsiSkRuntimeEffectFactory.h +10 -11
  48. package/cpp/api/JsiSkRuntimeShaderBuilder.h +64 -61
  49. package/cpp/api/JsiSkSVG.h +4 -5
  50. package/cpp/api/JsiSkSVGFactory.h +28 -27
  51. package/cpp/api/JsiSkShader.h +3 -2
  52. package/cpp/api/JsiSkShaderFactory.h +37 -25
  53. package/cpp/api/JsiSkSurface.h +44 -40
  54. package/cpp/api/JsiSkSurfaceFactory.h +22 -22
  55. package/cpp/api/JsiSkTextBlob.h +28 -31
  56. package/cpp/api/JsiSkTextBlobFactory.h +88 -87
  57. package/cpp/api/JsiSkTypeface.h +6 -5
  58. package/cpp/api/JsiSkTypefaceFactory.h +22 -21
  59. package/cpp/api/JsiSkVertices.h +137 -124
  60. package/cpp/api/third_party/CSSColorParser.cpp +161 -174
  61. package/cpp/api/third_party/CSSColorParser.h +172 -96
  62. package/cpp/jsi/JsiHostObject.cpp +11 -9
  63. package/cpp/jsi/JsiHostObject.h +31 -24
  64. package/cpp/jsi/JsiSimpleValueWrapper.h +74 -83
  65. package/cpp/jsi/JsiValueWrapper.h +52 -54
  66. package/cpp/rnskia/RNSkAnimation.h +26 -29
  67. package/cpp/rnskia/RNSkDispatchQueue.cpp +50 -61
  68. package/cpp/rnskia/RNSkDispatchQueue.h +3 -1
  69. package/cpp/rnskia/RNSkInfoParameter.h +12 -12
  70. package/cpp/rnskia/RNSkJsView.cpp +82 -81
  71. package/cpp/rnskia/RNSkJsView.h +45 -41
  72. package/cpp/rnskia/RNSkJsiViewApi.h +99 -89
  73. package/cpp/rnskia/RNSkManager.cpp +8 -7
  74. package/cpp/rnskia/RNSkManager.h +8 -6
  75. package/cpp/rnskia/RNSkPictureView.h +44 -37
  76. package/cpp/rnskia/RNSkPlatformContext.h +39 -28
  77. package/cpp/rnskia/RNSkValueApi.h +33 -34
  78. package/cpp/rnskia/RNSkView.h +108 -93
  79. package/cpp/rnskia/values/RNSkClockValue.h +63 -64
  80. package/cpp/rnskia/values/RNSkComputedValue.h +32 -30
  81. package/cpp/rnskia/values/RNSkReadonlyValue.h +60 -59
  82. package/cpp/rnskia/values/RNSkValue.h +38 -40
  83. package/cpp/utils/RNSkLog.h +9 -7
  84. package/cpp/utils/RNSkMeasureTime.h +7 -7
  85. package/cpp/utils/RNSkTimingInfo.h +27 -24
  86. package/ios/RNSkia-iOS/RNSkMetalCanvasProvider.h +8 -9
  87. package/ios/RNSkia-iOS/RNSkiOSPlatformContext.h +24 -23
  88. package/ios/RNSkia-iOS/RNSkiOSView.h +16 -13
  89. package/ios/RNSkia-iOS/SkiaUIView.h +9 -8
  90. package/lib/commonjs/dom/nodes/JsiSkDOM.js +6 -0
  91. package/lib/commonjs/dom/nodes/JsiSkDOM.js.map +1 -1
  92. package/lib/commonjs/dom/nodes/LayerNode.js +43 -0
  93. package/lib/commonjs/dom/nodes/LayerNode.js.map +1 -0
  94. package/lib/commonjs/dom/nodes/RenderNode.js +1 -1
  95. package/lib/commonjs/dom/nodes/RenderNode.js.map +1 -1
  96. package/lib/commonjs/dom/types/NodeType.js +1 -0
  97. package/lib/commonjs/dom/types/NodeType.js.map +1 -1
  98. package/lib/commonjs/dom/types/SkDOM.js.map +1 -1
  99. package/lib/commonjs/renderer/HostComponents.js +3 -0
  100. package/lib/commonjs/renderer/HostComponents.js.map +1 -1
  101. package/lib/commonjs/renderer/components/Group.js +19 -4
  102. package/lib/commonjs/renderer/components/Group.js.map +1 -1
  103. package/lib/commonjs/renderer/components/Paint.js +6 -1
  104. package/lib/commonjs/renderer/components/Paint.js.map +1 -1
  105. package/lib/commonjs/views/SkiaPictureView.js +3 -2
  106. package/lib/commonjs/views/SkiaPictureView.js.map +1 -1
  107. package/lib/commonjs/views/SkiaView.js +6 -3
  108. package/lib/commonjs/views/SkiaView.js.map +1 -1
  109. package/lib/module/dom/nodes/JsiSkDOM.js +5 -0
  110. package/lib/module/dom/nodes/JsiSkDOM.js.map +1 -1
  111. package/lib/module/dom/nodes/LayerNode.js +32 -0
  112. package/lib/module/dom/nodes/LayerNode.js.map +1 -0
  113. package/lib/module/dom/nodes/RenderNode.js +1 -1
  114. package/lib/module/dom/nodes/RenderNode.js.map +1 -1
  115. package/lib/module/dom/types/NodeType.js +1 -0
  116. package/lib/module/dom/types/NodeType.js.map +1 -1
  117. package/lib/module/dom/types/SkDOM.js.map +1 -1
  118. package/lib/module/renderer/HostComponents.js +3 -0
  119. package/lib/module/renderer/HostComponents.js.map +1 -1
  120. package/lib/module/renderer/components/Group.js +16 -3
  121. package/lib/module/renderer/components/Group.js.map +1 -1
  122. package/lib/module/renderer/components/Paint.js +7 -1
  123. package/lib/module/renderer/components/Paint.js.map +1 -1
  124. package/lib/module/views/SkiaPictureView.js +2 -2
  125. package/lib/module/views/SkiaPictureView.js.map +1 -1
  126. package/lib/module/views/SkiaView.js +4 -2
  127. package/lib/module/views/SkiaView.js.map +1 -1
  128. package/lib/typescript/src/dom/nodes/JsiSkDOM.d.ts +2 -0
  129. package/lib/typescript/src/dom/nodes/LayerNode.d.ts +8 -0
  130. package/lib/typescript/src/dom/types/NodeType.d.ts +1 -0
  131. package/lib/typescript/src/dom/types/SkDOM.d.ts +1 -0
  132. package/lib/typescript/src/renderer/HostComponents.d.ts +2 -1
  133. package/lib/typescript/src/renderer/components/Group.d.ts +5 -1
  134. package/lib/typescript/src/views/SkiaView.d.ts +3 -0
  135. package/libs/android/arm64-v8a/libskottie.a +0 -0
  136. package/libs/android/arm64-v8a/libsksg.a +0 -0
  137. package/libs/android/armeabi-v7a/libskottie.a +0 -0
  138. package/libs/android/armeabi-v7a/libsksg.a +0 -0
  139. package/libs/android/x86/libskottie.a +0 -0
  140. package/libs/android/x86/libsksg.a +0 -0
  141. package/libs/android/x86_64/libskottie.a +0 -0
  142. package/libs/android/x86_64/libsksg.a +0 -0
  143. package/libs/ios/libskia.xcframework/ios-arm64_arm64e/libskia.a +0 -0
  144. package/libs/ios/libskia.xcframework/ios-arm64_arm64e_x86_64-simulator/libskia.a +0 -0
  145. package/libs/ios/libskottie.xcframework/Info.plist +42 -0
  146. package/libs/ios/libskottie.xcframework/ios-arm64_arm64e/libskottie.a +0 -0
  147. package/libs/ios/libskottie.xcframework/ios-arm64_arm64e_x86_64-simulator/libskottie.a +0 -0
  148. package/libs/ios/libsksg.xcframework/Info.plist +42 -0
  149. package/libs/ios/libsksg.xcframework/ios-arm64_arm64e/libsksg.a +0 -0
  150. package/libs/ios/libsksg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsksg.a +0 -0
  151. package/libs/ios/libskshaper.xcframework/Info.plist +5 -5
  152. package/libs/ios/libskshaper.xcframework/ios-arm64_arm64e/libskshaper.a +0 -0
  153. package/libs/ios/libskshaper.xcframework/ios-arm64_arm64e_x86_64-simulator/libskshaper.a +0 -0
  154. package/libs/ios/libsvg.xcframework/Info.plist +5 -5
  155. package/libs/ios/libsvg.xcframework/ios-arm64_arm64e/libsvg.a +0 -0
  156. package/libs/ios/libsvg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsvg.a +0 -0
  157. package/package.json +3 -1
  158. package/src/dom/nodes/JsiSkDOM.ts +5 -0
  159. package/src/dom/nodes/LayerNode.ts +35 -0
  160. package/src/dom/nodes/RenderNode.ts +4 -3
  161. package/src/dom/types/NodeType.ts +1 -0
  162. package/src/dom/types/SkDOM.ts +1 -0
  163. package/src/renderer/HostComponents.ts +3 -0
  164. package/src/renderer/components/Group.tsx +16 -3
  165. package/src/renderer/components/Paint.tsx +7 -1
  166. package/src/views/SkiaPictureView.tsx +2 -3
  167. package/src/views/SkiaView.tsx +2 -2
@@ -1,15 +1,15 @@
1
1
  #include "JniPlatformContext.h"
2
2
  #include "JniSkiaDrawView.h"
3
- #include "JniSkiaPictureView.h"
4
3
  #include "JniSkiaManager.h"
4
+ #include "JniSkiaPictureView.h"
5
5
  #include <fbjni/fbjni.h>
6
6
  #include <jni.h>
7
7
 
8
8
  JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *) {
9
9
  return facebook::jni::initialize(vm, [] {
10
- RNSkia::JniSkiaManager::registerNatives();
11
- RNSkia::JniSkiaDrawView::registerNatives();
12
- RNSkia::JniSkiaPictureView::registerNatives();
13
- RNSkia::JniPlatformContext::registerNatives();
10
+ RNSkia::JniSkiaManager::registerNatives();
11
+ RNSkia::JniSkiaDrawView::registerNatives();
12
+ RNSkia::JniSkiaPictureView::registerNatives();
13
+ RNSkia::JniPlatformContext::registerNatives();
14
14
  });
15
15
  }
@@ -4,139 +4,127 @@
4
4
  #include <thread>
5
5
  #include <utility>
6
6
 
7
- #include <RNSkMeasureTime.h>
8
7
  #include "SkData.h"
9
8
  #include "SkRefCnt.h"
10
- #include "SkTypes.h"
11
9
  #include "SkStream.h"
10
+ #include "SkTypes.h"
11
+ #include <RNSkMeasureTime.h>
12
12
 
13
- namespace RNSkia
14
- {
15
-
16
- using namespace facebook;
13
+ namespace RNSkia {
14
+
15
+ namespace jsi = facebook::jsi;
16
+
17
+ using TSelf = jni::local_ref<JniPlatformContext::jhybriddata>;
18
+
19
+ void JniPlatformContext::registerNatives() {
20
+ registerHybrid({
21
+ makeNativeMethod("initHybrid", JniPlatformContext::initHybrid),
22
+ makeNativeMethod("notifyDrawLoop",
23
+ JniPlatformContext::notifyDrawLoopExternal),
24
+ makeNativeMethod("notifyTaskReady",
25
+ JniPlatformContext::notifyTaskReadyExternal),
26
+ });
27
+ }
28
+
29
+ TSelf JniPlatformContext::initHybrid(jni::alias_ref<jhybridobject> jThis,
30
+ float pixelDensity) {
31
+ return makeCxxInstance(jThis, pixelDensity);
32
+ }
33
+
34
+ void JniPlatformContext::startDrawLoop() {
35
+ jni::ThreadScope ts;
36
+ // Start drawing loop
37
+ static auto method =
38
+ javaPart_->getClass()->getMethod<void(void)>("beginDrawLoop");
39
+ method(javaPart_.get());
40
+ }
41
+
42
+ void JniPlatformContext::stopDrawLoop() {
43
+ jni::ThreadScope ts;
44
+ // Stop drawing loop
45
+ static auto method =
46
+ javaPart_->getClass()->getMethod<void(void)>("endDrawLoop");
47
+ method(javaPart_.get());
48
+ }
49
+
50
+ void JniPlatformContext::notifyDrawLoopExternal() {
51
+ jni::ThreadScope ts;
52
+ _onNotifyDrawLoop();
53
+ }
54
+
55
+ void JniPlatformContext::notifyTaskReadyExternal() {
56
+ _taskMutex->lock();
57
+ auto task = _taskCallbacks.front();
58
+ if (task != nullptr) {
59
+ _taskCallbacks.pop();
60
+ _taskMutex->unlock();
61
+ task();
62
+ } else {
63
+ _taskMutex->unlock();
64
+ }
65
+ }
66
+
67
+ void JniPlatformContext::performStreamOperation(
68
+ const std::string &sourceUri,
69
+ const std::function<void(std::unique_ptr<SkStreamAsset>)> &op) {
70
+ auto measure = RNSkMeasureTime("JniPlatformContext::performStreamOperation");
71
+
72
+ static auto method = javaPart_->getClass()->getMethod<jbyteArray(jstring)>(
73
+ "getJniStreamFromSource");
74
+
75
+ auto loader = [=]() -> void {
76
+ jni::ThreadScope ts;
77
+ jstring jstr =
78
+ (*jni::Environment::current()).NewStringUTF(sourceUri.c_str());
79
+
80
+ // Get the array with data from input stream from Java
81
+ auto array = method(javaPart_.get(), jstr);
82
+
83
+ if (array == nullptr) {
84
+ printf("Calling getJniStreamFromSource failed\n");
85
+ return;
86
+ }
17
87
 
18
- using TSelf = jni::local_ref<JniPlatformContext::jhybriddata>;
88
+ // Allocate buffer for java byte array
89
+ jsize num_bytes = jni::Environment::current()->GetArrayLength(array.get());
90
+ char *buffer = reinterpret_cast<char *>(malloc(num_bytes + 1));
19
91
 
20
- void JniPlatformContext::registerNatives()
21
- {
22
- registerHybrid({
23
- makeNativeMethod("initHybrid", JniPlatformContext::initHybrid),
24
- makeNativeMethod("notifyDrawLoop", JniPlatformContext::notifyDrawLoopExternal),
25
- makeNativeMethod("notifyTaskReady", JniPlatformContext::notifyTaskReadyExternal),
26
- });
92
+ if (!buffer) {
93
+ printf("Buff Fail\n");
94
+ return;
27
95
  }
28
96
 
29
- TSelf JniPlatformContext::initHybrid(jni::alias_ref<jhybridobject> jThis, float pixelDensity)
30
- {
31
- return makeCxxInstance(jThis, pixelDensity);
97
+ jbyte *elements =
98
+ jni::Environment::current()->GetByteArrayElements(array.get(), nullptr);
99
+ if (!elements) {
100
+ printf("Element Fail\n");
101
+ return;
32
102
  }
33
103
 
34
- void JniPlatformContext::startDrawLoop()
35
- {
36
- jni::ThreadScope ts;
37
- // Start drawing loop
38
- static auto method = javaPart_->getClass()->getMethod<void(void)>("beginDrawLoop");
39
- method(javaPart_.get());
40
- }
104
+ // Copy data from java array to buffer
105
+ memcpy(buffer, elements, num_bytes);
106
+ buffer[num_bytes] = 0;
41
107
 
42
- void JniPlatformContext::stopDrawLoop()
43
- {
44
- jni::ThreadScope ts;
45
- // Stop drawing loop
46
- static auto method = javaPart_->getClass()->getMethod<void(void)>("endDrawLoop");
47
- method(javaPart_.get());
48
- }
108
+ jni::Environment::current()->ReleaseByteArrayElements(array.get(), elements,
109
+ JNI_ABORT);
49
110
 
50
- void JniPlatformContext::notifyDrawLoopExternal()
51
- {
52
- jni::ThreadScope ts;
53
- _onNotifyDrawLoop();
54
- }
111
+ // Copy malloced data and give ownership to SkData
112
+ auto data = SkData::MakeFromMalloc(buffer, num_bytes);
113
+ auto skStream = SkMemoryStream::Make(data);
55
114
 
56
- void JniPlatformContext::notifyTaskReadyExternal()
57
- {
58
- _taskMutex->lock();
59
- auto task = _taskCallbacks.front();
60
- if (task != nullptr)
61
- {
62
- _taskCallbacks.pop();
63
- _taskMutex->unlock();
64
- task();
65
- }
66
- else
67
- {
68
- _taskMutex->unlock();
69
- }
70
- }
115
+ // Perform operation
116
+ op(std::move(skStream));
117
+ };
71
118
 
72
- void JniPlatformContext::performStreamOperation(
73
- const std::string &sourceUri,
74
- const std::function<void(std::unique_ptr<SkStreamAsset>)> &op)
75
- {
76
- auto measure =
77
- RNSkMeasureTime("JniPlatformContext::performStreamOperation");
78
-
79
- static auto method = javaPart_->getClass()->getMethod<jbyteArray(jstring)>(
80
- "getJniStreamFromSource");
81
-
82
- auto loader = [=]() -> void
83
- {
84
- jni::ThreadScope ts;
85
- jstring jstr =
86
- (*jni::Environment::current()).NewStringUTF(sourceUri.c_str());
87
-
88
- // Get the array with data from input stream from Java
89
- auto array = method(javaPart_.get(), jstr);
90
-
91
- if (array == nullptr)
92
- {
93
- printf("Calling getJniStreamFromSource failed\n");
94
- return;
95
- }
96
-
97
- // Allocate buffer for java byte array
98
- jsize num_bytes =
99
- jni::Environment::current()->GetArrayLength(array.get());
100
- char *buffer = (char *)malloc(num_bytes + 1);
101
-
102
- if (!buffer)
103
- {
104
- printf("Buff Fail\n");
105
- return;
106
- }
107
-
108
- jbyte *elements = jni::Environment::current()->GetByteArrayElements(
109
- array.get(), nullptr);
110
- if (!elements)
111
- {
112
- printf("Element Fail\n");
113
- return;
114
- }
115
-
116
- // Copy data from java array to buffer
117
- memcpy(buffer, elements, num_bytes);
118
- buffer[num_bytes] = 0;
119
-
120
- jni::Environment::current()->ReleaseByteArrayElements(
121
- array.get(), elements, JNI_ABORT);
122
-
123
- // Copy malloced data and give ownership to SkData
124
- auto data = SkData::MakeFromMalloc(buffer, num_bytes);
125
- auto skStream = SkMemoryStream::Make(data);
126
-
127
- // Perform operation
128
- op(std::move(skStream));
129
- };
130
-
131
- // Fire and forget the thread - will be resolved on completion
132
- std::thread(loader).detach();
133
- }
119
+ // Fire and forget the thread - will be resolved on completion
120
+ std::thread(loader).detach();
121
+ }
134
122
 
135
- void JniPlatformContext::raiseError(const std::exception &err)
136
- {
137
- jni::ThreadScope ts;
138
- static auto method = javaPart_->getClass()->getMethod<void(std::string)>("raise");
139
- method(javaPart_.get(), std::string(err.what()));
140
- }
123
+ void JniPlatformContext::raiseError(const std::exception &err) {
124
+ jni::ThreadScope ts;
125
+ static auto method =
126
+ javaPart_->getClass()->getMethod<void(std::string)>("raise");
127
+ method(javaPart_.get(), std::string(err.what()));
128
+ }
141
129
 
142
130
  } // namespace RNSkia
@@ -10,35 +10,33 @@
10
10
 
11
11
  namespace RNSkia {
12
12
 
13
- using namespace facebook;
13
+ namespace jsi = facebook::jsi;
14
14
 
15
15
  // JNI binding
16
16
  void JniSkiaManager::registerNatives() {
17
- registerHybrid({
18
- makeNativeMethod("initHybrid", JniSkiaManager::initHybrid),
19
- makeNativeMethod("initializeRuntime", JniSkiaManager::initializeRuntime),
20
- makeNativeMethod("invalidate", JniSkiaManager::invalidate),
21
- });
17
+ registerHybrid({
18
+ makeNativeMethod("initHybrid", JniSkiaManager::initHybrid),
19
+ makeNativeMethod("initializeRuntime", JniSkiaManager::initializeRuntime),
20
+ makeNativeMethod("invalidate", JniSkiaManager::invalidate),
21
+ });
22
22
  }
23
23
 
24
24
  // JNI init
25
- jni::local_ref<jni::HybridClass<JniSkiaManager>::jhybriddata> JniSkiaManager::initHybrid(
26
- jni::alias_ref<jhybridobject> jThis,
27
- jlong jsContext,
28
- JSCallInvokerHolder jsCallInvokerHolder,
29
- JavaPlatformContext skiaContext) {
30
-
31
- // cast from JNI hybrid objects to C++ instances
32
- return makeCxxInstance(
33
- jThis,
34
- reinterpret_cast<jsi::Runtime *>(jsContext),
35
- jsCallInvokerHolder->cthis()->getCallInvoker(),
36
- skiaContext->cthis());
25
+ jni::local_ref<jni::HybridClass<JniSkiaManager>::jhybriddata>
26
+ JniSkiaManager::initHybrid(jni::alias_ref<jhybridobject> jThis, jlong jsContext,
27
+ JSCallInvokerHolder jsCallInvokerHolder,
28
+ JavaPlatformContext skiaContext) {
29
+
30
+ // cast from JNI hybrid objects to C++ instances
31
+ return makeCxxInstance(jThis, reinterpret_cast<jsi::Runtime *>(jsContext),
32
+ jsCallInvokerHolder->cthis()->getCallInvoker(),
33
+ skiaContext->cthis());
37
34
  }
38
35
 
39
36
  void JniSkiaManager::initializeRuntime() {
40
- // Create the cross platform skia manager
41
- _skManager = std::make_shared<RNSkManager>(_jsRuntime, _jsCallInvoker, _context);
37
+ // Create the cross platform skia manager
38
+ _skManager =
39
+ std::make_shared<RNSkManager>(_jsRuntime, _jsCallInvoker, _context);
42
40
  }
43
41
 
44
42
  } // namespace RNSkia
@@ -1,75 +1,71 @@
1
1
  #pragma once
2
2
 
3
- #include <fbjni/fbjni.h>
4
3
  #include <ReactCommon/CallInvokerHolder.h>
4
+ #include <fbjni/fbjni.h>
5
5
 
6
- #include <queue>
7
- #include <mutex>
6
+ #include <exception>
8
7
  #include <functional>
9
8
  #include <memory>
9
+ #include <mutex>
10
+ #include <queue>
10
11
  #include <string>
11
- #include <exception>
12
12
 
13
13
  #include "RNSkPlatformContext.h"
14
14
 
15
15
  class SkStreamAsset;
16
- namespace RNSkia
17
- {
16
+ namespace RNSkia {
18
17
 
19
- using namespace facebook;
18
+ namespace jsi = facebook::jsi;
19
+ namespace jni = facebook::jni;
20
20
 
21
- using JSCallInvokerHolder =
22
- jni::alias_ref<facebook::react::CallInvokerHolder::javaobject>;
21
+ using JSCallInvokerHolder =
22
+ jni::alias_ref<facebook::react::CallInvokerHolder::javaobject>;
23
23
 
24
- class JniPlatformContext : public jni::HybridClass<JniPlatformContext>
25
- {
26
- public:
27
- static auto constexpr kJavaDescriptor = "Lcom/shopify/reactnative/skia/PlatformContext;";
24
+ class JniPlatformContext : public jni::HybridClass<JniPlatformContext> {
25
+ public:
26
+ static auto constexpr kJavaDescriptor =
27
+ "Lcom/shopify/reactnative/skia/PlatformContext;";
28
28
 
29
- static jni::local_ref<jhybriddata> initHybrid(
30
- jni::alias_ref<jhybridobject> jThis,
31
- const float);
29
+ static jni::local_ref<jhybriddata>
30
+ initHybrid(jni::alias_ref<jhybridobject> jThis, const float);
32
31
 
33
- static void registerNatives();
32
+ static void registerNatives();
34
33
 
35
- void performStreamOperation(
36
- const std::string &sourceUri,
37
- const std::function<void(std::unique_ptr<SkStreamAsset>)> &op);
34
+ void performStreamOperation(
35
+ const std::string &sourceUri,
36
+ const std::function<void(std::unique_ptr<SkStreamAsset>)> &op);
38
37
 
39
- void raiseError(const std::exception &err);
38
+ void raiseError(const std::exception &err);
40
39
 
41
- void startDrawLoop();
42
- void stopDrawLoop();
40
+ void startDrawLoop();
41
+ void stopDrawLoop();
43
42
 
44
- void notifyDrawLoopExternal();
43
+ void notifyDrawLoopExternal();
45
44
 
46
- void notifyTaskReadyExternal();
45
+ void notifyTaskReadyExternal();
47
46
 
48
- float getPixelDensity() { return _pixelDensity; }
47
+ float getPixelDensity() { return _pixelDensity; }
49
48
 
50
- void setOnNotifyDrawLoop(const std::function<void(void)>& callback) {
51
- _onNotifyDrawLoop = callback;
52
- }
49
+ void setOnNotifyDrawLoop(const std::function<void(void)> &callback) {
50
+ _onNotifyDrawLoop = callback;
51
+ }
53
52
 
54
- private:
55
- friend HybridBase;
56
- jni::global_ref<JniPlatformContext::javaobject> javaPart_;
53
+ private:
54
+ friend HybridBase;
55
+ jni::global_ref<JniPlatformContext::javaobject> javaPart_;
57
56
 
58
- float _pixelDensity;
57
+ float _pixelDensity;
59
58
 
60
- std::function<void(void)> _onNotifyDrawLoop;
59
+ std::function<void(void)> _onNotifyDrawLoop;
61
60
 
62
- std::queue<std::function<void()>> _taskCallbacks;
61
+ std::queue<std::function<void()>> _taskCallbacks;
63
62
 
64
- std::shared_ptr<std::mutex> _taskMutex;
63
+ std::shared_ptr<std::mutex> _taskMutex;
65
64
 
66
- explicit JniPlatformContext(
67
- jni::alias_ref<JniPlatformContext::jhybridobject> jThis,
68
- const float pixelDensity)
69
- : _taskMutex(std::make_shared<std::mutex>()),
70
- javaPart_(jni::make_global(jThis)),
71
- _pixelDensity(pixelDensity)
72
- {
73
- }
74
- };
65
+ explicit JniPlatformContext(
66
+ jni::alias_ref<JniPlatformContext::jhybridobject> jThis,
67
+ const float pixelDensity)
68
+ : _taskMutex(std::make_shared<std::mutex>()),
69
+ javaPart_(jni::make_global(jThis)), _pixelDensity(pixelDensity) {}
70
+ };
75
71
  } // namespace RNSkia
@@ -1,68 +1,65 @@
1
1
  #pragma once
2
2
 
3
3
  #include <memory>
4
+ #include <string>
4
5
 
5
6
  #include <fbjni/fbjni.h>
6
7
  #include <jni.h>
7
8
  #include <jsi/jsi.h>
8
9
 
9
10
  #include <JniSkiaManager.h>
11
+ #include <RNSkAndroidView.h>
10
12
 
11
13
  namespace RNSkia {
12
- using namespace facebook;
13
- using namespace jni;
14
-
15
- class JniSkiaBaseView {
16
- public:
17
- JniSkiaBaseView(jni::alias_ref<JniSkiaManager::javaobject> skiaManager,
18
- std::shared_ptr<RNSkBaseAndroidView> skiaView) :
19
- _manager(skiaManager->cthis()),
20
- _skiaView(skiaView) {}
21
-
22
- ~JniSkiaBaseView() {}
23
-
24
- std::shared_ptr<RNSkManager> getSkiaManager() { return _manager->getSkiaManager(); };
25
-
26
- protected:
27
- virtual void updateTouchPoints(jni::JArrayDouble touches) {
28
- _skiaView->updateTouchPoints(touches);
29
- }
30
-
31
- virtual void surfaceAvailable(jobject surface, int width, int height) {
32
- _skiaView->surfaceAvailable(surface, width, height);
33
- }
34
-
35
- virtual void surfaceSizeChanged(int width, int height) {
36
- _skiaView->surfaceSizeChanged(width, height);
37
- }
38
-
39
- virtual void surfaceDestroyed() {
40
- _skiaView->surfaceDestroyed();
41
- }
42
-
43
- virtual void setMode(std::string mode) {
44
- _skiaView->setMode(mode);
45
- }
46
-
47
- virtual void setDebugMode(bool show) {
48
- _skiaView->setShowDebugInfo(show);
49
- }
50
-
51
- virtual void registerView(int nativeId) {
52
- getSkiaManager()->registerSkiaView(nativeId,
53
- _skiaView->getSkiaView());
54
- }
55
-
56
- virtual void unregisterView() {
57
- getSkiaManager()->setSkiaView(_skiaView->getSkiaView()->getNativeId(), nullptr);
58
- getSkiaManager()->unregisterSkiaView(
59
- _skiaView->getSkiaView()->getNativeId());
60
- _skiaView->viewDidUnmount();
61
- }
62
-
63
- private:
64
- JniSkiaManager *_manager;
65
- std::shared_ptr<RNSkBaseAndroidView> _skiaView;
66
- };
14
+
15
+ namespace jsi = facebook::jsi;
16
+
17
+ class JniSkiaBaseView {
18
+ public:
19
+ JniSkiaBaseView(jni::alias_ref<JniSkiaManager::javaobject> skiaManager,
20
+ std::shared_ptr<RNSkBaseAndroidView> skiaView)
21
+ : _manager(skiaManager->cthis()), _skiaView(skiaView) {}
22
+
23
+ ~JniSkiaBaseView() {}
24
+
25
+ std::shared_ptr<RNSkManager> getSkiaManager() {
26
+ return _manager->getSkiaManager();
27
+ }
28
+
29
+ protected:
30
+ virtual void updateTouchPoints(jni::JArrayDouble touches) {
31
+ _skiaView->updateTouchPoints(touches);
32
+ }
33
+
34
+ virtual void surfaceAvailable(jobject surface, int width, int height) {
35
+ _skiaView->surfaceAvailable(surface, width, height);
36
+ }
37
+
38
+ virtual void surfaceSizeChanged(int width, int height) {
39
+ _skiaView->surfaceSizeChanged(width, height);
40
+ }
41
+
42
+ virtual void surfaceDestroyed() { _skiaView->surfaceDestroyed(); }
43
+
44
+ virtual void setMode(std::string mode) { _skiaView->setMode(mode); }
45
+
46
+ virtual void setDebugMode(bool show) { _skiaView->setShowDebugInfo(show); }
47
+
48
+ virtual void registerView(int nativeId) {
49
+ getSkiaManager()->registerSkiaView(nativeId, _skiaView->getSkiaView());
50
+ }
51
+
52
+ virtual void unregisterView() {
53
+ getSkiaManager()->setSkiaView(_skiaView->getSkiaView()->getNativeId(),
54
+ nullptr);
55
+ getSkiaManager()->unregisterSkiaView(
56
+ _skiaView->getSkiaView()->getNativeId());
57
+ _skiaView->viewDidUnmount();
58
+ }
59
+
60
+ private:
61
+ JniSkiaManager *_manager;
62
+ std::shared_ptr<RNSkBaseAndroidView> _skiaView;
63
+ };
67
64
 
68
65
  } // namespace RNSkia