@shopify/react-native-skia 1.11.0 → 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 (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,361 +0,0 @@
1
- #pragma once
2
-
3
- #include "JsiColorFilterNodes.h"
4
- #include "JsiDomDeclarationNode.h"
5
- #include "JsiShaderNodes.h"
6
- #include "JsiSkRuntimeEffect.h"
7
-
8
- #include "NodeProp.h"
9
- #include "RadiusProp.h"
10
- #include "TileModeProp.h"
11
- #include "UniformsProp.h"
12
-
13
- #include <memory>
14
- #include <string>
15
-
16
- #pragma clang diagnostic push
17
- #pragma clang diagnostic ignored "-Wdocumentation"
18
-
19
- #include "include/core/SkImageFilter.h"
20
-
21
- #pragma clang diagnostic pop
22
-
23
- namespace RNSkia {
24
-
25
- class JsiBaseImageFilterNode : public JsiDomDeclarationNode {
26
- public:
27
- JsiBaseImageFilterNode(std::shared_ptr<RNSkPlatformContext> context,
28
- const char *type)
29
- : JsiDomDeclarationNode(context, type, DeclarationType::ImageFilter) {}
30
-
31
- protected:
32
- void composeAndPush(DeclarationContext *context, sk_sp<SkImageFilter> imgf1) {
33
- context->save();
34
- decorateChildren(context);
35
- auto imgf2 = context->getImageFilters()->popAsOne();
36
- auto cf = context->getColorFilters()->popAsOne();
37
- context->restore();
38
- if (cf != nullptr) {
39
- imgf2 = SkImageFilters::Compose(imgf2,
40
- SkImageFilters::ColorFilter(cf, nullptr));
41
- }
42
- auto imgf =
43
- imgf2 != nullptr ? SkImageFilters::Compose(imgf1, imgf2) : imgf1;
44
-
45
- context->getImageFilters()->push(imgf);
46
- }
47
- };
48
-
49
- class JsiBlendImageFilterNode : public JsiBaseImageFilterNode,
50
- public JsiDomNodeCtor<JsiBlendImageFilterNode> {
51
- public:
52
- explicit JsiBlendImageFilterNode(std::shared_ptr<RNSkPlatformContext> context)
53
- : JsiBaseImageFilterNode(context, "skBlendImageFilter") {}
54
-
55
- void decorate(DeclarationContext *context) override {
56
-
57
- if (getChildren().size() != 2) {
58
- throw std::runtime_error("Blend image filter needs two child nodes.");
59
- }
60
-
61
- auto background = context->getImageFilters()->pop();
62
- auto foreground = context->getImageFilters()->pop();
63
-
64
- SkBlendMode blendMode = *_blendModeProp->getDerivedValue();
65
- composeAndPush(context,
66
- SkImageFilters::Blend(blendMode, background, foreground));
67
- }
68
-
69
- protected:
70
- void defineProperties(NodePropsContainer *container) override {
71
- JsiDomDeclarationNode::defineProperties(container);
72
- _blendModeProp = container->defineProperty<BlendModeProp>("mode");
73
- _blendModeProp->require();
74
- }
75
-
76
- private:
77
- BlendModeProp *_blendModeProp;
78
- };
79
-
80
- class JsiDropShadowImageFilterNode
81
- : public JsiBaseImageFilterNode,
82
- public JsiDomNodeCtor<JsiDropShadowImageFilterNode> {
83
- public:
84
- explicit JsiDropShadowImageFilterNode(
85
- std::shared_ptr<RNSkPlatformContext> context)
86
- : JsiBaseImageFilterNode(context, "skDropShadowImageFilter") {}
87
-
88
- void decorate(DeclarationContext *context) override {
89
-
90
- auto color = _colorProp->getDerivedValue();
91
- auto dx = _dxProp->value().getAsNumber();
92
- auto dy = _dyProp->value().getAsNumber();
93
- auto blur = _blurProp->value().getAsNumber();
94
- auto input = context->getImageFilters()->pop();
95
-
96
- auto inner = _innerProp->isSet() && _innerProp->value().getAsBool();
97
- auto shadowOnly =
98
- _shadowOnlyProp->isSet() && _shadowOnlyProp->value().getAsBool();
99
-
100
- if (inner) {
101
- auto srcGraphic = SkImageFilters::ColorFilter(
102
- SkColorFilters::Blend(SK_ColorBLACK, SkBlendMode::kDst), nullptr);
103
- auto srcAlpha = SkImageFilters::ColorFilter(
104
- SkColorFilters::Blend(SK_ColorBLACK, SkBlendMode::kSrcIn), nullptr);
105
- auto f1 = SkImageFilters::ColorFilter(
106
- SkColorFilters::Blend(*color, SkBlendMode::kSrcOut), nullptr);
107
- auto f2 = SkImageFilters::Offset(dx, dy, f1);
108
- auto f3 = SkImageFilters::Blur(blur, blur, SkTileMode::kDecal, f2);
109
- auto f4 = SkImageFilters::Blend(SkBlendMode::kSrcIn, srcAlpha, f3);
110
- if (shadowOnly) {
111
- composeAndPush(context, f4);
112
- } else {
113
- composeAndPush(context, SkImageFilters::Compose(
114
- input ? input : nullptr,
115
- SkImageFilters::Blend(SkBlendMode::kSrcOver,
116
- srcGraphic, f4)));
117
- }
118
-
119
- } else {
120
- composeAndPush(
121
- context,
122
- shadowOnly ? SkImageFilters::DropShadowOnly(
123
- dx, dy, blur, blur, *color, input ? input : nullptr)
124
- : SkImageFilters::DropShadow(dx, dy, blur, blur, *color,
125
- input ? input : nullptr));
126
- }
127
- }
128
-
129
- protected:
130
- void defineProperties(NodePropsContainer *container) override {
131
- JsiDomDeclarationNode::defineProperties(container);
132
- _dxProp = container->defineProperty<NodeProp>("dx");
133
- _dyProp = container->defineProperty<NodeProp>("dy");
134
- _blurProp = container->defineProperty<NodeProp>("blur");
135
- _colorProp = container->defineProperty<ColorProp>("color");
136
-
137
- _innerProp = container->defineProperty<NodeProp>("inner");
138
- _shadowOnlyProp = container->defineProperty<NodeProp>("shadowOnly");
139
-
140
- _dxProp->require();
141
- _dyProp->require();
142
- _blurProp->require();
143
- _colorProp->require();
144
- }
145
-
146
- private:
147
- NodeProp *_dxProp;
148
- NodeProp *_dyProp;
149
- NodeProp *_blurProp;
150
- ColorProp *_colorProp;
151
- NodeProp *_innerProp;
152
- NodeProp *_shadowOnlyProp;
153
- };
154
-
155
- class JsiDisplacementMapImageFilterNode
156
- : public JsiBaseImageFilterNode,
157
- public JsiDomNodeCtor<JsiDisplacementMapImageFilterNode> {
158
- public:
159
- explicit JsiDisplacementMapImageFilterNode(
160
- std::shared_ptr<RNSkPlatformContext> context)
161
- : JsiBaseImageFilterNode(context, "skDisplacementMapImageFilter") {}
162
-
163
- void decorate(DeclarationContext *context) override {
164
- decorateChildren(context);
165
- auto channelX =
166
- getColorChannelFromStringValue(_channelXProp->value().getAsString());
167
- auto channelY =
168
- getColorChannelFromStringValue(_channelYProp->value().getAsString());
169
- auto scale = _scaleProp->value().getAsNumber();
170
- auto shader = context->getShaders()->pop();
171
- if (!shader) {
172
- throw std::runtime_error("DisplacementMap expects a shader as child");
173
- }
174
- auto map = SkImageFilters::Shader(shader);
175
- auto input = context->getImageFilters()->pop();
176
- auto imgf = SkImageFilters::DisplacementMap(channelX, channelY, scale, map,
177
- input ? input : nullptr);
178
- context->getImageFilters()->push(imgf);
179
- }
180
-
181
- protected:
182
- void defineProperties(NodePropsContainer *container) override {
183
- JsiDomDeclarationNode::defineProperties(container);
184
- _channelXProp = container->defineProperty<NodeProp>("channelX");
185
- _channelYProp = container->defineProperty<NodeProp>("channelY");
186
- _scaleProp = container->defineProperty<NodeProp>("scale");
187
-
188
- _channelXProp->require();
189
- _channelYProp->require();
190
- _scaleProp->require();
191
- }
192
-
193
- private:
194
- SkColorChannel getColorChannelFromStringValue(const std::string &value) {
195
- if (value == "r") {
196
- return SkColorChannel::kR;
197
- } else if (value == "g") {
198
- return SkColorChannel::kG;
199
- } else if (value == "b") {
200
- return SkColorChannel::kB;
201
- } else if (value == "a") {
202
- return SkColorChannel::kA;
203
- }
204
- throw std::runtime_error("Value \"" + value +
205
- "\" is not a valid color channel.");
206
- }
207
-
208
- NodeProp *_channelXProp;
209
- NodeProp *_channelYProp;
210
- NodeProp *_scaleProp;
211
- };
212
-
213
- class JsiBlurImageFilterNode : public JsiBaseImageFilterNode,
214
- public JsiDomNodeCtor<JsiBlurImageFilterNode> {
215
- public:
216
- explicit JsiBlurImageFilterNode(std::shared_ptr<RNSkPlatformContext> context)
217
- : JsiBaseImageFilterNode(context, "skBlurImageFilter") {}
218
-
219
- void decorate(DeclarationContext *context) override {
220
- auto input = context->getImageFilters()->pop();
221
- auto imageFilter = SkImageFilters::Blur(
222
- _blurProp->getDerivedValue()->x(), _blurProp->getDerivedValue()->y(),
223
- _tileModeProp->isSet() ? *_tileModeProp->getDerivedValue()
224
- : SkTileMode::kDecal,
225
- input);
226
- composeAndPush(context, imageFilter);
227
- }
228
-
229
- protected:
230
- void defineProperties(NodePropsContainer *container) override {
231
- JsiDomDeclarationNode::defineProperties(container);
232
- _blurProp = container->defineProperty<RadiusProp>("blur");
233
- _tileModeProp = container->defineProperty<TileModeProp>("mode");
234
-
235
- _blurProp->require();
236
- }
237
-
238
- private:
239
- RadiusProp *_blurProp;
240
- TileModeProp *_tileModeProp;
241
- };
242
-
243
- class JsiOffsetImageFilterNode
244
- : public JsiBaseImageFilterNode,
245
- public JsiDomNodeCtor<JsiOffsetImageFilterNode> {
246
- public:
247
- explicit JsiOffsetImageFilterNode(
248
- std::shared_ptr<RNSkPlatformContext> context)
249
- : JsiBaseImageFilterNode(context, "skOffsetImageFilter") {}
250
-
251
- void decorate(DeclarationContext *context) override {
252
- decorateChildren(context);
253
- auto input = context->getImageFilters()->pop();
254
- composeAndPush(context,
255
- SkImageFilters::Offset(_xProp->value().getAsNumber(),
256
- _yProp->value().getAsNumber(),
257
- input ? input : nullptr));
258
- }
259
-
260
- protected:
261
- void defineProperties(NodePropsContainer *container) override {
262
- JsiDomDeclarationNode::defineProperties(container);
263
- _xProp = container->defineProperty<NodeProp>("x");
264
- _yProp = container->defineProperty<NodeProp>("y");
265
-
266
- _xProp->require();
267
- _yProp->require();
268
- }
269
-
270
- private:
271
- NodeProp *_xProp;
272
- NodeProp *_yProp;
273
- };
274
-
275
- class JsiMorphologyImageFilterNode
276
- : public JsiBaseImageFilterNode,
277
- public JsiDomNodeCtor<JsiMorphologyImageFilterNode> {
278
- public:
279
- enum Type { Dilate, Erode };
280
-
281
- explicit JsiMorphologyImageFilterNode(
282
- std::shared_ptr<RNSkPlatformContext> context)
283
- : JsiBaseImageFilterNode(context, "skMorphologyImageFilter") {}
284
-
285
- void decorate(DeclarationContext *context) override {
286
- auto op = getTypeFromStringValue(_operatorProp->value().getAsString());
287
- auto radius = _radiusProp->getDerivedValue();
288
- auto input = context->getImageFilters()->pop();
289
-
290
- if (op == Type::Dilate) {
291
- composeAndPush(context, SkImageFilters::Dilate(radius->x(), radius->y(),
292
- input ? input : nullptr));
293
- } else {
294
- composeAndPush(context, SkImageFilters::Erode(radius->x(), radius->y(),
295
- input ? input : nullptr));
296
- }
297
- }
298
-
299
- protected:
300
- void defineProperties(NodePropsContainer *container) override {
301
- JsiDomDeclarationNode::defineProperties(container);
302
- _operatorProp = container->defineProperty<NodeProp>("operator");
303
- _radiusProp = container->defineProperty<RadiusProp>("radius");
304
-
305
- _operatorProp->require();
306
- _radiusProp->require();
307
- }
308
-
309
- private:
310
- Type getTypeFromStringValue(const std::string &value) {
311
- if (value == "erode") {
312
- return Type::Erode;
313
- } else if (value == "dilate") {
314
- return Type::Dilate;
315
- }
316
- throw std::runtime_error("Value \"" + value +
317
- "\" is not valid for the operator property in the "
318
- "MorphologyImageFilter component.");
319
- }
320
- NodeProp *_operatorProp;
321
- RadiusProp *_radiusProp;
322
- };
323
-
324
- class JsiRuntimeShaderImageFilterNode
325
- : public JsiBaseImageFilterNode,
326
- public JsiDomNodeCtor<JsiRuntimeShaderImageFilterNode> {
327
- public:
328
- explicit JsiRuntimeShaderImageFilterNode(
329
- std::shared_ptr<RNSkPlatformContext> context)
330
- : JsiBaseImageFilterNode(context, "skRuntimeShaderImageFilter") {}
331
-
332
- void decorate(DeclarationContext *context) override {
333
- auto source = _sourceProp->value().getAs<JsiSkRuntimeEffect>();
334
- if (source == nullptr) {
335
- throw std::runtime_error("Expected runtime effect when reading source "
336
- "property of RuntimeEffectImageFilter.");
337
- }
338
-
339
- auto builder = SkRuntimeShaderBuilder(source->getObject());
340
- auto input = context->getImageFilters()->pop();
341
- _uniformsProp->processUniforms(builder);
342
-
343
- composeAndPush(context, SkImageFilters::RuntimeShader(builder, "", input));
344
- }
345
-
346
- protected:
347
- void defineProperties(NodePropsContainer *container) override {
348
- JsiDomDeclarationNode::defineProperties(container);
349
- _sourceProp = container->defineProperty<NodeProp>("source");
350
- _uniformsProp =
351
- container->defineProperty<UniformsProp>("uniforms", _sourceProp);
352
-
353
- _sourceProp->require();
354
- }
355
-
356
- private:
357
- NodeProp *_sourceProp;
358
- UniformsProp *_uniformsProp;
359
- };
360
-
361
- } // namespace RNSkia
@@ -1,43 +0,0 @@
1
- #pragma once
2
-
3
- #include "JsiDomDrawingNode.h"
4
- #include "SamplingProp.h"
5
- #include "SkImageProps.h"
6
-
7
- #include <memory>
8
-
9
- namespace RNSkia {
10
-
11
- class JsiImageNode : public JsiDomDrawingNode,
12
- public JsiDomNodeCtor<JsiImageNode> {
13
- public:
14
- explicit JsiImageNode(std::shared_ptr<RNSkPlatformContext> context)
15
- : JsiDomDrawingNode(context, "skImage") {}
16
-
17
- protected:
18
- void draw(DrawingContext *context) override {
19
- auto rects = _imageProps->getDerivedValue();
20
- auto image = _imageProps->getImage();
21
- if (image == nullptr) {
22
- return;
23
- }
24
- auto sampling = _samplingProp->isSet()
25
- ? *_samplingProp->getDerivedValue()
26
- : SkSamplingOptions(SkFilterMode::kLinear);
27
- context->getCanvas()->drawImageRect(image, rects->src, rects->dst, sampling,
28
- context->getPaint().get(),
29
- SkCanvas::kStrict_SrcRectConstraint);
30
- }
31
-
32
- void defineProperties(NodePropsContainer *container) override {
33
- JsiDomDrawingNode::defineProperties(container);
34
- _imageProps = container->defineProperty<ImageProps>();
35
- _samplingProp = container->defineProperty<SamplingProp>("sampling");
36
- }
37
-
38
- private:
39
- ImageProps *_imageProps;
40
- SamplingProp *_samplingProp;
41
- };
42
-
43
- } // namespace RNSkia
@@ -1,63 +0,0 @@
1
- #pragma once
2
-
3
- #include "JsiDomDrawingNode.h"
4
- #include "RectProp.h"
5
- #include "SvgProp.h"
6
-
7
- #include <memory>
8
-
9
- namespace RNSkia {
10
-
11
- class JsiImageSvgNode : public JsiDomDrawingNode,
12
- public JsiDomNodeCtor<JsiImageSvgNode> {
13
- public:
14
- explicit JsiImageSvgNode(std::shared_ptr<RNSkPlatformContext> context)
15
- : JsiDomDrawingNode(context, "skImageSvg") {}
16
-
17
- protected:
18
- void draw(DrawingContext *context) override {
19
- auto svgDom = _svgDomProp->getDerivedValue();
20
- if (svgDom != nullptr) {
21
- auto rect = _rectProp->getDerivedValue();
22
- auto x = _xProp->isSet() ? _xProp->value().getAsNumber() : -1;
23
- auto y = _yProp->isSet() ? _yProp->value().getAsNumber() : -1;
24
- auto width = _widthProp->isSet() ? _widthProp->value().getAsNumber() : -1;
25
- auto height =
26
- _widthProp->isSet() ? _heightProp->value().getAsNumber() : -1;
27
- context->getCanvas()->save();
28
- if (rect != nullptr) {
29
- context->getCanvas()->translate(rect->x(), rect->y());
30
- svgDom->setContainerSize(SkSize::Make(rect->width(), rect->height()));
31
- } else {
32
- if (x != -1 && y != -1) {
33
- context->getCanvas()->translate(x, y);
34
- }
35
- if (width != -1 && height != -1) {
36
- svgDom->setContainerSize(SkSize::Make(width, height));
37
- }
38
- }
39
- svgDom->render(context->getCanvas());
40
- context->getCanvas()->restore();
41
- }
42
- }
43
-
44
- void defineProperties(NodePropsContainer *container) override {
45
- JsiDomDrawingNode::defineProperties(container);
46
- _svgDomProp = container->defineProperty<SvgProp>("svg");
47
- _rectProp = container->defineProperty<RectProps>("rect");
48
- _xProp = container->defineProperty<NodeProp>("x");
49
- _yProp = container->defineProperty<NodeProp>("y");
50
- _widthProp = container->defineProperty<NodeProp>("width");
51
- _heightProp = container->defineProperty<NodeProp>("height");
52
- }
53
-
54
- private:
55
- SvgProp *_svgDomProp;
56
- RectProps *_rectProp;
57
- NodeProp *_xProp;
58
- NodeProp *_yProp;
59
- NodeProp *_widthProp;
60
- NodeProp *_heightProp;
61
- };
62
-
63
- } // namespace RNSkia
@@ -1,74 +0,0 @@
1
- #pragma once
2
-
3
- #include "JsiBoxShadowNode.h"
4
- #include "JsiDomRenderNode.h"
5
- #include "JsiPaintNode.h"
6
-
7
- #include <memory>
8
- #include <vector>
9
-
10
- namespace RNSkia {
11
-
12
- class JsiLayerNode : public JsiDomRenderNode,
13
- public JsiDomNodeCtor<JsiLayerNode> {
14
- public:
15
- explicit JsiLayerNode(std::shared_ptr<RNSkPlatformContext> context)
16
- : JsiDomRenderNode(context, "skLayer") {}
17
-
18
- protected:
19
- void renderNode(DrawingContext *context) override {
20
-
21
- auto hasLayer = false;
22
- auto children = getChildren();
23
-
24
- // Is the first children a layer?
25
- for (size_t i = 0; i < children.size(); ++i) {
26
- if (i == 0) {
27
- // Check for paint node as layer
28
- if (children.at(i)->getNodeClass() == NodeClass::DeclarationNode) {
29
- auto declarationNode =
30
- std::static_pointer_cast<JsiDomDeclarationNode>(children.at(i));
31
-
32
- if (declarationNode->getDeclarationType() == DeclarationType::Paint) {
33
- // Yes, it is a paint node - which we can use as a layer.
34
- auto declarationContext = context->getDeclarationContext();
35
- auto layerNode =
36
- std::static_pointer_cast<JsiDomDeclarationNode>(children.at(i));
37
-
38
- // Save canvas with the paint node's paint!
39
- declarationContext->save();
40
- layerNode->decorate(declarationContext);
41
- auto paint = declarationContext->getPaints()->pop();
42
- declarationContext->restore();
43
-
44
- if (paint) {
45
- hasLayer = true;
46
- context->getCanvas()->saveLayer(
47
- SkCanvas::SaveLayerRec(nullptr, paint.get(), nullptr, 0));
48
- }
49
-
50
- continue;
51
- }
52
- }
53
- }
54
-
55
- // Render rest of the children
56
- if (children.at(i)->getNodeClass() == NodeClass::RenderNode) {
57
- std::static_pointer_cast<JsiDomRenderNode>(children.at(i))
58
- ->render(context);
59
- }
60
- }
61
-
62
- if (hasLayer) {
63
- context->getCanvas()->restore();
64
- }
65
- }
66
-
67
- void defineProperties(NodePropsContainer *container) override {
68
- JsiDomRenderNode::defineProperties(container);
69
- }
70
-
71
- private:
72
- };
73
-
74
- } // namespace RNSkia
@@ -1,38 +0,0 @@
1
- #pragma once
2
-
3
- #include "JsiDomDrawingNode.h"
4
- #include "PointProp.h"
5
-
6
- #include <memory>
7
-
8
- namespace RNSkia {
9
-
10
- class JsiLineNode : public JsiDomDrawingNode,
11
- public JsiDomNodeCtor<JsiLineNode> {
12
- public:
13
- explicit JsiLineNode(std::shared_ptr<RNSkPlatformContext> context)
14
- : JsiDomDrawingNode(context, "skLine") {}
15
-
16
- protected:
17
- void draw(DrawingContext *context) override {
18
- context->getCanvas()->drawLine(
19
- _p1Prop->getDerivedValue()->x(), _p1Prop->getDerivedValue()->y(),
20
- _p2Prop->getDerivedValue()->x(), _p2Prop->getDerivedValue()->y(),
21
- *context->getPaint());
22
- }
23
-
24
- void defineProperties(NodePropsContainer *container) override {
25
- JsiDomDrawingNode::defineProperties(container);
26
- _p1Prop = container->defineProperty<PointProp>("p1");
27
- _p2Prop = container->defineProperty<PointProp>("p2");
28
-
29
- _p1Prop->require();
30
- _p2Prop->require();
31
- }
32
-
33
- private:
34
- PointProp *_p1Prop;
35
- PointProp *_p2Prop;
36
- };
37
-
38
- } // namespace RNSkia
@@ -1,32 +0,0 @@
1
- #pragma once
2
-
3
- #include "JsiDomDrawingNode.h"
4
- #include "RectProp.h"
5
-
6
- #include <memory>
7
-
8
- namespace RNSkia {
9
-
10
- class JsiOvalNode : public JsiDomDrawingNode,
11
- public JsiDomNodeCtor<JsiOvalNode> {
12
- public:
13
- explicit JsiOvalNode(std::shared_ptr<RNSkPlatformContext> context)
14
- : JsiDomDrawingNode(context, "skOval") {}
15
-
16
- protected:
17
- void draw(DrawingContext *context) override {
18
- context->getCanvas()->drawOval(*_rectProp->getDerivedValue(),
19
- *context->getPaint());
20
- }
21
-
22
- void defineProperties(NodePropsContainer *container) override {
23
- JsiDomDrawingNode::defineProperties(container);
24
- _rectProp = container->defineProperty<RectProps>("rect");
25
- _rectProp->require();
26
- }
27
-
28
- private:
29
- RectProps *_rectProp;
30
- };
31
-
32
- } // namespace RNSkia