@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,49 +0,0 @@
1
- #pragma once
2
-
3
- #include <memory>
4
- #include <vector>
5
-
6
- #pragma clang diagnostic push
7
- #pragma clang diagnostic ignored "-Wdocumentation"
8
-
9
- #include "include/core/SkColorFilter.h"
10
- #include "include/core/SkImageFilter.h"
11
- #include "include/core/SkMaskFilter.h"
12
- #include "include/core/SkPaint.h"
13
- #include "include/core/SkPathEffect.h"
14
- #include "include/core/SkShader.h"
15
-
16
- #pragma clang diagnostic pop
17
-
18
- namespace RNSkia {
19
-
20
- class JsiDomNode;
21
- class PaintProps;
22
- class DeclarationContext;
23
-
24
- /**
25
- Class for concatenating SkPaint objects.
26
- */
27
- class ConcatablePaint {
28
- public:
29
- ConcatablePaint(DeclarationContext *context, PaintProps *paintProps,
30
- const std::vector<std::shared_ptr<JsiDomNode>> &children);
31
-
32
- void concatTo(std::shared_ptr<SkPaint> paint);
33
- bool isEmpty();
34
-
35
- private:
36
- DeclarationContext *_declarationContext;
37
- const std::vector<std::shared_ptr<JsiDomNode>> _children;
38
- PaintProps *_paintProps;
39
-
40
- bool _isEmpty{true};
41
-
42
- sk_sp<SkImageFilter> _imageFilter;
43
- sk_sp<SkColorFilter> _colorFilter;
44
- sk_sp<SkPathEffect> _pathEffect;
45
- sk_sp<SkMaskFilter> _maskFilter;
46
- sk_sp<SkShader> _shader;
47
- };
48
-
49
- } // namespace RNSkia
@@ -1,86 +0,0 @@
1
- #pragma once
2
-
3
- #include <algorithm>
4
- #include <numeric>
5
- #include <stack>
6
- #include <utility>
7
- #include <vector>
8
-
9
- #pragma clang diagnostic push
10
- #pragma clang diagnostic ignored "-Wdocumentation"
11
-
12
- #include "include/core/SkRefCnt.h"
13
-
14
- #pragma clang diagnostic pop
15
-
16
- namespace RNSkia {
17
-
18
- /**
19
- Small container for shaders, filters, masks and effects
20
- */
21
- template <typename T> class Declaration {
22
- public:
23
- // Pushes to the stack
24
- void push(T el) { _elements.push(el); }
25
-
26
- // Clears and returns all elements
27
- std::vector<T> popAll() {
28
- auto size = _elements.size();
29
- std::vector<T> tmp;
30
- tmp.reserve(size);
31
- for (size_t i = 0; i < size; ++i) {
32
- tmp.push_back(_elements.top());
33
- _elements.pop();
34
- }
35
- std::reverse(std::begin(tmp), std::end(tmp));
36
- return tmp;
37
- }
38
-
39
- T pop() {
40
- if (_elements.size() == 0) {
41
- return nullptr;
42
- }
43
- auto tmp = _elements.top();
44
- _elements.pop();
45
- return tmp;
46
- }
47
-
48
- // Clears and returns through reducer function in reversed order
49
- T popAsOne(std::function<T(T inner, T outer)> composer) {
50
- auto tmp = popAll();
51
- std::reverse(std::begin(tmp), std::end(tmp));
52
- return std::accumulate(std::begin(tmp), std::end(tmp),
53
- static_cast<T>(nullptr), [=](T inner, T outer) {
54
- if (inner == nullptr) {
55
- return outer;
56
- }
57
- return composer(inner, outer);
58
- });
59
- }
60
-
61
- // Returns the size of the elements
62
- size_t size() { return _elements.size(); }
63
-
64
- private:
65
- std::stack<T> _elements;
66
- };
67
-
68
- /**
69
- Small container for shaders, filters, masks and effects
70
- */
71
- template <typename T> class ComposableDeclaration : public Declaration<T> {
72
- public:
73
- /**
74
- Constructor
75
- */
76
- explicit ComposableDeclaration(std::function<T(T inner, T outer)> composer)
77
- : Declaration<T>(), _composer(composer) {}
78
-
79
- // Clears and returns through reducer function in reversed order
80
- T popAsOne() { return Declaration<T>::popAsOne(_composer); }
81
-
82
- private:
83
- std::function<T(T inner, T outer)> _composer;
84
- };
85
-
86
- } // namespace RNSkia
@@ -1,79 +0,0 @@
1
- #pragma once
2
-
3
- #include "Declaration.h"
4
-
5
- #include <memory>
6
- #include <stack>
7
- #include <vector>
8
-
9
- #pragma clang diagnostic push
10
- #pragma clang diagnostic ignored "-Wdocumentation"
11
-
12
- #include "include/core/SkColorFilter.h"
13
- #include "include/core/SkImageFilter.h"
14
- #include "include/core/SkMaskFilter.h"
15
- #include "include/core/SkPaint.h"
16
- #include "include/core/SkPathEffect.h"
17
- #include "include/core/SkShader.h"
18
- #include "include/effects/SkImageFilters.h"
19
-
20
- #pragma clang diagnostic pop
21
-
22
- namespace RNSkia {
23
-
24
- class DeclarationContext {
25
- public:
26
- DeclarationContext() { save(); }
27
-
28
- Declaration<sk_sp<SkShader>> *getShaders() { return &_shaders.top(); }
29
- ComposableDeclaration<sk_sp<SkImageFilter>> *getImageFilters() {
30
- return &_imageFilters.top();
31
- }
32
- ComposableDeclaration<sk_sp<SkColorFilter>> *getColorFilters() {
33
- return &_colorFilters.top();
34
- }
35
- ComposableDeclaration<sk_sp<SkPathEffect>> *getPathEffects() {
36
- return &_pathEffects.top();
37
- }
38
- Declaration<sk_sp<SkMaskFilter>> *getMaskFilters() {
39
- return &_maskFilters.top();
40
- }
41
- Declaration<std::shared_ptr<SkPaint>> *getPaints() { return &_paints.top(); }
42
-
43
- void save() {
44
- _paints.emplace();
45
- _shaders.emplace();
46
- _imageFilters.emplace(
47
- [](sk_sp<SkImageFilter> inner, sk_sp<SkImageFilter> outer) {
48
- return SkImageFilters::Compose(outer, inner);
49
- });
50
- _colorFilters.emplace(
51
- [](sk_sp<SkColorFilter> inner, sk_sp<SkColorFilter> outer) {
52
- return SkColorFilters::Compose(outer, inner);
53
- });
54
- _pathEffects.emplace(
55
- [](sk_sp<SkPathEffect> inner, sk_sp<SkPathEffect> outer) {
56
- return SkPathEffect::MakeCompose(outer, inner);
57
- });
58
- _maskFilters.emplace();
59
- }
60
-
61
- void restore() {
62
- _shaders.pop();
63
- _imageFilters.pop();
64
- _colorFilters.pop();
65
- _pathEffects.pop();
66
- _maskFilters.pop();
67
- _paints.pop();
68
- }
69
-
70
- private:
71
- std::stack<Declaration<sk_sp<SkShader>>> _shaders;
72
- std::stack<ComposableDeclaration<sk_sp<SkImageFilter>>> _imageFilters;
73
- std::stack<ComposableDeclaration<sk_sp<SkColorFilter>>> _colorFilters;
74
- std::stack<ComposableDeclaration<sk_sp<SkPathEffect>>> _pathEffects;
75
- std::stack<Declaration<sk_sp<SkMaskFilter>>> _maskFilters;
76
- std::stack<Declaration<std::shared_ptr<SkPaint>>> _paints;
77
- };
78
-
79
- } // namespace RNSkia
@@ -1,203 +0,0 @@
1
- #pragma once
2
-
3
- #include "BaseNodeProp.h"
4
- #include "JsiValue.h"
5
-
6
- #include <memory>
7
- #include <string>
8
- #include <utility>
9
- #include <vector>
10
-
11
- namespace RNSkia {
12
-
13
- /**
14
- Class for composing multiple properties into a derived property value
15
- */
16
- class BaseDerivedProp : public BaseNodeProp {
17
- public:
18
- explicit BaseDerivedProp(const std::function<void(BaseNodeProp *)> &onChange)
19
- : _onChange(onChange), BaseNodeProp() {}
20
-
21
- /**
22
- Starts the process of updating and reading props
23
- */
24
- void updatePendingChanges() override {
25
- auto changed = false;
26
- for (auto &prop : _properties) {
27
- prop->updatePendingChanges();
28
- if (prop->isChanged()) {
29
- changed = true;
30
- }
31
- }
32
-
33
- // We only need to update the derived value when any of the derived
34
- // properties have changed.
35
- if (changed) {
36
- updateDerivedValue();
37
- }
38
- }
39
-
40
- /*
41
- Marks properties as no longer changed
42
- */
43
- void markAsResolved() override {
44
- for (auto &prop : _properties) {
45
- prop->markAsResolved();
46
- }
47
-
48
- _isChanged = false;
49
- }
50
-
51
- /**
52
- Returns the changed state of the prop
53
- */
54
- bool isChanged() override { return _isChanged; }
55
-
56
- /**
57
- Delegate read value to child nodes
58
- */
59
- void readValueFromJs(jsi::Runtime &runtime,
60
- const ReadPropFunc &read) override {
61
- for (auto &prop : _properties) {
62
- prop->readValueFromJs(runtime, read);
63
- }
64
- }
65
-
66
- /**
67
- Override to calculate the derived value from child properties
68
- */
69
- virtual void updateDerivedValue() = 0;
70
-
71
- /**
72
- Adds a property to the derived property child props.
73
- */
74
- template <class _Tp, class... _Args,
75
- class = std::enable_if_t<!std::is_array<_Tp>::value>>
76
- _Tp *defineProperty(_Args &&...__args) {
77
- auto prop =
78
- std::make_shared<_Tp>(std::forward<_Args>(__args)..., _onChange);
79
- _properties.push_back(prop);
80
- return prop.get();
81
- }
82
-
83
- /*
84
- Return name of properties in derived prop as a comma separated list
85
- */
86
- std::string getName() override {
87
- std::string v = "";
88
- for (size_t i = 0; i < _properties.size(); ++i) {
89
- v += _properties[i]->getName() + (i < _properties.size() - 1 ? ", " : "");
90
- }
91
- return v;
92
- }
93
-
94
- /**
95
- Returns true if one or more of the child props has values
96
- */
97
- bool isSet() override {
98
- for (auto &prop : _properties) {
99
- if (prop->isSet()) {
100
- return true;
101
- }
102
- }
103
- return false;
104
- }
105
-
106
- protected:
107
- void setIsChanged(bool isChanged) { _isChanged = isChanged; }
108
-
109
- private:
110
- std::vector<std::shared_ptr<BaseNodeProp>> _properties;
111
- std::atomic<bool> _isChanged = {false};
112
- std::function<void(BaseNodeProp *)> _onChange;
113
- };
114
-
115
- /**
116
- Class for composing multiple properties into a derived property value
117
- */
118
- template <typename T> class DerivedProp : public BaseDerivedProp {
119
- public:
120
- explicit DerivedProp(const std::function<void(BaseNodeProp *)> &onChange)
121
- : BaseDerivedProp(onChange) {}
122
-
123
- /**
124
- Returns the derived value
125
- */
126
- std::shared_ptr<const T> getDerivedValue() {
127
- return std::const_pointer_cast<const T>(_derivedValue);
128
- }
129
-
130
- /**
131
- Returns a mutable version of the derived value. Used by the paint props to
132
- keep a drawing context
133
- */
134
- std::shared_ptr<T> getUnsafeDerivedValue() { return _derivedValue; }
135
-
136
- /**
137
- Returns true if is optional and one of the child props has a value, or all
138
- props if optional is false.
139
- */
140
- bool isSet() override { return _derivedValue != nullptr; };
141
-
142
- protected:
143
- /**
144
- Set derived value from sub classes
145
- */
146
- void setDerivedValue(std::shared_ptr<T> value) {
147
- setIsChanged(_derivedValue != value);
148
- _derivedValue = value;
149
- }
150
-
151
- /**
152
- Set derived value from sub classes
153
- */
154
- void setDerivedValue(T &&value) {
155
- setIsChanged(true);
156
- _derivedValue = std::make_shared<T>(std::move(value));
157
- }
158
-
159
- private:
160
- std::shared_ptr<T> _derivedValue;
161
- };
162
-
163
- /**
164
- Class for composing multiple properties into a derived property value
165
- */
166
- template <typename T> class DerivedSkProp : public BaseDerivedProp {
167
- public:
168
- explicit DerivedSkProp(const std::function<void(BaseNodeProp *)> &onChange)
169
- : BaseDerivedProp(onChange) {}
170
-
171
- /**
172
- Returns the derived value
173
- */
174
- sk_sp<T> getDerivedValue() { return _derivedValue; }
175
-
176
- /**
177
- Returns true if is optional and one of the child props has a value, or all
178
- props if optional is false.
179
- */
180
- bool isSet() override { return _derivedValue != nullptr; };
181
-
182
- protected:
183
- /**
184
- Set derived value from sub classes
185
- */
186
- void setDerivedValue(sk_sp<T> value) {
187
- setIsChanged(_derivedValue != value);
188
- _derivedValue = value;
189
- }
190
-
191
- /**
192
- Set derived value from sub classes
193
- */
194
- void setDerivedValue(const T &&value) {
195
- setIsChanged(true);
196
- _derivedValue = sk_make_sp<T>(std::move(value));
197
- }
198
-
199
- private:
200
- sk_sp<T> _derivedValue;
201
- };
202
-
203
- } // namespace RNSkia
@@ -1,55 +0,0 @@
1
- #include "DrawingContext.h"
2
-
3
- #include "ConcatablePaint.h"
4
- #include "JsiDomNode.h"
5
- #include "PaintProps.h"
6
-
7
- #include <numeric>
8
-
9
- namespace RNSkia {
10
-
11
- DrawingContext::DrawingContext(std::shared_ptr<SkPaint> paint) {
12
- _declarationContext = std::make_unique<DeclarationContext>();
13
- paint->setAntiAlias(true);
14
- _paints.push_back(paint);
15
- }
16
-
17
- DrawingContext::DrawingContext()
18
- : DrawingContext(std::make_shared<SkPaint>()) {}
19
-
20
- bool DrawingContext::saveAndConcat(
21
- PaintProps *paintProps,
22
- const std::vector<std::shared_ptr<JsiDomNode>> &children,
23
- std::shared_ptr<SkPaint> paintCache) {
24
-
25
- if (paintCache) {
26
- _paints.push_back(paintCache);
27
- return true;
28
- }
29
-
30
- ConcatablePaint paint(_declarationContext.get(), paintProps, children);
31
- if (!paint.isEmpty()) {
32
- save();
33
- paint.concatTo(getPaint());
34
- return true;
35
- }
36
-
37
- return false;
38
- }
39
-
40
- void DrawingContext::save() {
41
- // Copy paint and push
42
- _paints.push_back(std::make_shared<SkPaint>(*getPaint()));
43
- }
44
-
45
- void DrawingContext::restore() { _paints.pop_back(); }
46
-
47
- SkCanvas *DrawingContext::getCanvas() { return _canvas; }
48
-
49
- void DrawingContext::setCanvas(SkCanvas *canvas) { _canvas = canvas; }
50
-
51
- std::shared_ptr<SkPaint> DrawingContext::getPaint() {
52
- return _paints[_paints.size() - 1];
53
- }
54
-
55
- } // namespace RNSkia
@@ -1,104 +0,0 @@
1
- #pragma once
2
-
3
- #include "JsiHostObject.h"
4
-
5
- #include "Declaration.h"
6
- #include "DeclarationContext.h"
7
-
8
- #include <memory>
9
- #include <string>
10
- #include <utility>
11
- #include <vector>
12
-
13
- #pragma clang diagnostic push
14
- #pragma clang diagnostic ignored "-Wdocumentation"
15
-
16
- #include "include/core/SkCanvas.h"
17
- #include "include/core/SkPaint.h"
18
- #include "include/core/SkRefCnt.h"
19
-
20
- #pragma clang diagnostic pop
21
-
22
- namespace RNSkia {
23
-
24
- class PaintProps;
25
- class JsiDomNode;
26
-
27
- class DomRenderContext {
28
- public:
29
- float getScaledWidth() { return _scaledWidth; }
30
- float getScaledHeight() { return _scaledHeight; }
31
-
32
- void setScaledWidth(float v) { _scaledWidth = v; }
33
- void setScaledHeight(float v) { _scaledHeight = v; }
34
-
35
- void setRequestRedraw(std::function<void()> &&requestRedraw) {
36
- _requestRedraw = std::move(requestRedraw);
37
- }
38
-
39
- const std::function<void()> &getRequestRedraw() { return _requestRedraw; }
40
-
41
- private:
42
- float _scaledWidth = -1;
43
- float _scaledHeight = -1;
44
- std::function<void()> _requestRedraw;
45
- };
46
-
47
- class DrawingContext : public DomRenderContext,
48
- public std::enable_shared_from_this<DrawingContext> {
49
- public:
50
- /**
51
- Creates a root drawing context with paint and opacity
52
- */
53
- DrawingContext();
54
-
55
- /**
56
- Creates a drawing context with the given paint as its starting paint object
57
- */
58
- explicit DrawingContext(std::shared_ptr<SkPaint> paint);
59
-
60
- /**
61
- Factory for saving/restoring the context for a node
62
- */
63
- bool saveAndConcat(PaintProps *paintProps,
64
- const std::vector<std::shared_ptr<JsiDomNode>> &children,
65
- std::shared_ptr<SkPaint> paintCache);
66
- void restore();
67
-
68
- /**
69
- Returns true if the current cache is changed
70
- */
71
- bool isChanged();
72
-
73
- /**
74
- Get/Sets the canvas object
75
- */
76
- SkCanvas *getCanvas();
77
-
78
- /**
79
- Sets the canvas
80
- */
81
- void setCanvas(SkCanvas *canvas);
82
-
83
- /**
84
- Gets the paint object
85
- */
86
- std::shared_ptr<SkPaint> getPaint();
87
-
88
- /*
89
- Returns the root declaratiins object
90
- */
91
- DeclarationContext *getDeclarationContext() {
92
- return _declarationContext.get();
93
- }
94
-
95
- private:
96
- void save();
97
-
98
- explicit DrawingContext(const char *source);
99
- SkCanvas *_canvas = nullptr;
100
- std::vector<std::shared_ptr<SkPaint>> _paints;
101
- std::unique_ptr<DeclarationContext> _declarationContext;
102
- };
103
-
104
- } // namespace RNSkia
@@ -1,119 +0,0 @@
1
-
2
- #pragma once
3
-
4
- #include "DrawingContext.h"
5
- #include "JsiDomNode.h"
6
-
7
- #include <memory>
8
- #include <string>
9
-
10
- namespace RNSkia {
11
-
12
- enum DeclarationType {
13
- Unknown = 0,
14
- Paint = 1,
15
- Shader = 2,
16
- ImageFilter = 3,
17
- ColorFilter = 4,
18
- PathEffect = 5,
19
- MaskFilter = 6,
20
- };
21
-
22
- class JsiDomDeclarationNode : public JsiDomNode {
23
- public:
24
- JsiDomDeclarationNode(std::shared_ptr<RNSkPlatformContext> context,
25
- const char *type, DeclarationType declarationType)
26
- : JsiDomNode(context, type, NodeClass::DeclarationNode),
27
- _declarationType(declarationType) {}
28
-
29
- JSI_PROPERTY_GET(declarationType) {
30
- // FIXME: Shouldn't this be the declaration type instead? It has been
31
- return jsi::String::createFromUtf8(runtime, std::string(getType()));
32
- }
33
-
34
- JSI_EXPORT_PROPERTY_GETTERS(JSI_EXPORT_PROP_GET(JsiDomDeclarationNode,
35
- declarationType),
36
- JSI_EXPORT_PROP_GET(JsiDomNode, type))
37
-
38
- JSI_EXPORT_FUNCTIONS(JSI_EXPORT_FUNC(JsiDomNode, addChild),
39
- JSI_EXPORT_FUNC(JsiDomNode, removeChild),
40
- JSI_EXPORT_FUNC(JsiDomNode, insertChildBefore),
41
- JSI_EXPORT_FUNC(JsiDomNode, setProps),
42
- JSI_EXPORT_FUNC(JsiDomNode, setProp),
43
- JSI_EXPORT_FUNC(JsiDomNode, dispose),
44
- JSI_EXPORT_FUNC(JsiDomNode, children))
45
-
46
- /**
47
- Called when rendering the tree to create all derived values from all nodes.
48
- */
49
- void decorateContext(DeclarationContext *context) override {
50
- JsiDomNode::decorateContext(context);
51
-
52
- #if SKIA_DOM_DEBUG
53
- printDebugInfo("Begin decorate " + std::string(getType()));
54
- #endif
55
-
56
- // decorate drawing context
57
- decorate(context);
58
-
59
- #if SKIA_DOM_DEBUG
60
- printDebugInfo("End / Commit decorate " + std::string(getType()));
61
- #endif
62
- }
63
-
64
- DeclarationType getDeclarationType() { return _declarationType; }
65
-
66
- /**
67
- Override to implement materialization
68
- */
69
- virtual void decorate(DeclarationContext *context) = 0;
70
-
71
- protected:
72
- /**
73
- Invalidates and marks then context as changed. The implementation in the
74
- declaration node is to pass the call upwards to the parent node
75
- */
76
- void invalidateContext() override {
77
- if (getParent() != nullptr) {
78
- getParent()->invalidateContext();
79
- }
80
- }
81
-
82
- /**
83
- A property changed
84
- */
85
- void onPropertyChanged(BaseNodeProp *prop) override { invalidateContext(); }
86
-
87
- /**
88
- Validates that only declaration nodes can be children
89
- */
90
- void addChild(std::shared_ptr<JsiDomNode> child) override {
91
- if (child->getNodeClass() != NodeClass::DeclarationNode) {
92
- getContext()->raiseError(std::runtime_error(
93
- "Cannot add a child of type \"" + std::string(child->getType()) +
94
- "\" to a \"" + std::string(getType()) + "\"."));
95
- }
96
- JsiDomNode::addChild(child);
97
- }
98
-
99
- /**
100
- Validates that only declaration nodes can be children
101
- */
102
- void insertChildBefore(std::shared_ptr<JsiDomNode> child,
103
- std::shared_ptr<JsiDomNode> before) override {
104
- if (child->getNodeClass() != NodeClass::DeclarationNode) {
105
- getContext()->raiseError(std::runtime_error(
106
- "Cannot add a child of type \"" + std::string(child->getType()) +
107
- "\" to a \"" + std::string(getType()) + "\"."));
108
- }
109
- JsiDomNode::insertChildBefore(child, before);
110
- }
111
-
112
- private:
113
- /**
114
- Type of declaration
115
- */
116
- DeclarationType _declarationType;
117
- };
118
-
119
- } // namespace RNSkia