@shopify/react-native-skia 0.1.154 → 0.1.156

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -4,8 +4,8 @@
4
4
 
5
5
  #pragma once
6
6
 
7
- #include <string>
8
7
  #include <jsi/jsi.h>
8
+ #include <string>
9
9
 
10
10
  #ifdef ANDROID
11
11
  #include <android/log.h>
@@ -17,7 +17,7 @@
17
17
 
18
18
  namespace RNSkia {
19
19
 
20
- using namespace facebook;
20
+ namespace jsi = facebook::jsi;
21
21
 
22
22
  class RNSkLogger {
23
23
  public:
@@ -45,7 +45,7 @@ public:
45
45
  va_start(args, fmt);
46
46
 
47
47
  static char buffer[512];
48
- vsnprintf(buffer, 512, fmt, args);
48
+ vsnprintf(buffer, sizeof(buffer), fmt, args);
49
49
  #ifdef ANDROID
50
50
  __android_log_write(ANDROID_LOG_INFO, "RNSkia", buffer);
51
51
  #endif
@@ -55,22 +55,24 @@ public:
55
55
  va_end(args);
56
56
  }
57
57
 
58
- static void logToJavascriptConsole(jsi::Runtime& runtime, const std::string& message) {
58
+ static void logToJavascriptConsole(jsi::Runtime &runtime,
59
+ const std::string &message) {
59
60
  auto console = RNSkLogger::getJavascriptConsole(runtime).asObject(runtime);
60
61
  auto log = console.getPropertyAsFunction(runtime, "log");
61
62
  log.call(runtime, jsi::String::createFromUtf8(runtime, message));
62
63
  }
63
64
 
64
- static void warnToJavascriptConsole(jsi::Runtime& runtime, const std::string& message) {
65
+ static void warnToJavascriptConsole(jsi::Runtime &runtime,
66
+ const std::string &message) {
65
67
  auto console = RNSkLogger::getJavascriptConsole(runtime).asObject(runtime);
66
68
  auto warn = console.getPropertyAsFunction(runtime, "warn");
67
69
  warn.call(runtime, jsi::String::createFromUtf8(runtime, message));
68
70
  }
69
71
 
70
72
  private:
71
- static jsi::Value getJavascriptConsole(jsi::Runtime& runtime) {
73
+ static jsi::Value getJavascriptConsole(jsi::Runtime &runtime) {
72
74
  auto console = runtime.global().getProperty(runtime, "console");
73
- if(console.isUndefined() || console.isNull()) {
75
+ if (console.isUndefined() || console.isNull()) {
74
76
  throw jsi::JSError(runtime, "Could not find console object.");
75
77
  return jsi::Value::undefined();
76
78
  }
@@ -11,22 +11,22 @@
11
11
 
12
12
  namespace RNSkia {
13
13
 
14
- using namespace std::chrono;
15
-
16
14
  class RNSkMeasureTime {
17
15
  public:
18
- RNSkMeasureTime(const std::string &name)
19
- : _name(name), _start(high_resolution_clock::now()){}
16
+ explicit RNSkMeasureTime(const std::string &name)
17
+ : _name(name), _start(std::chrono::high_resolution_clock::now()) {}
20
18
 
21
19
  ~RNSkMeasureTime() {
22
- auto stop = high_resolution_clock::now();
23
- auto duration = duration_cast<milliseconds>(stop - _start).count();
20
+ auto stop = std::chrono::high_resolution_clock::now();
21
+ auto duration =
22
+ std::chrono::duration_cast<std::chrono::milliseconds>(stop - _start)
23
+ .count();
24
24
  RNSkLogger::logToConsole("%s: %lld ms\n", _name.c_str(), duration);
25
25
  }
26
26
 
27
27
  private:
28
28
  std::string _name;
29
- time_point<steady_clock> _start;
29
+ std::chrono::time_point<std::chrono::steady_clock> _start;
30
30
  };
31
31
 
32
32
  }; // namespace RNSkia
@@ -2,18 +2,20 @@
2
2
 
3
3
  #include <RNSkLog.h>
4
4
  #include <chrono>
5
+ #include <string>
6
+ #include <utility>
5
7
 
6
8
  #define NUMBER_OF_DURATION_SAMPLES 10
7
9
 
8
10
  namespace RNSkia {
9
11
 
10
- using namespace std::chrono;
11
- using frame = duration<int32_t, std::ratio<1, 60>>;
12
- using ms = duration<float, std::milli>;
12
+ using frame = std::chrono::duration<int32_t, std::ratio<1, 60>>;
13
+ using ms = std::chrono::duration<float, std::milli>;
14
+ using high_resolution_clock = std::chrono::high_resolution_clock;
13
15
 
14
16
  class RNSkTimingInfo {
15
17
  public:
16
- RNSkTimingInfo(const std::string &name): _name(std::move(name)) {
18
+ explicit RNSkTimingInfo(const std::string &name) : _name(std::move(name)) {
17
19
  reset();
18
20
  }
19
21
 
@@ -28,24 +30,24 @@ public:
28
30
  _lastFrameCount = -1;
29
31
  _didSkip = false;
30
32
  }
31
-
32
- void beginTiming() {
33
- _start = high_resolution_clock::now();
34
- }
35
-
33
+
34
+ void beginTiming() { _start = high_resolution_clock::now(); }
35
+
36
36
  void stopTiming() {
37
- time_point<steady_clock> stop = high_resolution_clock::now();
38
- addLastDuration(duration_cast<milliseconds>(stop - _start).count());
37
+ std::chrono::time_point<std::chrono::steady_clock> stop =
38
+ high_resolution_clock::now();
39
+ addLastDuration(
40
+ std::chrono::duration_cast<std::chrono::milliseconds>(stop - _start)
41
+ .count());
39
42
  tick(stop);
40
- if(_didSkip) {
43
+ if (_didSkip) {
41
44
  _didSkip = false;
42
- RNSkLogger::logToConsole("%s: Skipped frame. Previous frame time: %lldms", _name.c_str(), _lastDuration);
45
+ RNSkLogger::logToConsole("%s: Skipped frame. Previous frame time: %lldms",
46
+ _name.c_str(), _lastDuration);
43
47
  }
44
48
  }
45
49
 
46
- void markSkipped() {
47
- _didSkip = true;
48
- }
50
+ void markSkipped() { _didSkip = true; }
49
51
 
50
52
  long getAverage() { return static_cast<long>(_average); }
51
53
  long getFps() { return _lastFrameCount; }
@@ -72,27 +74,28 @@ public:
72
74
  }
73
75
 
74
76
  private:
75
-
76
- void tick(time_point<steady_clock> now) {
77
- auto ms = duration_cast<milliseconds>(now.time_since_epoch()).count();
78
-
79
- if(_prevFpsTimer == -1) {
77
+ void tick(std::chrono::time_point<std::chrono::steady_clock> now) {
78
+ auto ms = std::chrono::duration_cast<std::chrono::milliseconds>(
79
+ now.time_since_epoch())
80
+ .count();
81
+
82
+ if (_prevFpsTimer == -1) {
80
83
  _prevFpsTimer = ms;
81
- } else if(ms - _prevFpsTimer >= 1000) {
84
+ } else if (ms - _prevFpsTimer >= 1000) {
82
85
  _lastFrameCount = _frameCount;
83
86
  _prevFpsTimer = ms;
84
87
  _frameCount = 0;
85
88
  }
86
89
  _frameCount++;
87
90
  }
88
-
91
+
89
92
  double _lastTimeStamp;
90
93
  long _lastDurations[NUMBER_OF_DURATION_SAMPLES];
91
94
  int _lastDurationIndex;
92
95
  int _lastDurationsCount;
93
96
  long _lastDuration;
94
97
  std::atomic<double> _average;
95
- time_point<steady_clock> _start;
98
+ std::chrono::time_point<std::chrono::steady_clock> _start;
96
99
  long _prevFpsTimer;
97
100
  double _frameCount;
98
101
  double _lastFrameCount;
@@ -6,22 +6,22 @@
6
6
  #import <MetalKit/MetalKit.h>
7
7
  #import <QuartzCore/CAMetalLayer.h>
8
8
 
9
- class RNSkMetalCanvasProvider: public RNSkia::RNSkCanvasProvider {
9
+ class RNSkMetalCanvasProvider : public RNSkia::RNSkCanvasProvider {
10
10
  public:
11
11
  RNSkMetalCanvasProvider(std::function<void()> requestRedraw,
12
12
  std::shared_ptr<RNSkia::RNSkPlatformContext> context);
13
-
13
+
14
14
  ~RNSkMetalCanvasProvider();
15
15
 
16
16
  float getScaledWidth() override;
17
17
  float getScaledHeight() override;
18
-
19
- void renderToCanvas(const std::function<void(SkCanvas*)>& cb) override;
20
-
18
+
19
+ void renderToCanvas(const std::function<void(SkCanvas *)> &cb) override;
20
+
21
21
  void setSize(int width, int height);
22
-
23
- CALayer* getLayer();
24
-
22
+
23
+ CALayer *getLayer();
24
+
25
25
  private:
26
26
  std::shared_ptr<RNSkia::RNSkPlatformContext> _context;
27
27
  float _width = -1;
@@ -34,5 +34,4 @@ private:
34
34
  static id<MTLCommandQueue> _commandQueue;
35
35
  static id<MTLDevice> _device;
36
36
  static sk_sp<GrDirectContext> _skContext;
37
-
38
37
  };
@@ -19,35 +19,35 @@
19
19
  #include <jsi/jsi.h>
20
20
 
21
21
  namespace facebook {
22
- namespace react {
23
- class CallInvoker;
24
- }
22
+ namespace react {
23
+ class CallInvoker;
25
24
  }
25
+ } // namespace facebook
26
26
 
27
27
  namespace RNSkia {
28
28
 
29
- using namespace facebook;
29
+ namespace jsi = facebook::jsi;
30
30
 
31
- static void handleNotification(CFNotificationCenterRef center, void *observer, CFStringRef name, const void *object, CFDictionaryRef userInfo);
31
+ static void handleNotification(CFNotificationCenterRef center, void *observer,
32
+ CFStringRef name, const void *object,
33
+ CFDictionaryRef userInfo);
32
34
 
33
35
  class RNSkiOSPlatformContext : public RNSkPlatformContext {
34
36
  public:
35
37
  RNSkiOSPlatformContext(jsi::Runtime *runtime,
36
- std::shared_ptr<react::CallInvoker> callInvoker)
37
- : RNSkPlatformContext(runtime, callInvoker, [[UIScreen mainScreen] scale]) {
38
- // We need to make sure we invalidate when modules are freed
39
- CFNotificationCenterAddObserver(
40
- CFNotificationCenterGetLocalCenter(),
41
- this,
42
- &handleNotification,
43
- (__bridge CFStringRef)RCTBridgeWillInvalidateModulesNotification,
44
- NULL,
45
- CFNotificationSuspensionBehaviorDeliverImmediately
46
- );
47
- }
38
+ std::shared_ptr<react::CallInvoker> callInvoker)
39
+ : RNSkPlatformContext(runtime, callInvoker,
40
+ [[UIScreen mainScreen] scale]) {
41
+ // We need to make sure we invalidate when modules are freed
42
+ CFNotificationCenterAddObserver(
43
+ CFNotificationCenterGetLocalCenter(), this, &handleNotification,
44
+ (__bridge CFStringRef)RCTBridgeWillInvalidateModulesNotification, NULL,
45
+ CFNotificationSuspensionBehaviorDeliverImmediately);
46
+ }
48
47
 
49
48
  ~RNSkiOSPlatformContext() {
50
- CFNotificationCenterRemoveEveryObserver(CFNotificationCenterGetLocalCenter(), this);
49
+ CFNotificationCenterRemoveEveryObserver(
50
+ CFNotificationCenterGetLocalCenter(), this);
51
51
  }
52
52
 
53
53
  void startDrawLoop() override;
@@ -58,19 +58,20 @@ public:
58
58
  const std::function<void(std::unique_ptr<SkStreamAsset>)> &op) override;
59
59
 
60
60
  void raiseError(const std::exception &err) override;
61
-
61
+
62
62
  void willInvalidateModules() {
63
63
  // We need to do some house-cleaning here!
64
64
  invalidate();
65
65
  }
66
-
66
+
67
67
  private:
68
68
  DisplayLink *_displayLink;
69
69
  };
70
70
 
71
- static void handleNotification(CFNotificationCenterRef center, void *observer, CFStringRef name,
72
- const void *object, CFDictionaryRef userInfo) {
73
- (static_cast<RNSkiOSPlatformContext*>(observer))->willInvalidateModules();
71
+ static void handleNotification(CFNotificationCenterRef center, void *observer,
72
+ CFStringRef name, const void *object,
73
+ CFDictionaryRef userInfo) {
74
+ (static_cast<RNSkiOSPlatformContext *>(observer))->willInvalidateModules();
74
75
  }
75
76
 
76
77
  } // namespace RNSkia
@@ -2,33 +2,36 @@
2
2
 
3
3
  #import <memory>
4
4
 
5
+ #import "RNSkMetalCanvasProvider.h"
5
6
  #import "RNSkView.h"
6
7
  #import "RNSkiOSPlatformContext.h"
7
- #import "RNSkMetalCanvasProvider.h"
8
8
 
9
9
  class RNSkBaseiOSView {
10
10
  public:
11
- virtual CALayer* getLayer() = 0;
11
+ virtual CALayer *getLayer() = 0;
12
12
  virtual void setSize(int width, int height) = 0;
13
13
  virtual std::shared_ptr<RNSkia::RNSkView> getDrawView() = 0;
14
14
  };
15
15
 
16
- template <class T>
17
- class RNSkiOSView: public RNSkBaseiOSView, public T {
16
+ template <class T> class RNSkiOSView : public RNSkBaseiOSView, public T {
18
17
  public:
19
- RNSkiOSView(std::shared_ptr<RNSkia::RNSkPlatformContext> context):
20
- T(context, std::make_shared<RNSkMetalCanvasProvider>(std::bind(&RNSkia::RNSkView::requestRedraw, this), context)) {}
21
-
22
- CALayer* getLayer() override {
23
- return std::static_pointer_cast<RNSkMetalCanvasProvider>(this->getCanvasProvider())->getLayer();
18
+ RNSkiOSView(std::shared_ptr<RNSkia::RNSkPlatformContext> context)
19
+ : T(context,
20
+ std::make_shared<RNSkMetalCanvasProvider>(
21
+ std::bind(&RNSkia::RNSkView::requestRedraw, this), context)) {}
22
+
23
+ CALayer *getLayer() override {
24
+ return std::static_pointer_cast<RNSkMetalCanvasProvider>(
25
+ this->getCanvasProvider())
26
+ ->getLayer();
24
27
  }
25
-
28
+
26
29
  void setSize(int width, int height) override {
27
- std::static_pointer_cast<RNSkMetalCanvasProvider>(this->getCanvasProvider())->setSize(width, height);
30
+ std::static_pointer_cast<RNSkMetalCanvasProvider>(this->getCanvasProvider())
31
+ ->setSize(width, height);
28
32
  }
29
-
33
+
30
34
  std::shared_ptr<RNSkia::RNSkView> getDrawView() override {
31
35
  return this->shared_from_this();
32
36
  }
33
-
34
37
  };
@@ -6,21 +6,22 @@
6
6
  #import <CoreFoundation/CoreFoundation.h>
7
7
  #import <UIKit/UIKit.h>
8
8
 
9
- #import <RNSkiOSView.h>
10
9
  #import <RNSkManager.h>
10
+ #import <RNSkiOSView.h>
11
11
 
12
12
  class RNSkiOSJsView;
13
13
 
14
14
  @interface SkiaUIView : UIView
15
15
 
16
- - (instancetype)initWithManager: (RNSkia::RNSkManager*)manager
17
- factory: (std::function<std::shared_ptr<RNSkBaseiOSView>(
18
- std::shared_ptr<RNSkia::RNSkPlatformContext>)>)factory;
16
+ - (instancetype)
17
+ initWithManager:(RNSkia::RNSkManager *)manager
18
+ factory:(std::function<std::shared_ptr<RNSkBaseiOSView>(
19
+ std::shared_ptr<RNSkia::RNSkPlatformContext>)>)factory;
19
20
 
20
- - (std::shared_ptr<RNSkBaseiOSView>) impl;
21
+ - (std::shared_ptr<RNSkBaseiOSView>)impl;
21
22
 
22
- - (void) setDrawingMode:(std::string) mode;
23
- - (void) setDebugMode:(bool) debugMode;
24
- - (void) setNativeId:(size_t) nativeId;
23
+ - (void)setDrawingMode:(std::string)mode;
24
+ - (void)setDebugMode:(bool)debugMode;
25
+ - (void)setNativeId:(size_t)nativeId;
25
26
 
26
27
  @end
@@ -19,11 +19,17 @@ var _GroupNode = require("./GroupNode");
19
19
 
20
20
  var _PaintNode = require("./PaintNode");
21
21
 
22
+ var _LayerNode = require("./LayerNode");
23
+
22
24
  class JsiSkDOM {
23
25
  constructor(ctx) {
24
26
  this.ctx = ctx;
25
27
  }
26
28
 
29
+ Layer(props) {
30
+ return new _LayerNode.LayerNode(this.ctx, props ?? {});
31
+ }
32
+
27
33
  Group(props) {
28
34
  return new _GroupNode.GroupNode(this.ctx, props ?? {});
29
35
  }
@@ -1 +1 @@
1
- {"version":3,"names":["JsiSkDOM","constructor","ctx","Group","props","GroupNode","Paint","PaintNode","Fill","FillNode","Image","ImageNode","Circle","CircleNode","Path","PathNode","CustomDrawing","CustomDrawingNode","Line","LineNode","Oval","OvalNode","Patch","PatchNode","Points","PointsNode","Rect","RectNode","RRect","RRectNode","Vertices","VerticesNode","Text","TextNode","TextPath","TextPathNode","TextBlob","TextBlobNode","Glyphs","GlyphsNode","DiffRect","DiffRectNode","Picture","PictureNode","ImageSVG","ImageSVGNode","BlurMaskFilter","BlurMaskFilterNode","BlendImageFilter","BlendImageFilterNode","DropShadowImageFilter","DropShadowImageFilterNode","DisplacementMapImageFilter","DisplacementMapImageFilterNode","BlurImageFilter","BlurImageFilterNode","OffsetImageFilter","OffsetImageFilterNode","MorphologyImageFilter","MorphologyImageFilterNode","RuntimeShaderImageFilter","RuntimeShaderImageFilterNode","MatrixColorFilter","MatrixColorFilterNode","BlendColorFilter","BlendColorFilterNode","LumaColorFilter","LumaColorFilterNode","LinearToSRGBGammaColorFilter","LinearToSRGBGammaColorFilterNode","SRGBToLinearGammaColorFilter","SRGBToLinearGammaColorFilterNode","LerpColorFilter","LerpColorFilterNode","Shader","ShaderNode","ImageShader","ImageShaderNode","ColorShader","ColorNode","SweepGradient","SweepGradientNode","Turbulence","TurbulenceNode","FractalNoise","FractalNoiseNode","LinearGradient","LinearGradientNode","RadialGradient","RadialGradientNode","TwoPointConicalGradient","TwoPointConicalGradientNode","CornerPathEffect","CornerPathEffectNode","DiscretePathEffect","DiscretePathEffectNode","DashPathEffect","DashPathEffectNode","Path1DPathEffect","Path1DPathEffectNode","Path2DPathEffect","Path2DPathEffectNode","SumPathEffect","SumPathEffectNode","Line2DPathEffect","Line2DPathEffectNode","Blend","BlendNode","BackdropFilter","BackdropFilterNode","Box","BoxNode","BoxShadow","BoxShadowNode"],"sources":["JsiSkDOM.ts"],"sourcesContent":["import type {\n PathProps,\n SkDOM,\n GroupProps,\n ImageProps,\n BlurImageFilterProps,\n MatrixColorFilterProps,\n CircleProps,\n BlurMaskFilterProps,\n LinearGradientProps,\n PaintProps,\n ShaderProps,\n ImageShaderProps,\n CustomDrawingNodeProps,\n LineProps,\n OvalProps,\n PatchProps,\n PointsProps,\n RectProps,\n RoundedRectProps,\n VerticesProps,\n TextProps,\n DiffRectProps,\n OffsetImageFilterProps,\n BlendColorFilterProps,\n TextPathProps,\n TextBlobProps,\n GlyphsProps,\n TwoPointConicalGradientProps,\n TurbulenceProps,\n SweepGradientProps,\n RadialGradientProps,\n FractalNoiseProps,\n ColorProps,\n PictureProps,\n ImageSVGProps,\n LerpColorFilterProps,\n DrawingNodeProps,\n BoxProps,\n BoxShadowProps,\n ChildrenProps,\n} from \"../types\";\nimport type {\n BlendImageFilterProps,\n BlendProps,\n DisplacementMapImageFilterProps,\n DropShadowImageFilterProps,\n MorphologyImageFilterProps,\n RuntimeShaderImageFilterProps,\n} from \"../types/ImageFilters\";\nimport type {\n CornerPathEffectProps,\n DashPathEffectProps,\n DiscretePathEffectProps,\n Line2DPathEffectProps,\n Path1DPathEffectProps,\n Path2DPathEffectProps,\n} from \"../types/PathEffects\";\n\nimport {\n FillNode,\n ImageNode,\n CircleNode,\n PathNode,\n LineNode,\n PatchNode,\n PointsNode,\n RectNode,\n RRectNode,\n VerticesNode,\n TextNode,\n OvalNode,\n CustomDrawingNode,\n TextPathNode,\n TextBlobNode,\n GlyphsNode,\n DiffRectNode,\n PictureNode,\n ImageSVGNode,\n BackdropFilterNode,\n BoxNode,\n BoxShadowNode,\n} from \"./drawings\";\nimport {\n BlendImageFilterNode,\n BlurImageFilterNode,\n BlurMaskFilterNode,\n DisplacementMapImageFilterNode,\n DropShadowImageFilterNode,\n OffsetImageFilterNode,\n RuntimeShaderImageFilterNode,\n CornerPathEffectNode,\n DiscretePathEffectNode,\n DashPathEffectNode,\n Path1DPathEffectNode,\n Path2DPathEffectNode,\n SumPathEffectNode,\n Line2DPathEffectNode,\n BlendNode,\n} from \"./paint\";\nimport {\n MatrixColorFilterNode,\n LumaColorFilterNode,\n LinearToSRGBGammaColorFilterNode,\n SRGBToLinearGammaColorFilterNode,\n BlendColorFilterNode,\n LerpColorFilterNode,\n} from \"./paint/ColorFilters\";\nimport {\n LinearGradientNode,\n ShaderNode,\n ImageShaderNode,\n TwoPointConicalGradientNode,\n TurbulenceNode,\n SweepGradientNode,\n RadialGradientNode,\n FractalNoiseNode,\n ColorNode,\n} from \"./paint/Shaders\";\nimport { MorphologyImageFilterNode } from \"./paint/ImageFilters\";\nimport { GroupNode } from \"./GroupNode\";\nimport { PaintNode } from \"./PaintNode\";\nimport type { NodeContext } from \"./Node\";\n\nexport class JsiSkDOM implements SkDOM {\n constructor(private ctx: NodeContext) {}\n\n Group(props?: GroupProps) {\n return new GroupNode(this.ctx, props ?? {});\n }\n\n Paint(props: PaintProps) {\n return new PaintNode(this.ctx, props);\n }\n\n // Drawings\n Fill(props?: DrawingNodeProps) {\n return new FillNode(this.ctx, props);\n }\n\n Image(props: ImageProps) {\n return new ImageNode(this.ctx, props);\n }\n\n Circle(props: CircleProps) {\n return new CircleNode(this.ctx, props);\n }\n\n Path(props: PathProps) {\n return new PathNode(this.ctx, props);\n }\n\n CustomDrawing(props: CustomDrawingNodeProps) {\n return new CustomDrawingNode(this.ctx, props);\n }\n\n Line(props: LineProps) {\n return new LineNode(this.ctx, props);\n }\n\n Oval(props: OvalProps) {\n return new OvalNode(this.ctx, props);\n }\n\n Patch(props: PatchProps) {\n return new PatchNode(this.ctx, props);\n }\n\n Points(props: PointsProps) {\n return new PointsNode(this.ctx, props);\n }\n\n Rect(props: RectProps) {\n return new RectNode(this.ctx, props);\n }\n\n RRect(props: RoundedRectProps) {\n return new RRectNode(this.ctx, props);\n }\n\n Vertices(props: VerticesProps) {\n return new VerticesNode(this.ctx, props);\n }\n\n Text(props: TextProps) {\n return new TextNode(this.ctx, props);\n }\n\n TextPath(props: TextPathProps) {\n return new TextPathNode(this.ctx, props);\n }\n\n TextBlob(props: TextBlobProps) {\n return new TextBlobNode(this.ctx, props);\n }\n\n Glyphs(props: GlyphsProps) {\n return new GlyphsNode(this.ctx, props);\n }\n\n DiffRect(props: DiffRectProps) {\n return new DiffRectNode(this.ctx, props);\n }\n\n Picture(props: PictureProps) {\n return new PictureNode(this.ctx, props);\n }\n\n ImageSVG(props: ImageSVGProps) {\n return new ImageSVGNode(this.ctx, props);\n }\n\n // BlurMaskFilters\n BlurMaskFilter(props: BlurMaskFilterProps) {\n return new BlurMaskFilterNode(this.ctx, props);\n }\n\n // ImageFilters\n BlendImageFilter(props: BlendImageFilterProps) {\n return new BlendImageFilterNode(this.ctx, props);\n }\n\n DropShadowImageFilter(props: DropShadowImageFilterProps) {\n return new DropShadowImageFilterNode(this.ctx, props);\n }\n\n DisplacementMapImageFilter(props: DisplacementMapImageFilterProps) {\n return new DisplacementMapImageFilterNode(this.ctx, props);\n }\n\n BlurImageFilter(props: BlurImageFilterProps) {\n return new BlurImageFilterNode(this.ctx, props);\n }\n\n OffsetImageFilter(props: OffsetImageFilterProps) {\n return new OffsetImageFilterNode(this.ctx, props);\n }\n\n MorphologyImageFilter(props: MorphologyImageFilterProps) {\n return new MorphologyImageFilterNode(this.ctx, props);\n }\n\n RuntimeShaderImageFilter(props: RuntimeShaderImageFilterProps) {\n return new RuntimeShaderImageFilterNode(this.ctx, props);\n }\n\n // Color Filters\n MatrixColorFilter(props: MatrixColorFilterProps) {\n return new MatrixColorFilterNode(this.ctx, props);\n }\n\n BlendColorFilter(props: BlendColorFilterProps) {\n return new BlendColorFilterNode(this.ctx, props);\n }\n\n LumaColorFilter() {\n return new LumaColorFilterNode(this.ctx);\n }\n\n LinearToSRGBGammaColorFilter() {\n return new LinearToSRGBGammaColorFilterNode(this.ctx);\n }\n\n SRGBToLinearGammaColorFilter() {\n return new SRGBToLinearGammaColorFilterNode(this.ctx);\n }\n\n LerpColorFilter(props: LerpColorFilterProps) {\n return new LerpColorFilterNode(this.ctx, props);\n }\n\n // Shaders\n Shader(props: ShaderProps) {\n return new ShaderNode(this.ctx, props);\n }\n\n ImageShader(props: ImageShaderProps) {\n return new ImageShaderNode(this.ctx, props);\n }\n\n ColorShader(props: ColorProps) {\n return new ColorNode(this.ctx, props);\n }\n\n SweepGradient(props: SweepGradientProps) {\n return new SweepGradientNode(this.ctx, props);\n }\n\n Turbulence(props: TurbulenceProps) {\n return new TurbulenceNode(this.ctx, props);\n }\n\n FractalNoise(props: FractalNoiseProps) {\n return new FractalNoiseNode(this.ctx, props);\n }\n\n LinearGradient(props: LinearGradientProps) {\n return new LinearGradientNode(this.ctx, props);\n }\n\n RadialGradient(props: RadialGradientProps) {\n return new RadialGradientNode(this.ctx, props);\n }\n\n TwoPointConicalGradient(props: TwoPointConicalGradientProps) {\n return new TwoPointConicalGradientNode(this.ctx, props);\n }\n\n // Path Effects\n CornerPathEffect(props: CornerPathEffectProps) {\n return new CornerPathEffectNode(this.ctx, props);\n }\n\n DiscretePathEffect(props: DiscretePathEffectProps) {\n return new DiscretePathEffectNode(this.ctx, props);\n }\n\n DashPathEffect(props: DashPathEffectProps) {\n return new DashPathEffectNode(this.ctx, props);\n }\n\n Path1DPathEffect(props: Path1DPathEffectProps) {\n return new Path1DPathEffectNode(this.ctx, props);\n }\n\n Path2DPathEffect(props: Path2DPathEffectProps) {\n return new Path2DPathEffectNode(this.ctx, props);\n }\n\n SumPathEffect() {\n return new SumPathEffectNode(this.ctx);\n }\n\n Line2DPathEffect(props: Line2DPathEffectProps) {\n return new Line2DPathEffectNode(this.ctx, props);\n }\n\n Blend(props: BlendProps) {\n return new BlendNode(this.ctx, props);\n }\n\n BackdropFilter(props: ChildrenProps) {\n return new BackdropFilterNode(this.ctx, props);\n }\n\n Box(props: BoxProps) {\n return new BoxNode(this.ctx, props);\n }\n\n BoxShadow(props: BoxShadowProps) {\n return new BoxShadowNode(this.ctx, props);\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["JsiSkDOM","constructor","ctx","Layer","props","LayerNode","Group","GroupNode","Paint","PaintNode","Fill","FillNode","Image","ImageNode","Circle","CircleNode","Path","PathNode","CustomDrawing","CustomDrawingNode","Line","LineNode","Oval","OvalNode","Patch","PatchNode","Points","PointsNode","Rect","RectNode","RRect","RRectNode","Vertices","VerticesNode","Text","TextNode","TextPath","TextPathNode","TextBlob","TextBlobNode","Glyphs","GlyphsNode","DiffRect","DiffRectNode","Picture","PictureNode","ImageSVG","ImageSVGNode","BlurMaskFilter","BlurMaskFilterNode","BlendImageFilter","BlendImageFilterNode","DropShadowImageFilter","DropShadowImageFilterNode","DisplacementMapImageFilter","DisplacementMapImageFilterNode","BlurImageFilter","BlurImageFilterNode","OffsetImageFilter","OffsetImageFilterNode","MorphologyImageFilter","MorphologyImageFilterNode","RuntimeShaderImageFilter","RuntimeShaderImageFilterNode","MatrixColorFilter","MatrixColorFilterNode","BlendColorFilter","BlendColorFilterNode","LumaColorFilter","LumaColorFilterNode","LinearToSRGBGammaColorFilter","LinearToSRGBGammaColorFilterNode","SRGBToLinearGammaColorFilter","SRGBToLinearGammaColorFilterNode","LerpColorFilter","LerpColorFilterNode","Shader","ShaderNode","ImageShader","ImageShaderNode","ColorShader","ColorNode","SweepGradient","SweepGradientNode","Turbulence","TurbulenceNode","FractalNoise","FractalNoiseNode","LinearGradient","LinearGradientNode","RadialGradient","RadialGradientNode","TwoPointConicalGradient","TwoPointConicalGradientNode","CornerPathEffect","CornerPathEffectNode","DiscretePathEffect","DiscretePathEffectNode","DashPathEffect","DashPathEffectNode","Path1DPathEffect","Path1DPathEffectNode","Path2DPathEffect","Path2DPathEffectNode","SumPathEffect","SumPathEffectNode","Line2DPathEffect","Line2DPathEffectNode","Blend","BlendNode","BackdropFilter","BackdropFilterNode","Box","BoxNode","BoxShadow","BoxShadowNode"],"sources":["JsiSkDOM.ts"],"sourcesContent":["import type {\n PathProps,\n SkDOM,\n GroupProps,\n ImageProps,\n BlurImageFilterProps,\n MatrixColorFilterProps,\n CircleProps,\n BlurMaskFilterProps,\n LinearGradientProps,\n PaintProps,\n ShaderProps,\n ImageShaderProps,\n CustomDrawingNodeProps,\n LineProps,\n OvalProps,\n PatchProps,\n PointsProps,\n RectProps,\n RoundedRectProps,\n VerticesProps,\n TextProps,\n DiffRectProps,\n OffsetImageFilterProps,\n BlendColorFilterProps,\n TextPathProps,\n TextBlobProps,\n GlyphsProps,\n TwoPointConicalGradientProps,\n TurbulenceProps,\n SweepGradientProps,\n RadialGradientProps,\n FractalNoiseProps,\n ColorProps,\n PictureProps,\n ImageSVGProps,\n LerpColorFilterProps,\n DrawingNodeProps,\n BoxProps,\n BoxShadowProps,\n ChildrenProps,\n} from \"../types\";\nimport type {\n BlendImageFilterProps,\n BlendProps,\n DisplacementMapImageFilterProps,\n DropShadowImageFilterProps,\n MorphologyImageFilterProps,\n RuntimeShaderImageFilterProps,\n} from \"../types/ImageFilters\";\nimport type {\n CornerPathEffectProps,\n DashPathEffectProps,\n DiscretePathEffectProps,\n Line2DPathEffectProps,\n Path1DPathEffectProps,\n Path2DPathEffectProps,\n} from \"../types/PathEffects\";\n\nimport {\n FillNode,\n ImageNode,\n CircleNode,\n PathNode,\n LineNode,\n PatchNode,\n PointsNode,\n RectNode,\n RRectNode,\n VerticesNode,\n TextNode,\n OvalNode,\n CustomDrawingNode,\n TextPathNode,\n TextBlobNode,\n GlyphsNode,\n DiffRectNode,\n PictureNode,\n ImageSVGNode,\n BackdropFilterNode,\n BoxNode,\n BoxShadowNode,\n} from \"./drawings\";\nimport {\n BlendImageFilterNode,\n BlurImageFilterNode,\n BlurMaskFilterNode,\n DisplacementMapImageFilterNode,\n DropShadowImageFilterNode,\n OffsetImageFilterNode,\n RuntimeShaderImageFilterNode,\n CornerPathEffectNode,\n DiscretePathEffectNode,\n DashPathEffectNode,\n Path1DPathEffectNode,\n Path2DPathEffectNode,\n SumPathEffectNode,\n Line2DPathEffectNode,\n BlendNode,\n} from \"./paint\";\nimport {\n MatrixColorFilterNode,\n LumaColorFilterNode,\n LinearToSRGBGammaColorFilterNode,\n SRGBToLinearGammaColorFilterNode,\n BlendColorFilterNode,\n LerpColorFilterNode,\n} from \"./paint/ColorFilters\";\nimport {\n LinearGradientNode,\n ShaderNode,\n ImageShaderNode,\n TwoPointConicalGradientNode,\n TurbulenceNode,\n SweepGradientNode,\n RadialGradientNode,\n FractalNoiseNode,\n ColorNode,\n} from \"./paint/Shaders\";\nimport { MorphologyImageFilterNode } from \"./paint/ImageFilters\";\nimport { GroupNode } from \"./GroupNode\";\nimport { PaintNode } from \"./PaintNode\";\nimport type { NodeContext } from \"./Node\";\nimport { LayerNode } from \"./LayerNode\";\n\nexport class JsiSkDOM implements SkDOM {\n constructor(private ctx: NodeContext) {}\n\n Layer(props?: ChildrenProps) {\n return new LayerNode(this.ctx, props ?? {});\n }\n\n Group(props?: GroupProps) {\n return new GroupNode(this.ctx, props ?? {});\n }\n\n Paint(props: PaintProps) {\n return new PaintNode(this.ctx, props);\n }\n\n // Drawings\n Fill(props?: DrawingNodeProps) {\n return new FillNode(this.ctx, props);\n }\n\n Image(props: ImageProps) {\n return new ImageNode(this.ctx, props);\n }\n\n Circle(props: CircleProps) {\n return new CircleNode(this.ctx, props);\n }\n\n Path(props: PathProps) {\n return new PathNode(this.ctx, props);\n }\n\n CustomDrawing(props: CustomDrawingNodeProps) {\n return new CustomDrawingNode(this.ctx, props);\n }\n\n Line(props: LineProps) {\n return new LineNode(this.ctx, props);\n }\n\n Oval(props: OvalProps) {\n return new OvalNode(this.ctx, props);\n }\n\n Patch(props: PatchProps) {\n return new PatchNode(this.ctx, props);\n }\n\n Points(props: PointsProps) {\n return new PointsNode(this.ctx, props);\n }\n\n Rect(props: RectProps) {\n return new RectNode(this.ctx, props);\n }\n\n RRect(props: RoundedRectProps) {\n return new RRectNode(this.ctx, props);\n }\n\n Vertices(props: VerticesProps) {\n return new VerticesNode(this.ctx, props);\n }\n\n Text(props: TextProps) {\n return new TextNode(this.ctx, props);\n }\n\n TextPath(props: TextPathProps) {\n return new TextPathNode(this.ctx, props);\n }\n\n TextBlob(props: TextBlobProps) {\n return new TextBlobNode(this.ctx, props);\n }\n\n Glyphs(props: GlyphsProps) {\n return new GlyphsNode(this.ctx, props);\n }\n\n DiffRect(props: DiffRectProps) {\n return new DiffRectNode(this.ctx, props);\n }\n\n Picture(props: PictureProps) {\n return new PictureNode(this.ctx, props);\n }\n\n ImageSVG(props: ImageSVGProps) {\n return new ImageSVGNode(this.ctx, props);\n }\n\n // BlurMaskFilters\n BlurMaskFilter(props: BlurMaskFilterProps) {\n return new BlurMaskFilterNode(this.ctx, props);\n }\n\n // ImageFilters\n BlendImageFilter(props: BlendImageFilterProps) {\n return new BlendImageFilterNode(this.ctx, props);\n }\n\n DropShadowImageFilter(props: DropShadowImageFilterProps) {\n return new DropShadowImageFilterNode(this.ctx, props);\n }\n\n DisplacementMapImageFilter(props: DisplacementMapImageFilterProps) {\n return new DisplacementMapImageFilterNode(this.ctx, props);\n }\n\n BlurImageFilter(props: BlurImageFilterProps) {\n return new BlurImageFilterNode(this.ctx, props);\n }\n\n OffsetImageFilter(props: OffsetImageFilterProps) {\n return new OffsetImageFilterNode(this.ctx, props);\n }\n\n MorphologyImageFilter(props: MorphologyImageFilterProps) {\n return new MorphologyImageFilterNode(this.ctx, props);\n }\n\n RuntimeShaderImageFilter(props: RuntimeShaderImageFilterProps) {\n return new RuntimeShaderImageFilterNode(this.ctx, props);\n }\n\n // Color Filters\n MatrixColorFilter(props: MatrixColorFilterProps) {\n return new MatrixColorFilterNode(this.ctx, props);\n }\n\n BlendColorFilter(props: BlendColorFilterProps) {\n return new BlendColorFilterNode(this.ctx, props);\n }\n\n LumaColorFilter() {\n return new LumaColorFilterNode(this.ctx);\n }\n\n LinearToSRGBGammaColorFilter() {\n return new LinearToSRGBGammaColorFilterNode(this.ctx);\n }\n\n SRGBToLinearGammaColorFilter() {\n return new SRGBToLinearGammaColorFilterNode(this.ctx);\n }\n\n LerpColorFilter(props: LerpColorFilterProps) {\n return new LerpColorFilterNode(this.ctx, props);\n }\n\n // Shaders\n Shader(props: ShaderProps) {\n return new ShaderNode(this.ctx, props);\n }\n\n ImageShader(props: ImageShaderProps) {\n return new ImageShaderNode(this.ctx, props);\n }\n\n ColorShader(props: ColorProps) {\n return new ColorNode(this.ctx, props);\n }\n\n SweepGradient(props: SweepGradientProps) {\n return new SweepGradientNode(this.ctx, props);\n }\n\n Turbulence(props: TurbulenceProps) {\n return new TurbulenceNode(this.ctx, props);\n }\n\n FractalNoise(props: FractalNoiseProps) {\n return new FractalNoiseNode(this.ctx, props);\n }\n\n LinearGradient(props: LinearGradientProps) {\n return new LinearGradientNode(this.ctx, props);\n }\n\n RadialGradient(props: RadialGradientProps) {\n return new RadialGradientNode(this.ctx, props);\n }\n\n TwoPointConicalGradient(props: TwoPointConicalGradientProps) {\n return new TwoPointConicalGradientNode(this.ctx, props);\n }\n\n // Path Effects\n CornerPathEffect(props: CornerPathEffectProps) {\n return new CornerPathEffectNode(this.ctx, props);\n }\n\n DiscretePathEffect(props: DiscretePathEffectProps) {\n return new DiscretePathEffectNode(this.ctx, props);\n }\n\n DashPathEffect(props: DashPathEffectProps) {\n return new DashPathEffectNode(this.ctx, props);\n }\n\n Path1DPathEffect(props: Path1DPathEffectProps) {\n return new Path1DPathEffectNode(this.ctx, props);\n }\n\n Path2DPathEffect(props: Path2DPathEffectProps) {\n return new Path2DPathEffectNode(this.ctx, props);\n }\n\n SumPathEffect() {\n return new SumPathEffectNode(this.ctx);\n }\n\n Line2DPathEffect(props: Line2DPathEffectProps) {\n return new Line2DPathEffectNode(this.ctx, props);\n }\n\n Blend(props: BlendProps) {\n return new BlendNode(this.ctx, props);\n }\n\n BackdropFilter(props: ChildrenProps) {\n return new BackdropFilterNode(this.ctx, props);\n }\n\n Box(props: BoxProps) {\n return new BoxNode(this.ctx, props);\n }\n\n BoxShadow(props: BoxShadowProps) {\n return new BoxShadowNode(this.ctx, props);\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.LayerNode = void 0;
7
+
8
+ var _types = require("../types");
9
+
10
+ var _RenderNode = require("./RenderNode");
11
+
12
+ var _Node = require("./Node");
13
+
14
+ const isLayer = node => node instanceof _Node.JsiDeclarationNode && node.isPaint();
15
+
16
+ class LayerNode extends _RenderNode.JsiRenderNode {
17
+ constructor(ctx, props) {
18
+ super(ctx, _types.NodeType.Layer, props);
19
+ }
20
+
21
+ renderNode(ctx) {
22
+ const [layer, ...children] = this.children();
23
+
24
+ if (isLayer(layer)) {
25
+ const paint = layer.materialize();
26
+ ctx.canvas.saveLayer(paint);
27
+ }
28
+
29
+ children.map(child => {
30
+ if (child instanceof _RenderNode.JsiRenderNode) {
31
+ child.render(ctx);
32
+ }
33
+ });
34
+
35
+ if (isLayer(layer)) {
36
+ ctx.canvas.restore();
37
+ }
38
+ }
39
+
40
+ }
41
+
42
+ exports.LayerNode = LayerNode;
43
+ //# sourceMappingURL=LayerNode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["isLayer","node","JsiDeclarationNode","isPaint","LayerNode","JsiRenderNode","constructor","ctx","props","NodeType","Layer","renderNode","layer","children","paint","materialize","canvas","saveLayer","map","child","render","restore"],"sources":["LayerNode.ts"],"sourcesContent":["import type { DeclarationNode, DrawingContext, Node } from \"../types\";\nimport { NodeType } from \"../types\";\nimport type { ChildrenProps } from \"../types/Common\";\nimport type { SkPaint } from \"../../skia\";\n\nimport { JsiRenderNode } from \"./RenderNode\";\nimport type { NodeContext } from \"./Node\";\nimport { JsiDeclarationNode } from \"./Node\";\n\nconst isLayer = (\n node: Node<unknown>\n): node is DeclarationNode<unknown, SkPaint> =>\n node instanceof JsiDeclarationNode && node.isPaint();\n\nexport class LayerNode extends JsiRenderNode<ChildrenProps> {\n constructor(ctx: NodeContext, props: ChildrenProps) {\n super(ctx, NodeType.Layer, props);\n }\n\n renderNode(ctx: DrawingContext): void {\n const [layer, ...children] = this.children();\n if (isLayer(layer)) {\n const paint = layer.materialize() as SkPaint;\n ctx.canvas.saveLayer(paint);\n }\n children.map((child) => {\n if (child instanceof JsiRenderNode) {\n child.render(ctx);\n }\n });\n if (isLayer(layer)) {\n ctx.canvas.restore();\n }\n }\n}\n"],"mappings":";;;;;;;AACA;;AAIA;;AAEA;;AAEA,MAAMA,OAAO,GACXC,IADc,IAGdA,IAAI,YAAYC,wBAAhB,IAAsCD,IAAI,CAACE,OAAL,EAHxC;;AAKO,MAAMC,SAAN,SAAwBC,yBAAxB,CAAqD;EAC1DC,WAAW,CAACC,GAAD,EAAmBC,KAAnB,EAAyC;IAClD,MAAMD,GAAN,EAAWE,eAAA,CAASC,KAApB,EAA2BF,KAA3B;EACD;;EAEDG,UAAU,CAACJ,GAAD,EAA4B;IACpC,MAAM,CAACK,KAAD,EAAQ,GAAGC,QAAX,IAAuB,KAAKA,QAAL,EAA7B;;IACA,IAAIb,OAAO,CAACY,KAAD,CAAX,EAAoB;MAClB,MAAME,KAAK,GAAGF,KAAK,CAACG,WAAN,EAAd;MACAR,GAAG,CAACS,MAAJ,CAAWC,SAAX,CAAqBH,KAArB;IACD;;IACDD,QAAQ,CAACK,GAAT,CAAcC,KAAD,IAAW;MACtB,IAAIA,KAAK,YAAYd,yBAArB,EAAoC;QAClCc,KAAK,CAACC,MAAN,CAAab,GAAb;MACD;IACF,CAJD;;IAKA,IAAIP,OAAO,CAACY,KAAD,CAAX,EAAoB;MAClBL,GAAG,CAACS,MAAJ,CAAWK,OAAX;IACD;EACF;;AAnByD"}
@@ -193,7 +193,7 @@ class JsiRenderNode extends _Node.JsiNode {
193
193
  const {
194
194
  canvas
195
195
  } = parentCtx;
196
- const opacity = this.props.opacity ? parentCtx.opacity * this.props.opacity : parentCtx.opacity;
196
+ const opacity = this.props.opacity !== undefined ? parentCtx.opacity * this.props.opacity : parentCtx.opacity;
197
197
 
198
198
  if (this.paintCache === null || this.paintCache.parent !== parentCtx.paint) {
199
199
  const paintCtx = this.getPaintCtx();
@@ -1 +1 @@
1
- {"version":3,"names":["paintProps","JsiRenderNode","JsiNode","constructor","ctx","type","props","matrix","Skia","Matrix","onPropChange","setProps","paintCache","setProp","key","value","hasChanged","includes","identity","clipPath","undefined","clipRect","clipRRect","computeMatrix","computeClip","addChild","child","JsiDeclarationNode","setInvalidate","insertChildBefore","before","clip","isPathDef","processPath","isRRect","processTransformProps","getPaintCtx","color","strokeWidth","blendMode","style","strokeJoin","strokeCap","strokeMiter","opacity","antiAlias","Color","BlendMode","enumKey","PaintStyle","StrokeJoin","StrokeCap","_children","forEach","isColorFilter","cf","materialize","colorFilter","ColorFilter","MakeCompose","isShader","shader","isPathEffect","pe","pathEffect","PathEffect","isImageFilter","filter","imageFilter","ImageFilter","isMaskFilter","maskFilter","render","parentCtx","invertClip","layer","transform","canvas","parent","paint","paintCtx","concatPaint","hasTransform","hasClip","shouldSave","op","ClipOp","Difference","Intersect","saveLayer","isSkPaint","current","save","concat","renderNode","restore","obj","__typename__","alpha","copy","setShader","setColor","cl","getColor","setStrokeWidth","setAntiAlias","setBlendMode","setColorFilter","setImageFilter","setMaskFilter","setPathEffect","setAlphaf","setStrokeCap","setStrokeJoin","setStrokeMiter","setStyle"],"sources":["RenderNode.ts"],"sourcesContent":["import type { RefObject } from \"react\";\n\nimport type {\n SkMatrix,\n SkRect,\n SkRRect,\n SkPath,\n SkPaint,\n} from \"../../skia/types\";\nimport {\n StrokeCap,\n StrokeJoin,\n PaintStyle,\n BlendMode,\n ClipOp,\n isRRect,\n} from \"../../skia/types\";\nimport type {\n RenderNode,\n GroupProps,\n DrawingContext,\n NodeType,\n Node,\n DeclarationNode,\n} from \"../types\";\n\nimport { isPathDef, processPath, processTransformProps } from \"./datatypes\";\nimport type { NodeContext } from \"./Node\";\nimport { JsiNode, JsiDeclarationNode } from \"./Node\";\nimport type { PaintContext } from \"./PaintContext\";\nimport { enumKey } from \"./datatypes/Enum\";\n\nconst paintProps = [\n \"color\",\n \"strokeWidth\",\n \"blendMode\",\n \"strokeCap\",\n \"strokeJoin\",\n \"strokeMiter\",\n \"style\",\n \"antiAlias\",\n \"opacity\",\n];\n\ninterface PaintCache {\n parent: SkPaint;\n child: SkPaint;\n}\n\nexport abstract class JsiRenderNode<P extends GroupProps>\n extends JsiNode<P>\n implements RenderNode<P>\n{\n paintCache: PaintCache | null = null;\n matrix: SkMatrix;\n clipRect?: SkRect;\n clipRRect?: SkRRect;\n clipPath?: SkPath;\n\n constructor(ctx: NodeContext, type: NodeType, props: P) {\n super(ctx, type, props);\n this.matrix = this.Skia.Matrix();\n this.onPropChange();\n }\n\n setProps(props: P) {\n super.setProps(props);\n this.onPropChange();\n this.paintCache = null;\n }\n\n setProp<K extends keyof P>(key: K, value: P[K]) {\n const hasChanged = super.setProp(key, value);\n if (hasChanged) {\n this.onPropChange();\n if (paintProps.includes(key as string)) {\n this.paintCache = null;\n }\n }\n return hasChanged;\n }\n\n protected onPropChange() {\n this.matrix.identity();\n this.clipPath = undefined;\n this.clipRect = undefined;\n this.clipRRect = undefined;\n this.computeMatrix();\n this.computeClip();\n }\n\n addChild(child: Node<unknown>) {\n if (child instanceof JsiDeclarationNode) {\n child.setInvalidate(() => (this.paintCache = null));\n }\n super.addChild(child);\n }\n\n insertChildBefore(child: Node<unknown>, before: Node<unknown>) {\n if (child instanceof JsiDeclarationNode) {\n child.setInvalidate(() => (this.paintCache = null));\n }\n super.insertChildBefore(child, before);\n }\n\n private computeClip() {\n const { clip } = this.props;\n if (clip) {\n if (isPathDef(clip)) {\n this.clipPath = processPath(this.Skia, clip);\n } else if (isRRect(clip)) {\n this.clipRRect = clip;\n } else {\n this.clipRect = clip;\n }\n }\n }\n\n private computeMatrix() {\n processTransformProps(this.matrix, this.props);\n }\n\n private getPaintCtx() {\n let ctx: PaintContext | undefined;\n const {\n color,\n strokeWidth,\n blendMode,\n style,\n strokeJoin,\n strokeCap,\n strokeMiter,\n opacity,\n antiAlias,\n } = this.props;\n if (\n color !== undefined ||\n strokeWidth !== undefined ||\n blendMode !== undefined ||\n style !== undefined ||\n strokeJoin !== undefined ||\n strokeCap !== undefined ||\n strokeMiter !== undefined ||\n opacity !== undefined ||\n antiAlias !== undefined\n ) {\n ctx = {};\n if (color !== undefined) {\n ctx.color = this.Skia.Color(color);\n }\n if (strokeWidth !== undefined) {\n ctx.strokeWidth = strokeWidth;\n }\n if (blendMode !== undefined) {\n ctx.blendMode = BlendMode[enumKey(blendMode)];\n }\n if (style !== undefined) {\n ctx.style = PaintStyle[enumKey(style)];\n }\n if (strokeJoin !== undefined) {\n ctx.strokeJoin = StrokeJoin[enumKey(strokeJoin)];\n }\n if (strokeCap !== undefined) {\n ctx.strokeCap = StrokeCap[enumKey(strokeCap)];\n }\n if (strokeMiter !== undefined) {\n ctx.strokeMiter = strokeMiter;\n }\n if (opacity !== undefined) {\n ctx.opacity = opacity;\n }\n if (antiAlias !== undefined) {\n ctx.antiAlias = antiAlias;\n }\n }\n this._children.forEach((child) => {\n if (child instanceof JsiDeclarationNode) {\n if (child.isColorFilter()) {\n ctx = ctx || {};\n const cf = child.materialize();\n ctx.colorFilter = ctx.colorFilter\n ? this.Skia.ColorFilter.MakeCompose(cf, ctx.colorFilter)\n : cf;\n } else if (child.isShader()) {\n ctx = ctx || {};\n const shader = child.materialize();\n ctx.shader = shader;\n } else if (child.isPathEffect()) {\n ctx = ctx || {};\n const pe = child.materialize();\n ctx.pathEffect = ctx.pathEffect\n ? this.Skia.PathEffect.MakeCompose(pe, ctx.pathEffect)\n : pe;\n } else if (child.isImageFilter()) {\n ctx = ctx || {};\n const filter = child.materialize();\n ctx.imageFilter = ctx.imageFilter\n ? this.Skia.ImageFilter.MakeCompose(filter, ctx.imageFilter)\n : filter;\n } else if (child.isMaskFilter()) {\n ctx = ctx || {};\n const filter = child.materialize();\n ctx.maskFilter = filter;\n }\n }\n });\n return ctx;\n }\n\n render(parentCtx: DrawingContext) {\n const { invertClip, layer, matrix, transform } = this.props;\n const { canvas } = parentCtx;\n\n const opacity = this.props.opacity\n ? parentCtx.opacity * this.props.opacity\n : parentCtx.opacity;\n\n if (\n this.paintCache === null ||\n this.paintCache.parent !== parentCtx.paint\n ) {\n const paintCtx = this.getPaintCtx();\n const child = paintCtx\n ? concatPaint(parentCtx.paint, paintCtx, parentCtx.opacity)\n : parentCtx.paint;\n this.paintCache = { parent: parentCtx.paint, child };\n }\n const paint = this.paintCache.child;\n // TODO: can we only recreate a new context here if needed?\n const ctx = { ...parentCtx, opacity, paint };\n const hasTransform = matrix !== undefined || transform !== undefined;\n const hasClip =\n this.clipRect !== undefined ||\n this.clipPath !== undefined ||\n this.clipRRect !== undefined;\n const shouldSave = hasTransform || hasClip || !!layer;\n const op = invertClip ? ClipOp.Difference : ClipOp.Intersect;\n\n if (shouldSave) {\n if (layer) {\n if (typeof layer === \"boolean\") {\n canvas.saveLayer();\n } else if (isSkPaint(layer)) {\n canvas.saveLayer(layer);\n } else {\n canvas.saveLayer(\n layer.current ? layer.current.materialize() : undefined\n );\n }\n } else {\n canvas.save();\n }\n }\n\n if (this.matrix) {\n canvas.concat(this.matrix);\n }\n if (this.clipRect) {\n canvas.clipRect(this.clipRect, op, true);\n } else if (this.clipRRect) {\n canvas.clipRRect(this.clipRRect, op, true);\n } else if (this.clipPath) {\n canvas.clipPath(this.clipPath, op, true);\n }\n\n this.renderNode(ctx);\n\n if (shouldSave) {\n canvas.restore();\n }\n }\n\n abstract renderNode(ctx: DrawingContext): void;\n}\n\nexport const isSkPaint = (\n obj: RefObject<DeclarationNode<unknown, SkPaint>> | SkPaint\n): obj is SkPaint => \"__typename__\" in obj && obj.__typename__ === \"Paint\";\n\nconst concatPaint = (\n parent: SkPaint,\n {\n color,\n strokeWidth,\n shader,\n antiAlias,\n blendMode,\n colorFilter,\n imageFilter,\n maskFilter,\n pathEffect,\n opacity: alpha,\n strokeCap,\n strokeJoin,\n strokeMiter,\n style,\n }: PaintContext,\n opacity: number\n) => {\n const paint = parent.copy();\n if (color !== undefined) {\n paint.setShader(null);\n color[3] *= opacity;\n paint.setColor(color);\n } else {\n const cl = paint.getColor();\n cl[3] *= opacity;\n paint.setColor(cl);\n }\n if (strokeWidth !== undefined) {\n paint.setStrokeWidth(strokeWidth);\n }\n if (shader !== undefined) {\n paint.setShader(shader);\n }\n if (antiAlias !== undefined) {\n paint.setAntiAlias(antiAlias);\n }\n if (blendMode !== undefined) {\n paint.setBlendMode(blendMode);\n }\n if (colorFilter !== undefined) {\n paint.setColorFilter(colorFilter);\n }\n if (imageFilter !== undefined) {\n paint.setImageFilter(imageFilter);\n }\n if (maskFilter !== undefined) {\n paint.setMaskFilter(maskFilter);\n }\n if (pathEffect !== undefined) {\n paint.setPathEffect(pathEffect);\n }\n if (alpha !== undefined) {\n paint.setAlphaf(alpha * opacity);\n }\n if (strokeCap !== undefined) {\n paint.setStrokeCap(strokeCap);\n }\n if (strokeJoin !== undefined) {\n paint.setStrokeJoin(strokeJoin);\n }\n if (strokeMiter !== undefined) {\n paint.setStrokeMiter(strokeMiter);\n }\n if (style !== undefined) {\n paint.setStyle(style);\n }\n return paint;\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["paintProps","JsiRenderNode","JsiNode","constructor","ctx","type","props","matrix","Skia","Matrix","onPropChange","setProps","paintCache","setProp","key","value","hasChanged","includes","identity","clipPath","undefined","clipRect","clipRRect","computeMatrix","computeClip","addChild","child","JsiDeclarationNode","setInvalidate","insertChildBefore","before","clip","isPathDef","processPath","isRRect","processTransformProps","getPaintCtx","color","strokeWidth","blendMode","style","strokeJoin","strokeCap","strokeMiter","opacity","antiAlias","Color","BlendMode","enumKey","PaintStyle","StrokeJoin","StrokeCap","_children","forEach","isColorFilter","cf","materialize","colorFilter","ColorFilter","MakeCompose","isShader","shader","isPathEffect","pe","pathEffect","PathEffect","isImageFilter","filter","imageFilter","ImageFilter","isMaskFilter","maskFilter","render","parentCtx","invertClip","layer","transform","canvas","parent","paint","paintCtx","concatPaint","hasTransform","hasClip","shouldSave","op","ClipOp","Difference","Intersect","saveLayer","isSkPaint","current","save","concat","renderNode","restore","obj","__typename__","alpha","copy","setShader","setColor","cl","getColor","setStrokeWidth","setAntiAlias","setBlendMode","setColorFilter","setImageFilter","setMaskFilter","setPathEffect","setAlphaf","setStrokeCap","setStrokeJoin","setStrokeMiter","setStyle"],"sources":["RenderNode.ts"],"sourcesContent":["import type { RefObject } from \"react\";\n\nimport type {\n SkMatrix,\n SkRect,\n SkRRect,\n SkPath,\n SkPaint,\n} from \"../../skia/types\";\nimport {\n StrokeCap,\n StrokeJoin,\n PaintStyle,\n BlendMode,\n ClipOp,\n isRRect,\n} from \"../../skia/types\";\nimport type {\n RenderNode,\n GroupProps,\n DrawingContext,\n NodeType,\n Node,\n DeclarationNode,\n} from \"../types\";\n\nimport { isPathDef, processPath, processTransformProps } from \"./datatypes\";\nimport type { NodeContext } from \"./Node\";\nimport { JsiNode, JsiDeclarationNode } from \"./Node\";\nimport type { PaintContext } from \"./PaintContext\";\nimport { enumKey } from \"./datatypes/Enum\";\n\nconst paintProps = [\n \"color\",\n \"strokeWidth\",\n \"blendMode\",\n \"strokeCap\",\n \"strokeJoin\",\n \"strokeMiter\",\n \"style\",\n \"antiAlias\",\n \"opacity\",\n];\n\ninterface PaintCache {\n parent: SkPaint;\n child: SkPaint;\n}\n\nexport abstract class JsiRenderNode<P extends GroupProps>\n extends JsiNode<P>\n implements RenderNode<P>\n{\n paintCache: PaintCache | null = null;\n matrix: SkMatrix;\n clipRect?: SkRect;\n clipRRect?: SkRRect;\n clipPath?: SkPath;\n\n constructor(ctx: NodeContext, type: NodeType, props: P) {\n super(ctx, type, props);\n this.matrix = this.Skia.Matrix();\n this.onPropChange();\n }\n\n setProps(props: P) {\n super.setProps(props);\n this.onPropChange();\n this.paintCache = null;\n }\n\n setProp<K extends keyof P>(key: K, value: P[K]) {\n const hasChanged = super.setProp(key, value);\n if (hasChanged) {\n this.onPropChange();\n if (paintProps.includes(key as string)) {\n this.paintCache = null;\n }\n }\n return hasChanged;\n }\n\n protected onPropChange() {\n this.matrix.identity();\n this.clipPath = undefined;\n this.clipRect = undefined;\n this.clipRRect = undefined;\n this.computeMatrix();\n this.computeClip();\n }\n\n addChild(child: Node<unknown>) {\n if (child instanceof JsiDeclarationNode) {\n child.setInvalidate(() => (this.paintCache = null));\n }\n super.addChild(child);\n }\n\n insertChildBefore(child: Node<unknown>, before: Node<unknown>) {\n if (child instanceof JsiDeclarationNode) {\n child.setInvalidate(() => (this.paintCache = null));\n }\n super.insertChildBefore(child, before);\n }\n\n private computeClip() {\n const { clip } = this.props;\n if (clip) {\n if (isPathDef(clip)) {\n this.clipPath = processPath(this.Skia, clip);\n } else if (isRRect(clip)) {\n this.clipRRect = clip;\n } else {\n this.clipRect = clip;\n }\n }\n }\n\n private computeMatrix() {\n processTransformProps(this.matrix, this.props);\n }\n\n private getPaintCtx() {\n let ctx: PaintContext | undefined;\n const {\n color,\n strokeWidth,\n blendMode,\n style,\n strokeJoin,\n strokeCap,\n strokeMiter,\n opacity,\n antiAlias,\n } = this.props;\n if (\n color !== undefined ||\n strokeWidth !== undefined ||\n blendMode !== undefined ||\n style !== undefined ||\n strokeJoin !== undefined ||\n strokeCap !== undefined ||\n strokeMiter !== undefined ||\n opacity !== undefined ||\n antiAlias !== undefined\n ) {\n ctx = {};\n if (color !== undefined) {\n ctx.color = this.Skia.Color(color);\n }\n if (strokeWidth !== undefined) {\n ctx.strokeWidth = strokeWidth;\n }\n if (blendMode !== undefined) {\n ctx.blendMode = BlendMode[enumKey(blendMode)];\n }\n if (style !== undefined) {\n ctx.style = PaintStyle[enumKey(style)];\n }\n if (strokeJoin !== undefined) {\n ctx.strokeJoin = StrokeJoin[enumKey(strokeJoin)];\n }\n if (strokeCap !== undefined) {\n ctx.strokeCap = StrokeCap[enumKey(strokeCap)];\n }\n if (strokeMiter !== undefined) {\n ctx.strokeMiter = strokeMiter;\n }\n if (opacity !== undefined) {\n ctx.opacity = opacity;\n }\n if (antiAlias !== undefined) {\n ctx.antiAlias = antiAlias;\n }\n }\n this._children.forEach((child) => {\n if (child instanceof JsiDeclarationNode) {\n if (child.isColorFilter()) {\n ctx = ctx || {};\n const cf = child.materialize();\n ctx.colorFilter = ctx.colorFilter\n ? this.Skia.ColorFilter.MakeCompose(cf, ctx.colorFilter)\n : cf;\n } else if (child.isShader()) {\n ctx = ctx || {};\n const shader = child.materialize();\n ctx.shader = shader;\n } else if (child.isPathEffect()) {\n ctx = ctx || {};\n const pe = child.materialize();\n ctx.pathEffect = ctx.pathEffect\n ? this.Skia.PathEffect.MakeCompose(pe, ctx.pathEffect)\n : pe;\n } else if (child.isImageFilter()) {\n ctx = ctx || {};\n const filter = child.materialize();\n ctx.imageFilter = ctx.imageFilter\n ? this.Skia.ImageFilter.MakeCompose(filter, ctx.imageFilter)\n : filter;\n } else if (child.isMaskFilter()) {\n ctx = ctx || {};\n const filter = child.materialize();\n ctx.maskFilter = filter;\n }\n }\n });\n return ctx;\n }\n\n render(parentCtx: DrawingContext) {\n const { invertClip, layer, matrix, transform } = this.props;\n const { canvas } = parentCtx;\n\n const opacity =\n this.props.opacity !== undefined\n ? parentCtx.opacity * this.props.opacity\n : parentCtx.opacity;\n\n if (\n this.paintCache === null ||\n this.paintCache.parent !== parentCtx.paint\n ) {\n const paintCtx = this.getPaintCtx();\n const child = paintCtx\n ? concatPaint(parentCtx.paint, paintCtx, parentCtx.opacity)\n : parentCtx.paint;\n this.paintCache = { parent: parentCtx.paint, child };\n }\n const paint = this.paintCache.child;\n // TODO: can we only recreate a new context here if needed?\n const ctx = { ...parentCtx, opacity, paint };\n const hasTransform = matrix !== undefined || transform !== undefined;\n const hasClip =\n this.clipRect !== undefined ||\n this.clipPath !== undefined ||\n this.clipRRect !== undefined;\n const shouldSave = hasTransform || hasClip || !!layer;\n const op = invertClip ? ClipOp.Difference : ClipOp.Intersect;\n\n if (shouldSave) {\n if (layer) {\n if (typeof layer === \"boolean\") {\n canvas.saveLayer();\n } else if (isSkPaint(layer)) {\n canvas.saveLayer(layer);\n } else {\n canvas.saveLayer(\n layer.current ? layer.current.materialize() : undefined\n );\n }\n } else {\n canvas.save();\n }\n }\n\n if (this.matrix) {\n canvas.concat(this.matrix);\n }\n if (this.clipRect) {\n canvas.clipRect(this.clipRect, op, true);\n } else if (this.clipRRect) {\n canvas.clipRRect(this.clipRRect, op, true);\n } else if (this.clipPath) {\n canvas.clipPath(this.clipPath, op, true);\n }\n\n this.renderNode(ctx);\n\n if (shouldSave) {\n canvas.restore();\n }\n }\n\n abstract renderNode(ctx: DrawingContext): void;\n}\n\nexport const isSkPaint = (\n obj: RefObject<DeclarationNode<unknown, SkPaint>> | SkPaint\n): obj is SkPaint => \"__typename__\" in obj && obj.__typename__ === \"Paint\";\n\nconst concatPaint = (\n parent: SkPaint,\n {\n color,\n strokeWidth,\n shader,\n antiAlias,\n blendMode,\n colorFilter,\n imageFilter,\n maskFilter,\n pathEffect,\n opacity: alpha,\n strokeCap,\n strokeJoin,\n strokeMiter,\n style,\n }: PaintContext,\n opacity: number\n) => {\n const paint = parent.copy();\n if (color !== undefined) {\n paint.setShader(null);\n color[3] *= opacity;\n paint.setColor(color);\n } else {\n const cl = paint.getColor();\n cl[3] *= opacity;\n paint.setColor(cl);\n }\n if (strokeWidth !== undefined) {\n paint.setStrokeWidth(strokeWidth);\n }\n if (shader !== undefined) {\n paint.setShader(shader);\n }\n if (antiAlias !== undefined) {\n paint.setAntiAlias(antiAlias);\n }\n if (blendMode !== undefined) {\n paint.setBlendMode(blendMode);\n }\n if (colorFilter !== undefined) {\n paint.setColorFilter(colorFilter);\n }\n if (imageFilter !== undefined) {\n paint.setImageFilter(imageFilter);\n }\n if (maskFilter !== undefined) {\n paint.setMaskFilter(maskFilter);\n }\n if (pathEffect !== undefined) {\n paint.setPathEffect(pathEffect);\n }\n if (alpha !== undefined) {\n paint.setAlphaf(alpha * opacity);\n }\n if (strokeCap !== undefined) {\n paint.setStrokeCap(strokeCap);\n }\n if (strokeJoin !== undefined) {\n paint.setStrokeJoin(strokeJoin);\n }\n if (strokeMiter !== undefined) {\n paint.setStrokeMiter(strokeMiter);\n }\n if (style !== undefined) {\n paint.setStyle(style);\n }\n return paint;\n};\n"],"mappings":"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"}