@shopify/react-native-skia 1.11.0 → 1.11.2

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