@shopify/react-native-skia 1.11.1 → 1.11.2

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 (265) hide show
  1. package/android/CMakeLists.txt +0 -8
  2. package/android/cpp/jni/JniLoad.cpp +0 -2
  3. package/android/src/main/java/com/shopify/reactnative/skia/RNSkiaPackage.java +1 -1
  4. package/android/src/paper/java/com/facebook/react/viewmanagers/SkiaPictureViewManagerDelegate.java +4 -2
  5. package/cpp/jsi/ViewProperty.h +5 -16
  6. package/cpp/rnskia/RNSkManager.cpp +1 -7
  7. package/lib/commonjs/dom/nodes/index.d.ts +0 -1
  8. package/lib/commonjs/dom/nodes/index.js +0 -11
  9. package/lib/commonjs/dom/nodes/index.js.map +1 -1
  10. package/lib/commonjs/external/reanimated/renderHelpers.d.ts +0 -6
  11. package/lib/commonjs/external/reanimated/renderHelpers.js +0 -73
  12. package/lib/commonjs/external/reanimated/renderHelpers.js.map +1 -1
  13. package/lib/commonjs/index.d.ts +0 -1
  14. package/lib/commonjs/index.js +0 -12
  15. package/lib/commonjs/index.js.map +1 -1
  16. package/lib/commonjs/renderer/Canvas.d.ts +10 -1
  17. package/lib/commonjs/renderer/Canvas.js +3 -1
  18. package/lib/commonjs/renderer/Canvas.js.map +1 -1
  19. package/lib/commonjs/sksg/Container.d.ts +2 -0
  20. package/lib/commonjs/sksg/Container.js +10 -0
  21. package/lib/commonjs/sksg/Container.js.map +1 -1
  22. package/lib/commonjs/sksg/Elements.d.ts +65 -0
  23. package/lib/commonjs/sksg/Elements.js +6 -0
  24. package/lib/commonjs/sksg/Elements.js.map +1 -0
  25. package/lib/commonjs/sksg/Reconciler.d.ts +1 -0
  26. package/lib/commonjs/sksg/Reconciler.js +2 -0
  27. package/lib/commonjs/sksg/Reconciler.js.map +1 -1
  28. package/lib/commonjs/views/index.d.ts +0 -1
  29. package/lib/commonjs/views/index.js +0 -11
  30. package/lib/commonjs/views/index.js.map +1 -1
  31. package/lib/module/dom/nodes/index.d.ts +0 -1
  32. package/lib/module/dom/nodes/index.js +0 -1
  33. package/lib/module/dom/nodes/index.js.map +1 -1
  34. package/lib/module/external/reanimated/renderHelpers.d.ts +0 -6
  35. package/lib/module/external/reanimated/renderHelpers.js +0 -68
  36. package/lib/module/external/reanimated/renderHelpers.js.map +1 -1
  37. package/lib/module/index.d.ts +0 -1
  38. package/lib/module/index.js +0 -1
  39. package/lib/module/index.js.map +1 -1
  40. package/lib/module/renderer/Canvas.d.ts +10 -1
  41. package/lib/module/renderer/Canvas.js +1 -0
  42. package/lib/module/renderer/Canvas.js.map +1 -1
  43. package/lib/module/sksg/Container.d.ts +2 -0
  44. package/lib/module/sksg/Container.js +10 -0
  45. package/lib/module/sksg/Container.js.map +1 -1
  46. package/lib/module/sksg/Elements.d.ts +65 -0
  47. package/lib/module/sksg/Elements.js +2 -0
  48. package/lib/module/sksg/Elements.js.map +1 -0
  49. package/lib/module/sksg/Reconciler.d.ts +1 -0
  50. package/lib/module/sksg/Reconciler.js +2 -0
  51. package/lib/module/sksg/Reconciler.js.map +1 -1
  52. package/lib/module/views/index.d.ts +0 -1
  53. package/lib/module/views/index.js +0 -1
  54. package/lib/module/views/index.js.map +1 -1
  55. package/lib/typescript/lib/commonjs/external/reanimated/renderHelpers.d.ts +0 -3
  56. package/lib/typescript/lib/commonjs/renderer/Canvas.d.ts +1 -0
  57. package/lib/typescript/lib/commonjs/sksg/Container.d.ts +2 -0
  58. package/lib/typescript/lib/commonjs/sksg/Elements.d.ts +1 -0
  59. package/lib/typescript/lib/commonjs/sksg/Reconciler.d.ts +6 -0
  60. package/lib/typescript/lib/module/dom/nodes/index.d.ts +0 -1
  61. package/lib/typescript/lib/module/external/reanimated/renderHelpers.d.ts +0 -3
  62. package/lib/typescript/lib/module/index.d.ts +0 -1
  63. package/lib/typescript/lib/module/mock/index.d.ts +0 -1
  64. package/lib/typescript/lib/module/renderer/Canvas.d.ts +1 -0
  65. package/lib/typescript/lib/module/sksg/Container.d.ts +2 -0
  66. package/lib/typescript/lib/module/sksg/Elements.d.ts +1 -0
  67. package/lib/typescript/lib/module/sksg/Reconciler.d.ts +6 -0
  68. package/lib/typescript/lib/module/views/index.d.ts +0 -1
  69. package/lib/typescript/src/dom/nodes/index.d.ts +0 -1
  70. package/lib/typescript/src/external/reanimated/renderHelpers.d.ts +0 -6
  71. package/lib/typescript/src/index.d.ts +0 -1
  72. package/lib/typescript/src/renderer/Canvas.d.ts +10 -1
  73. package/lib/typescript/src/sksg/Container.d.ts +2 -0
  74. package/lib/typescript/src/sksg/Elements.d.ts +65 -0
  75. package/lib/typescript/src/sksg/Reconciler.d.ts +1 -0
  76. package/lib/typescript/src/views/index.d.ts +0 -1
  77. package/package.json +1 -1
  78. package/src/dom/nodes/index.ts +0 -1
  79. package/src/external/reanimated/renderHelpers.ts +1 -78
  80. package/src/index.ts +0 -1
  81. package/src/renderer/Canvas.tsx +11 -1
  82. package/src/sksg/Container.ts +11 -0
  83. package/src/sksg/Elements.tsx +136 -0
  84. package/src/sksg/Reconciler.ts +2 -0
  85. package/src/views/index.ts +0 -1
  86. package/android/cpp/jni/include/JniSkiaDomView.h +0 -82
  87. package/android/src/main/java/com/shopify/reactnative/skia/SkiaDomView.java +0 -41
  88. package/android/src/main/java/com/shopify/reactnative/skia/SkiaDomViewManager.java +0 -32
  89. package/android/src/paper/java/com/facebook/react/viewmanagers/SkiaDomViewManagerDelegate.java +0 -34
  90. package/android/src/paper/java/com/facebook/react/viewmanagers/SkiaDomViewManagerInterface.java +0 -18
  91. package/cpp/rnskia/RNSkDomView.cpp +0 -121
  92. package/cpp/rnskia/RNSkDomView.h +0 -97
  93. package/cpp/rnskia/dom/JsiDomApi.h +0 -165
  94. package/cpp/rnskia/dom/base/BaseNodeProp.h +0 -72
  95. package/cpp/rnskia/dom/base/ConcatablePaint.cpp +0 -117
  96. package/cpp/rnskia/dom/base/ConcatablePaint.h +0 -49
  97. package/cpp/rnskia/dom/base/Declaration.h +0 -86
  98. package/cpp/rnskia/dom/base/DeclarationContext.h +0 -79
  99. package/cpp/rnskia/dom/base/DerivedNodeProp.h +0 -203
  100. package/cpp/rnskia/dom/base/DrawingContext.cpp +0 -55
  101. package/cpp/rnskia/dom/base/DrawingContext.h +0 -104
  102. package/cpp/rnskia/dom/base/JsiDomDeclarationNode.h +0 -119
  103. package/cpp/rnskia/dom/base/JsiDomDrawingNode.h +0 -71
  104. package/cpp/rnskia/dom/base/JsiDomNode.h +0 -572
  105. package/cpp/rnskia/dom/base/JsiDomRenderNode.h +0 -262
  106. package/cpp/rnskia/dom/base/NodeProp.h +0 -139
  107. package/cpp/rnskia/dom/base/NodePropsContainer.h +0 -158
  108. package/cpp/rnskia/dom/nodes/JsiAtlasNode.h +0 -64
  109. package/cpp/rnskia/dom/nodes/JsiBackdropFilterNode.h +0 -49
  110. package/cpp/rnskia/dom/nodes/JsiBlendNode.h +0 -94
  111. package/cpp/rnskia/dom/nodes/JsiBlurMaskNode.h +0 -75
  112. package/cpp/rnskia/dom/nodes/JsiBoxNode.h +0 -94
  113. package/cpp/rnskia/dom/nodes/JsiBoxShadowNode.h +0 -33
  114. package/cpp/rnskia/dom/nodes/JsiCircleNode.h +0 -35
  115. package/cpp/rnskia/dom/nodes/JsiColorFilterNodes.h +0 -164
  116. package/cpp/rnskia/dom/nodes/JsiDiffRectNode.h +0 -37
  117. package/cpp/rnskia/dom/nodes/JsiFillNode.h +0 -22
  118. package/cpp/rnskia/dom/nodes/JsiGlyphsNode.h +0 -53
  119. package/cpp/rnskia/dom/nodes/JsiGroupNode.h +0 -25
  120. package/cpp/rnskia/dom/nodes/JsiImageFilterNodes.h +0 -361
  121. package/cpp/rnskia/dom/nodes/JsiImageNode.h +0 -43
  122. package/cpp/rnskia/dom/nodes/JsiImageSvgNode.h +0 -63
  123. package/cpp/rnskia/dom/nodes/JsiLayerNode.h +0 -74
  124. package/cpp/rnskia/dom/nodes/JsiLineNode.h +0 -38
  125. package/cpp/rnskia/dom/nodes/JsiOvalNode.h +0 -32
  126. package/cpp/rnskia/dom/nodes/JsiPaintNode.h +0 -119
  127. package/cpp/rnskia/dom/nodes/JsiParagraphNode.h +0 -62
  128. package/cpp/rnskia/dom/nodes/JsiPatchNode.h +0 -50
  129. package/cpp/rnskia/dom/nodes/JsiPathEffectNodes.h +0 -268
  130. package/cpp/rnskia/dom/nodes/JsiPathNode.h +0 -181
  131. package/cpp/rnskia/dom/nodes/JsiPictureNode.h +0 -31
  132. package/cpp/rnskia/dom/nodes/JsiPointsNode.h +0 -48
  133. package/cpp/rnskia/dom/nodes/JsiRRectNode.h +0 -33
  134. package/cpp/rnskia/dom/nodes/JsiRectNode.h +0 -33
  135. package/cpp/rnskia/dom/nodes/JsiShaderNodes.h +0 -434
  136. package/cpp/rnskia/dom/nodes/JsiTextBlobNode.h +0 -44
  137. package/cpp/rnskia/dom/nodes/JsiTextNode.h +0 -51
  138. package/cpp/rnskia/dom/nodes/JsiTextPathNode.h +0 -33
  139. package/cpp/rnskia/dom/nodes/JsiVerticesNode.h +0 -41
  140. package/cpp/rnskia/dom/props/BezierProps.h +0 -65
  141. package/cpp/rnskia/dom/props/BlendModeProp.h +0 -103
  142. package/cpp/rnskia/dom/props/BoxShadowProps.h +0 -62
  143. package/cpp/rnskia/dom/props/CircleProp.h +0 -49
  144. package/cpp/rnskia/dom/props/ClipProp.h +0 -57
  145. package/cpp/rnskia/dom/props/ColorProp.h +0 -96
  146. package/cpp/rnskia/dom/props/FontProp.h +0 -42
  147. package/cpp/rnskia/dom/props/GlyphsProp.h +0 -55
  148. package/cpp/rnskia/dom/props/LayerProp.h +0 -52
  149. package/cpp/rnskia/dom/props/MatrixProp.h +0 -54
  150. package/cpp/rnskia/dom/props/NumbersProp.h +0 -67
  151. package/cpp/rnskia/dom/props/PaintProps.h +0 -133
  152. package/cpp/rnskia/dom/props/ParagraphProp.h +0 -45
  153. package/cpp/rnskia/dom/props/PathProp.h +0 -59
  154. package/cpp/rnskia/dom/props/PictureProp.h +0 -40
  155. package/cpp/rnskia/dom/props/PointProp.h +0 -65
  156. package/cpp/rnskia/dom/props/PointsProp.h +0 -81
  157. package/cpp/rnskia/dom/props/RRectProp.h +0 -222
  158. package/cpp/rnskia/dom/props/RSXformProp.h +0 -52
  159. package/cpp/rnskia/dom/props/RadiusProp.h +0 -43
  160. package/cpp/rnskia/dom/props/RectProp.h +0 -164
  161. package/cpp/rnskia/dom/props/SamplingProp.h +0 -54
  162. package/cpp/rnskia/dom/props/SkImageProps.h +0 -196
  163. package/cpp/rnskia/dom/props/StrokeProps.h +0 -79
  164. package/cpp/rnskia/dom/props/SvgProp.h +0 -45
  165. package/cpp/rnskia/dom/props/TextBlobProp.h +0 -133
  166. package/cpp/rnskia/dom/props/TileModeProp.h +0 -52
  167. package/cpp/rnskia/dom/props/TransformProp.h +0 -147
  168. package/cpp/rnskia/dom/props/TransformsProps.h +0 -66
  169. package/cpp/rnskia/dom/props/UniformsProp.h +0 -159
  170. package/cpp/rnskia/dom/props/VertexModeProp.h +0 -49
  171. package/cpp/rnskia/dom/props/VerticesProps.h +0 -63
  172. package/ios/RNSkia-iOS/SkiaDomView.h +0 -7
  173. package/ios/RNSkia-iOS/SkiaDomView.mm +0 -63
  174. package/ios/RNSkia-iOS/SkiaDomViewManager.h +0 -8
  175. package/ios/RNSkia-iOS/SkiaDomViewManager.mm +0 -51
  176. package/lib/commonjs/dom/nodes/JsiSkDOM.d.ts +0 -64
  177. package/lib/commonjs/dom/nodes/JsiSkDOM.js +0 -196
  178. package/lib/commonjs/dom/nodes/JsiSkDOM.js.map +0 -1
  179. package/lib/commonjs/renderer/CanvasOld.d.ts +0 -11
  180. package/lib/commonjs/renderer/CanvasOld.js +0 -96
  181. package/lib/commonjs/renderer/CanvasOld.js.map +0 -1
  182. package/lib/commonjs/renderer/Container.d.ts +0 -10
  183. package/lib/commonjs/renderer/Container.js +0 -26
  184. package/lib/commonjs/renderer/Container.js.map +0 -1
  185. package/lib/commonjs/renderer/HostComponents.d.ts +0 -129
  186. package/lib/commonjs/renderer/HostComponents.js +0 -141
  187. package/lib/commonjs/renderer/HostComponents.js.map +0 -1
  188. package/lib/commonjs/renderer/HostConfig.d.ts +0 -18
  189. package/lib/commonjs/renderer/HostConfig.js +0 -157
  190. package/lib/commonjs/renderer/HostConfig.js.map +0 -1
  191. package/lib/commonjs/renderer/Reconciler.d.ts +0 -9
  192. package/lib/commonjs/renderer/Reconciler.js +0 -44
  193. package/lib/commonjs/renderer/Reconciler.js.map +0 -1
  194. package/lib/commonjs/specs/SkiaDomViewNativeComponent.d.ts +0 -6
  195. package/lib/commonjs/specs/SkiaDomViewNativeComponent.js +0 -11
  196. package/lib/commonjs/specs/SkiaDomViewNativeComponent.js.map +0 -1
  197. package/lib/commonjs/views/SkiaDomView.d.ts +0 -33
  198. package/lib/commonjs/views/SkiaDomView.js +0 -119
  199. package/lib/commonjs/views/SkiaDomView.js.map +0 -1
  200. package/lib/commonjs/views/SkiaDomView.web.d.ts +0 -0
  201. package/lib/commonjs/views/SkiaDomView.web.js +0 -2
  202. package/lib/commonjs/views/SkiaDomView.web.js.map +0 -1
  203. package/lib/module/dom/nodes/JsiSkDOM.d.ts +0 -64
  204. package/lib/module/dom/nodes/JsiSkDOM.js +0 -189
  205. package/lib/module/dom/nodes/JsiSkDOM.js.map +0 -1
  206. package/lib/module/renderer/CanvasOld.d.ts +0 -11
  207. package/lib/module/renderer/CanvasOld.js +0 -87
  208. package/lib/module/renderer/CanvasOld.js.map +0 -1
  209. package/lib/module/renderer/Container.d.ts +0 -10
  210. package/lib/module/renderer/Container.js +0 -19
  211. package/lib/module/renderer/Container.js.map +0 -1
  212. package/lib/module/renderer/HostComponents.d.ts +0 -129
  213. package/lib/module/renderer/HostComponents.js +0 -134
  214. package/lib/module/renderer/HostComponents.js.map +0 -1
  215. package/lib/module/renderer/HostConfig.d.ts +0 -18
  216. package/lib/module/renderer/HostConfig.js +0 -150
  217. package/lib/module/renderer/HostConfig.js.map +0 -1
  218. package/lib/module/renderer/Reconciler.d.ts +0 -9
  219. package/lib/module/renderer/Reconciler.js +0 -36
  220. package/lib/module/renderer/Reconciler.js.map +0 -1
  221. package/lib/module/specs/SkiaDomViewNativeComponent.d.ts +0 -6
  222. package/lib/module/specs/SkiaDomViewNativeComponent.js +0 -4
  223. package/lib/module/specs/SkiaDomViewNativeComponent.js.map +0 -1
  224. package/lib/module/views/SkiaDomView.d.ts +0 -33
  225. package/lib/module/views/SkiaDomView.js +0 -111
  226. package/lib/module/views/SkiaDomView.js.map +0 -1
  227. package/lib/module/views/SkiaDomView.web.d.ts +0 -0
  228. package/lib/module/views/SkiaDomView.web.js +0 -2
  229. package/lib/module/views/SkiaDomView.web.js.map +0 -1
  230. package/lib/typescript/lib/commonjs/dom/nodes/JsiSkDOM.d.ts +0 -60
  231. package/lib/typescript/lib/commonjs/renderer/CanvasOld.d.ts +0 -3
  232. package/lib/typescript/lib/commonjs/renderer/Container.d.ts +0 -9
  233. package/lib/typescript/lib/commonjs/renderer/HostComponents.d.ts +0 -2
  234. package/lib/typescript/lib/commonjs/renderer/HostConfig.d.ts +0 -40
  235. package/lib/typescript/lib/commonjs/renderer/Reconciler.d.ts +0 -10
  236. package/lib/typescript/lib/commonjs/specs/SkiaDomViewNativeComponent.d.ts +0 -3
  237. package/lib/typescript/lib/commonjs/views/SkiaDomView.d.ts +0 -30
  238. package/lib/typescript/lib/commonjs/views/SkiaDomView.web.d.ts +0 -0
  239. package/lib/typescript/lib/module/dom/nodes/JsiSkDOM.d.ts +0 -59
  240. package/lib/typescript/lib/module/renderer/CanvasOld.d.ts +0 -3
  241. package/lib/typescript/lib/module/renderer/Container.d.ts +0 -9
  242. package/lib/typescript/lib/module/renderer/HostComponents.d.ts +0 -1
  243. package/lib/typescript/lib/module/renderer/HostConfig.d.ts +0 -39
  244. package/lib/typescript/lib/module/renderer/Reconciler.d.ts +0 -9
  245. package/lib/typescript/lib/module/specs/SkiaDomViewNativeComponent.d.ts +0 -2
  246. package/lib/typescript/lib/module/views/SkiaDomView.d.ts +0 -27
  247. package/lib/typescript/lib/module/views/SkiaDomView.web.d.ts +0 -0
  248. package/lib/typescript/src/dom/nodes/JsiSkDOM.d.ts +0 -64
  249. package/lib/typescript/src/renderer/CanvasOld.d.ts +0 -11
  250. package/lib/typescript/src/renderer/Container.d.ts +0 -10
  251. package/lib/typescript/src/renderer/HostComponents.d.ts +0 -129
  252. package/lib/typescript/src/renderer/HostConfig.d.ts +0 -18
  253. package/lib/typescript/src/renderer/Reconciler.d.ts +0 -9
  254. package/lib/typescript/src/specs/SkiaDomViewNativeComponent.d.ts +0 -6
  255. package/lib/typescript/src/views/SkiaDomView.d.ts +0 -33
  256. package/lib/typescript/src/views/SkiaDomView.web.d.ts +0 -0
  257. package/src/dom/nodes/JsiSkDOM.ts +0 -298
  258. package/src/renderer/CanvasOld.tsx +0 -126
  259. package/src/renderer/Container.tsx +0 -19
  260. package/src/renderer/HostComponents.ts +0 -399
  261. package/src/renderer/HostConfig.ts +0 -258
  262. package/src/renderer/Reconciler.tsx +0 -54
  263. package/src/specs/SkiaDomViewNativeComponent.ts +0 -9
  264. package/src/views/SkiaDomView.tsx +0 -124
  265. package/src/views/SkiaDomView.web.tsx +0 -0
@@ -1,262 +0,0 @@
1
-
2
- #pragma once
3
-
4
- #include "ClipProp.h"
5
- #include "DrawingContext.h"
6
- #include "JsiDomDeclarationNode.h"
7
- #include "JsiDomNode.h"
8
- #include "LayerProp.h"
9
- #include "MatrixProp.h"
10
- #include "PaintProps.h"
11
- #include "PointProp.h"
12
- #include "RRectProp.h"
13
- #include "RectProp.h"
14
- #include "TransformProp.h"
15
-
16
- #include <memory>
17
- #include <string>
18
- #include <vector>
19
-
20
- namespace RNSkia {
21
-
22
- class JsiDomRenderNode : public JsiDomNode {
23
- public:
24
- JsiDomRenderNode(std::shared_ptr<RNSkPlatformContext> context,
25
- const char *type)
26
- : JsiDomNode(context, type, NodeClass::RenderNode) {}
27
-
28
- void render(DrawingContext *context) {
29
- #if SKIA_DOM_DEBUG
30
- printDebugInfo("Begin Render");
31
- #endif
32
-
33
- auto parentPaint = context->getPaint();
34
- auto cache =
35
- _paintCache.parent == parentPaint ? _paintCache.child : nullptr;
36
-
37
- auto shouldRestore =
38
- context->saveAndConcat(_paintProps, getChildren(), cache);
39
-
40
- auto shouldTransform = _matrixProp->isSet() || _transformProp->isSet();
41
- auto shouldSave =
42
- shouldTransform || _clipProp->isSet() || _layerProp->isSet();
43
-
44
- // Handle matrix/transforms
45
- if (shouldSave) {
46
- // Save canvas state
47
- if (_layerProp->isSet()) {
48
- if (_layerProp->isBool()) {
49
- #if SKIA_DOM_DEBUG_VERBOSE
50
- printDebugInfo("canvas->saveLayer()");
51
- #endif
52
- context->getCanvas()->saveLayer(
53
- SkCanvas::SaveLayerRec(nullptr, nullptr, nullptr, 0));
54
- } else {
55
- #if SKIA_DOM_DEBUG_VERBOSE
56
- printDebugInfo("canvas->saveLayer(paint)");
57
- #endif
58
- context->getCanvas()->saveLayer(SkCanvas::SaveLayerRec(
59
- nullptr, _layerProp->getDerivedValue().get(), nullptr, 0));
60
- }
61
- } else {
62
- #if SKIA_DOM_DEBUG_VERBOSE
63
- printDebugInfo("canvas->save()");
64
- #endif
65
- context->getCanvas()->save();
66
- }
67
-
68
- if (_originProp->isSet()) {
69
- #if SKIA_DOM_DEBUG_VERBOSE
70
- printDebugInfo("canvas->translate(origin)");
71
- #endif
72
- // Handle origin
73
- context->getCanvas()->translate(_originProp->getDerivedValue()->x(),
74
- _originProp->getDerivedValue()->y());
75
- }
76
-
77
- if (shouldTransform) {
78
- #if SKIA_DOM_DEBUG_VERBOSE
79
- printDebugInfo(
80
- "canvas->concat(" +
81
- std::string(_matrixProp->isSet() ? "matrix" : "transform") +
82
- std::string(")"));
83
- #endif
84
- auto matrix = _matrixProp->isSet() ? _matrixProp->getDerivedValue()
85
- : _transformProp->getDerivedValue();
86
-
87
- // Concat canvas' matrix with our matrix
88
- context->getCanvas()->concat(*matrix);
89
- }
90
-
91
- // Clipping
92
- if (_clipProp->isSet()) {
93
- auto invert = _invertClip->isSet() && _invertClip->value().getAsBool();
94
- clip(context, context->getCanvas(), invert);
95
- }
96
-
97
- if (_originProp->isSet()) {
98
- #if SKIA_DOM_DEBUG_VERBOSE
99
- printDebugInfo("canvas->translate(-origin)");
100
- #endif
101
- // Handle origin
102
- context->getCanvas()->translate(-_originProp->getDerivedValue()->x(),
103
- -_originProp->getDerivedValue()->y());
104
- }
105
- }
106
-
107
- // Render the node
108
- renderNode(context);
109
-
110
- // Restore if needed
111
- if (shouldSave) {
112
- #if SKIA_DOM_DEBUG_VERBOSE
113
- printDebugInfo("canvas->restore()");
114
- #endif
115
- context->getCanvas()->restore();
116
- }
117
-
118
- if (shouldRestore) {
119
- _paintCache.parent = parentPaint;
120
- _paintCache.child = context->getPaint();
121
- context->restore();
122
- }
123
-
124
- #if SKIA_DOM_DEBUG
125
- printDebugInfo("End Render");
126
- #endif
127
- }
128
-
129
- /**
130
- Override reset (last thing that happens in the render cycle) to also reset
131
- the changed flag on the local drawing context if necessary.
132
- */
133
- void resetPendingChanges() override { JsiDomNode::resetPendingChanges(); }
134
-
135
- /**
136
- Overridden dispose to release resources
137
- */
138
- void dispose(bool immediate) override {
139
- JsiDomNode::dispose(immediate);
140
- _paintCache.clear();
141
- }
142
-
143
- protected:
144
- /**
145
- Invalidates and marks then context as changed.
146
- */
147
- void invalidateContext() override {
148
- enqueAsynOperation([weakSelf = weak_from_this()]() {
149
- auto self = weakSelf.lock();
150
- if (self) {
151
- std::static_pointer_cast<JsiDomRenderNode>(self)->_paintCache.parent =
152
- nullptr;
153
- std::static_pointer_cast<JsiDomRenderNode>(self)->_paintCache.child =
154
- nullptr;
155
- }
156
- });
157
- }
158
-
159
- /**
160
- Override to implement rendering where the current state of the drawing
161
- context is correctly set.
162
- */
163
- virtual void renderNode(DrawingContext *context) = 0;
164
-
165
- /**
166
- Define common properties for all render nodes
167
- */
168
- void defineProperties(NodePropsContainer *container) override {
169
- JsiDomNode::defineProperties(container);
170
-
171
- _paintProps = container->defineProperty<PaintProps>();
172
-
173
- _matrixProp = container->defineProperty<MatrixProp>("matrix");
174
- _transformProp = container->defineProperty<TransformProp>("transform");
175
- _originProp = container->defineProperty<PointProp>("origin");
176
- _clipProp = container->defineProperty<ClipProp>("clip");
177
- _invertClip = container->defineProperty<NodeProp>("invertClip");
178
- _layerProp = container->defineProperty<LayerProp>("layer");
179
- }
180
-
181
- /**
182
- Validates that only declaration nodes can be children
183
- */
184
- void addChild(std::shared_ptr<JsiDomNode> child) override {
185
- JsiDomNode::addChild(child);
186
- _paintCache.parent = nullptr;
187
- _paintCache.child = nullptr;
188
- }
189
-
190
- /**
191
- Validates that only declaration nodes can be children
192
- */
193
- void insertChildBefore(std::shared_ptr<JsiDomNode> child,
194
- std::shared_ptr<JsiDomNode> before) override {
195
- JsiDomNode::insertChildBefore(child, before);
196
- _paintCache.parent = nullptr;
197
- _paintCache.child = nullptr;
198
- }
199
-
200
- /**
201
- A property changed
202
- */
203
- void onPropertyChanged(BaseNodeProp *prop) override {
204
- static std::vector<const char *> paintProps = {
205
- JsiPropId::get("color"), JsiPropId::get("strokeWidth"),
206
- JsiPropId::get("blendMode"), JsiPropId::get("strokeCap"),
207
- JsiPropId::get("strokeJoin"), JsiPropId::get("strokeMiter"),
208
- JsiPropId::get("style"), JsiPropId::get("antiAlias"),
209
- JsiPropId::get("opacity"), JsiPropId::get("dither")};
210
-
211
- // We'll invalidate paint if a prop change happened in a paint property
212
- if (std::find(paintProps.begin(), paintProps.end(), prop->getName()) !=
213
- paintProps.end()) {
214
- invalidateContext();
215
- }
216
- }
217
-
218
- private:
219
- /**
220
- Clips the canvas depending on the clip property
221
- */
222
- void clip(DrawingContext *context, SkCanvas *canvas, bool invert) {
223
- auto op = invert ? SkClipOp::kDifference : SkClipOp::kIntersect;
224
- if (_clipProp->getRect() != nullptr) {
225
- #if SKIA_DOM_DEBUG
226
- printDebugInfo("canvas->clipRect()");
227
- #endif
228
- canvas->clipRect(*_clipProp->getRect(), op, true);
229
- } else if (_clipProp->getRRect() != nullptr) {
230
- #if SKIA_DOM_DEBUG
231
- printDebugInfo("canvas->clipRRect()");
232
- #endif
233
- canvas->clipRRect(*_clipProp->getRRect(), op, true);
234
- } else if (_clipProp->getPath() != nullptr) {
235
- #if SKIA_DOM_DEBUG
236
- printDebugInfo("canvas->clipPath()");
237
- #endif
238
- canvas->clipPath(*_clipProp->getPath(), op, true);
239
- }
240
- }
241
-
242
- struct PaintCache {
243
- void clear() {
244
- parent = nullptr;
245
- child = nullptr;
246
- }
247
- std::shared_ptr<SkPaint> parent;
248
- std::shared_ptr<SkPaint> child;
249
- };
250
-
251
- PaintCache _paintCache;
252
-
253
- PointProp *_originProp;
254
- MatrixProp *_matrixProp;
255
- TransformProp *_transformProp;
256
- NodeProp *_invertClip;
257
- ClipProp *_clipProp;
258
- LayerProp *_layerProp;
259
- PaintProps *_paintProps;
260
- };
261
-
262
- } // namespace RNSkia
@@ -1,139 +0,0 @@
1
- #pragma once
2
-
3
- #include "BaseNodeProp.h"
4
- #include "JsiValue.h"
5
-
6
- #include <chrono>
7
- #include <memory>
8
- #include <mutex>
9
- #include <string>
10
-
11
- namespace RNSkia {
12
-
13
- /**
14
- Simple class for reading a property by name from the Dom Node properties
15
- object.
16
- */
17
- class NodeProp : public BaseNodeProp,
18
- public std::enable_shared_from_this<NodeProp> {
19
- public:
20
- /**
21
- Constructs a new optional dom node properrty
22
- */
23
- explicit NodeProp(const std::string &name,
24
- const std::function<void(BaseNodeProp *)> &onChange)
25
- : _name(JsiPropId::get(name)), _onChange(onChange), BaseNodeProp() {}
26
-
27
- /**
28
- Reads JS value and swaps out with a new value
29
- */
30
- void readValueFromJs(jsi::Runtime &runtime,
31
- const ReadPropFunc &read) override {
32
- // If the value is a nullptr this is the first call to the
33
- // readValueFromJS Function (which comes from the reconciler
34
- // setting a new property value on the property
35
- if (_value == nullptr) {
36
- _value = std::make_unique<JsiValue>(runtime, read(runtime, _name, this));
37
- _isChanged = true;
38
- _hasNewValue = false;
39
- } else {
40
- // Otherwise we'll just update the buffer and commit it later.
41
- std::lock_guard<std::mutex> lock(_swapMutex);
42
- if (_buffer == nullptr) {
43
- _buffer =
44
- std::make_unique<JsiValue>(runtime, read(runtime, _name, this));
45
- } else {
46
- _buffer->setCurrent(runtime, read(runtime, _name, this));
47
- }
48
- _hasNewValue = *_buffer.get() != *_value.get();
49
- if (_hasNewValue && _onChange != nullptr) {
50
- _onChange(this);
51
- }
52
- }
53
- }
54
-
55
- /**
56
- Property value has changed - let's save this as a change to be commited later
57
- */
58
- void updateValue(jsi::Runtime &runtime, const jsi::Value &value) {
59
- // Always use the next field since this method is called on the JS thread
60
- // and we don't want to rip out the underlying value object.
61
- std::lock_guard<std::mutex> lock(_swapMutex);
62
- if (_buffer == nullptr) {
63
- _buffer = std::make_unique<JsiValue>(runtime, value);
64
- } else {
65
- _buffer->setCurrent(runtime, value);
66
- }
67
- // This is almost always a change - meaning a swap is
68
- // cheaper than comparing for equality.
69
- _hasNewValue = true;
70
- if (_onChange != nullptr) {
71
- _onChange(this);
72
- }
73
- }
74
-
75
- /**
76
- Returns true if the property is set and is not undefined or null
77
- */
78
- bool isSet() override {
79
- return _value != nullptr && !_value->isUndefinedOrNull();
80
- }
81
-
82
- /**
83
- True if the property has changed since we last visited it
84
- */
85
- bool isChanged() override { return _isChanged; }
86
-
87
- /**
88
- Starts the process of updating and reading props
89
- */
90
- void updatePendingChanges() override {
91
- // If the value has changed we should swap the
92
- // buffers
93
- if (_hasNewValue && _buffer != nullptr) {
94
- {
95
- // Swap buffers
96
- std::lock_guard<std::mutex> lock(_swapMutex);
97
- _value.swap(_buffer);
98
-
99
- // turn off pending changes flag
100
- _hasNewValue = false;
101
- }
102
-
103
- // Mark as changed.
104
- _isChanged = true;
105
- }
106
- }
107
-
108
- /*
109
- Ends the visit cycle
110
- */
111
- void markAsResolved() override { _isChanged = false; }
112
-
113
- /**
114
- Returns pointer to the value contained by the property if the property is
115
- set.
116
- */
117
- const JsiValue &value() {
118
- assert(isSet());
119
- return *_value;
120
- }
121
-
122
- /**
123
- Returns the name of the property
124
- */
125
- std::string getName() override { return std::string(_name); }
126
-
127
- private:
128
- PropId _name;
129
-
130
- std::function<void(BaseNodeProp *)> _onChange;
131
-
132
- std::unique_ptr<JsiValue> _value;
133
- std::unique_ptr<JsiValue> _buffer;
134
- std::atomic<bool> _isChanged = {false};
135
- std::atomic<bool> _hasNewValue = {false};
136
- std::mutex _swapMutex;
137
- };
138
-
139
- } // namespace RNSkia
@@ -1,158 +0,0 @@
1
- #pragma once
2
-
3
- #include "DrawingContext.h"
4
- #include "JsiValue.h"
5
- #include "NodeProp.h"
6
-
7
- #include <map>
8
- #include <memory>
9
- #include <string>
10
- #include <utility>
11
- #include <vector>
12
-
13
- namespace RNSkia {
14
-
15
- /**
16
- This class manages marshalling from JS values over JSI to C++ values and is
17
- typically called when a new node is created or an existing node is updated from
18
- the reconciler.
19
- */
20
- class NodePropsContainer {
21
- public:
22
- /**
23
- Constructor for the node prop container
24
- */
25
- explicit NodePropsContainer(
26
- PropId componentType,
27
- const std::function<void(BaseNodeProp *)> &onPropChanged)
28
- : _onPropChanged(onPropChanged), _type(componentType) {}
29
-
30
- /**
31
- Returns true if there are any changes in the props container in the current
32
- being/end visit
33
- */
34
- bool isChanged() {
35
- for (auto &prop : _properties) {
36
- if (prop->isChanged()) {
37
- return true;
38
- }
39
- }
40
- return false;
41
- }
42
-
43
- /**
44
- Enumerate all mapped properties
45
- */
46
- void enumerateMappedProps(
47
- const std::function<void(const PropId name,
48
- const std::vector<NodeProp *>)> &callback) {
49
- std::lock_guard<std::mutex> lock(_mappedPropsLock);
50
- for (auto &props : _mappedProperties) {
51
- callback(props.first, props.second);
52
- }
53
- }
54
-
55
- /**
56
- Enumerates a named property instances from the mapped properties list
57
- */
58
- void
59
- enumerateMappedPropsByName(const std::string &name,
60
- const std::function<void(NodeProp *)> &callback) {
61
- std::lock_guard<std::mutex> lock(_mappedPropsLock);
62
- auto propMapIt = _mappedProperties.find(JsiPropId::get(name));
63
- if (propMapIt != _mappedProperties.end()) {
64
- for (auto &prop : propMapIt->second) {
65
- callback(prop);
66
- }
67
- }
68
- }
69
-
70
- /**
71
- Updates any props that has changes waiting, updates props that have derived
72
- values
73
- */
74
- void updatePendingValues() {
75
- for (auto &prop : _properties) {
76
- prop->updatePendingChanges();
77
- if (prop->isRequired() && !prop->isSet()) {
78
- throw std::runtime_error("Missing one or more required properties " +
79
- std::string(prop->getName()) + " in the " +
80
- _type + " component.");
81
- }
82
- }
83
- }
84
-
85
- /**
86
- We're done, mark any changes as committed in all props
87
- */
88
- void markAsResolved() {
89
- for (auto &prop : _properties) {
90
- prop->markAsResolved();
91
- }
92
- }
93
-
94
- /**
95
- Clears all props and data from the container
96
- */
97
- void dispose() {
98
- std::lock_guard<std::mutex> lock(_mappedPropsLock);
99
- _properties.clear();
100
- _mappedProperties.clear();
101
- }
102
-
103
- /**
104
- Called when the React / JS side sets properties on a node
105
- */
106
- void setProps(jsi::Runtime &runtime, const jsi::Value &maybePropsObject) {
107
- std::lock_guard<std::mutex> lock(_mappedPropsLock);
108
-
109
- // Clear property mapping
110
- _mappedProperties.clear();
111
-
112
- if (!maybePropsObject.isObject()) {
113
- throw jsi::JSError(runtime, "Expected property object.");
114
- }
115
-
116
- auto props = maybePropsObject.asObject(runtime);
117
-
118
- // Use specialized reader function to be able to intercept calls that
119
- // reads specific named values from the js property object.
120
- auto read = [&](jsi::Runtime &runtime, PropId name, NodeProp *prop) {
121
- if (_mappedProperties.count(name) == 0) {
122
- std::vector<NodeProp *> tmp;
123
- _mappedProperties[name] = std::move(tmp);
124
- }
125
- _mappedProperties.at(name).push_back(prop);
126
- return props.getProperty(runtime, name);
127
- };
128
-
129
- for (auto &prop : _properties) {
130
- prop->readValueFromJs(runtime, read);
131
- }
132
- }
133
-
134
- /**
135
- Defines a property that will be added to the container
136
- */
137
- template <class _Tp, class... _Args,
138
- class = std::enable_if_t<!std::is_array<_Tp>::value>>
139
- _Tp *defineProperty(_Args &&...__args) {
140
- // Create property and set onChange callback
141
- auto prop =
142
- std::make_shared<_Tp>(std::forward<_Args>(__args)..., _onPropChanged);
143
-
144
- // Add to props list
145
- _properties.push_back(prop);
146
-
147
- return prop.get();
148
- }
149
-
150
- private:
151
- std::function<void(BaseNodeProp *)> _onPropChanged;
152
- std::vector<std::shared_ptr<BaseNodeProp>> _properties;
153
- std::map<PropId, std::vector<NodeProp *>> _mappedProperties;
154
- PropId _type;
155
- std::mutex _mappedPropsLock;
156
- };
157
-
158
- } // namespace RNSkia
@@ -1,64 +0,0 @@
1
- #pragma once
2
-
3
- #include "JsiDomDrawingNode.h"
4
- #include "RSXformProp.h"
5
- #include "RectProp.h"
6
- #include "SamplingProp.h"
7
- #include "SkImageProps.h"
8
-
9
- #include <memory>
10
- #include <tuple>
11
-
12
- namespace RNSkia {
13
-
14
- class JsiAtlasNode : public JsiDomDrawingNode,
15
- public JsiDomNodeCtor<JsiAtlasNode> {
16
- public:
17
- explicit JsiAtlasNode(std::shared_ptr<RNSkPlatformContext> context)
18
- : JsiDomDrawingNode(context, "skAtlas") {}
19
-
20
- protected:
21
- void draw(DrawingContext *context) override {
22
- if (_rectsProp->isSet() && _imageProp->isSet() && _rsxFormsProp->isSet()) {
23
- const auto image = _imageProp->getDerivedValue();
24
- const auto sprites = _rectsProp->getDerivedValue();
25
- const auto transforms = _rsxFormsProp->getDerivedValue();
26
- const auto colors =
27
- _colorsProp->isSet() ? _colorsProp->getDerivedValue() : nullptr;
28
- const auto blendMode = _blendModeProp->isSet()
29
- ? *_blendModeProp->getDerivedValue()
30
- : SkBlendMode::kDstOver;
31
- auto paint = *context->getPaint();
32
- auto sampling = _samplingProp->isSet()
33
- ? *_samplingProp->getDerivedValue()
34
- : SkSamplingOptions(SkFilterMode::kLinear);
35
- context->getCanvas()->drawAtlas(
36
- image.get(), transforms->data(), sprites->data(),
37
- colors == nullptr ? nullptr : colors->data(), sprites->size(),
38
- blendMode, sampling, nullptr, &paint);
39
- }
40
- }
41
-
42
- void defineProperties(NodePropsContainer *container) override {
43
- JsiDomDrawingNode::defineProperties(container);
44
- _rectsProp = container->defineProperty<RectsProp>("sprites");
45
- _rsxFormsProp = container->defineProperty<RSXFormsProp>("transforms");
46
- _imageProp = container->defineProperty<ImageProp>("image");
47
- _colorsProp = container->defineProperty<ColorsProp>("colors");
48
- _blendModeProp = container->defineProperty<BlendModeProp>("blendMode");
49
- _samplingProp = container->defineProperty<SamplingProp>("sampling");
50
-
51
- _rectsProp->require();
52
- _rsxFormsProp->require();
53
- }
54
-
55
- private:
56
- ImageProp *_imageProp;
57
- RectsProp *_rectsProp;
58
- RSXFormsProp *_rsxFormsProp;
59
- ColorsProp *_colorsProp;
60
- BlendModeProp *_blendModeProp;
61
- SamplingProp *_samplingProp;
62
- };
63
-
64
- } // namespace RNSkia
@@ -1,49 +0,0 @@
1
- #pragma once
2
-
3
- #include "CircleProp.h"
4
- #include "JsiDomDrawingNode.h"
5
-
6
- #include <memory>
7
-
8
- namespace RNSkia {
9
-
10
- class JsiBackdropFilterNode : public JsiDomDrawingNode,
11
- public JsiDomNodeCtor<JsiBackdropFilterNode> {
12
- public:
13
- explicit JsiBackdropFilterNode(std::shared_ptr<RNSkPlatformContext> context)
14
- : JsiDomDrawingNode(context, "skBackdropFilter") {}
15
-
16
- protected:
17
- void draw(DrawingContext *context) override {
18
- auto children = getChildren();
19
-
20
- if (children.size() == 0) {
21
- return;
22
- }
23
-
24
- auto canvas = context->getCanvas();
25
- auto firstChild = children[0];
26
- sk_sp<SkImageFilter> imageFilter;
27
-
28
- if (firstChild->getNodeClass() == NodeClass::DeclarationNode) {
29
- context->getDeclarationContext()->save();
30
- firstChild->decorateContext(context->getDeclarationContext());
31
- auto imgF = context->getDeclarationContext()->getImageFilters()->pop();
32
- if (imgF) {
33
- imageFilter = imgF;
34
- } else {
35
- auto cf = context->getDeclarationContext()->getColorFilters()->pop();
36
- if (cf) {
37
- imageFilter = SkImageFilters::ColorFilter(cf, nullptr);
38
- }
39
- }
40
- context->getDeclarationContext()->restore();
41
- }
42
-
43
- canvas->saveLayer(
44
- SkCanvas::SaveLayerRec(nullptr, nullptr, imageFilter.get(), 0));
45
- canvas->restore();
46
- }
47
- };
48
-
49
- } // namespace RNSkia