@shopify/react-native-skia 1.11.0 → 1.11.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (272) 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/api/recorder/Convertor.h +2 -1
  6. package/cpp/api/recorder/DataTypes.h +70 -72
  7. package/cpp/api/recorder/Drawings.h +25 -24
  8. package/cpp/api/recorder/RNRecorder.h +12 -10
  9. package/cpp/api/recorder/Shaders.h +5 -5
  10. package/cpp/jsi/ViewProperty.h +5 -16
  11. package/cpp/rnskia/RNSkManager.cpp +1 -7
  12. package/ios/RNSkia-iOS/SkiaCVPixelBufferUtils.mm +8 -4
  13. package/lib/commonjs/dom/nodes/index.d.ts +0 -1
  14. package/lib/commonjs/dom/nodes/index.js +0 -11
  15. package/lib/commonjs/dom/nodes/index.js.map +1 -1
  16. package/lib/commonjs/external/reanimated/renderHelpers.d.ts +0 -6
  17. package/lib/commonjs/external/reanimated/renderHelpers.js +0 -73
  18. package/lib/commonjs/external/reanimated/renderHelpers.js.map +1 -1
  19. package/lib/commonjs/index.d.ts +0 -1
  20. package/lib/commonjs/index.js +0 -12
  21. package/lib/commonjs/index.js.map +1 -1
  22. package/lib/commonjs/renderer/Canvas.d.ts +10 -1
  23. package/lib/commonjs/renderer/Canvas.js +3 -1
  24. package/lib/commonjs/renderer/Canvas.js.map +1 -1
  25. package/lib/commonjs/sksg/Container.d.ts +2 -0
  26. package/lib/commonjs/sksg/Container.js +10 -0
  27. package/lib/commonjs/sksg/Container.js.map +1 -1
  28. package/lib/commonjs/sksg/Elements.d.ts +65 -0
  29. package/lib/commonjs/sksg/Elements.js +6 -0
  30. package/lib/commonjs/sksg/Elements.js.map +1 -0
  31. package/lib/commonjs/sksg/Reconciler.d.ts +1 -0
  32. package/lib/commonjs/sksg/Reconciler.js +2 -0
  33. package/lib/commonjs/sksg/Reconciler.js.map +1 -1
  34. package/lib/commonjs/views/index.d.ts +0 -1
  35. package/lib/commonjs/views/index.js +0 -11
  36. package/lib/commonjs/views/index.js.map +1 -1
  37. package/lib/module/dom/nodes/index.d.ts +0 -1
  38. package/lib/module/dom/nodes/index.js +0 -1
  39. package/lib/module/dom/nodes/index.js.map +1 -1
  40. package/lib/module/external/reanimated/renderHelpers.d.ts +0 -6
  41. package/lib/module/external/reanimated/renderHelpers.js +0 -68
  42. package/lib/module/external/reanimated/renderHelpers.js.map +1 -1
  43. package/lib/module/index.d.ts +0 -1
  44. package/lib/module/index.js +0 -1
  45. package/lib/module/index.js.map +1 -1
  46. package/lib/module/renderer/Canvas.d.ts +10 -1
  47. package/lib/module/renderer/Canvas.js +1 -0
  48. package/lib/module/renderer/Canvas.js.map +1 -1
  49. package/lib/module/sksg/Container.d.ts +2 -0
  50. package/lib/module/sksg/Container.js +10 -0
  51. package/lib/module/sksg/Container.js.map +1 -1
  52. package/lib/module/sksg/Elements.d.ts +65 -0
  53. package/lib/module/sksg/Elements.js +2 -0
  54. package/lib/module/sksg/Elements.js.map +1 -0
  55. package/lib/module/sksg/Reconciler.d.ts +1 -0
  56. package/lib/module/sksg/Reconciler.js +2 -0
  57. package/lib/module/sksg/Reconciler.js.map +1 -1
  58. package/lib/module/views/index.d.ts +0 -1
  59. package/lib/module/views/index.js +0 -1
  60. package/lib/module/views/index.js.map +1 -1
  61. package/lib/typescript/lib/commonjs/external/reanimated/renderHelpers.d.ts +0 -3
  62. package/lib/typescript/lib/commonjs/renderer/Canvas.d.ts +1 -0
  63. package/lib/typescript/lib/commonjs/sksg/Container.d.ts +2 -0
  64. package/lib/typescript/lib/commonjs/sksg/Elements.d.ts +1 -0
  65. package/lib/typescript/lib/commonjs/sksg/Reconciler.d.ts +6 -0
  66. package/lib/typescript/lib/module/dom/nodes/index.d.ts +0 -1
  67. package/lib/typescript/lib/module/external/reanimated/renderHelpers.d.ts +0 -3
  68. package/lib/typescript/lib/module/index.d.ts +0 -1
  69. package/lib/typescript/lib/module/mock/index.d.ts +0 -1
  70. package/lib/typescript/lib/module/renderer/Canvas.d.ts +1 -0
  71. package/lib/typescript/lib/module/sksg/Container.d.ts +2 -0
  72. package/lib/typescript/lib/module/sksg/Elements.d.ts +1 -0
  73. package/lib/typescript/lib/module/sksg/Reconciler.d.ts +6 -0
  74. package/lib/typescript/lib/module/views/index.d.ts +0 -1
  75. package/lib/typescript/src/dom/nodes/index.d.ts +0 -1
  76. package/lib/typescript/src/external/reanimated/renderHelpers.d.ts +0 -6
  77. package/lib/typescript/src/index.d.ts +0 -1
  78. package/lib/typescript/src/renderer/Canvas.d.ts +10 -1
  79. package/lib/typescript/src/sksg/Container.d.ts +2 -0
  80. package/lib/typescript/src/sksg/Elements.d.ts +65 -0
  81. package/lib/typescript/src/sksg/Reconciler.d.ts +1 -0
  82. package/lib/typescript/src/views/index.d.ts +0 -1
  83. package/package.json +1 -1
  84. package/src/dom/nodes/index.ts +0 -1
  85. package/src/external/reanimated/renderHelpers.ts +1 -78
  86. package/src/index.ts +0 -1
  87. package/src/renderer/Canvas.tsx +11 -1
  88. package/src/sksg/Container.ts +11 -0
  89. package/src/sksg/Elements.tsx +136 -0
  90. package/src/sksg/Reconciler.ts +2 -0
  91. package/src/views/index.ts +0 -1
  92. package/android/cpp/jni/include/JniSkiaDomView.h +0 -82
  93. package/android/src/main/java/com/shopify/reactnative/skia/SkiaDomView.java +0 -41
  94. package/android/src/main/java/com/shopify/reactnative/skia/SkiaDomViewManager.java +0 -32
  95. package/android/src/paper/java/com/facebook/react/viewmanagers/SkiaDomViewManagerDelegate.java +0 -34
  96. package/android/src/paper/java/com/facebook/react/viewmanagers/SkiaDomViewManagerInterface.java +0 -18
  97. package/cpp/rnskia/RNSkDomView.cpp +0 -121
  98. package/cpp/rnskia/RNSkDomView.h +0 -97
  99. package/cpp/rnskia/dom/JsiDomApi.h +0 -165
  100. package/cpp/rnskia/dom/base/BaseNodeProp.h +0 -72
  101. package/cpp/rnskia/dom/base/ConcatablePaint.cpp +0 -117
  102. package/cpp/rnskia/dom/base/ConcatablePaint.h +0 -49
  103. package/cpp/rnskia/dom/base/Declaration.h +0 -86
  104. package/cpp/rnskia/dom/base/DeclarationContext.h +0 -79
  105. package/cpp/rnskia/dom/base/DerivedNodeProp.h +0 -203
  106. package/cpp/rnskia/dom/base/DrawingContext.cpp +0 -55
  107. package/cpp/rnskia/dom/base/DrawingContext.h +0 -104
  108. package/cpp/rnskia/dom/base/JsiDomDeclarationNode.h +0 -119
  109. package/cpp/rnskia/dom/base/JsiDomDrawingNode.h +0 -71
  110. package/cpp/rnskia/dom/base/JsiDomNode.h +0 -572
  111. package/cpp/rnskia/dom/base/JsiDomRenderNode.h +0 -262
  112. package/cpp/rnskia/dom/base/NodeProp.h +0 -139
  113. package/cpp/rnskia/dom/base/NodePropsContainer.h +0 -158
  114. package/cpp/rnskia/dom/nodes/JsiAtlasNode.h +0 -64
  115. package/cpp/rnskia/dom/nodes/JsiBackdropFilterNode.h +0 -49
  116. package/cpp/rnskia/dom/nodes/JsiBlendNode.h +0 -94
  117. package/cpp/rnskia/dom/nodes/JsiBlurMaskNode.h +0 -75
  118. package/cpp/rnskia/dom/nodes/JsiBoxNode.h +0 -94
  119. package/cpp/rnskia/dom/nodes/JsiBoxShadowNode.h +0 -33
  120. package/cpp/rnskia/dom/nodes/JsiCircleNode.h +0 -35
  121. package/cpp/rnskia/dom/nodes/JsiColorFilterNodes.h +0 -164
  122. package/cpp/rnskia/dom/nodes/JsiDiffRectNode.h +0 -37
  123. package/cpp/rnskia/dom/nodes/JsiFillNode.h +0 -22
  124. package/cpp/rnskia/dom/nodes/JsiGlyphsNode.h +0 -53
  125. package/cpp/rnskia/dom/nodes/JsiGroupNode.h +0 -25
  126. package/cpp/rnskia/dom/nodes/JsiImageFilterNodes.h +0 -361
  127. package/cpp/rnskia/dom/nodes/JsiImageNode.h +0 -43
  128. package/cpp/rnskia/dom/nodes/JsiImageSvgNode.h +0 -63
  129. package/cpp/rnskia/dom/nodes/JsiLayerNode.h +0 -74
  130. package/cpp/rnskia/dom/nodes/JsiLineNode.h +0 -38
  131. package/cpp/rnskia/dom/nodes/JsiOvalNode.h +0 -32
  132. package/cpp/rnskia/dom/nodes/JsiPaintNode.h +0 -119
  133. package/cpp/rnskia/dom/nodes/JsiParagraphNode.h +0 -62
  134. package/cpp/rnskia/dom/nodes/JsiPatchNode.h +0 -50
  135. package/cpp/rnskia/dom/nodes/JsiPathEffectNodes.h +0 -268
  136. package/cpp/rnskia/dom/nodes/JsiPathNode.h +0 -181
  137. package/cpp/rnskia/dom/nodes/JsiPictureNode.h +0 -31
  138. package/cpp/rnskia/dom/nodes/JsiPointsNode.h +0 -48
  139. package/cpp/rnskia/dom/nodes/JsiRRectNode.h +0 -33
  140. package/cpp/rnskia/dom/nodes/JsiRectNode.h +0 -33
  141. package/cpp/rnskia/dom/nodes/JsiShaderNodes.h +0 -434
  142. package/cpp/rnskia/dom/nodes/JsiTextBlobNode.h +0 -44
  143. package/cpp/rnskia/dom/nodes/JsiTextNode.h +0 -51
  144. package/cpp/rnskia/dom/nodes/JsiTextPathNode.h +0 -33
  145. package/cpp/rnskia/dom/nodes/JsiVerticesNode.h +0 -41
  146. package/cpp/rnskia/dom/props/BezierProps.h +0 -65
  147. package/cpp/rnskia/dom/props/BlendModeProp.h +0 -103
  148. package/cpp/rnskia/dom/props/BoxShadowProps.h +0 -62
  149. package/cpp/rnskia/dom/props/CircleProp.h +0 -49
  150. package/cpp/rnskia/dom/props/ClipProp.h +0 -57
  151. package/cpp/rnskia/dom/props/ColorProp.h +0 -96
  152. package/cpp/rnskia/dom/props/FontProp.h +0 -42
  153. package/cpp/rnskia/dom/props/GlyphsProp.h +0 -55
  154. package/cpp/rnskia/dom/props/LayerProp.h +0 -52
  155. package/cpp/rnskia/dom/props/MatrixProp.h +0 -54
  156. package/cpp/rnskia/dom/props/NumbersProp.h +0 -67
  157. package/cpp/rnskia/dom/props/PaintProps.h +0 -133
  158. package/cpp/rnskia/dom/props/ParagraphProp.h +0 -45
  159. package/cpp/rnskia/dom/props/PathProp.h +0 -59
  160. package/cpp/rnskia/dom/props/PictureProp.h +0 -40
  161. package/cpp/rnskia/dom/props/PointProp.h +0 -65
  162. package/cpp/rnskia/dom/props/PointsProp.h +0 -81
  163. package/cpp/rnskia/dom/props/RRectProp.h +0 -222
  164. package/cpp/rnskia/dom/props/RSXformProp.h +0 -52
  165. package/cpp/rnskia/dom/props/RadiusProp.h +0 -43
  166. package/cpp/rnskia/dom/props/RectProp.h +0 -164
  167. package/cpp/rnskia/dom/props/SamplingProp.h +0 -54
  168. package/cpp/rnskia/dom/props/SkImageProps.h +0 -196
  169. package/cpp/rnskia/dom/props/StrokeProps.h +0 -79
  170. package/cpp/rnskia/dom/props/SvgProp.h +0 -45
  171. package/cpp/rnskia/dom/props/TextBlobProp.h +0 -133
  172. package/cpp/rnskia/dom/props/TileModeProp.h +0 -52
  173. package/cpp/rnskia/dom/props/TransformProp.h +0 -147
  174. package/cpp/rnskia/dom/props/TransformsProps.h +0 -66
  175. package/cpp/rnskia/dom/props/UniformsProp.h +0 -159
  176. package/cpp/rnskia/dom/props/VertexModeProp.h +0 -49
  177. package/cpp/rnskia/dom/props/VerticesProps.h +0 -63
  178. package/ios/RNSkia-iOS/SkiaDomView.h +0 -7
  179. package/ios/RNSkia-iOS/SkiaDomView.mm +0 -63
  180. package/ios/RNSkia-iOS/SkiaDomViewManager.h +0 -8
  181. package/ios/RNSkia-iOS/SkiaDomViewManager.mm +0 -51
  182. package/lib/commonjs/dom/nodes/JsiSkDOM.d.ts +0 -64
  183. package/lib/commonjs/dom/nodes/JsiSkDOM.js +0 -196
  184. package/lib/commonjs/dom/nodes/JsiSkDOM.js.map +0 -1
  185. package/lib/commonjs/renderer/CanvasOld.d.ts +0 -11
  186. package/lib/commonjs/renderer/CanvasOld.js +0 -96
  187. package/lib/commonjs/renderer/CanvasOld.js.map +0 -1
  188. package/lib/commonjs/renderer/Container.d.ts +0 -10
  189. package/lib/commonjs/renderer/Container.js +0 -26
  190. package/lib/commonjs/renderer/Container.js.map +0 -1
  191. package/lib/commonjs/renderer/HostComponents.d.ts +0 -129
  192. package/lib/commonjs/renderer/HostComponents.js +0 -141
  193. package/lib/commonjs/renderer/HostComponents.js.map +0 -1
  194. package/lib/commonjs/renderer/HostConfig.d.ts +0 -18
  195. package/lib/commonjs/renderer/HostConfig.js +0 -157
  196. package/lib/commonjs/renderer/HostConfig.js.map +0 -1
  197. package/lib/commonjs/renderer/Reconciler.d.ts +0 -9
  198. package/lib/commonjs/renderer/Reconciler.js +0 -44
  199. package/lib/commonjs/renderer/Reconciler.js.map +0 -1
  200. package/lib/commonjs/specs/SkiaDomViewNativeComponent.d.ts +0 -6
  201. package/lib/commonjs/specs/SkiaDomViewNativeComponent.js +0 -11
  202. package/lib/commonjs/specs/SkiaDomViewNativeComponent.js.map +0 -1
  203. package/lib/commonjs/views/SkiaDomView.d.ts +0 -33
  204. package/lib/commonjs/views/SkiaDomView.js +0 -119
  205. package/lib/commonjs/views/SkiaDomView.js.map +0 -1
  206. package/lib/commonjs/views/SkiaDomView.web.d.ts +0 -0
  207. package/lib/commonjs/views/SkiaDomView.web.js +0 -2
  208. package/lib/commonjs/views/SkiaDomView.web.js.map +0 -1
  209. package/lib/module/dom/nodes/JsiSkDOM.d.ts +0 -64
  210. package/lib/module/dom/nodes/JsiSkDOM.js +0 -189
  211. package/lib/module/dom/nodes/JsiSkDOM.js.map +0 -1
  212. package/lib/module/renderer/CanvasOld.d.ts +0 -11
  213. package/lib/module/renderer/CanvasOld.js +0 -87
  214. package/lib/module/renderer/CanvasOld.js.map +0 -1
  215. package/lib/module/renderer/Container.d.ts +0 -10
  216. package/lib/module/renderer/Container.js +0 -19
  217. package/lib/module/renderer/Container.js.map +0 -1
  218. package/lib/module/renderer/HostComponents.d.ts +0 -129
  219. package/lib/module/renderer/HostComponents.js +0 -134
  220. package/lib/module/renderer/HostComponents.js.map +0 -1
  221. package/lib/module/renderer/HostConfig.d.ts +0 -18
  222. package/lib/module/renderer/HostConfig.js +0 -150
  223. package/lib/module/renderer/HostConfig.js.map +0 -1
  224. package/lib/module/renderer/Reconciler.d.ts +0 -9
  225. package/lib/module/renderer/Reconciler.js +0 -36
  226. package/lib/module/renderer/Reconciler.js.map +0 -1
  227. package/lib/module/specs/SkiaDomViewNativeComponent.d.ts +0 -6
  228. package/lib/module/specs/SkiaDomViewNativeComponent.js +0 -4
  229. package/lib/module/specs/SkiaDomViewNativeComponent.js.map +0 -1
  230. package/lib/module/views/SkiaDomView.d.ts +0 -33
  231. package/lib/module/views/SkiaDomView.js +0 -111
  232. package/lib/module/views/SkiaDomView.js.map +0 -1
  233. package/lib/module/views/SkiaDomView.web.d.ts +0 -0
  234. package/lib/module/views/SkiaDomView.web.js +0 -2
  235. package/lib/module/views/SkiaDomView.web.js.map +0 -1
  236. package/lib/typescript/lib/commonjs/dom/nodes/JsiSkDOM.d.ts +0 -60
  237. package/lib/typescript/lib/commonjs/renderer/CanvasOld.d.ts +0 -3
  238. package/lib/typescript/lib/commonjs/renderer/Container.d.ts +0 -9
  239. package/lib/typescript/lib/commonjs/renderer/HostComponents.d.ts +0 -2
  240. package/lib/typescript/lib/commonjs/renderer/HostConfig.d.ts +0 -40
  241. package/lib/typescript/lib/commonjs/renderer/Reconciler.d.ts +0 -10
  242. package/lib/typescript/lib/commonjs/specs/SkiaDomViewNativeComponent.d.ts +0 -3
  243. package/lib/typescript/lib/commonjs/views/SkiaDomView.d.ts +0 -30
  244. package/lib/typescript/lib/commonjs/views/SkiaDomView.web.d.ts +0 -0
  245. package/lib/typescript/lib/module/dom/nodes/JsiSkDOM.d.ts +0 -59
  246. package/lib/typescript/lib/module/renderer/CanvasOld.d.ts +0 -3
  247. package/lib/typescript/lib/module/renderer/Container.d.ts +0 -9
  248. package/lib/typescript/lib/module/renderer/HostComponents.d.ts +0 -1
  249. package/lib/typescript/lib/module/renderer/HostConfig.d.ts +0 -39
  250. package/lib/typescript/lib/module/renderer/Reconciler.d.ts +0 -9
  251. package/lib/typescript/lib/module/specs/SkiaDomViewNativeComponent.d.ts +0 -2
  252. package/lib/typescript/lib/module/views/SkiaDomView.d.ts +0 -27
  253. package/lib/typescript/lib/module/views/SkiaDomView.web.d.ts +0 -0
  254. package/lib/typescript/src/dom/nodes/JsiSkDOM.d.ts +0 -64
  255. package/lib/typescript/src/renderer/CanvasOld.d.ts +0 -11
  256. package/lib/typescript/src/renderer/Container.d.ts +0 -10
  257. package/lib/typescript/src/renderer/HostComponents.d.ts +0 -129
  258. package/lib/typescript/src/renderer/HostConfig.d.ts +0 -18
  259. package/lib/typescript/src/renderer/Reconciler.d.ts +0 -9
  260. package/lib/typescript/src/specs/SkiaDomViewNativeComponent.d.ts +0 -6
  261. package/lib/typescript/src/views/SkiaDomView.d.ts +0 -33
  262. package/lib/typescript/src/views/SkiaDomView.web.d.ts +0 -0
  263. package/src/dom/nodes/JsiSkDOM.ts +0 -298
  264. package/src/renderer/CanvasOld.tsx +0 -126
  265. package/src/renderer/Container.tsx +0 -19
  266. package/src/renderer/HostComponents.ts +0 -399
  267. package/src/renderer/HostConfig.ts +0 -258
  268. package/src/renderer/Reconciler.tsx +0 -54
  269. package/src/specs/SkiaDomViewNativeComponent.ts +0 -9
  270. package/src/views/SkiaDomView.tsx +0 -124
  271. package/src/views/SkiaDomView.web.tsx +0 -0
  272. /package/cpp/api/recorder/{Image.h → ImageFit.h} +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