@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,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