@shopify/react-native-skia 0.1.157 → 0.1.159

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 (482) hide show
  1. package/android/CMakeLists.txt +35 -11
  2. package/android/build.gradle +31 -30
  3. package/android/cpp/jni/JniLoad.cpp +2 -0
  4. package/android/cpp/jni/include/JniSkiaDomView.h +89 -0
  5. package/android/cpp/rnskia-android/SkiaOpenGLRenderer.cpp +4 -3
  6. package/android/cpp/rnskia-android/SkiaOpenGLRenderer.h +4 -3
  7. package/android/src/main/java/com/shopify/reactnative/skia/RNSkiaPackage.java +2 -1
  8. package/android/src/main/java/com/shopify/reactnative/skia/SkiaDomView.java +45 -0
  9. package/android/src/main/java/com/shopify/reactnative/skia/SkiaDomViewManager.java +64 -0
  10. package/cpp/api/JsiSkContourMeasure.h +7 -5
  11. package/cpp/api/JsiSkHostObjects.h +6 -0
  12. package/cpp/api/JsiSkImageFilterFactory.h +1 -1
  13. package/cpp/api/JsiSkPaint.h +9 -2
  14. package/cpp/api/JsiSkPath.h +1 -0
  15. package/cpp/api/JsiSkRuntimeEffect.h +36 -36
  16. package/cpp/jsi/JsiHostObject.cpp +16 -28
  17. package/cpp/jsi/JsiHostObject.h +127 -7
  18. package/cpp/jsi/JsiValue.cpp +346 -0
  19. package/cpp/jsi/JsiValue.h +222 -0
  20. package/cpp/jsi/JsiValueWrapper.h +33 -5
  21. package/cpp/rnskia/RNSkDomView.cpp +220 -0
  22. package/cpp/rnskia/RNSkDomView.h +140 -0
  23. package/cpp/rnskia/RNSkJsView.cpp +0 -4
  24. package/cpp/rnskia/RNSkJsView.h +6 -4
  25. package/cpp/rnskia/RNSkManager.cpp +7 -0
  26. package/cpp/rnskia/RNSkPictureView.h +5 -8
  27. package/cpp/rnskia/RNSkView.h +113 -5
  28. package/cpp/rnskia/dom/JsiDomApi.h +167 -0
  29. package/cpp/rnskia/dom/base/BaseNodeProp.h +72 -0
  30. package/cpp/rnskia/dom/base/DerivedNodeProp.h +187 -0
  31. package/cpp/rnskia/dom/base/DrawingContext.cpp +227 -0
  32. package/cpp/rnskia/dom/base/DrawingContext.h +136 -0
  33. package/cpp/rnskia/dom/base/JsiDependencyManager.h +294 -0
  34. package/cpp/rnskia/dom/base/JsiDomDeclarationNode.h +176 -0
  35. package/cpp/rnskia/dom/base/JsiDomDrawingNode.h +50 -0
  36. package/cpp/rnskia/dom/base/JsiDomNode.h +361 -0
  37. package/cpp/rnskia/dom/base/JsiDomRenderNode.h +267 -0
  38. package/cpp/rnskia/dom/base/NodeProp.h +130 -0
  39. package/cpp/rnskia/dom/base/NodePropsContainer.h +119 -0
  40. package/cpp/rnskia/dom/nodes/JsiBackdropFilterNode.h +38 -0
  41. package/cpp/rnskia/dom/nodes/JsiBlendNode.h +112 -0
  42. package/cpp/rnskia/dom/nodes/JsiBlurMaskNode.h +78 -0
  43. package/cpp/rnskia/dom/nodes/JsiBoxNode.h +104 -0
  44. package/cpp/rnskia/dom/nodes/JsiBoxShadowNode.h +33 -0
  45. package/cpp/rnskia/dom/nodes/JsiCircleNode.h +38 -0
  46. package/cpp/rnskia/dom/nodes/JsiColorFilterNodes.h +192 -0
  47. package/cpp/rnskia/dom/nodes/JsiCustomDrawingNode.h +123 -0
  48. package/cpp/rnskia/dom/nodes/JsiDiffRectNode.h +42 -0
  49. package/cpp/rnskia/dom/nodes/JsiFillNode.h +22 -0
  50. package/cpp/rnskia/dom/nodes/JsiGlyphsNode.h +56 -0
  51. package/cpp/rnskia/dom/nodes/JsiGroupNode.h +26 -0
  52. package/cpp/rnskia/dom/nodes/JsiImageFilterNodes.h +415 -0
  53. package/cpp/rnskia/dom/nodes/JsiImageNode.h +34 -0
  54. package/cpp/rnskia/dom/nodes/JsiImageSvgNode.h +44 -0
  55. package/cpp/rnskia/dom/nodes/JsiLayerNode.h +64 -0
  56. package/cpp/rnskia/dom/nodes/JsiLineNode.h +43 -0
  57. package/cpp/rnskia/dom/nodes/JsiOvalNode.h +34 -0
  58. package/cpp/rnskia/dom/nodes/JsiPaintNode.h +77 -0
  59. package/cpp/rnskia/dom/nodes/JsiPatchNode.h +54 -0
  60. package/cpp/rnskia/dom/nodes/JsiPathEffectNodes.h +315 -0
  61. package/cpp/rnskia/dom/nodes/JsiPathNode.h +181 -0
  62. package/cpp/rnskia/dom/nodes/JsiPictureNode.h +32 -0
  63. package/cpp/rnskia/dom/nodes/JsiPointsNode.h +51 -0
  64. package/cpp/rnskia/dom/nodes/JsiRRectNode.h +34 -0
  65. package/cpp/rnskia/dom/nodes/JsiRectNode.h +34 -0
  66. package/cpp/rnskia/dom/nodes/JsiShaderNodes.h +517 -0
  67. package/cpp/rnskia/dom/nodes/JsiTextBlobNode.h +47 -0
  68. package/cpp/rnskia/dom/nodes/JsiTextNode.h +54 -0
  69. package/cpp/rnskia/dom/nodes/JsiTextPathNode.h +32 -0
  70. package/cpp/rnskia/dom/nodes/JsiVerticesNode.h +43 -0
  71. package/cpp/rnskia/dom/props/BezierProps.h +63 -0
  72. package/cpp/rnskia/dom/props/BlendModeProp.h +101 -0
  73. package/cpp/rnskia/dom/props/BoxShadowProps.h +61 -0
  74. package/cpp/rnskia/dom/props/CircleProp.h +46 -0
  75. package/cpp/rnskia/dom/props/ClipProp.h +62 -0
  76. package/cpp/rnskia/dom/props/ColorProp.h +80 -0
  77. package/cpp/rnskia/dom/props/DrawingProp.h +33 -0
  78. package/cpp/rnskia/dom/props/FontProp.h +34 -0
  79. package/cpp/rnskia/dom/props/GlyphsProp.h +53 -0
  80. package/cpp/rnskia/dom/props/ImageProps.h +173 -0
  81. package/cpp/rnskia/dom/props/LayerProp.h +50 -0
  82. package/cpp/rnskia/dom/props/MatrixProp.h +33 -0
  83. package/cpp/rnskia/dom/props/NumbersProp.h +63 -0
  84. package/cpp/rnskia/dom/props/PaintProps.h +172 -0
  85. package/cpp/rnskia/dom/props/PathProp.h +55 -0
  86. package/cpp/rnskia/dom/props/PictureProp.h +38 -0
  87. package/cpp/rnskia/dom/props/PointProp.h +72 -0
  88. package/cpp/rnskia/dom/props/PointsProp.h +83 -0
  89. package/cpp/rnskia/dom/props/RRectProp.h +134 -0
  90. package/cpp/rnskia/dom/props/RadiusProp.h +43 -0
  91. package/cpp/rnskia/dom/props/RectProp.h +118 -0
  92. package/cpp/rnskia/dom/props/StrokeProps.h +75 -0
  93. package/cpp/rnskia/dom/props/SvgProp.h +37 -0
  94. package/cpp/rnskia/dom/props/TextBlobProp.h +128 -0
  95. package/cpp/rnskia/dom/props/TileModeProp.h +50 -0
  96. package/cpp/rnskia/dom/props/TransformProp.h +80 -0
  97. package/cpp/rnskia/dom/props/TransformsProps.h +68 -0
  98. package/cpp/rnskia/dom/props/UniformsProp.h +194 -0
  99. package/cpp/rnskia/dom/props/VertexModeProp.h +47 -0
  100. package/cpp/rnskia/dom/props/VerticesProps.h +67 -0
  101. package/cpp/rnskia/values/RNSkReadonlyValue.h +13 -4
  102. package/cpp/skia/include/android/SkAndroidFrameworkUtils.h +35 -1
  103. package/cpp/skia/include/codec/SkAndroidCodec.h +17 -1
  104. package/cpp/skia/include/codec/SkCodec.h +8 -5
  105. package/cpp/skia/include/core/SkAnnotation.h +2 -0
  106. package/cpp/skia/include/core/SkBitmap.h +52 -1
  107. package/cpp/skia/include/core/SkBlendMode.h +2 -0
  108. package/cpp/skia/include/core/SkCanvas.h +52 -31
  109. package/cpp/skia/include/core/SkCapabilities.h +44 -0
  110. package/cpp/skia/include/core/SkColor.h +7 -0
  111. package/cpp/skia/include/core/SkColorFilter.h +37 -0
  112. package/cpp/skia/include/core/SkColorSpace.h +1 -1
  113. package/cpp/skia/include/core/SkFont.h +4 -0
  114. package/cpp/skia/include/core/SkFontMgr.h +3 -0
  115. package/cpp/skia/include/core/SkGraphics.h +9 -0
  116. package/cpp/skia/include/core/SkImage.h +77 -17
  117. package/cpp/skia/include/core/SkImageEncoder.h +5 -3
  118. package/cpp/skia/include/core/SkImageGenerator.h +27 -17
  119. package/cpp/skia/include/core/SkM44.h +1 -0
  120. package/cpp/skia/include/core/SkMesh.h +120 -34
  121. package/cpp/skia/include/core/SkMilestone.h +1 -1
  122. package/cpp/skia/include/core/SkOverdrawCanvas.h +2 -1
  123. package/cpp/skia/include/core/SkPaint.h +15 -2
  124. package/cpp/skia/include/core/SkPath.h +4 -0
  125. package/cpp/skia/include/core/SkPathBuilder.h +1 -1
  126. package/cpp/skia/include/core/SkPicture.h +0 -3
  127. package/cpp/skia/include/core/SkPictureRecorder.h +0 -2
  128. package/cpp/skia/include/core/SkPixmap.h +19 -0
  129. package/cpp/skia/include/core/SkRasterHandleAllocator.h +3 -1
  130. package/cpp/skia/include/core/SkRect.h +11 -4
  131. package/cpp/skia/include/core/SkRefCnt.h +13 -1
  132. package/cpp/skia/include/core/SkRegion.h +6 -0
  133. package/cpp/skia/include/core/SkSamplingOptions.h +8 -6
  134. package/cpp/skia/include/core/SkScalar.h +6 -25
  135. package/cpp/skia/include/core/SkShader.h +20 -12
  136. package/cpp/skia/include/core/SkSpan.h +51 -19
  137. package/cpp/skia/include/core/SkStream.h +2 -2
  138. package/cpp/skia/include/core/SkString.h +11 -3
  139. package/cpp/skia/include/core/SkSurface.h +85 -8
  140. package/cpp/skia/include/core/SkTextBlob.h +5 -2
  141. package/cpp/skia/include/core/SkTypes.h +11 -10
  142. package/cpp/skia/include/docs/SkPDFDocument.h +0 -5
  143. package/cpp/skia/include/effects/Sk1DPathEffect.h +6 -1
  144. package/cpp/skia/include/effects/Sk2DPathEffect.h +4 -1
  145. package/cpp/skia/include/effects/SkColorMatrix.h +1 -0
  146. package/cpp/skia/include/effects/SkColorMatrixFilter.h +5 -8
  147. package/cpp/skia/include/effects/SkCornerPathEffect.h +5 -1
  148. package/cpp/skia/include/effects/SkDashPathEffect.h +5 -1
  149. package/cpp/skia/include/effects/SkGradientShader.h +68 -38
  150. package/cpp/skia/include/effects/SkHighContrastFilter.h +5 -1
  151. package/cpp/skia/include/effects/SkImageFilters.h +5 -4
  152. package/cpp/skia/include/effects/SkLumaColorFilter.h +4 -1
  153. package/cpp/skia/include/effects/SkOpPathEffect.h +6 -2
  154. package/cpp/skia/include/effects/SkOverdrawColorFilter.h +5 -2
  155. package/cpp/skia/include/effects/SkRuntimeEffect.h +54 -62
  156. package/cpp/skia/include/effects/SkShaderMaskFilter.h +3 -1
  157. package/cpp/skia/include/effects/SkTableColorFilter.h +8 -21
  158. package/cpp/skia/include/effects/SkTableMaskFilter.h +5 -1
  159. package/cpp/skia/include/effects/SkTrimPathEffect.h +5 -1
  160. package/cpp/skia/include/encode/SkEncoder.h +17 -0
  161. package/cpp/skia/include/encode/SkWebpEncoder.h +17 -0
  162. package/cpp/skia/include/gpu/GpuTypes.h +18 -0
  163. package/cpp/skia/include/gpu/GrBackendSurface.h +38 -17
  164. package/cpp/skia/include/gpu/GrBackendSurfaceMutableState.h +6 -71
  165. package/cpp/skia/include/gpu/GrContextOptions.h +1 -1
  166. package/cpp/skia/include/gpu/GrContextThreadSafeProxy.h +10 -9
  167. package/cpp/skia/include/gpu/GrDirectContext.h +42 -22
  168. package/cpp/skia/include/gpu/GrRecordingContext.h +6 -3
  169. package/cpp/skia/include/gpu/GrTypes.h +11 -11
  170. package/cpp/skia/include/gpu/MutableTextureState.h +122 -0
  171. package/cpp/skia/include/gpu/gl/GrGLFunctions.h +1 -0
  172. package/cpp/skia/include/gpu/gl/GrGLInterface.h +1 -0
  173. package/cpp/skia/include/gpu/graphite/BackendTexture.h +7 -0
  174. package/cpp/skia/include/gpu/graphite/CombinationBuilder.h +195 -0
  175. package/cpp/skia/include/gpu/graphite/Context.h +47 -55
  176. package/cpp/skia/include/gpu/graphite/ContextOptions.h +85 -0
  177. package/cpp/skia/include/gpu/graphite/GraphiteTypes.h +1 -17
  178. package/cpp/skia/include/gpu/graphite/ImageProvider.h +61 -0
  179. package/cpp/skia/include/gpu/graphite/Recorder.h +87 -8
  180. package/cpp/skia/include/gpu/graphite/Recording.h +19 -9
  181. package/cpp/skia/include/gpu/graphite/TextureInfo.h +40 -8
  182. package/cpp/skia/include/gpu/graphite/dawn/DawnBackendContext.h +25 -0
  183. package/cpp/skia/include/gpu/graphite/mtl/MtlBackendContext.h +3 -2
  184. package/cpp/skia/include/gpu/graphite/vk/VulkanGraphiteTypes.h +69 -0
  185. package/cpp/skia/include/gpu/mtl/MtlMemoryAllocator.h +39 -0
  186. package/cpp/skia/include/gpu/vk/GrVkBackendContext.h +21 -19
  187. package/cpp/skia/include/gpu/vk/GrVkExtensions.h +2 -50
  188. package/cpp/skia/include/gpu/vk/GrVkMemoryAllocator.h +2 -127
  189. package/cpp/skia/include/gpu/vk/GrVkTypes.h +5 -43
  190. package/cpp/skia/include/gpu/vk/VulkanBackendContext.h +46 -0
  191. package/cpp/skia/include/gpu/vk/VulkanExtensions.h +67 -0
  192. package/cpp/skia/include/gpu/vk/VulkanMemoryAllocator.h +116 -0
  193. package/cpp/skia/include/gpu/vk/VulkanTypes.h +59 -0
  194. package/cpp/skia/include/pathops/SkPathOps.h +1 -1
  195. package/cpp/skia/include/private/SkColorData.h +10 -40
  196. package/cpp/skia/include/private/SkEncodedInfo.h +9 -3
  197. package/cpp/skia/include/private/SkFloatingPoint.h +9 -6
  198. package/cpp/skia/include/private/SkHalf.h +5 -52
  199. package/cpp/skia/include/private/SkMacros.h +1 -1
  200. package/cpp/skia/include/private/SkMalloc.h +4 -0
  201. package/cpp/skia/include/private/SkPathRef.h +10 -10
  202. package/cpp/skia/include/private/SkSLModifiers.h +59 -23
  203. package/cpp/skia/include/private/SkSLProgramKind.h +1 -0
  204. package/cpp/skia/include/private/SkSLSymbol.h +7 -3
  205. package/cpp/skia/include/private/SkStringView.h +4 -0
  206. package/cpp/skia/include/private/SkTArray.h +21 -7
  207. package/cpp/skia/include/private/SkTDArray.h +173 -285
  208. package/cpp/skia/include/private/SkTHash.h +33 -32
  209. package/cpp/skia/include/private/SkTemplates.h +24 -26
  210. package/cpp/skia/include/private/SkVx.h +218 -135
  211. package/cpp/skia/include/private/chromium/GrSlug.h +3 -65
  212. package/cpp/skia/include/private/chromium/SkChromeRemoteGlyphCache.h +6 -3
  213. package/cpp/skia/include/private/chromium/Slug.h +76 -0
  214. package/cpp/skia/include/private/gpu/ganesh/GrTypesPriv.h +6 -1
  215. package/cpp/skia/include/private/gpu/ganesh/GrVkTypesPriv.h +5 -39
  216. package/cpp/skia/include/private/gpu/graphite/VulkanGraphiteTypesPriv.h +63 -0
  217. package/cpp/skia/include/{gpu/vk/GrVkVulkan.h → private/gpu/vk/SkiaVulkan.h} +2 -2
  218. package/cpp/skia/include/private/gpu/vk/VulkanTypesPriv.h +57 -0
  219. package/cpp/skia/include/sksl/DSL.h +0 -1
  220. package/cpp/skia/include/sksl/DSLBlock.h +4 -18
  221. package/cpp/skia/include/sksl/DSLCase.h +2 -8
  222. package/cpp/skia/include/sksl/DSLCore.h +8 -15
  223. package/cpp/skia/include/sksl/DSLExpression.h +51 -142
  224. package/cpp/skia/include/sksl/DSLFunction.h +7 -15
  225. package/cpp/skia/include/sksl/DSLModifiers.h +5 -2
  226. package/cpp/skia/include/sksl/DSLStatement.h +4 -39
  227. package/cpp/skia/include/sksl/DSLSymbols.h +1 -11
  228. package/cpp/skia/include/sksl/DSLType.h +20 -12
  229. package/cpp/skia/include/sksl/DSLVar.h +56 -146
  230. package/cpp/skia/include/sksl/SkSLErrorReporter.h +2 -15
  231. package/cpp/skia/include/sksl/SkSLOperator.h +62 -59
  232. package/cpp/skia/include/sksl/SkSLPosition.h +2 -0
  233. package/cpp/skia/include/sksl/SkSLVersion.h +27 -0
  234. package/cpp/skia/include/svg/SkSVGCanvas.h +1 -0
  235. package/cpp/skia/include/utils/SkAnimCodecPlayer.h +1 -1
  236. package/cpp/skia/include/utils/SkBase64.h +2 -0
  237. package/cpp/skia/include/utils/SkCustomTypeface.h +24 -11
  238. package/cpp/skia/include/utils/SkEventTracer.h +12 -1
  239. package/cpp/skia/include/utils/SkNWayCanvas.h +11 -4
  240. package/cpp/skia/include/utils/SkPaintFilterCanvas.h +9 -4
  241. package/cpp/skia/include/utils/SkParse.h +3 -0
  242. package/cpp/skia/include/utils/SkShadowUtils.h +2 -0
  243. package/cpp/skia/include/utils/SkTextUtils.h +2 -1
  244. package/cpp/skia/{include/third_party → modules}/skcms/skcms.h +10 -0
  245. package/cpp/skia/modules/skcms/skcms_internal.h +56 -0
  246. package/cpp/skia/modules/skcms/src/Transform_inl.h +1609 -0
  247. package/cpp/skia/modules/skparagraph/include/DartTypes.h +153 -0
  248. package/cpp/skia/modules/skparagraph/include/FontArguments.h +46 -0
  249. package/cpp/skia/modules/skparagraph/include/FontCollection.h +84 -0
  250. package/cpp/skia/modules/skparagraph/include/Metrics.h +98 -0
  251. package/cpp/skia/modules/skparagraph/include/Paragraph.h +111 -0
  252. package/cpp/skia/modules/skparagraph/include/ParagraphBuilder.h +69 -0
  253. package/cpp/skia/modules/skparagraph/include/ParagraphCache.h +77 -0
  254. package/cpp/skia/modules/skparagraph/include/ParagraphStyle.h +143 -0
  255. package/cpp/skia/modules/skparagraph/include/TextShadow.h +30 -0
  256. package/cpp/skia/modules/skparagraph/include/TextStyle.h +352 -0
  257. package/cpp/skia/modules/skparagraph/include/TypefaceFontProvider.h +81 -0
  258. package/cpp/skia/modules/svg/include/SkSVGAttributeParser.h +1 -1
  259. package/cpp/skia/modules/svg/include/SkSVGTypes.h +3 -3
  260. package/cpp/skia/src/core/SkLRUCache.h +126 -0
  261. package/cpp/skia/src/core/SkTInternalLList.h +302 -0
  262. package/cpp/utils/RNSkTimingInfo.h +1 -0
  263. package/ios/RNSkia-iOS/RNSkMetalCanvasProvider.h +15 -4
  264. package/ios/RNSkia-iOS/RNSkMetalCanvasProvider.mm +40 -54
  265. package/ios/RNSkia-iOS/SkiaDomViewManager.h +8 -0
  266. package/ios/RNSkia-iOS/SkiaDomViewManager.mm +51 -0
  267. package/lib/commonjs/dom/nodes/DrawingNode.js +1 -5
  268. package/lib/commonjs/dom/nodes/DrawingNode.js.map +1 -1
  269. package/lib/commonjs/dom/nodes/JsiSkDOM.js +56 -56
  270. package/lib/commonjs/dom/nodes/JsiSkDOM.js.map +1 -1
  271. package/lib/commonjs/dom/nodes/RenderNode.js +3 -9
  272. package/lib/commonjs/dom/nodes/RenderNode.js.map +1 -1
  273. package/lib/commonjs/dom/nodes/drawings/Text.js +4 -9
  274. package/lib/commonjs/dom/nodes/drawings/Text.js.map +1 -1
  275. package/lib/commonjs/dom/types/Common.js.map +1 -1
  276. package/lib/commonjs/dom/types/Drawings.js.map +1 -1
  277. package/lib/commonjs/mock/index.js +0 -1
  278. package/lib/commonjs/mock/index.js.map +1 -1
  279. package/lib/commonjs/renderer/Canvas.js +21 -57
  280. package/lib/commonjs/renderer/Canvas.js.map +1 -1
  281. package/lib/commonjs/renderer/DependencyManager.js +0 -5
  282. package/lib/commonjs/renderer/DependencyManager.js.map +1 -1
  283. package/lib/commonjs/renderer/HostComponents.js.map +1 -1
  284. package/lib/commonjs/renderer/components/Mask.js +1 -3
  285. package/lib/commonjs/renderer/components/Mask.js.map +1 -1
  286. package/lib/commonjs/renderer/components/Paint.js +5 -18
  287. package/lib/commonjs/renderer/components/Paint.js.map +1 -1
  288. package/lib/commonjs/renderer/useCanvas.js +8 -6
  289. package/lib/commonjs/renderer/useCanvas.js.map +1 -1
  290. package/lib/commonjs/skia/core/Picture.js +1 -24
  291. package/lib/commonjs/skia/core/Picture.js.map +1 -1
  292. package/lib/commonjs/skia/core/Rect.js +1 -1
  293. package/lib/commonjs/skia/core/Rect.js.map +1 -1
  294. package/lib/commonjs/skia/types/ContourMeasure.js.map +1 -1
  295. package/lib/commonjs/skia/types/Size.js +2 -0
  296. package/lib/commonjs/skia/types/Size.js.map +1 -0
  297. package/lib/commonjs/skia/types/index.js +13 -0
  298. package/lib/commonjs/skia/types/index.js.map +1 -1
  299. package/lib/commonjs/skia/web/JsiSkColor.js +8 -0
  300. package/lib/commonjs/skia/web/JsiSkColor.js.map +1 -1
  301. package/lib/commonjs/skia/web/JsiSkContourMeasure.js +4 -7
  302. package/lib/commonjs/skia/web/JsiSkContourMeasure.js.map +1 -1
  303. package/lib/commonjs/values/web/RNSkReadonlyValue.js +4 -2
  304. package/lib/commonjs/values/web/RNSkReadonlyValue.js.map +1 -1
  305. package/lib/commonjs/views/SkiaBaseWebView.js +9 -2
  306. package/lib/commonjs/views/SkiaBaseWebView.js.map +1 -1
  307. package/lib/commonjs/views/SkiaDomView.js +152 -0
  308. package/lib/commonjs/views/SkiaDomView.js.map +1 -0
  309. package/lib/commonjs/views/SkiaDomView.web.js +55 -0
  310. package/lib/commonjs/views/SkiaDomView.web.js.map +1 -0
  311. package/lib/commonjs/views/SkiaPictureView.js +16 -2
  312. package/lib/commonjs/views/SkiaPictureView.js.map +1 -1
  313. package/lib/commonjs/views/SkiaView.js +17 -2
  314. package/lib/commonjs/views/SkiaView.js.map +1 -1
  315. package/lib/commonjs/views/index.js +13 -0
  316. package/lib/commonjs/views/index.js.map +1 -1
  317. package/lib/commonjs/views/types.js.map +1 -1
  318. package/lib/module/dom/nodes/DrawingNode.js +2 -6
  319. package/lib/module/dom/nodes/DrawingNode.js.map +1 -1
  320. package/lib/module/dom/nodes/JsiSkDOM.js +56 -56
  321. package/lib/module/dom/nodes/JsiSkDOM.js.map +1 -1
  322. package/lib/module/dom/nodes/RenderNode.js +2 -5
  323. package/lib/module/dom/nodes/RenderNode.js.map +1 -1
  324. package/lib/module/dom/nodes/drawings/Text.js +4 -9
  325. package/lib/module/dom/nodes/drawings/Text.js.map +1 -1
  326. package/lib/module/dom/types/Common.js.map +1 -1
  327. package/lib/module/dom/types/Drawings.js.map +1 -1
  328. package/lib/module/mock/index.js +0 -1
  329. package/lib/module/mock/index.js.map +1 -1
  330. package/lib/module/renderer/Canvas.js +22 -58
  331. package/lib/module/renderer/Canvas.js.map +1 -1
  332. package/lib/module/renderer/DependencyManager.js +0 -5
  333. package/lib/module/renderer/DependencyManager.js.map +1 -1
  334. package/lib/module/renderer/HostComponents.js.map +1 -1
  335. package/lib/module/renderer/components/Mask.js +2 -4
  336. package/lib/module/renderer/components/Mask.js.map +1 -1
  337. package/lib/module/renderer/components/Paint.js +3 -14
  338. package/lib/module/renderer/components/Paint.js.map +1 -1
  339. package/lib/module/renderer/useCanvas.js +6 -4
  340. package/lib/module/renderer/useCanvas.js.map +1 -1
  341. package/lib/module/skia/core/Picture.js +0 -18
  342. package/lib/module/skia/core/Picture.js.map +1 -1
  343. package/lib/module/skia/core/Rect.js +1 -1
  344. package/lib/module/skia/core/Rect.js.map +1 -1
  345. package/lib/module/skia/types/ContourMeasure.js.map +1 -1
  346. package/lib/module/skia/types/Size.js +2 -0
  347. package/lib/module/skia/types/Size.js.map +1 -0
  348. package/lib/module/skia/types/index.js +1 -0
  349. package/lib/module/skia/types/index.js.map +1 -1
  350. package/lib/module/skia/web/JsiSkColor.js +8 -0
  351. package/lib/module/skia/web/JsiSkColor.js.map +1 -1
  352. package/lib/module/skia/web/JsiSkContourMeasure.js +3 -7
  353. package/lib/module/skia/web/JsiSkContourMeasure.js.map +1 -1
  354. package/lib/module/values/web/RNSkReadonlyValue.js +4 -2
  355. package/lib/module/values/web/RNSkReadonlyValue.js.map +1 -1
  356. package/lib/module/views/SkiaBaseWebView.js +9 -2
  357. package/lib/module/views/SkiaBaseWebView.js.map +1 -1
  358. package/lib/module/views/SkiaDomView.js +128 -0
  359. package/lib/module/views/SkiaDomView.js.map +1 -0
  360. package/lib/module/views/SkiaDomView.web.js +41 -0
  361. package/lib/module/views/SkiaDomView.web.js.map +1 -0
  362. package/lib/module/views/SkiaPictureView.js +14 -2
  363. package/lib/module/views/SkiaPictureView.js.map +1 -1
  364. package/lib/module/views/SkiaView.js +15 -2
  365. package/lib/module/views/SkiaView.js.map +1 -1
  366. package/lib/module/views/index.js +1 -0
  367. package/lib/module/views/index.js.map +1 -1
  368. package/lib/module/views/types.js.map +1 -1
  369. package/lib/typescript/src/dom/nodes/JsiSkDOM.d.ts +57 -64
  370. package/lib/typescript/src/dom/nodes/RenderNode.d.ts +1 -3
  371. package/lib/typescript/src/dom/types/Common.d.ts +2 -3
  372. package/lib/typescript/src/dom/types/Drawings.d.ts +1 -3
  373. package/lib/typescript/src/renderer/Canvas.d.ts +5 -5
  374. package/lib/typescript/src/renderer/DependencyManager.d.ts +0 -2
  375. package/lib/typescript/src/renderer/HostComponents.d.ts +67 -8
  376. package/lib/typescript/src/renderer/components/Paint.d.ts +3 -4
  377. package/lib/typescript/src/renderer/useCanvas.d.ts +1 -6
  378. package/lib/typescript/src/skia/core/Picture.d.ts +0 -8
  379. package/lib/typescript/src/skia/types/ContourMeasure.d.ts +3 -2
  380. package/lib/typescript/src/skia/types/Size.d.ts +4 -0
  381. package/lib/typescript/src/skia/types/index.d.ts +1 -0
  382. package/lib/typescript/src/skia/web/JsiSkContourMeasure.d.ts +2 -6
  383. package/lib/typescript/src/views/SkiaBaseWebView.d.ts +4 -0
  384. package/lib/typescript/src/views/SkiaDomView.d.ts +31 -0
  385. package/lib/typescript/src/views/SkiaDomView.web.d.ts +7 -0
  386. package/lib/typescript/src/views/index.d.ts +1 -0
  387. package/lib/typescript/src/views/types.d.ts +12 -2
  388. package/libs/android/arm64-v8a/libskia.a +0 -0
  389. package/libs/android/arm64-v8a/libskottie.a +0 -0
  390. package/libs/android/arm64-v8a/libskparagraph.a +0 -0
  391. package/libs/android/arm64-v8a/libsksg.a +0 -0
  392. package/libs/android/arm64-v8a/libskshaper.a +0 -0
  393. package/libs/android/arm64-v8a/libskunicode.a +0 -0
  394. package/libs/android/arm64-v8a/libsvg.a +0 -0
  395. package/libs/android/armeabi-v7a/libskia.a +0 -0
  396. package/libs/android/armeabi-v7a/libskottie.a +0 -0
  397. package/libs/android/armeabi-v7a/libskparagraph.a +0 -0
  398. package/libs/android/armeabi-v7a/libsksg.a +0 -0
  399. package/libs/android/armeabi-v7a/libskshaper.a +0 -0
  400. package/libs/android/armeabi-v7a/libskunicode.a +0 -0
  401. package/libs/android/armeabi-v7a/libsvg.a +0 -0
  402. package/libs/android/x86/libskia.a +0 -0
  403. package/libs/android/x86/libskottie.a +0 -0
  404. package/libs/android/x86/libskparagraph.a +0 -0
  405. package/libs/android/x86/libsksg.a +0 -0
  406. package/libs/android/x86/libskshaper.a +0 -0
  407. package/libs/android/x86/libskunicode.a +0 -0
  408. package/libs/android/x86/libsvg.a +0 -0
  409. package/libs/android/x86_64/libskia.a +0 -0
  410. package/libs/android/x86_64/libskottie.a +0 -0
  411. package/libs/android/x86_64/libskparagraph.a +0 -0
  412. package/libs/android/x86_64/libsksg.a +0 -0
  413. package/libs/android/x86_64/libskshaper.a +0 -0
  414. package/libs/android/x86_64/libskunicode.a +0 -0
  415. package/libs/android/x86_64/libsvg.a +0 -0
  416. package/libs/ios/libskia.xcframework/ios-arm64_arm64e/libskia.a +0 -0
  417. package/libs/ios/libskia.xcframework/ios-arm64_arm64e_x86_64-simulator/libskia.a +0 -0
  418. package/libs/ios/libskottie.xcframework/ios-arm64_arm64e/libskottie.a +0 -0
  419. package/libs/ios/libskottie.xcframework/ios-arm64_arm64e_x86_64-simulator/libskottie.a +0 -0
  420. package/libs/ios/libskparagraph.xcframework/Info.plist +42 -0
  421. package/libs/ios/libskparagraph.xcframework/ios-arm64_arm64e/libskparagraph.a +0 -0
  422. package/libs/ios/libskparagraph.xcframework/ios-arm64_arm64e_x86_64-simulator/libskparagraph.a +0 -0
  423. package/libs/ios/libsksg.xcframework/Info.plist +5 -5
  424. package/libs/ios/libsksg.xcframework/ios-arm64_arm64e/libsksg.a +0 -0
  425. package/libs/ios/libsksg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsksg.a +0 -0
  426. package/libs/ios/libskshaper.xcframework/ios-arm64_arm64e/libskshaper.a +0 -0
  427. package/libs/ios/libskshaper.xcframework/ios-arm64_arm64e_x86_64-simulator/libskshaper.a +0 -0
  428. package/libs/ios/libskunicode.xcframework/Info.plist +42 -0
  429. package/libs/ios/libskunicode.xcframework/ios-arm64_arm64e/libskunicode.a +0 -0
  430. package/libs/ios/libskunicode.xcframework/ios-arm64_arm64e_x86_64-simulator/libskunicode.a +0 -0
  431. package/libs/ios/libsvg.xcframework/ios-arm64_arm64e/libsvg.a +0 -0
  432. package/libs/ios/libsvg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsvg.a +0 -0
  433. package/package.json +6 -4
  434. package/react-native-skia.podspec +3 -1
  435. package/src/dom/nodes/DrawingNode.ts +2 -4
  436. package/src/dom/nodes/JsiSkDOM.ts +170 -56
  437. package/src/dom/nodes/RenderNode.ts +2 -14
  438. package/src/dom/nodes/drawings/Text.ts +4 -4
  439. package/src/dom/types/Common.ts +2 -4
  440. package/src/dom/types/Drawings.ts +1 -4
  441. package/src/mock/index.ts +0 -1
  442. package/src/renderer/Canvas.tsx +32 -51
  443. package/src/renderer/DependencyManager.tsx +0 -5
  444. package/src/renderer/HostComponents.ts +153 -5
  445. package/src/renderer/components/Mask.tsx +2 -2
  446. package/src/renderer/components/Paint.tsx +3 -14
  447. package/src/renderer/useCanvas.ts +5 -5
  448. package/src/skia/core/Picture.ts +0 -24
  449. package/src/skia/core/Rect.ts +1 -1
  450. package/src/skia/types/ContourMeasure.tsx +3 -2
  451. package/src/skia/types/Size.ts +4 -0
  452. package/src/skia/types/index.ts +1 -0
  453. package/src/skia/web/JsiSkColor.ts +11 -0
  454. package/src/skia/web/JsiSkContourMeasure.ts +7 -3
  455. package/src/values/web/RNSkReadonlyValue.ts +4 -2
  456. package/src/views/SkiaBaseWebView.tsx +6 -2
  457. package/src/views/SkiaDomView.tsx +120 -0
  458. package/src/views/SkiaDomView.web.tsx +37 -0
  459. package/src/views/SkiaPictureView.tsx +10 -2
  460. package/src/views/SkiaView.tsx +11 -3
  461. package/src/views/index.ts +1 -0
  462. package/src/views/types.ts +19 -2
  463. package/cpp/jsi/JsiSimpleValueWrapper.h +0 -99
  464. package/cpp/skia/include/c/sk_canvas.h +0 -159
  465. package/cpp/skia/include/c/sk_colorspace.h +0 -25
  466. package/cpp/skia/include/c/sk_data.h +0 -65
  467. package/cpp/skia/include/c/sk_image.h +0 -71
  468. package/cpp/skia/include/c/sk_imageinfo.h +0 -62
  469. package/cpp/skia/include/c/sk_maskfilter.h +0 -47
  470. package/cpp/skia/include/c/sk_matrix.h +0 -49
  471. package/cpp/skia/include/c/sk_paint.h +0 -145
  472. package/cpp/skia/include/c/sk_path.h +0 -102
  473. package/cpp/skia/include/c/sk_picture.h +0 -70
  474. package/cpp/skia/include/c/sk_shader.h +0 -143
  475. package/cpp/skia/include/c/sk_surface.h +0 -73
  476. package/cpp/skia/include/c/sk_types.h +0 -278
  477. package/cpp/skia/include/gpu/graphite/SkStuff.h +0 -47
  478. package/cpp/skia/include/private/SkNx.h +0 -430
  479. package/cpp/skia/include/private/SkNx_neon.h +0 -713
  480. package/cpp/skia/include/private/SkNx_sse.h +0 -823
  481. package/cpp/skia/include/sksl/DSLRuntimeEffects.h +0 -32
  482. package/cpp/skia/include/sksl/DSLWrapper.h +0 -77
@@ -76,10 +76,6 @@ private:
76
76
  canvas->scale(pd, pd);
77
77
 
78
78
  canvas->drawPicture(_picture->getObject());
79
-
80
- // Restore and flush canvas
81
- canvas->restore();
82
- canvas->flush();
83
79
  });
84
80
  }
85
81
 
@@ -101,13 +97,17 @@ public:
101
97
 
102
98
  void setJsiProperties(
103
99
  std::unordered_map<std::string, RNJsi::JsiValueWrapper> &props) override {
100
+
101
+ RNSkView::setJsiProperties(props);
102
+
104
103
  for (auto &prop : props) {
105
104
  if (prop.first == "picture") {
106
105
  if (prop.second.isUndefinedOrNull()) {
107
106
  // Clear picture
108
107
  std::static_pointer_cast<RNSkPictureRenderer>(getRenderer())
109
108
  ->setPicture(nullptr);
110
- return;
109
+ requestRedraw();
110
+ continue;
111
111
  } else if (prop.second.getType() !=
112
112
  RNJsi::JsiWrapperValueType::HostObject) {
113
113
  // We expect a function for the picture custom property
@@ -121,9 +121,6 @@ public:
121
121
 
122
122
  // Request redraw
123
123
  requestRedraw();
124
-
125
- } else {
126
- RNSkView::setJsiProperties(props);
127
124
  }
128
125
  }
129
126
  }
@@ -6,11 +6,12 @@
6
6
  #include <unordered_map>
7
7
  #include <vector>
8
8
 
9
- #include <RNSkPlatformContext.h>
10
-
11
9
  #include <JsiValueWrapper.h>
10
+ #include <RNSkPlatformContext.h>
11
+ #include <RNSkValue.h>
12
12
 
13
13
  #include <JsiSkImage.h>
14
+ #include <JsiSkPoint.h>
14
15
  #include <JsiSkRect.h>
15
16
 
16
17
  #pragma clang diagnostic push
@@ -155,7 +156,13 @@ public:
155
156
  /**
156
157
  Destructor
157
158
  */
158
- virtual ~RNSkView() { endDrawingLoop(); }
159
+ virtual ~RNSkView() {
160
+ endDrawingLoop();
161
+ if (_onSizeUnsubscribe != nullptr) {
162
+ _onSizeUnsubscribe();
163
+ _onSizeUnsubscribe = nullptr;
164
+ }
165
+ }
159
166
 
160
167
  /**
161
168
  Sets custom properties. Custom properties are properties that are set
@@ -163,8 +170,37 @@ public:
163
170
  */
164
171
  virtual void setJsiProperties(
165
172
  std::unordered_map<std::string, RNJsi::JsiValueWrapper> &props) {
166
- throw std::runtime_error(
167
- "The base Skia View does not support any custom properties.");
173
+
174
+ for (auto &prop : props) {
175
+ if (prop.first == "onSize") {
176
+ // Start by removing any subscribers to the current onSize
177
+ if (_onSizeUnsubscribe != nullptr) {
178
+ _onSizeUnsubscribe();
179
+ _onSizeUnsubscribe = nullptr;
180
+ }
181
+ if (prop.second.isUndefinedOrNull()) {
182
+ // Clear touchCallback
183
+ _onSize = nullptr;
184
+ } else if (prop.second.getType() !=
185
+ RNJsi::JsiWrapperValueType::HostObject) {
186
+ // We expect a function for the draw callback custom property
187
+ throw std::runtime_error(
188
+ "Expected a Skia mutable value for the onSize property.");
189
+ }
190
+ // Save onSize
191
+ _onSize =
192
+ std::dynamic_pointer_cast<RNSkValue>(prop.second.getAsHostObject());
193
+
194
+ // Add listener
195
+ _onSizeUnsubscribe =
196
+ _onSize->addListener([weakSelf = weak_from_this()](jsi::Runtime &) {
197
+ auto self = weakSelf.lock();
198
+ if (self) {
199
+ self->requestRedraw();
200
+ }
201
+ });
202
+ }
203
+ }
168
204
  }
169
205
 
170
206
  /**
@@ -272,6 +308,73 @@ private:
272
308
  });
273
309
  }
274
310
 
311
+ void updateOnSize() {
312
+ if (_onSize != nullptr) {
313
+ auto width = _canvasProvider->getScaledWidth() /
314
+ _platformContext->getPixelDensity();
315
+ auto height = _canvasProvider->getScaledHeight() /
316
+ _platformContext->getPixelDensity();
317
+
318
+ _platformContext->runOnJavascriptThread(
319
+ [width, height, weakSelf = weak_from_this()]() {
320
+ auto self = weakSelf.lock();
321
+ if (self) {
322
+ auto runtime = self->_platformContext->getJsRuntime();
323
+ auto onSize = self->_onSize->getCurrent(*runtime);
324
+ if (!onSize.isObject()) {
325
+ throw jsi::JSError(
326
+ *runtime,
327
+ "Expected onSize property to be a mutable Skia value.");
328
+ return;
329
+ }
330
+ auto onSizeObj = onSize.asObject(*runtime);
331
+
332
+ // Is this a host SkSize object?
333
+ if (onSizeObj.isHostObject(*runtime)) {
334
+ auto point = std::dynamic_pointer_cast<JsiSkPoint>(
335
+ onSizeObj.asHostObject(*runtime));
336
+ if (point == nullptr) {
337
+ throw jsi::JSError(*runtime,
338
+ "Expected onSize property to be a mutable "
339
+ "Skia value of type SkSize.");
340
+ return;
341
+ }
342
+
343
+ auto w = point->getObject()->x();
344
+ auto h = point->getObject()->y();
345
+ if (w != width || h != height) {
346
+ auto nextSize =
347
+ std::make_shared<SkPoint>(SkPoint::Make(width, height));
348
+ point->setObject(nextSize);
349
+ self->_onSize->set_current(*runtime, onSize);
350
+ }
351
+
352
+ } else {
353
+ auto wVal = onSizeObj.getProperty(*runtime, "width");
354
+ auto hVal = onSizeObj.getProperty(*runtime, "height");
355
+
356
+ if (!wVal.isNumber() || !hVal.isNumber()) {
357
+ throw jsi::JSError(*runtime,
358
+ "Expected onSize property to be a mutable "
359
+ "Skia value of type SkSize.");
360
+ return;
361
+ }
362
+
363
+ auto w = wVal.asNumber();
364
+ auto h = hVal.asNumber();
365
+
366
+ if (w != width || h != height) {
367
+ // Update
368
+ onSizeObj.setProperty(*runtime, "width", width);
369
+ onSizeObj.setProperty(*runtime, "height", height);
370
+ self->_onSize->set_current(*runtime, onSize);
371
+ }
372
+ }
373
+ }
374
+ });
375
+ }
376
+ }
377
+
275
378
  /**
276
379
  Draw loop callback
277
380
  */
@@ -280,6 +383,9 @@ private:
280
383
  _drawingMode == RNSkDrawingMode::Continuous) {
281
384
  _redrawRequestCounter = 0;
282
385
 
386
+ // Update size if needed
387
+ updateOnSize();
388
+
283
389
  if (!_renderer->tryRender(_canvasProvider)) {
284
390
  // The renderer could not render cause it was busy, just schedule
285
391
  // redrawing on the next frame.
@@ -292,6 +398,8 @@ private:
292
398
  std::shared_ptr<RNSkCanvasProvider> _canvasProvider;
293
399
  std::shared_ptr<RNSkRenderer> _renderer;
294
400
 
401
+ std::shared_ptr<RNSkValue> _onSize;
402
+ std::function<void()> _onSizeUnsubscribe;
295
403
  RNSkDrawingMode _drawingMode;
296
404
  size_t _nativeId;
297
405
 
@@ -0,0 +1,167 @@
1
+ #pragma once
2
+
3
+ /* Enable output of dom trees and paint contexts */
4
+ #define SKIA_DOM_DEBUG 0
5
+
6
+ #include <memory>
7
+
8
+ #include "JsiHostObject.h"
9
+
10
+ #include "base/JsiDependencyManager.h"
11
+
12
+ #include "nodes/JsiCircleNode.h"
13
+ #include "nodes/JsiDiffRectNode.h"
14
+ #include "nodes/JsiFillNode.h"
15
+ #include "nodes/JsiGroupNode.h"
16
+ #include "nodes/JsiImageNode.h"
17
+ #include "nodes/JsiLineNode.h"
18
+ #include "nodes/JsiOvalNode.h"
19
+ #include "nodes/JsiPatchNode.h"
20
+ #include "nodes/JsiPathNode.h"
21
+ #include "nodes/JsiPointsNode.h"
22
+ #include "nodes/JsiRRectNode.h"
23
+ #include "nodes/JsiRectNode.h"
24
+
25
+ #include "nodes/JsiBlurMaskNode.h"
26
+ #include "nodes/JsiImageSvgNode.h"
27
+ #include "nodes/JsiPictureNode.h"
28
+ #include "nodes/JsiVerticesNode.h"
29
+
30
+ #include "nodes/JsiColorFilterNodes.h"
31
+ #include "nodes/JsiImageFilterNodes.h"
32
+ #include "nodes/JsiPathEffectNodes.h"
33
+ #include "nodes/JsiShaderNodes.h"
34
+
35
+ #include "nodes/JsiPaintNode.h"
36
+
37
+ #include "nodes/JsiBackdropFilterNode.h"
38
+ #include "nodes/JsiBlendNode.h"
39
+ #include "nodes/JsiBoxNode.h"
40
+ #include "nodes/JsiBoxShadowNode.h"
41
+
42
+ #include "nodes/JsiCustomDrawingNode.h"
43
+
44
+ #include "nodes/JsiGlyphsNode.h"
45
+ #include "nodes/JsiTextBlobNode.h"
46
+ #include "nodes/JsiTextNode.h"
47
+ #include "nodes/JsiTextPathNode.h"
48
+
49
+ #include "nodes/JsiLayerNode.h"
50
+
51
+ namespace RNSkia {
52
+
53
+ namespace jsi = facebook::jsi;
54
+
55
+ class JsiDomApi : public JsiHostObject {
56
+ public:
57
+ explicit JsiDomApi(std::shared_ptr<RNSkPlatformContext> context)
58
+ : JsiHostObject() {
59
+ installFunction("DependencyManager",
60
+ JsiDependencyManager::createCtor(context));
61
+
62
+ // Shapes
63
+ installFunction("RectNode", JsiRectNode::createCtor(context));
64
+ installFunction("RRectNode", JsiRRectNode::createCtor(context));
65
+ installFunction("CircleNode", JsiCircleNode::createCtor(context));
66
+ installFunction("PathNode", JsiPathNode::createCtor(context));
67
+ installFunction("LineNode", JsiLineNode::createCtor(context));
68
+ installFunction("ImageNode", JsiImageNode::createCtor(context));
69
+ installFunction("OvalNode", JsiOvalNode::createCtor(context));
70
+ installFunction("PatchNode", JsiPatchNode::createCtor(context));
71
+ installFunction("PointsNode", JsiPointsNode::createCtor(context));
72
+ installFunction("DiffRectNode", JsiDiffRectNode::createCtor(context));
73
+
74
+ installFunction("FillNode", JsiFillNode::createCtor(context));
75
+
76
+ installFunction("GroupNode", JsiGroupNode::createCtor(context));
77
+
78
+ installFunction("PaintNode", JsiPaintNode::createCtor(context));
79
+
80
+ installFunction("BlurMaskFilterNode", JsiBlurMaskNode::createCtor(context));
81
+
82
+ installFunction("PictureNode", JsiPictureNode::createCtor(context));
83
+ installFunction("ImageSVGNode", JsiImageSvgNode::createCtor(context));
84
+
85
+ installFunction("VerticesNode", JsiVerticesNode::createCtor(context));
86
+
87
+ // Path effects
88
+ installFunction("DashPathEffectNode",
89
+ JsiDashPathEffectNode::createCtor(context));
90
+ installFunction("DiscretePathEffectNode",
91
+ JsiDiscretePathEffectNode::createCtor(context));
92
+ installFunction("CornerPathEffectNode",
93
+ JsiCornerPathEffectNode::createCtor(context));
94
+ installFunction("Path1DPathEffectNode",
95
+ JsiPath1DPathEffectNode::createCtor(context));
96
+ installFunction("Path2DPathEffectNode",
97
+ JsiPath2DPathEffectNode::createCtor(context));
98
+ installFunction("Line2DPathEffectNode",
99
+ JsiLine2DPathEffectNode::createCtor(context));
100
+ installFunction("SumPathEffectNode",
101
+ JsiSumPathEffectNode::createCtor(context));
102
+
103
+ // Image filters
104
+ installFunction("DashPathEffectNode",
105
+ JsiBlendImageFilterNode::createCtor(context));
106
+ installFunction("DropShadowImageFilterNode",
107
+ JsiDropShadowImageFilterNode::createCtor(context));
108
+ installFunction("DisplacementMapImageFilterNode",
109
+ JsiDisplacementMapImageFilterNode::createCtor(context));
110
+ installFunction("BlurImageFilterNode",
111
+ JsiBlurImageFilterNode::createCtor(context));
112
+ installFunction("OffsetImageFilterNode",
113
+ JsiOffsetImageFilterNode::createCtor(context));
114
+ installFunction("MorphologyImageFilterNode",
115
+ JsiMorphologyImageFilterNode::createCtor(context));
116
+ installFunction("RuntimeShaderImageFilterNode",
117
+ JsiRuntimeShaderImageFilterNode::createCtor(context));
118
+
119
+ // Color Filters
120
+ installFunction("MatrixColorFilterNode",
121
+ JsiMatrixColorFilterNode::createCtor(context));
122
+ installFunction("BlendColorFilterNode",
123
+ JsiBlendColorFilterNode::createCtor(context));
124
+ installFunction("LinearToSRGBGammaColorFilterNode",
125
+ JsiLinearToSRGBGammaColorFilterNode::createCtor(context));
126
+ installFunction("SRGBToLinearGammaColorFilterNode",
127
+ JsiSRGBToLinearGammaColorFilterNode::createCtor(context));
128
+ installFunction("LumaColorFilterNode",
129
+ JsiLumaColorFilterNode::createCtor(context));
130
+ installFunction("LerpColorFilterNode",
131
+ JsiLerpColorFilterNode::createCtor(context));
132
+
133
+ // Shaders
134
+ installFunction("ShaderNode", JsiShaderNode::createCtor(context));
135
+ installFunction("ImageShaderNode", JsiImageShaderNode::createCtor(context));
136
+ installFunction("ColorShaderNode", JsiColorShaderNode::createCtor(context));
137
+ installFunction("TurbulenceNode", JsiTurbulenceNode::createCtor(context));
138
+ installFunction("FractalNoiseNode",
139
+ JsiFractalNoiseNode::createCtor(context));
140
+ installFunction("LinearGradientNode",
141
+ JsiLinearGradientNode::createCtor(context));
142
+ installFunction("RadialGradientNode",
143
+ JsiRadialGradientNode::createCtor(context));
144
+ installFunction("SweepGradientNode",
145
+ JsiSweepGradientNode::createCtor(context));
146
+ installFunction("TwoPointConicalGradientNode",
147
+ JsiTwoPointConicalGradientNode::createCtor(context));
148
+
149
+ installFunction("BackdropFilterNode",
150
+ JsiBackdropFilterNode::createCtor(context));
151
+ installFunction("BlendNode", JsiBlendNode::createCtor(context));
152
+ installFunction("BoxNode", JsiBoxNode::createCtor(context));
153
+ installFunction("BoxShadowNode", JsiBoxShadowNode::createCtor(context));
154
+
155
+ installFunction("CustomDrawingNode",
156
+ JsiCustomDrawingNode::createCtor(context));
157
+
158
+ installFunction("GlyphsNode", JsiGlyphsNode::createCtor(context));
159
+ installFunction("TextNode", JsiTextNode::createCtor(context));
160
+ installFunction("TextPathNode", JsiTextPathNode::createCtor(context));
161
+ installFunction("TextBlobNode", JsiTextBlobNode::createCtor(context));
162
+
163
+ installFunction("LayerNode", JsiLayerNode::createCtor(context));
164
+ }
165
+ };
166
+
167
+ } // namespace RNSkia
@@ -0,0 +1,72 @@
1
+ #pragma once
2
+
3
+ #include "DrawingContext.h"
4
+ #include "JsiValue.h"
5
+
6
+ #include <string>
7
+
8
+ namespace RNSkia {
9
+
10
+ class NodeProp;
11
+
12
+ using namespace RNJsi; // NOLINT
13
+
14
+ using ReadPropFunc =
15
+ std::function<jsi::Value(jsi::Runtime &, PropId, NodeProp *prop)>;
16
+
17
+ /**
18
+ Base class for Dom Node Properties
19
+ */
20
+ class BaseNodeProp {
21
+ public:
22
+ virtual ~BaseNodeProp() {}
23
+
24
+ /**
25
+ Use to check if the value represented by this property has a usable
26
+ (non-null/undefined) value or not.
27
+ */
28
+ virtual bool isSet() = 0;
29
+
30
+ /**
31
+ True if the property has changed since we last visited it
32
+ */
33
+ virtual bool isChanged() = 0;
34
+
35
+ /**
36
+ Updates any pending values that has happened from other threads, sets flags
37
+ for changed.
38
+ */
39
+ virtual void updatePendingChanges() = 0;
40
+
41
+ /*
42
+ Marks property flags for changed as resolved
43
+ */
44
+ virtual void markAsResolved() = 0;
45
+
46
+ /**
47
+ Override to read the value represented by this property from the Javascript
48
+ property object
49
+ */
50
+ virtual void readValueFromJs(jsi::Runtime &runtime,
51
+ const ReadPropFunc &read) = 0;
52
+
53
+ /**
54
+ Returns the name (or names) in a property
55
+ */
56
+ virtual std::string getName() = 0;
57
+
58
+ /**
59
+ Sets the property as required
60
+ */
61
+ void require() { _isRequired = true; }
62
+
63
+ /**
64
+ Returns true for required props
65
+ */
66
+ bool isRequired() { return _isRequired; }
67
+
68
+ private:
69
+ bool _isRequired = false;
70
+ };
71
+
72
+ } // namespace RNSkia
@@ -0,0 +1,187 @@
1
+ #pragma once
2
+
3
+ #include "BaseNodeProp.h"
4
+ #include "JsiValue.h"
5
+
6
+ #include <memory>
7
+ #include <string>
8
+ #include <utility>
9
+ #include <vector>
10
+
11
+ namespace RNSkia {
12
+
13
+ /**
14
+ Class for composing multiple properties into a derived property value
15
+ */
16
+ class BaseDerivedProp : public BaseNodeProp {
17
+ public:
18
+ BaseDerivedProp() : BaseNodeProp() {}
19
+
20
+ /**
21
+ Starts the process of updating and reading props
22
+ */
23
+ void updatePendingChanges() override {
24
+ auto changed = false;
25
+ for (auto &prop : _properties) {
26
+ prop->updatePendingChanges();
27
+ if (prop->isChanged()) {
28
+ changed = true;
29
+ }
30
+ }
31
+
32
+ // We only need to update the derived value when any of the derived
33
+ // properties have changed.
34
+ if (changed) {
35
+ updateDerivedValue();
36
+ }
37
+ }
38
+
39
+ /*
40
+ Marks properties as no longer changed
41
+ */
42
+ void markAsResolved() override {
43
+ for (auto &prop : _properties) {
44
+ prop->markAsResolved();
45
+ }
46
+
47
+ _isChanged = false;
48
+ }
49
+
50
+ /**
51
+ Returns the changed state of the prop
52
+ */
53
+ bool isChanged() override { return _isChanged; }
54
+
55
+ /**
56
+ Delegate read value to child nodes
57
+ */
58
+ void readValueFromJs(jsi::Runtime &runtime,
59
+ const ReadPropFunc &read) override {
60
+ for (auto &prop : _properties) {
61
+ prop->readValueFromJs(runtime, read);
62
+ }
63
+ }
64
+
65
+ /**
66
+ Override to calculate the derived value from child properties
67
+ */
68
+ virtual void updateDerivedValue() = 0;
69
+
70
+ /**
71
+ Adds a property to the derived property child props.
72
+ */
73
+ template <typename P = BaseNodeProp> P *addProperty(std::shared_ptr<P> prop) {
74
+ _properties.push_back(prop);
75
+ return prop.get();
76
+ }
77
+
78
+ /*
79
+ Return name of properties in derived prop as a comma separated list
80
+ */
81
+ std::string getName() override {
82
+ std::string v = "";
83
+ for (size_t i = 0; i < _properties.size(); ++i) {
84
+ v += _properties[i]->getName() + (i < _properties.size() - 1 ? ", " : "");
85
+ }
86
+ return v;
87
+ }
88
+
89
+ /**
90
+ Returns true if one or more of the child props has values
91
+ */
92
+ bool isSet() override {
93
+ for (auto &prop : _properties) {
94
+ if (prop->isSet()) {
95
+ return true;
96
+ }
97
+ }
98
+ return false;
99
+ }
100
+
101
+ protected:
102
+ void setIsChanged(bool isChanged) { _isChanged = isChanged; }
103
+
104
+ private:
105
+ std::vector<std::shared_ptr<BaseNodeProp>> _properties;
106
+ std::atomic<bool> _isChanged = {false};
107
+ };
108
+
109
+ /**
110
+ Class for composing multiple properties into a derived property value
111
+ */
112
+ template <typename T> class DerivedProp : public BaseDerivedProp {
113
+ public:
114
+ DerivedProp() : BaseDerivedProp() {}
115
+
116
+ /**
117
+ Returns the derived value
118
+ */
119
+ std::shared_ptr<T> getDerivedValue() { return _derivedValue; }
120
+
121
+ /**
122
+ Returns true if is optional and one of the child props has a value, or all
123
+ props if optional is false.
124
+ */
125
+ bool isSet() override { return _derivedValue != nullptr; };
126
+
127
+ protected:
128
+ /**
129
+ Set derived value from sub classes
130
+ */
131
+ void setDerivedValue(std::shared_ptr<T> value) {
132
+ setIsChanged(_derivedValue != value);
133
+ _derivedValue = value;
134
+ }
135
+
136
+ /**
137
+ Set derived value from sub classes
138
+ */
139
+ void setDerivedValue(const T &&value) {
140
+ setIsChanged(true);
141
+ _derivedValue = std::make_shared<T>(std::move(value));
142
+ }
143
+
144
+ private:
145
+ std::shared_ptr<T> _derivedValue;
146
+ };
147
+
148
+ /**
149
+ Class for composing multiple properties into a derived property value
150
+ */
151
+ template <typename T> class DerivedSkProp : public BaseDerivedProp {
152
+ public:
153
+ DerivedSkProp() : BaseDerivedProp() {}
154
+
155
+ /**
156
+ Returns the derived value
157
+ */
158
+ sk_sp<T> getDerivedValue() { return _derivedValue; }
159
+
160
+ /**
161
+ Returns true if is optional and one of the child props has a value, or all
162
+ props if optional is false.
163
+ */
164
+ bool isSet() override { return _derivedValue != nullptr; };
165
+
166
+ protected:
167
+ /**
168
+ Set derived value from sub classes
169
+ */
170
+ void setDerivedValue(sk_sp<T> value) {
171
+ setIsChanged(_derivedValue != value);
172
+ _derivedValue = value;
173
+ }
174
+
175
+ /**
176
+ Set derived value from sub classes
177
+ */
178
+ void setDerivedValue(const T &&value) {
179
+ setIsChanged(true);
180
+ _derivedValue = sk_make_sp<T>(std::move(value));
181
+ }
182
+
183
+ private:
184
+ sk_sp<T> _derivedValue;
185
+ };
186
+
187
+ } // namespace RNSkia