@shopify/react-native-skia 1.11.1 → 1.11.3

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 (266) 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/react-native-skia.podspec +1 -1
  79. package/src/dom/nodes/index.ts +0 -1
  80. package/src/external/reanimated/renderHelpers.ts +1 -78
  81. package/src/index.ts +0 -1
  82. package/src/renderer/Canvas.tsx +11 -1
  83. package/src/sksg/Container.ts +11 -0
  84. package/src/sksg/Elements.tsx +136 -0
  85. package/src/sksg/Reconciler.ts +2 -0
  86. package/src/views/index.ts +0 -1
  87. package/android/cpp/jni/include/JniSkiaDomView.h +0 -82
  88. package/android/src/main/java/com/shopify/reactnative/skia/SkiaDomView.java +0 -41
  89. package/android/src/main/java/com/shopify/reactnative/skia/SkiaDomViewManager.java +0 -32
  90. package/android/src/paper/java/com/facebook/react/viewmanagers/SkiaDomViewManagerDelegate.java +0 -34
  91. package/android/src/paper/java/com/facebook/react/viewmanagers/SkiaDomViewManagerInterface.java +0 -18
  92. package/cpp/rnskia/RNSkDomView.cpp +0 -121
  93. package/cpp/rnskia/RNSkDomView.h +0 -97
  94. package/cpp/rnskia/dom/JsiDomApi.h +0 -165
  95. package/cpp/rnskia/dom/base/BaseNodeProp.h +0 -72
  96. package/cpp/rnskia/dom/base/ConcatablePaint.cpp +0 -117
  97. package/cpp/rnskia/dom/base/ConcatablePaint.h +0 -49
  98. package/cpp/rnskia/dom/base/Declaration.h +0 -86
  99. package/cpp/rnskia/dom/base/DeclarationContext.h +0 -79
  100. package/cpp/rnskia/dom/base/DerivedNodeProp.h +0 -203
  101. package/cpp/rnskia/dom/base/DrawingContext.cpp +0 -55
  102. package/cpp/rnskia/dom/base/DrawingContext.h +0 -104
  103. package/cpp/rnskia/dom/base/JsiDomDeclarationNode.h +0 -119
  104. package/cpp/rnskia/dom/base/JsiDomDrawingNode.h +0 -71
  105. package/cpp/rnskia/dom/base/JsiDomNode.h +0 -572
  106. package/cpp/rnskia/dom/base/JsiDomRenderNode.h +0 -262
  107. package/cpp/rnskia/dom/base/NodeProp.h +0 -139
  108. package/cpp/rnskia/dom/base/NodePropsContainer.h +0 -158
  109. package/cpp/rnskia/dom/nodes/JsiAtlasNode.h +0 -64
  110. package/cpp/rnskia/dom/nodes/JsiBackdropFilterNode.h +0 -49
  111. package/cpp/rnskia/dom/nodes/JsiBlendNode.h +0 -94
  112. package/cpp/rnskia/dom/nodes/JsiBlurMaskNode.h +0 -75
  113. package/cpp/rnskia/dom/nodes/JsiBoxNode.h +0 -94
  114. package/cpp/rnskia/dom/nodes/JsiBoxShadowNode.h +0 -33
  115. package/cpp/rnskia/dom/nodes/JsiCircleNode.h +0 -35
  116. package/cpp/rnskia/dom/nodes/JsiColorFilterNodes.h +0 -164
  117. package/cpp/rnskia/dom/nodes/JsiDiffRectNode.h +0 -37
  118. package/cpp/rnskia/dom/nodes/JsiFillNode.h +0 -22
  119. package/cpp/rnskia/dom/nodes/JsiGlyphsNode.h +0 -53
  120. package/cpp/rnskia/dom/nodes/JsiGroupNode.h +0 -25
  121. package/cpp/rnskia/dom/nodes/JsiImageFilterNodes.h +0 -361
  122. package/cpp/rnskia/dom/nodes/JsiImageNode.h +0 -43
  123. package/cpp/rnskia/dom/nodes/JsiImageSvgNode.h +0 -63
  124. package/cpp/rnskia/dom/nodes/JsiLayerNode.h +0 -74
  125. package/cpp/rnskia/dom/nodes/JsiLineNode.h +0 -38
  126. package/cpp/rnskia/dom/nodes/JsiOvalNode.h +0 -32
  127. package/cpp/rnskia/dom/nodes/JsiPaintNode.h +0 -119
  128. package/cpp/rnskia/dom/nodes/JsiParagraphNode.h +0 -62
  129. package/cpp/rnskia/dom/nodes/JsiPatchNode.h +0 -50
  130. package/cpp/rnskia/dom/nodes/JsiPathEffectNodes.h +0 -268
  131. package/cpp/rnskia/dom/nodes/JsiPathNode.h +0 -181
  132. package/cpp/rnskia/dom/nodes/JsiPictureNode.h +0 -31
  133. package/cpp/rnskia/dom/nodes/JsiPointsNode.h +0 -48
  134. package/cpp/rnskia/dom/nodes/JsiRRectNode.h +0 -33
  135. package/cpp/rnskia/dom/nodes/JsiRectNode.h +0 -33
  136. package/cpp/rnskia/dom/nodes/JsiShaderNodes.h +0 -434
  137. package/cpp/rnskia/dom/nodes/JsiTextBlobNode.h +0 -44
  138. package/cpp/rnskia/dom/nodes/JsiTextNode.h +0 -51
  139. package/cpp/rnskia/dom/nodes/JsiTextPathNode.h +0 -33
  140. package/cpp/rnskia/dom/nodes/JsiVerticesNode.h +0 -41
  141. package/cpp/rnskia/dom/props/BezierProps.h +0 -65
  142. package/cpp/rnskia/dom/props/BlendModeProp.h +0 -103
  143. package/cpp/rnskia/dom/props/BoxShadowProps.h +0 -62
  144. package/cpp/rnskia/dom/props/CircleProp.h +0 -49
  145. package/cpp/rnskia/dom/props/ClipProp.h +0 -57
  146. package/cpp/rnskia/dom/props/ColorProp.h +0 -96
  147. package/cpp/rnskia/dom/props/FontProp.h +0 -42
  148. package/cpp/rnskia/dom/props/GlyphsProp.h +0 -55
  149. package/cpp/rnskia/dom/props/LayerProp.h +0 -52
  150. package/cpp/rnskia/dom/props/MatrixProp.h +0 -54
  151. package/cpp/rnskia/dom/props/NumbersProp.h +0 -67
  152. package/cpp/rnskia/dom/props/PaintProps.h +0 -133
  153. package/cpp/rnskia/dom/props/ParagraphProp.h +0 -45
  154. package/cpp/rnskia/dom/props/PathProp.h +0 -59
  155. package/cpp/rnskia/dom/props/PictureProp.h +0 -40
  156. package/cpp/rnskia/dom/props/PointProp.h +0 -65
  157. package/cpp/rnskia/dom/props/PointsProp.h +0 -81
  158. package/cpp/rnskia/dom/props/RRectProp.h +0 -222
  159. package/cpp/rnskia/dom/props/RSXformProp.h +0 -52
  160. package/cpp/rnskia/dom/props/RadiusProp.h +0 -43
  161. package/cpp/rnskia/dom/props/RectProp.h +0 -164
  162. package/cpp/rnskia/dom/props/SamplingProp.h +0 -54
  163. package/cpp/rnskia/dom/props/SkImageProps.h +0 -196
  164. package/cpp/rnskia/dom/props/StrokeProps.h +0 -79
  165. package/cpp/rnskia/dom/props/SvgProp.h +0 -45
  166. package/cpp/rnskia/dom/props/TextBlobProp.h +0 -133
  167. package/cpp/rnskia/dom/props/TileModeProp.h +0 -52
  168. package/cpp/rnskia/dom/props/TransformProp.h +0 -147
  169. package/cpp/rnskia/dom/props/TransformsProps.h +0 -66
  170. package/cpp/rnskia/dom/props/UniformsProp.h +0 -159
  171. package/cpp/rnskia/dom/props/VertexModeProp.h +0 -49
  172. package/cpp/rnskia/dom/props/VerticesProps.h +0 -63
  173. package/ios/RNSkia-iOS/SkiaDomView.h +0 -7
  174. package/ios/RNSkia-iOS/SkiaDomView.mm +0 -63
  175. package/ios/RNSkia-iOS/SkiaDomViewManager.h +0 -8
  176. package/ios/RNSkia-iOS/SkiaDomViewManager.mm +0 -51
  177. package/lib/commonjs/dom/nodes/JsiSkDOM.d.ts +0 -64
  178. package/lib/commonjs/dom/nodes/JsiSkDOM.js +0 -196
  179. package/lib/commonjs/dom/nodes/JsiSkDOM.js.map +0 -1
  180. package/lib/commonjs/renderer/CanvasOld.d.ts +0 -11
  181. package/lib/commonjs/renderer/CanvasOld.js +0 -96
  182. package/lib/commonjs/renderer/CanvasOld.js.map +0 -1
  183. package/lib/commonjs/renderer/Container.d.ts +0 -10
  184. package/lib/commonjs/renderer/Container.js +0 -26
  185. package/lib/commonjs/renderer/Container.js.map +0 -1
  186. package/lib/commonjs/renderer/HostComponents.d.ts +0 -129
  187. package/lib/commonjs/renderer/HostComponents.js +0 -141
  188. package/lib/commonjs/renderer/HostComponents.js.map +0 -1
  189. package/lib/commonjs/renderer/HostConfig.d.ts +0 -18
  190. package/lib/commonjs/renderer/HostConfig.js +0 -157
  191. package/lib/commonjs/renderer/HostConfig.js.map +0 -1
  192. package/lib/commonjs/renderer/Reconciler.d.ts +0 -9
  193. package/lib/commonjs/renderer/Reconciler.js +0 -44
  194. package/lib/commonjs/renderer/Reconciler.js.map +0 -1
  195. package/lib/commonjs/specs/SkiaDomViewNativeComponent.d.ts +0 -6
  196. package/lib/commonjs/specs/SkiaDomViewNativeComponent.js +0 -11
  197. package/lib/commonjs/specs/SkiaDomViewNativeComponent.js.map +0 -1
  198. package/lib/commonjs/views/SkiaDomView.d.ts +0 -33
  199. package/lib/commonjs/views/SkiaDomView.js +0 -119
  200. package/lib/commonjs/views/SkiaDomView.js.map +0 -1
  201. package/lib/commonjs/views/SkiaDomView.web.d.ts +0 -0
  202. package/lib/commonjs/views/SkiaDomView.web.js +0 -2
  203. package/lib/commonjs/views/SkiaDomView.web.js.map +0 -1
  204. package/lib/module/dom/nodes/JsiSkDOM.d.ts +0 -64
  205. package/lib/module/dom/nodes/JsiSkDOM.js +0 -189
  206. package/lib/module/dom/nodes/JsiSkDOM.js.map +0 -1
  207. package/lib/module/renderer/CanvasOld.d.ts +0 -11
  208. package/lib/module/renderer/CanvasOld.js +0 -87
  209. package/lib/module/renderer/CanvasOld.js.map +0 -1
  210. package/lib/module/renderer/Container.d.ts +0 -10
  211. package/lib/module/renderer/Container.js +0 -19
  212. package/lib/module/renderer/Container.js.map +0 -1
  213. package/lib/module/renderer/HostComponents.d.ts +0 -129
  214. package/lib/module/renderer/HostComponents.js +0 -134
  215. package/lib/module/renderer/HostComponents.js.map +0 -1
  216. package/lib/module/renderer/HostConfig.d.ts +0 -18
  217. package/lib/module/renderer/HostConfig.js +0 -150
  218. package/lib/module/renderer/HostConfig.js.map +0 -1
  219. package/lib/module/renderer/Reconciler.d.ts +0 -9
  220. package/lib/module/renderer/Reconciler.js +0 -36
  221. package/lib/module/renderer/Reconciler.js.map +0 -1
  222. package/lib/module/specs/SkiaDomViewNativeComponent.d.ts +0 -6
  223. package/lib/module/specs/SkiaDomViewNativeComponent.js +0 -4
  224. package/lib/module/specs/SkiaDomViewNativeComponent.js.map +0 -1
  225. package/lib/module/views/SkiaDomView.d.ts +0 -33
  226. package/lib/module/views/SkiaDomView.js +0 -111
  227. package/lib/module/views/SkiaDomView.js.map +0 -1
  228. package/lib/module/views/SkiaDomView.web.d.ts +0 -0
  229. package/lib/module/views/SkiaDomView.web.js +0 -2
  230. package/lib/module/views/SkiaDomView.web.js.map +0 -1
  231. package/lib/typescript/lib/commonjs/dom/nodes/JsiSkDOM.d.ts +0 -60
  232. package/lib/typescript/lib/commonjs/renderer/CanvasOld.d.ts +0 -3
  233. package/lib/typescript/lib/commonjs/renderer/Container.d.ts +0 -9
  234. package/lib/typescript/lib/commonjs/renderer/HostComponents.d.ts +0 -2
  235. package/lib/typescript/lib/commonjs/renderer/HostConfig.d.ts +0 -40
  236. package/lib/typescript/lib/commonjs/renderer/Reconciler.d.ts +0 -10
  237. package/lib/typescript/lib/commonjs/specs/SkiaDomViewNativeComponent.d.ts +0 -3
  238. package/lib/typescript/lib/commonjs/views/SkiaDomView.d.ts +0 -30
  239. package/lib/typescript/lib/commonjs/views/SkiaDomView.web.d.ts +0 -0
  240. package/lib/typescript/lib/module/dom/nodes/JsiSkDOM.d.ts +0 -59
  241. package/lib/typescript/lib/module/renderer/CanvasOld.d.ts +0 -3
  242. package/lib/typescript/lib/module/renderer/Container.d.ts +0 -9
  243. package/lib/typescript/lib/module/renderer/HostComponents.d.ts +0 -1
  244. package/lib/typescript/lib/module/renderer/HostConfig.d.ts +0 -39
  245. package/lib/typescript/lib/module/renderer/Reconciler.d.ts +0 -9
  246. package/lib/typescript/lib/module/specs/SkiaDomViewNativeComponent.d.ts +0 -2
  247. package/lib/typescript/lib/module/views/SkiaDomView.d.ts +0 -27
  248. package/lib/typescript/lib/module/views/SkiaDomView.web.d.ts +0 -0
  249. package/lib/typescript/src/dom/nodes/JsiSkDOM.d.ts +0 -64
  250. package/lib/typescript/src/renderer/CanvasOld.d.ts +0 -11
  251. package/lib/typescript/src/renderer/Container.d.ts +0 -10
  252. package/lib/typescript/src/renderer/HostComponents.d.ts +0 -129
  253. package/lib/typescript/src/renderer/HostConfig.d.ts +0 -18
  254. package/lib/typescript/src/renderer/Reconciler.d.ts +0 -9
  255. package/lib/typescript/src/specs/SkiaDomViewNativeComponent.d.ts +0 -6
  256. package/lib/typescript/src/views/SkiaDomView.d.ts +0 -33
  257. package/lib/typescript/src/views/SkiaDomView.web.d.ts +0 -0
  258. package/src/dom/nodes/JsiSkDOM.ts +0 -298
  259. package/src/renderer/CanvasOld.tsx +0 -126
  260. package/src/renderer/Container.tsx +0 -19
  261. package/src/renderer/HostComponents.ts +0 -399
  262. package/src/renderer/HostConfig.ts +0 -258
  263. package/src/renderer/Reconciler.tsx +0 -54
  264. package/src/specs/SkiaDomViewNativeComponent.ts +0 -9
  265. package/src/views/SkiaDomView.tsx +0 -124
  266. package/src/views/SkiaDomView.web.tsx +0 -0
@@ -1,196 +0,0 @@
1
- #pragma once
2
-
3
- #include "DerivedNodeProp.h"
4
-
5
- #include "JsiSkImage.h"
6
-
7
- #include <algorithm>
8
- #include <memory>
9
- #include <string>
10
-
11
- namespace RNSkia {
12
-
13
- struct FitSizes {
14
- SkSize src;
15
- SkSize dst;
16
- };
17
-
18
- struct FitRects {
19
- SkRect src;
20
- SkRect dst;
21
- };
22
-
23
- static PropId PropNameImage = JsiPropId::get("image");
24
- static PropId PropNameFit = JsiPropId::get("fit");
25
-
26
- class ImageProp : public DerivedSkProp<SkImage> {
27
- public:
28
- explicit ImageProp(PropId name,
29
- const std::function<void(BaseNodeProp *)> &onChange)
30
- : DerivedSkProp<SkImage>(onChange) {
31
- _imageProp = defineProperty<NodeProp>(name);
32
- }
33
-
34
- void updateDerivedValue() override {
35
- if (_imageProp->isSet()) {
36
- // Check for host object
37
- if (_imageProp->value().getType() == PropType::HostObject) {
38
- // This should be an SkImage wrapper:
39
- auto ptr = std::dynamic_pointer_cast<JsiSkImage>(
40
- _imageProp->value().getAsHostObject());
41
- if (ptr == nullptr) {
42
- // If not - throw an exception
43
- throw std::runtime_error("Expected SkImage object for the " +
44
- std::string(getName()) +
45
- " property. Got a " +
46
- _imageProp->value().getTypeAsString(
47
- _imageProp->value().getType()) +
48
- ".");
49
- }
50
- setDerivedValue(ptr->getObject());
51
- } else {
52
- // Should be a host object if set
53
- throw std::runtime_error(
54
- "Expected SkImage object or null/undefined for the " +
55
- std::string(getName()) + " property.");
56
- }
57
- } else {
58
- // Set to null
59
- setDerivedValue(nullptr);
60
- }
61
- }
62
-
63
- private:
64
- NodeProp *_imageProp;
65
- };
66
-
67
- class ImageProps : public DerivedProp<FitRects> {
68
- public:
69
- explicit ImageProps(const std::function<void(BaseNodeProp *)> &onChange)
70
- : DerivedProp<FitRects>(onChange) {
71
- _fitProp = defineProperty<NodeProp>(PropNameFit);
72
- _imageProp = defineProperty<ImageProp>(PropNameImage);
73
- _rectProp = defineProperty<RectProps>(PropNameRect);
74
- }
75
-
76
- void updateDerivedValue() override {
77
- auto image = _imageProp->getDerivedValue();
78
- if (image == nullptr) {
79
- setDerivedValue(nullptr);
80
- return;
81
- }
82
-
83
- auto imageRect = SkRect::MakeXYWH(0, 0, image->width(), image->height());
84
-
85
- auto rect = _rectProp->getDerivedValue() ? *_rectProp->getDerivedValue()
86
- : imageRect;
87
- auto fit = _fitProp->isSet() ? _fitProp->value().getAsString() : "contain";
88
-
89
- setDerivedValue(fitRects(fit, imageRect, rect));
90
- }
91
-
92
- sk_sp<SkImage> getImage() { return _imageProp->getDerivedValue(); }
93
-
94
- std::shared_ptr<const SkRect> getRect() {
95
- return _rectProp->getDerivedValue();
96
- }
97
-
98
- SkMatrix rect2rect(SkRect src, SkRect dst) {
99
- auto sx = dst.width() / src.width();
100
- auto sy = dst.height() / src.height();
101
- auto tx = dst.x() - src.x() * sx;
102
- auto ty = dst.y() - src.y() * sy;
103
- SkMatrix m3;
104
- m3.preTranslate(tx, ty);
105
- m3.preScale(sx, sy);
106
- return m3;
107
- }
108
-
109
- private:
110
- SkSize size(double width, double height) {
111
- return SkSize::Make(width, height);
112
- }
113
-
114
- FitRects fitRects(const std::string &fit, SkRect rect, SkRect rect2) {
115
- auto sizes = applyBoxFit(fit, size(rect.width(), rect.height()),
116
- size(rect2.width(), rect2.height()));
117
-
118
- auto src = inscribe(sizes.src, rect);
119
- auto dst = inscribe(sizes.dst, rect2);
120
-
121
- return {.src = src, .dst = dst};
122
- }
123
-
124
- SkRect inscribe(SkSize size, SkRect rect) {
125
- auto halfWidthDelta = (rect.width() - size.width()) / 2.0;
126
- auto halfHeightDelta = (rect.height() - size.height()) / 2.0;
127
- return SkRect::MakeXYWH(rect.x() + halfWidthDelta,
128
- rect.y() + halfHeightDelta, size.width(),
129
- size.height());
130
- }
131
-
132
- FitSizes applyBoxFit(const std::string fit, SkSize input, SkSize output) {
133
- SkSize src = size(0, 0);
134
- SkSize dst = size(0, 0);
135
-
136
- if (input.height() <= 0.0 || input.width() <= 0.0 ||
137
- output.height() <= 0.0 || output.width() <= 0.0) {
138
- return {.src = src, .dst = dst};
139
- }
140
-
141
- if (fit == "fill") {
142
- src = input;
143
- dst = output;
144
- } else if (fit == "contain") {
145
- src = input;
146
- if (output.width() / output.height() > src.width() / src.height()) {
147
- dst = size((src.width() * output.height()) / src.height(),
148
- output.height());
149
- } else {
150
- dst =
151
- size(output.width(), (src.height() * output.width()) / src.width());
152
- }
153
- } else if (fit == "cover") {
154
- if (output.width() / output.height() > input.width() / input.height()) {
155
- src = size(input.width(),
156
- (input.width() * output.height()) / output.width());
157
- } else {
158
- src = size((input.height() * output.width()) / output.height(),
159
- input.height());
160
- }
161
- dst = output;
162
- } else if (fit == "fitWidth") {
163
- src = size(input.width(),
164
- (input.width() * output.height()) / output.width());
165
- dst = size(output.width(), (src.height() * output.width()) / src.width());
166
- } else if (fit == "fitHeight") {
167
- src = size((input.height() * output.width()) / output.height(),
168
- input.height());
169
- dst =
170
- size((src.width() * output.height()) / src.height(), output.height());
171
- } else if (fit == "none") {
172
- src = size(std::min(input.width(), output.width()),
173
- std::min(input.height(), output.height()));
174
- dst = src;
175
- } else if (fit == "scaleDown") {
176
- src = input;
177
- dst = input;
178
- auto aspectRatio = input.width() / input.height();
179
- if (dst.height() > output.height()) {
180
- dst = size(output.height() * aspectRatio, output.height());
181
- }
182
- if (dst.width() > output.width()) {
183
- dst = size(output.width(), output.width() / aspectRatio);
184
- }
185
- } else {
186
- throw std::runtime_error("The value \"" + fit +
187
- "\" is not a valid fit value.");
188
- }
189
- return {.src = src, .dst = dst};
190
- }
191
-
192
- NodeProp *_fitProp;
193
- ImageProp *_imageProp;
194
- RectProps *_rectProp;
195
- };
196
- } // namespace RNSkia
@@ -1,79 +0,0 @@
1
- #pragma once
2
-
3
- #include "DerivedNodeProp.h"
4
-
5
- #include <memory>
6
- #include <string>
7
-
8
- #pragma clang diagnostic push
9
- #pragma clang diagnostic ignored "-Wdocumentation"
10
-
11
- #include "include/core/SkPaint.h"
12
-
13
- #pragma clang diagnostic pop
14
-
15
- namespace RNSkia {
16
-
17
- class StrokeCapProp : public DerivedProp<SkPaint::Cap> {
18
- public:
19
- explicit StrokeCapProp(PropId name,
20
- const std::function<void(BaseNodeProp *)> &onChange)
21
- : DerivedProp<SkPaint::Cap>(onChange) {
22
- _strokeCap = defineProperty<NodeProp>(name);
23
- }
24
-
25
- void updateDerivedValue() override {
26
- if (_strokeCap->isSet() && (_strokeCap->isChanged())) {
27
- auto capValue = _strokeCap->value().getAsString();
28
- setDerivedValue(getCapFromString(capValue));
29
- }
30
- }
31
-
32
- static SkPaint::Cap getCapFromString(const std::string &value) {
33
- if (value == "round") {
34
- return SkPaint::Cap::kRound_Cap;
35
- } else if (value == "butt") {
36
- return SkPaint::Cap::kButt_Cap;
37
- } else if (value == "square") {
38
- return SkPaint::Cap::kSquare_Cap;
39
- }
40
- throw std::runtime_error("Property value \"" + value +
41
- "\" is not a legal stroke cap.");
42
- }
43
-
44
- private:
45
- NodeProp *_strokeCap;
46
- };
47
-
48
- class StrokeJoinProp : public DerivedProp<SkPaint::Join> {
49
- public:
50
- explicit StrokeJoinProp(PropId name,
51
- const std::function<void(BaseNodeProp *)> &onChange)
52
- : DerivedProp<SkPaint::Join>(onChange) {
53
- _strokeJoin = defineProperty<NodeProp>(name);
54
- }
55
-
56
- void updateDerivedValue() override {
57
- if (_strokeJoin->isSet() && (_strokeJoin->isChanged())) {
58
- auto joinValue = _strokeJoin->value().getAsString();
59
- setDerivedValue(getJoinFromString(joinValue));
60
- }
61
- }
62
-
63
- static SkPaint::Join getJoinFromString(const std::string &value) {
64
- if (value == "miter") {
65
- return SkPaint::Join::kMiter_Join;
66
- } else if (value == "round") {
67
- return SkPaint::Join::kRound_Join;
68
- } else if (value == "bevel") {
69
- return SkPaint::Join::kBevel_Join;
70
- }
71
- throw std::runtime_error("Property value \"" + value +
72
- "\" is not a legal stroke join.");
73
- }
74
-
75
- private:
76
- NodeProp *_strokeJoin;
77
- };
78
-
79
- } // namespace RNSkia
@@ -1,45 +0,0 @@
1
- #pragma once
2
-
3
- #include "DerivedNodeProp.h"
4
-
5
- #include "JsiSkSVG.h"
6
-
7
- #include <memory>
8
-
9
- namespace RNSkia {
10
-
11
- class SvgProp : public DerivedSkProp<SkSVGDOM> {
12
- public:
13
- explicit SvgProp(PropId name,
14
- const std::function<void(BaseNodeProp *)> &onChange)
15
- : DerivedSkProp<SkSVGDOM>(onChange) {
16
- _imageSvgProp = defineProperty<NodeProp>(name);
17
- }
18
-
19
- void updateDerivedValue() override {
20
- if (_imageSvgProp->isSet()) {
21
-
22
- if (_imageSvgProp->value().getType() == PropType::HostObject) {
23
-
24
- auto ptr = std::dynamic_pointer_cast<JsiSkSVG>(
25
- _imageSvgProp->value().getAsHostObject());
26
- if (ptr == nullptr) {
27
- throw std::runtime_error(
28
- "Expected SkSvgDom object for the svg property.");
29
- }
30
- setDerivedValue(ptr->getObject());
31
- } else {
32
- throw std::runtime_error(
33
- "Expected SkSvgDom object or null/undefined for the svg property.");
34
- }
35
-
36
- } else {
37
- setDerivedValue(nullptr);
38
- }
39
- }
40
-
41
- private:
42
- NodeProp *_imageSvgProp;
43
- };
44
-
45
- } // namespace RNSkia
@@ -1,133 +0,0 @@
1
- #pragma once
2
-
3
- #include "DerivedNodeProp.h"
4
-
5
- #include "JsiSkTextBlob.h"
6
-
7
- #include <memory>
8
- #include <string>
9
- #include <vector>
10
-
11
- namespace RNSkia {
12
-
13
- class TextBlobProp : public DerivedSkProp<SkTextBlob> {
14
- public:
15
- explicit TextBlobProp(PropId name,
16
- const std::function<void(BaseNodeProp *)> &onChange)
17
- : DerivedSkProp<SkTextBlob>(onChange) {
18
- _textBlobProp = defineProperty<NodeProp>(name);
19
- }
20
-
21
- void updateDerivedValue() override {
22
- if (_textBlobProp->value().getType() != PropType::HostObject) {
23
- throw std::runtime_error("Expected SkTextBlob object for the " +
24
- std::string(getName()) + " property.");
25
- }
26
-
27
- auto ptr = _textBlobProp->value().getAs<JsiSkTextBlob>();
28
- if (ptr == nullptr) {
29
- throw std::runtime_error("Expected SkTextBlob object for the " +
30
- std::string(getName()) + " property.");
31
- }
32
-
33
- setDerivedValue(ptr->getObject());
34
- }
35
-
36
- private:
37
- NodeProp *_textBlobProp;
38
- };
39
-
40
- class TextPathBlobProp : public DerivedSkProp<SkTextBlob> {
41
- public:
42
- explicit TextPathBlobProp(const std::function<void(BaseNodeProp *)> &onChange)
43
- : DerivedSkProp<SkTextBlob>(onChange) {
44
- _fontProp = defineProperty<FontProp>("font");
45
- _textProp = defineProperty<NodeProp>("text");
46
- _pathProp = defineProperty<PathProp>("path");
47
- _offsetProp = defineProperty<NodeProp>("initialOffset");
48
-
49
- _textProp->require();
50
- _pathProp->require();
51
- _offsetProp->require();
52
- }
53
-
54
- void updateDerivedValue() override {
55
- auto font = _fontProp->getDerivedValue();
56
- auto text = _textProp->value().getAsString();
57
- auto path = _pathProp->getDerivedValue();
58
- auto offset = _offsetProp->value().getAsNumber();
59
-
60
- if (font != nullptr) {
61
- // Get glyphs
62
- auto numGlyphIds =
63
- font->countText(text.c_str(), text.length(), SkTextEncoding::kUTF8);
64
-
65
- std::vector<SkGlyphID> glyphIds;
66
- glyphIds.reserve(numGlyphIds);
67
- auto ids = font->textToGlyphs(
68
- text.c_str(), text.length(), SkTextEncoding::kUTF8,
69
- static_cast<SkGlyphID *>(glyphIds.data()), numGlyphIds);
70
-
71
- // Get glyph widths
72
- int glyphsSize = static_cast<int>(ids);
73
- std::vector<SkScalar> widthPtrs;
74
- widthPtrs.resize(glyphsSize);
75
- font->getWidthsBounds(glyphIds.data(), numGlyphIds,
76
- static_cast<SkScalar *>(widthPtrs.data()), nullptr,
77
- nullptr); // TODO: Should we use paint somehow here?
78
-
79
- std::vector<SkRSXform> rsx;
80
- SkContourMeasureIter meas(*path, false, 1);
81
-
82
- auto cont = meas.next();
83
- auto dist = offset;
84
-
85
- for (size_t i = 0; i < text.length() && cont != nullptr; ++i) {
86
- auto width = widthPtrs[i];
87
- dist += width / 2;
88
- if (dist > cont->length()) {
89
- // jump to next contour
90
- cont = meas.next();
91
- if (cont == nullptr) {
92
- // We have come to the end of the path - terminate the string
93
- // right here.
94
- text = text.substr(0, i);
95
- break;
96
- }
97
- dist = width / 2;
98
- }
99
- // Gives us the (x, y) coordinates as well as the cos/sin of the tangent
100
- // line at that position.
101
- SkPoint pos;
102
- SkVector tan;
103
- if (!cont->getPosTan(dist, &pos, &tan)) {
104
- throw std::runtime_error(
105
- "Could not calculate distance when resolving text path");
106
- }
107
- auto px = pos.x();
108
- auto py = pos.y();
109
- auto tx = tan.x();
110
- auto ty = tan.y();
111
-
112
- auto adjustedX = px - (width / 2) * tx;
113
- auto adjustedY = py - (width / 2) * ty;
114
-
115
- rsx.push_back(SkRSXform::Make(tx, ty, adjustedX, adjustedY));
116
- dist += width / 2;
117
- }
118
-
119
- setDerivedValue(SkTextBlob::MakeFromRSXform(text.c_str(), text.length(),
120
- rsx.data(), *font));
121
- } else {
122
- setDerivedValue(nullptr);
123
- }
124
- }
125
-
126
- private:
127
- FontProp *_fontProp;
128
- NodeProp *_textProp;
129
- PathProp *_pathProp;
130
- NodeProp *_offsetProp;
131
- };
132
-
133
- } // namespace RNSkia
@@ -1,52 +0,0 @@
1
- #pragma once
2
-
3
- #include "DerivedNodeProp.h"
4
-
5
- #pragma clang diagnostic push
6
- #pragma clang diagnostic ignored "-Wdocumentation"
7
-
8
- #include "include/core/SkTileMode.h"
9
-
10
- #include <memory>
11
- #include <string>
12
-
13
- #pragma clang diagnostic pop
14
-
15
- namespace RNSkia {
16
-
17
- class TileModeProp : public DerivedProp<SkTileMode> {
18
- public:
19
- explicit TileModeProp(PropId name,
20
- const std::function<void(BaseNodeProp *)> &onChange)
21
- : DerivedProp<SkTileMode>(onChange) {
22
- _tileModeProp = defineProperty<NodeProp>(name);
23
- }
24
-
25
- void updateDerivedValue() override {
26
- if (_tileModeProp->isSet()) {
27
- setDerivedValue(
28
- getTileModeFromStringValue(_tileModeProp->value().getAsString()));
29
- } else {
30
- setDerivedValue(nullptr);
31
- }
32
- }
33
-
34
- private:
35
- SkTileMode getTileModeFromStringValue(const std::string &value) {
36
- if (value == "clamp") {
37
- return SkTileMode::kClamp;
38
- } else if (value == "repeat") {
39
- return SkTileMode::kRepeat;
40
- } else if (value == "mirror") {
41
- return SkTileMode::kMirror;
42
- } else if (value == "decal") {
43
- return SkTileMode::kDecal;
44
- }
45
- throw std::runtime_error("Value \"" + value +
46
- "\" is not a valid tile mode.");
47
- }
48
-
49
- NodeProp *_tileModeProp;
50
- };
51
-
52
- } // namespace RNSkia
@@ -1,147 +0,0 @@
1
- #pragma once
2
-
3
- #include "DerivedNodeProp.h"
4
- #include "JsiSkMatrix.h"
5
-
6
- #include <memory>
7
- #include <string>
8
-
9
- namespace RNSkia {
10
-
11
- static PropId PropNameTranslateX = JsiPropId::get("translateX");
12
- static PropId PropNameTranslateY = JsiPropId::get("translateY");
13
- static PropId PropNameTranslateZ = JsiPropId::get("translateZ");
14
- static PropId PropNameTranslate = JsiPropId::get("translate");
15
- static PropId PropNameScale = JsiPropId::get("scale");
16
- static PropId PropNameScaleX = JsiPropId::get("scaleX");
17
- static PropId PropNameScaleY = JsiPropId::get("scaleY");
18
- static PropId PropNameSkewX = JsiPropId::get("skewX");
19
- static PropId PropNameSkewY = JsiPropId::get("skewY");
20
- static PropId PropNameRotate = JsiPropId::get("rotate");
21
- static PropId PropNameRotateZ = JsiPropId::get("rotateZ");
22
- static PropId PropNameRotateX = JsiPropId::get("rotateX");
23
- static PropId PropNameRotateY = JsiPropId::get("rotateY");
24
- static PropId PropNamePerspective = JsiPropId::get("perspective");
25
- static PropId PropNameMatrix4 = JsiPropId::get("matrix");
26
-
27
- class TransformProp : public DerivedProp<SkMatrix> {
28
- public:
29
- explicit TransformProp(PropId name,
30
- const std::function<void(BaseNodeProp *)> &onChange)
31
- : DerivedProp<SkMatrix>(onChange) {
32
- _transformProp = defineProperty<NodeProp>(name);
33
- }
34
-
35
- void updateDerivedValue() override {
36
- if (!_transformProp->isSet()) {
37
- setDerivedValue(nullptr);
38
- } else if (_transformProp->value().getType() != PropType::Array) {
39
- throw std::runtime_error(
40
- "Expected array for transform property, got " +
41
- JsiValue::getTypeAsString(_transformProp->value().getType()));
42
- } else {
43
- SkM44 m4;
44
- auto m = std::make_shared<SkMatrix>(SkMatrix());
45
- for (auto &el : _transformProp->value().getAsArray()) {
46
- auto keys = el.getKeys();
47
- if (keys.size() == 0) {
48
- throw std::runtime_error(
49
- "Empty value in transform. Expected translateX, translateY, "
50
- "scale, "
51
- "scaleX, scaleY, skewX, skewY, rotate or rotateZ.");
52
- }
53
- auto key = el.getKeys().at(0);
54
- if (key == PropNameTranslateX) {
55
- auto x = el.getValue(key).getAsNumber();
56
- SkM44 trX(1, 0, 0, x, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);
57
- m4.preConcat(trX);
58
- } else if (key == PropNameTranslateY) {
59
- auto y = el.getValue(key).getAsNumber();
60
- SkM44 trY(1, 0, 0, 0, 0, 1, 0, y, 0, 0, 1, 0, 0, 0, 0, 1);
61
- m4.preConcat(trY);
62
- } else if (key == PropNameTranslateZ) {
63
- auto z = el.getValue(key).getAsNumber();
64
- SkM44 trZ(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, z, 0, 0, 0, 1);
65
- m4.preConcat(trZ);
66
- } else if (key == PropNameTranslate) {
67
- auto arr = el.getValue(key).getAsArray();
68
- double x = 0, y = 0, z = 0;
69
- for (size_t i = 0; i < arr.size(); ++i) {
70
- if (i == 0) {
71
- x = arr[i].getAsNumber();
72
- } else if (i == 1) {
73
- y = arr[i].getAsNumber();
74
- } else if (i == 2) {
75
- z = arr[i].getAsNumber();
76
- }
77
- }
78
- SkM44 tr(1, 0, 0, x, 0, 1, 0, y, 0, 0, 1, z, 0, 0, 0, 1);
79
- m4.preConcat(tr);
80
- } else if (key == PropNameScale) {
81
- auto s = el.getValue(key).getAsNumber();
82
- SkM44 scale(s, 0, 0, 0, 0, s, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);
83
- m4.preConcat(scale);
84
- } else if (key == PropNameScaleX) {
85
- auto s = el.getValue(key).getAsNumber();
86
- SkM44 scale(s, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);
87
- m4.preConcat(scale);
88
- } else if (key == PropNameScaleY) {
89
- auto s = el.getValue(key).getAsNumber();
90
- SkM44 scale(1, 0, 0, 0, 0, s, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);
91
- m4.preConcat(scale);
92
- } else if (key == PropNameSkewX) {
93
- auto angle = el.getValue(key).getAsNumber();
94
- SkM44 skewX(1, 0, 0, 0, std::tan(angle), 1, 0, 0, 0, 0, 1, 0, 0, 0, 0,
95
- 1);
96
- m4.preConcat(skewX);
97
- } else if (key == PropNameSkewY) {
98
- auto angle = el.getValue(key).getAsNumber();
99
- SkM44 skewY(1, std::tan(angle), 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0,
100
- 1);
101
- m4.preConcat(skewY);
102
- } else if (key == PropNameRotate || key == PropNameRotateZ) {
103
- auto angle = el.getValue(key).getAsNumber();
104
- SkM44 rotate;
105
- rotate.setRotateUnit({0, 0, 1}, angle);
106
- m4.preConcat(rotate);
107
- } else if (key == PropNameRotateY) {
108
- auto angle = el.getValue(key).getAsNumber();
109
- SkM44 rotate;
110
- rotate.setRotateUnit({0, 1, 0}, angle);
111
- m4.preConcat(rotate);
112
- } else if (key == PropNameRotateX) {
113
- auto angle = el.getValue(key).getAsNumber();
114
- SkM44 rotate;
115
- rotate.setRotateUnit({1, 0, 0}, angle);
116
- m4.preConcat(rotate);
117
- } else if (key == PropNamePerspective) {
118
- auto p = el.getValue(key).getAsNumber();
119
- SkM44 perspective(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, -1 / p,
120
- 1);
121
- m4.preConcat(perspective);
122
- } else if (key == PropNameMatrix4) {
123
- auto arr = el.getValue(key).getAsArray();
124
- SkM44 m44;
125
- for (size_t i = 0; i < arr.size(); ++i) {
126
- auto obj = arr[i];
127
- m44.setRC(i / 4, i % 4, obj.getAsNumber());
128
- }
129
- m4.preConcat(m44);
130
- } else {
131
- throw std::runtime_error(
132
- "Unknown key in transform. Expected translateX, translateY, "
133
- "scale, "
134
- "scaleX, scaleY, skewX, skewY, rotate or rotateZ - got " +
135
- std::string(key) + ".");
136
- }
137
- }
138
- m->preConcat(m4.asM33());
139
- setDerivedValue(m);
140
- }
141
- }
142
-
143
- private:
144
- NodeProp *_transformProp;
145
- };
146
-
147
- } // namespace RNSkia