@shopify/react-native-skia 0.1.158 → 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 (403) hide show
  1. package/android/CMakeLists.txt +35 -11
  2. package/android/build.gradle +21 -25
  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/JsiSkHostObjects.h +6 -0
  11. package/cpp/api/JsiSkImageFilterFactory.h +1 -1
  12. package/cpp/api/JsiSkPaint.h +9 -2
  13. package/cpp/api/JsiSkPath.h +1 -0
  14. package/cpp/api/JsiSkRuntimeEffect.h +36 -36
  15. package/cpp/jsi/JsiHostObject.cpp +16 -28
  16. package/cpp/jsi/JsiHostObject.h +127 -7
  17. package/cpp/jsi/JsiValue.cpp +346 -0
  18. package/cpp/jsi/JsiValue.h +222 -0
  19. package/cpp/jsi/JsiValueWrapper.h +33 -5
  20. package/cpp/rnskia/RNSkDomView.cpp +220 -0
  21. package/cpp/rnskia/RNSkDomView.h +140 -0
  22. package/cpp/rnskia/RNSkJsView.cpp +0 -4
  23. package/cpp/rnskia/RNSkJsView.h +6 -4
  24. package/cpp/rnskia/RNSkManager.cpp +7 -0
  25. package/cpp/rnskia/RNSkPictureView.h +5 -8
  26. package/cpp/rnskia/RNSkView.h +113 -5
  27. package/cpp/rnskia/dom/JsiDomApi.h +167 -0
  28. package/cpp/rnskia/dom/base/BaseNodeProp.h +72 -0
  29. package/cpp/rnskia/dom/base/DerivedNodeProp.h +187 -0
  30. package/cpp/rnskia/dom/base/DrawingContext.cpp +227 -0
  31. package/cpp/rnskia/dom/base/DrawingContext.h +136 -0
  32. package/cpp/rnskia/dom/base/JsiDependencyManager.h +294 -0
  33. package/cpp/rnskia/dom/base/JsiDomDeclarationNode.h +176 -0
  34. package/cpp/rnskia/dom/base/JsiDomDrawingNode.h +50 -0
  35. package/cpp/rnskia/dom/base/JsiDomNode.h +361 -0
  36. package/cpp/rnskia/dom/base/JsiDomRenderNode.h +267 -0
  37. package/cpp/rnskia/dom/base/NodeProp.h +130 -0
  38. package/cpp/rnskia/dom/base/NodePropsContainer.h +119 -0
  39. package/cpp/rnskia/dom/nodes/JsiBackdropFilterNode.h +38 -0
  40. package/cpp/rnskia/dom/nodes/JsiBlendNode.h +112 -0
  41. package/cpp/rnskia/dom/nodes/JsiBlurMaskNode.h +78 -0
  42. package/cpp/rnskia/dom/nodes/JsiBoxNode.h +104 -0
  43. package/cpp/rnskia/dom/nodes/JsiBoxShadowNode.h +33 -0
  44. package/cpp/rnskia/dom/nodes/JsiCircleNode.h +38 -0
  45. package/cpp/rnskia/dom/nodes/JsiColorFilterNodes.h +192 -0
  46. package/cpp/rnskia/dom/nodes/JsiCustomDrawingNode.h +123 -0
  47. package/cpp/rnskia/dom/nodes/JsiDiffRectNode.h +42 -0
  48. package/cpp/rnskia/dom/nodes/JsiFillNode.h +22 -0
  49. package/cpp/rnskia/dom/nodes/JsiGlyphsNode.h +56 -0
  50. package/cpp/rnskia/dom/nodes/JsiGroupNode.h +26 -0
  51. package/cpp/rnskia/dom/nodes/JsiImageFilterNodes.h +415 -0
  52. package/cpp/rnskia/dom/nodes/JsiImageNode.h +34 -0
  53. package/cpp/rnskia/dom/nodes/JsiImageSvgNode.h +44 -0
  54. package/cpp/rnskia/dom/nodes/JsiLayerNode.h +64 -0
  55. package/cpp/rnskia/dom/nodes/JsiLineNode.h +43 -0
  56. package/cpp/rnskia/dom/nodes/JsiOvalNode.h +34 -0
  57. package/cpp/rnskia/dom/nodes/JsiPaintNode.h +77 -0
  58. package/cpp/rnskia/dom/nodes/JsiPatchNode.h +54 -0
  59. package/cpp/rnskia/dom/nodes/JsiPathEffectNodes.h +315 -0
  60. package/cpp/rnskia/dom/nodes/JsiPathNode.h +181 -0
  61. package/cpp/rnskia/dom/nodes/JsiPictureNode.h +32 -0
  62. package/cpp/rnskia/dom/nodes/JsiPointsNode.h +51 -0
  63. package/cpp/rnskia/dom/nodes/JsiRRectNode.h +34 -0
  64. package/cpp/rnskia/dom/nodes/JsiRectNode.h +34 -0
  65. package/cpp/rnskia/dom/nodes/JsiShaderNodes.h +517 -0
  66. package/cpp/rnskia/dom/nodes/JsiTextBlobNode.h +47 -0
  67. package/cpp/rnskia/dom/nodes/JsiTextNode.h +54 -0
  68. package/cpp/rnskia/dom/nodes/JsiTextPathNode.h +32 -0
  69. package/cpp/rnskia/dom/nodes/JsiVerticesNode.h +43 -0
  70. package/cpp/rnskia/dom/props/BezierProps.h +63 -0
  71. package/cpp/rnskia/dom/props/BlendModeProp.h +101 -0
  72. package/cpp/rnskia/dom/props/BoxShadowProps.h +61 -0
  73. package/cpp/rnskia/dom/props/CircleProp.h +46 -0
  74. package/cpp/rnskia/dom/props/ClipProp.h +62 -0
  75. package/cpp/rnskia/dom/props/ColorProp.h +80 -0
  76. package/cpp/rnskia/dom/props/DrawingProp.h +33 -0
  77. package/cpp/rnskia/dom/props/FontProp.h +34 -0
  78. package/cpp/rnskia/dom/props/GlyphsProp.h +53 -0
  79. package/cpp/rnskia/dom/props/ImageProps.h +173 -0
  80. package/cpp/rnskia/dom/props/LayerProp.h +50 -0
  81. package/cpp/rnskia/dom/props/MatrixProp.h +33 -0
  82. package/cpp/rnskia/dom/props/NumbersProp.h +63 -0
  83. package/cpp/rnskia/dom/props/PaintProps.h +172 -0
  84. package/cpp/rnskia/dom/props/PathProp.h +55 -0
  85. package/cpp/rnskia/dom/props/PictureProp.h +38 -0
  86. package/cpp/rnskia/dom/props/PointProp.h +72 -0
  87. package/cpp/rnskia/dom/props/PointsProp.h +83 -0
  88. package/cpp/rnskia/dom/props/RRectProp.h +134 -0
  89. package/cpp/rnskia/dom/props/RadiusProp.h +43 -0
  90. package/cpp/rnskia/dom/props/RectProp.h +118 -0
  91. package/cpp/rnskia/dom/props/StrokeProps.h +75 -0
  92. package/cpp/rnskia/dom/props/SvgProp.h +37 -0
  93. package/cpp/rnskia/dom/props/TextBlobProp.h +128 -0
  94. package/cpp/rnskia/dom/props/TileModeProp.h +50 -0
  95. package/cpp/rnskia/dom/props/TransformProp.h +80 -0
  96. package/cpp/rnskia/dom/props/TransformsProps.h +68 -0
  97. package/cpp/rnskia/dom/props/UniformsProp.h +194 -0
  98. package/cpp/rnskia/dom/props/VertexModeProp.h +47 -0
  99. package/cpp/rnskia/dom/props/VerticesProps.h +67 -0
  100. package/cpp/rnskia/values/RNSkReadonlyValue.h +13 -4
  101. package/cpp/skia/include/android/SkAndroidFrameworkUtils.h +35 -1
  102. package/cpp/skia/include/codec/SkAndroidCodec.h +17 -1
  103. package/cpp/skia/include/codec/SkCodec.h +8 -5
  104. package/cpp/skia/include/core/SkAnnotation.h +2 -0
  105. package/cpp/skia/include/core/SkBitmap.h +52 -1
  106. package/cpp/skia/include/core/SkBlendMode.h +2 -0
  107. package/cpp/skia/include/core/SkCanvas.h +52 -31
  108. package/cpp/skia/include/core/SkCapabilities.h +44 -0
  109. package/cpp/skia/include/core/SkColor.h +7 -0
  110. package/cpp/skia/include/core/SkColorFilter.h +37 -0
  111. package/cpp/skia/include/core/SkColorSpace.h +1 -1
  112. package/cpp/skia/include/core/SkFont.h +4 -0
  113. package/cpp/skia/include/core/SkFontMgr.h +3 -0
  114. package/cpp/skia/include/core/SkGraphics.h +9 -0
  115. package/cpp/skia/include/core/SkImage.h +77 -17
  116. package/cpp/skia/include/core/SkImageEncoder.h +5 -3
  117. package/cpp/skia/include/core/SkImageGenerator.h +27 -17
  118. package/cpp/skia/include/core/SkM44.h +1 -0
  119. package/cpp/skia/include/core/SkMesh.h +120 -34
  120. package/cpp/skia/include/core/SkMilestone.h +1 -1
  121. package/cpp/skia/include/core/SkOverdrawCanvas.h +2 -1
  122. package/cpp/skia/include/core/SkPaint.h +15 -2
  123. package/cpp/skia/include/core/SkPath.h +4 -0
  124. package/cpp/skia/include/core/SkPathBuilder.h +1 -1
  125. package/cpp/skia/include/core/SkPicture.h +0 -3
  126. package/cpp/skia/include/core/SkPictureRecorder.h +0 -2
  127. package/cpp/skia/include/core/SkPixmap.h +19 -0
  128. package/cpp/skia/include/core/SkRasterHandleAllocator.h +3 -1
  129. package/cpp/skia/include/core/SkRect.h +11 -4
  130. package/cpp/skia/include/core/SkRefCnt.h +13 -1
  131. package/cpp/skia/include/core/SkRegion.h +6 -0
  132. package/cpp/skia/include/core/SkSamplingOptions.h +8 -6
  133. package/cpp/skia/include/core/SkScalar.h +6 -25
  134. package/cpp/skia/include/core/SkShader.h +20 -12
  135. package/cpp/skia/include/core/SkSpan.h +51 -19
  136. package/cpp/skia/include/core/SkStream.h +2 -2
  137. package/cpp/skia/include/core/SkString.h +11 -3
  138. package/cpp/skia/include/core/SkSurface.h +85 -8
  139. package/cpp/skia/include/core/SkTextBlob.h +5 -2
  140. package/cpp/skia/include/core/SkTypes.h +11 -10
  141. package/cpp/skia/include/docs/SkPDFDocument.h +0 -5
  142. package/cpp/skia/include/effects/Sk1DPathEffect.h +6 -1
  143. package/cpp/skia/include/effects/Sk2DPathEffect.h +4 -1
  144. package/cpp/skia/include/effects/SkColorMatrix.h +1 -0
  145. package/cpp/skia/include/effects/SkColorMatrixFilter.h +5 -8
  146. package/cpp/skia/include/effects/SkCornerPathEffect.h +5 -1
  147. package/cpp/skia/include/effects/SkDashPathEffect.h +5 -1
  148. package/cpp/skia/include/effects/SkGradientShader.h +68 -38
  149. package/cpp/skia/include/effects/SkHighContrastFilter.h +5 -1
  150. package/cpp/skia/include/effects/SkImageFilters.h +5 -4
  151. package/cpp/skia/include/effects/SkLumaColorFilter.h +4 -1
  152. package/cpp/skia/include/effects/SkOpPathEffect.h +6 -2
  153. package/cpp/skia/include/effects/SkOverdrawColorFilter.h +5 -2
  154. package/cpp/skia/include/effects/SkRuntimeEffect.h +54 -62
  155. package/cpp/skia/include/effects/SkShaderMaskFilter.h +3 -1
  156. package/cpp/skia/include/effects/SkTableColorFilter.h +8 -21
  157. package/cpp/skia/include/effects/SkTableMaskFilter.h +5 -1
  158. package/cpp/skia/include/effects/SkTrimPathEffect.h +5 -1
  159. package/cpp/skia/include/encode/SkEncoder.h +17 -0
  160. package/cpp/skia/include/encode/SkWebpEncoder.h +17 -0
  161. package/cpp/skia/include/gpu/GpuTypes.h +18 -0
  162. package/cpp/skia/include/gpu/GrBackendSurface.h +38 -17
  163. package/cpp/skia/include/gpu/GrBackendSurfaceMutableState.h +6 -71
  164. package/cpp/skia/include/gpu/GrContextOptions.h +1 -1
  165. package/cpp/skia/include/gpu/GrContextThreadSafeProxy.h +10 -9
  166. package/cpp/skia/include/gpu/GrDirectContext.h +42 -22
  167. package/cpp/skia/include/gpu/GrRecordingContext.h +6 -3
  168. package/cpp/skia/include/gpu/GrTypes.h +11 -11
  169. package/cpp/skia/include/gpu/MutableTextureState.h +122 -0
  170. package/cpp/skia/include/gpu/gl/GrGLFunctions.h +1 -0
  171. package/cpp/skia/include/gpu/gl/GrGLInterface.h +1 -0
  172. package/cpp/skia/include/gpu/graphite/BackendTexture.h +7 -0
  173. package/cpp/skia/include/gpu/graphite/CombinationBuilder.h +195 -0
  174. package/cpp/skia/include/gpu/graphite/Context.h +47 -55
  175. package/cpp/skia/include/gpu/graphite/ContextOptions.h +85 -0
  176. package/cpp/skia/include/gpu/graphite/GraphiteTypes.h +1 -17
  177. package/cpp/skia/include/gpu/graphite/ImageProvider.h +61 -0
  178. package/cpp/skia/include/gpu/graphite/Recorder.h +87 -8
  179. package/cpp/skia/include/gpu/graphite/Recording.h +19 -9
  180. package/cpp/skia/include/gpu/graphite/TextureInfo.h +40 -8
  181. package/cpp/skia/include/gpu/graphite/dawn/DawnBackendContext.h +25 -0
  182. package/cpp/skia/include/gpu/graphite/mtl/MtlBackendContext.h +3 -2
  183. package/cpp/skia/include/gpu/graphite/vk/VulkanGraphiteTypes.h +69 -0
  184. package/cpp/skia/include/gpu/mtl/MtlMemoryAllocator.h +39 -0
  185. package/cpp/skia/include/gpu/vk/GrVkBackendContext.h +21 -19
  186. package/cpp/skia/include/gpu/vk/GrVkExtensions.h +2 -50
  187. package/cpp/skia/include/gpu/vk/GrVkMemoryAllocator.h +2 -127
  188. package/cpp/skia/include/gpu/vk/GrVkTypes.h +5 -43
  189. package/cpp/skia/include/gpu/vk/VulkanBackendContext.h +46 -0
  190. package/cpp/skia/include/gpu/vk/VulkanExtensions.h +67 -0
  191. package/cpp/skia/include/gpu/vk/VulkanMemoryAllocator.h +116 -0
  192. package/cpp/skia/include/gpu/vk/VulkanTypes.h +59 -0
  193. package/cpp/skia/include/pathops/SkPathOps.h +1 -1
  194. package/cpp/skia/include/private/SkColorData.h +10 -40
  195. package/cpp/skia/include/private/SkEncodedInfo.h +9 -3
  196. package/cpp/skia/include/private/SkFloatingPoint.h +9 -6
  197. package/cpp/skia/include/private/SkHalf.h +5 -52
  198. package/cpp/skia/include/private/SkMacros.h +1 -1
  199. package/cpp/skia/include/private/SkMalloc.h +4 -0
  200. package/cpp/skia/include/private/SkPathRef.h +10 -10
  201. package/cpp/skia/include/private/SkSLModifiers.h +59 -23
  202. package/cpp/skia/include/private/SkSLProgramKind.h +1 -0
  203. package/cpp/skia/include/private/SkSLSymbol.h +7 -3
  204. package/cpp/skia/include/private/SkStringView.h +4 -0
  205. package/cpp/skia/include/private/SkTArray.h +21 -7
  206. package/cpp/skia/include/private/SkTDArray.h +173 -285
  207. package/cpp/skia/include/private/SkTHash.h +33 -32
  208. package/cpp/skia/include/private/SkTemplates.h +24 -26
  209. package/cpp/skia/include/private/SkVx.h +218 -135
  210. package/cpp/skia/include/private/chromium/GrSlug.h +3 -65
  211. package/cpp/skia/include/private/chromium/SkChromeRemoteGlyphCache.h +6 -3
  212. package/cpp/skia/include/private/chromium/Slug.h +76 -0
  213. package/cpp/skia/include/private/gpu/ganesh/GrTypesPriv.h +6 -1
  214. package/cpp/skia/include/private/gpu/ganesh/GrVkTypesPriv.h +5 -39
  215. package/cpp/skia/include/private/gpu/graphite/VulkanGraphiteTypesPriv.h +63 -0
  216. package/cpp/skia/include/{gpu/vk/GrVkVulkan.h → private/gpu/vk/SkiaVulkan.h} +2 -2
  217. package/cpp/skia/include/private/gpu/vk/VulkanTypesPriv.h +57 -0
  218. package/cpp/skia/include/sksl/DSL.h +0 -1
  219. package/cpp/skia/include/sksl/DSLBlock.h +4 -18
  220. package/cpp/skia/include/sksl/DSLCase.h +2 -8
  221. package/cpp/skia/include/sksl/DSLCore.h +8 -15
  222. package/cpp/skia/include/sksl/DSLExpression.h +51 -142
  223. package/cpp/skia/include/sksl/DSLFunction.h +7 -15
  224. package/cpp/skia/include/sksl/DSLModifiers.h +5 -2
  225. package/cpp/skia/include/sksl/DSLStatement.h +4 -39
  226. package/cpp/skia/include/sksl/DSLSymbols.h +1 -11
  227. package/cpp/skia/include/sksl/DSLType.h +20 -12
  228. package/cpp/skia/include/sksl/DSLVar.h +56 -146
  229. package/cpp/skia/include/sksl/SkSLErrorReporter.h +2 -15
  230. package/cpp/skia/include/sksl/SkSLOperator.h +62 -59
  231. package/cpp/skia/include/sksl/SkSLPosition.h +2 -0
  232. package/cpp/skia/include/sksl/SkSLVersion.h +27 -0
  233. package/cpp/skia/include/svg/SkSVGCanvas.h +1 -0
  234. package/cpp/skia/include/utils/SkAnimCodecPlayer.h +1 -1
  235. package/cpp/skia/include/utils/SkBase64.h +2 -0
  236. package/cpp/skia/include/utils/SkCustomTypeface.h +24 -11
  237. package/cpp/skia/include/utils/SkEventTracer.h +12 -1
  238. package/cpp/skia/include/utils/SkNWayCanvas.h +11 -4
  239. package/cpp/skia/include/utils/SkPaintFilterCanvas.h +9 -4
  240. package/cpp/skia/include/utils/SkParse.h +3 -0
  241. package/cpp/skia/include/utils/SkShadowUtils.h +2 -0
  242. package/cpp/skia/include/utils/SkTextUtils.h +2 -1
  243. package/cpp/skia/{include/third_party → modules}/skcms/skcms.h +10 -0
  244. package/cpp/skia/modules/skcms/skcms_internal.h +56 -0
  245. package/cpp/skia/modules/skcms/src/Transform_inl.h +1609 -0
  246. package/cpp/skia/modules/skparagraph/include/DartTypes.h +153 -0
  247. package/cpp/skia/modules/skparagraph/include/FontArguments.h +46 -0
  248. package/cpp/skia/modules/skparagraph/include/FontCollection.h +84 -0
  249. package/cpp/skia/modules/skparagraph/include/Metrics.h +98 -0
  250. package/cpp/skia/modules/skparagraph/include/Paragraph.h +111 -0
  251. package/cpp/skia/modules/skparagraph/include/ParagraphBuilder.h +69 -0
  252. package/cpp/skia/modules/skparagraph/include/ParagraphCache.h +77 -0
  253. package/cpp/skia/modules/skparagraph/include/ParagraphStyle.h +143 -0
  254. package/cpp/skia/modules/skparagraph/include/TextShadow.h +30 -0
  255. package/cpp/skia/modules/skparagraph/include/TextStyle.h +352 -0
  256. package/cpp/skia/modules/skparagraph/include/TypefaceFontProvider.h +81 -0
  257. package/cpp/skia/modules/svg/include/SkSVGAttributeParser.h +1 -1
  258. package/cpp/skia/modules/svg/include/SkSVGTypes.h +3 -3
  259. package/cpp/skia/src/core/SkLRUCache.h +126 -0
  260. package/cpp/skia/src/core/SkTInternalLList.h +302 -0
  261. package/cpp/utils/RNSkTimingInfo.h +1 -0
  262. package/ios/RNSkia-iOS/RNSkMetalCanvasProvider.h +15 -4
  263. package/ios/RNSkia-iOS/RNSkMetalCanvasProvider.mm +40 -54
  264. package/ios/RNSkia-iOS/SkiaDomViewManager.h +8 -0
  265. package/ios/RNSkia-iOS/SkiaDomViewManager.mm +51 -0
  266. package/lib/commonjs/dom/nodes/JsiSkDOM.js +56 -56
  267. package/lib/commonjs/dom/nodes/JsiSkDOM.js.map +1 -1
  268. package/lib/commonjs/dom/nodes/RenderNode.js +1 -1
  269. package/lib/commonjs/dom/nodes/RenderNode.js.map +1 -1
  270. package/lib/commonjs/renderer/Canvas.js +19 -63
  271. package/lib/commonjs/renderer/Canvas.js.map +1 -1
  272. package/lib/commonjs/renderer/DependencyManager.js +0 -5
  273. package/lib/commonjs/renderer/DependencyManager.js.map +1 -1
  274. package/lib/commonjs/renderer/HostComponents.js.map +1 -1
  275. package/lib/commonjs/renderer/useCanvas.js +4 -18
  276. package/lib/commonjs/renderer/useCanvas.js.map +1 -1
  277. package/lib/commonjs/views/SkiaBaseWebView.js +7 -0
  278. package/lib/commonjs/views/SkiaBaseWebView.js.map +1 -1
  279. package/lib/commonjs/views/SkiaDomView.js +152 -0
  280. package/lib/commonjs/views/SkiaDomView.js.map +1 -0
  281. package/lib/commonjs/views/SkiaDomView.web.js +55 -0
  282. package/lib/commonjs/views/SkiaDomView.web.js.map +1 -0
  283. package/lib/commonjs/views/SkiaPictureView.js +16 -2
  284. package/lib/commonjs/views/SkiaPictureView.js.map +1 -1
  285. package/lib/commonjs/views/SkiaView.js +17 -2
  286. package/lib/commonjs/views/SkiaView.js.map +1 -1
  287. package/lib/commonjs/views/index.js +13 -0
  288. package/lib/commonjs/views/index.js.map +1 -1
  289. package/lib/commonjs/views/types.js.map +1 -1
  290. package/lib/module/dom/nodes/JsiSkDOM.js +56 -56
  291. package/lib/module/dom/nodes/JsiSkDOM.js.map +1 -1
  292. package/lib/module/dom/nodes/RenderNode.js +1 -1
  293. package/lib/module/dom/nodes/RenderNode.js.map +1 -1
  294. package/lib/module/renderer/Canvas.js +20 -64
  295. package/lib/module/renderer/Canvas.js.map +1 -1
  296. package/lib/module/renderer/DependencyManager.js +0 -5
  297. package/lib/module/renderer/DependencyManager.js.map +1 -1
  298. package/lib/module/renderer/HostComponents.js.map +1 -1
  299. package/lib/module/renderer/useCanvas.js +2 -13
  300. package/lib/module/renderer/useCanvas.js.map +1 -1
  301. package/lib/module/views/SkiaBaseWebView.js +7 -0
  302. package/lib/module/views/SkiaBaseWebView.js.map +1 -1
  303. package/lib/module/views/SkiaDomView.js +128 -0
  304. package/lib/module/views/SkiaDomView.js.map +1 -0
  305. package/lib/module/views/SkiaDomView.web.js +41 -0
  306. package/lib/module/views/SkiaDomView.web.js.map +1 -0
  307. package/lib/module/views/SkiaPictureView.js +14 -2
  308. package/lib/module/views/SkiaPictureView.js.map +1 -1
  309. package/lib/module/views/SkiaView.js +15 -2
  310. package/lib/module/views/SkiaView.js.map +1 -1
  311. package/lib/module/views/index.js +1 -0
  312. package/lib/module/views/index.js.map +1 -1
  313. package/lib/module/views/types.js.map +1 -1
  314. package/lib/typescript/src/dom/nodes/JsiSkDOM.d.ts +57 -64
  315. package/lib/typescript/src/renderer/Canvas.d.ts +5 -8
  316. package/lib/typescript/src/renderer/DependencyManager.d.ts +0 -2
  317. package/lib/typescript/src/renderer/HostComponents.d.ts +66 -3
  318. package/lib/typescript/src/renderer/useCanvas.d.ts +0 -6
  319. package/lib/typescript/src/views/SkiaBaseWebView.d.ts +4 -0
  320. package/lib/typescript/src/views/SkiaDomView.d.ts +31 -0
  321. package/lib/typescript/src/views/SkiaDomView.web.d.ts +7 -0
  322. package/lib/typescript/src/views/index.d.ts +1 -0
  323. package/lib/typescript/src/views/types.d.ts +12 -2
  324. package/libs/android/arm64-v8a/libskia.a +0 -0
  325. package/libs/android/arm64-v8a/libskottie.a +0 -0
  326. package/libs/android/arm64-v8a/libskparagraph.a +0 -0
  327. package/libs/android/arm64-v8a/libsksg.a +0 -0
  328. package/libs/android/arm64-v8a/libskshaper.a +0 -0
  329. package/libs/android/arm64-v8a/libskunicode.a +0 -0
  330. package/libs/android/arm64-v8a/libsvg.a +0 -0
  331. package/libs/android/armeabi-v7a/libskia.a +0 -0
  332. package/libs/android/armeabi-v7a/libskottie.a +0 -0
  333. package/libs/android/armeabi-v7a/libskparagraph.a +0 -0
  334. package/libs/android/armeabi-v7a/libsksg.a +0 -0
  335. package/libs/android/armeabi-v7a/libskshaper.a +0 -0
  336. package/libs/android/armeabi-v7a/libskunicode.a +0 -0
  337. package/libs/android/armeabi-v7a/libsvg.a +0 -0
  338. package/libs/android/x86/libskia.a +0 -0
  339. package/libs/android/x86/libskottie.a +0 -0
  340. package/libs/android/x86/libskparagraph.a +0 -0
  341. package/libs/android/x86/libsksg.a +0 -0
  342. package/libs/android/x86/libskshaper.a +0 -0
  343. package/libs/android/x86/libskunicode.a +0 -0
  344. package/libs/android/x86/libsvg.a +0 -0
  345. package/libs/android/x86_64/libskia.a +0 -0
  346. package/libs/android/x86_64/libskottie.a +0 -0
  347. package/libs/android/x86_64/libskparagraph.a +0 -0
  348. package/libs/android/x86_64/libsksg.a +0 -0
  349. package/libs/android/x86_64/libskshaper.a +0 -0
  350. package/libs/android/x86_64/libskunicode.a +0 -0
  351. package/libs/android/x86_64/libsvg.a +0 -0
  352. package/libs/ios/libskia.xcframework/ios-arm64_arm64e/libskia.a +0 -0
  353. package/libs/ios/libskia.xcframework/ios-arm64_arm64e_x86_64-simulator/libskia.a +0 -0
  354. package/libs/ios/libskottie.xcframework/ios-arm64_arm64e/libskottie.a +0 -0
  355. package/libs/ios/libskottie.xcframework/ios-arm64_arm64e_x86_64-simulator/libskottie.a +0 -0
  356. package/libs/ios/libskparagraph.xcframework/Info.plist +42 -0
  357. package/libs/ios/libskparagraph.xcframework/ios-arm64_arm64e/libskparagraph.a +0 -0
  358. package/libs/ios/libskparagraph.xcframework/ios-arm64_arm64e_x86_64-simulator/libskparagraph.a +0 -0
  359. package/libs/ios/libsksg.xcframework/Info.plist +5 -5
  360. package/libs/ios/libsksg.xcframework/ios-arm64_arm64e/libsksg.a +0 -0
  361. package/libs/ios/libsksg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsksg.a +0 -0
  362. package/libs/ios/libskshaper.xcframework/ios-arm64_arm64e/libskshaper.a +0 -0
  363. package/libs/ios/libskshaper.xcframework/ios-arm64_arm64e_x86_64-simulator/libskshaper.a +0 -0
  364. package/libs/ios/libskunicode.xcframework/Info.plist +42 -0
  365. package/libs/ios/libskunicode.xcframework/ios-arm64_arm64e/libskunicode.a +0 -0
  366. package/libs/ios/libskunicode.xcframework/ios-arm64_arm64e_x86_64-simulator/libskunicode.a +0 -0
  367. package/libs/ios/libsvg.xcframework/ios-arm64_arm64e/libsvg.a +0 -0
  368. package/libs/ios/libsvg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsvg.a +0 -0
  369. package/package.json +5 -3
  370. package/react-native-skia.podspec +3 -1
  371. package/src/dom/nodes/JsiSkDOM.ts +170 -56
  372. package/src/dom/nodes/RenderNode.ts +1 -1
  373. package/src/renderer/Canvas.tsx +32 -56
  374. package/src/renderer/DependencyManager.tsx +0 -5
  375. package/src/renderer/HostComponents.ts +152 -1
  376. package/src/renderer/useCanvas.ts +1 -15
  377. package/src/views/SkiaBaseWebView.tsx +4 -0
  378. package/src/views/SkiaDomView.tsx +120 -0
  379. package/src/views/SkiaDomView.web.tsx +37 -0
  380. package/src/views/SkiaPictureView.tsx +10 -2
  381. package/src/views/SkiaView.tsx +11 -3
  382. package/src/views/index.ts +1 -0
  383. package/src/views/types.ts +19 -2
  384. package/cpp/jsi/JsiSimpleValueWrapper.h +0 -99
  385. package/cpp/skia/include/c/sk_canvas.h +0 -159
  386. package/cpp/skia/include/c/sk_colorspace.h +0 -25
  387. package/cpp/skia/include/c/sk_data.h +0 -65
  388. package/cpp/skia/include/c/sk_image.h +0 -71
  389. package/cpp/skia/include/c/sk_imageinfo.h +0 -62
  390. package/cpp/skia/include/c/sk_maskfilter.h +0 -47
  391. package/cpp/skia/include/c/sk_matrix.h +0 -49
  392. package/cpp/skia/include/c/sk_paint.h +0 -145
  393. package/cpp/skia/include/c/sk_path.h +0 -102
  394. package/cpp/skia/include/c/sk_picture.h +0 -70
  395. package/cpp/skia/include/c/sk_shader.h +0 -143
  396. package/cpp/skia/include/c/sk_surface.h +0 -73
  397. package/cpp/skia/include/c/sk_types.h +0 -278
  398. package/cpp/skia/include/gpu/graphite/SkStuff.h +0 -47
  399. package/cpp/skia/include/private/SkNx.h +0 -430
  400. package/cpp/skia/include/private/SkNx_neon.h +0 -713
  401. package/cpp/skia/include/private/SkNx_sse.h +0 -823
  402. package/cpp/skia/include/sksl/DSLRuntimeEffects.h +0 -32
  403. package/cpp/skia/include/sksl/DSLWrapper.h +0 -77
@@ -0,0 +1,78 @@
1
+ #pragma once
2
+
3
+ #include "JsiDomDeclarationNode.h"
4
+
5
+ #include "NodeProp.h"
6
+
7
+ #include <memory>
8
+ #include <string>
9
+
10
+ #pragma clang diagnostic push
11
+ #pragma clang diagnostic ignored "-Wdocumentation"
12
+
13
+ #include <SkMaskFilter.h>
14
+
15
+ #pragma clang diagnostic pop
16
+
17
+ namespace RNSkia {
18
+
19
+ class JsiBlurMaskNode : public JsiBaseDomDeclarationNode,
20
+ public JsiDomNodeCtor<JsiBlurMaskNode> {
21
+ public:
22
+ explicit JsiBlurMaskNode(std::shared_ptr<RNSkPlatformContext> context)
23
+ : JsiBaseDomDeclarationNode(context, "skBlurMaskFilter") {}
24
+
25
+ protected:
26
+ void decorate(DrawingContext *context) override {
27
+ if (context->isChanged() || getPropsContainer()->isChanged()) {
28
+
29
+ bool respectCTM =
30
+ _respectCTM->isSet() ? _respectCTM->value().getAsBool() : true;
31
+ SkBlurStyle style = SkBlurStyle::kNormal_SkBlurStyle;
32
+ if (_style->isSet()) {
33
+ style = getBlurStyleFromString(_style->value().getAsString());
34
+ }
35
+
36
+ auto filter = SkMaskFilter::MakeBlur(style, _blur->value().getAsNumber(),
37
+ respectCTM);
38
+
39
+ // Set the mask filter
40
+ context->getMutablePaint()->setMaskFilter(filter);
41
+ }
42
+ }
43
+
44
+ void defineProperties(NodePropsContainer *container) override {
45
+ JsiBaseDomDeclarationNode::defineProperties(container);
46
+
47
+ _style = container->defineProperty(
48
+ std::make_shared<NodeProp>(JsiPropId::get("style")));
49
+ _respectCTM = container->defineProperty(
50
+ std::make_shared<NodeProp>(JsiPropId::get("respectCTM")));
51
+ _blur = container->defineProperty(
52
+ std::make_shared<NodeProp>(JsiPropId::get("blur")));
53
+
54
+ _blur->require();
55
+ }
56
+
57
+ private:
58
+ SkBlurStyle getBlurStyleFromString(const std::string &value) {
59
+ if (value == "normal") {
60
+ return SkBlurStyle::kNormal_SkBlurStyle;
61
+ } else if (value == "solid") {
62
+ return SkBlurStyle::kSolid_SkBlurStyle;
63
+ } else if (value == "outer") {
64
+ return SkBlurStyle::kOuter_SkBlurStyle;
65
+ } else if (value == "inner") {
66
+ return SkBlurStyle::kInner_SkBlurStyle;
67
+ }
68
+ getContext()->raiseError(std::runtime_error(
69
+ "The value \"" + value + "\" is not " + "a valid blur style."));
70
+ return SkBlurStyle::kNormal_SkBlurStyle;
71
+ }
72
+
73
+ NodeProp *_style;
74
+ NodeProp *_respectCTM;
75
+ NodeProp *_blur;
76
+ };
77
+
78
+ } // namespace RNSkia
@@ -0,0 +1,104 @@
1
+ #pragma once
2
+
3
+ #include "JsiBoxShadowNode.h"
4
+ #include "JsiDomRenderNode.h"
5
+
6
+ #include <memory>
7
+ #include <vector>
8
+
9
+ namespace RNSkia {
10
+
11
+ class JsiBoxNode : public JsiDomRenderNode, public JsiDomNodeCtor<JsiBoxNode> {
12
+ public:
13
+ explicit JsiBoxNode(std::shared_ptr<RNSkPlatformContext> context)
14
+ : JsiDomRenderNode(context, "skBox") {}
15
+
16
+ protected:
17
+ void renderNode(DrawingContext *context) override {
18
+ // Verify
19
+ if (!_rrectProp->isSet() && !_rectProp->isSet()) {
20
+ throw std::runtime_error("The box property must be set on the Box node.");
21
+ }
22
+
23
+ // Get rect - we'll try to end up with an rrect:
24
+ auto box = _rrectProp->isSet()
25
+ ? *_rrectProp->getDerivedValue()
26
+ : SkRRect::MakeRectXY(*_rectProp->getDerivedValue(), 0, 0);
27
+
28
+ // Get shadows
29
+ std::vector<std::shared_ptr<JsiBoxShadowNode>> shadows;
30
+ for (auto &child : getChildren()) {
31
+ auto shadowNode = std::dynamic_pointer_cast<JsiBoxShadowNode>(child);
32
+ if (shadowNode != nullptr && shadowNode->getBoxShadowProps()->isSet()) {
33
+ shadows.push_back(shadowNode);
34
+ }
35
+ }
36
+ // Render outer shadows
37
+ for (auto &shadow : shadows) {
38
+ if (!shadow->getBoxShadowProps()->isInner()) {
39
+ // Now let's render
40
+ auto dx = shadow->getBoxShadowProps()->getDx();
41
+ auto dy = shadow->getBoxShadowProps()->getDy();
42
+ auto spread = shadow->getBoxShadowProps()->getSpread();
43
+
44
+ context->getCanvas()->drawRRect(
45
+ inflate(box, spread, spread, dx, dy),
46
+ *shadow->getBoxShadowProps()->getDerivedValue());
47
+ }
48
+ }
49
+
50
+ // Render box
51
+ context->getCanvas()->drawRRect(box, *context->getPaint());
52
+
53
+ // Render inner shadows
54
+ for (auto &shadow : shadows) {
55
+ if (shadow->getBoxShadowProps()->isInner()) {
56
+ // Now let's render
57
+ auto dx = shadow->getBoxShadowProps()->getDx();
58
+ auto dy = shadow->getBoxShadowProps()->getDy();
59
+ auto spread = shadow->getBoxShadowProps()->getSpread();
60
+ auto delta = SkPoint::Make(10 + std::abs(dx), 10 + std::abs(dy));
61
+
62
+ context->getCanvas()->save();
63
+ context->getCanvas()->clipRRect(box, SkClipOp::kIntersect, false);
64
+
65
+ auto inner = deflate(box, spread, spread, dx, dy);
66
+ auto outer = inflate(box, delta.x(), delta.y());
67
+
68
+ // Render!
69
+ context->getCanvas()->drawDRRect(
70
+ outer, inner, *shadow->getBoxShadowProps()->getDerivedValue());
71
+
72
+ context->getCanvas()->restore();
73
+ }
74
+ }
75
+ }
76
+
77
+ void defineProperties(NodePropsContainer *container) override {
78
+ JsiDomRenderNode::defineProperties(container);
79
+ _rrectProp = container->defineProperty(
80
+ std::make_shared<RRectProp>(JsiPropId::get("box")));
81
+ _rectProp = container->defineProperty(
82
+ std::make_shared<RectProp>(JsiPropId::get("box")));
83
+ }
84
+
85
+ private:
86
+ SkRRect inflate(const SkRRect &box, SkScalar dx, SkScalar dy, size_t tx = 0,
87
+ size_t ty = 0) {
88
+ return SkRRect::MakeRectXY(
89
+ SkRect::MakeXYWH(box.rect().x() - dx + tx, box.rect().y() - dy + ty,
90
+ box.rect().width() + 2 * dx,
91
+ box.rect().height() + 2 * dy),
92
+ box.getSimpleRadii().x() + dx, box.getSimpleRadii().y() + dy);
93
+ }
94
+
95
+ SkRRect deflate(const SkRRect &box, SkScalar dx, SkScalar dy, size_t tx = 0,
96
+ size_t ty = 0) {
97
+ return inflate(box, -dx, -dy, tx, ty);
98
+ }
99
+
100
+ RRectProp *_rrectProp;
101
+ RectProp *_rectProp;
102
+ };
103
+
104
+ } // namespace RNSkia
@@ -0,0 +1,33 @@
1
+ #pragma once
2
+
3
+ #include "BoxShadowProps.h"
4
+ #include "JsiDomDeclarationNode.h"
5
+
6
+ #include <memory>
7
+
8
+ namespace RNSkia {
9
+
10
+ class JsiBoxShadowNode : public JsiBaseDomDeclarationNode,
11
+ public JsiDomNodeCtor<JsiBoxShadowNode> {
12
+ public:
13
+ explicit JsiBoxShadowNode(std::shared_ptr<RNSkPlatformContext> context)
14
+ : JsiBaseDomDeclarationNode(context, "skBoxShadow") {}
15
+
16
+ BoxShadowProps *getBoxShadowProps() { return _boxShadowProps; }
17
+
18
+ protected:
19
+ void decorate(DrawingContext *context) override {
20
+ // Do nothing, we are just a container for properties
21
+ }
22
+
23
+ void defineProperties(NodePropsContainer *container) override {
24
+ JsiBaseDomDeclarationNode::defineProperties(container);
25
+ _boxShadowProps =
26
+ container->defineProperty(std::make_shared<BoxShadowProps>());
27
+ }
28
+
29
+ private:
30
+ BoxShadowProps *_boxShadowProps;
31
+ };
32
+
33
+ } // namespace RNSkia
@@ -0,0 +1,38 @@
1
+ #pragma once
2
+
3
+ #include "CircleProp.h"
4
+ #include "JsiDomDrawingNode.h"
5
+
6
+ #include <memory>
7
+
8
+ namespace RNSkia {
9
+
10
+ class JsiCircleNode : public JsiDomDrawingNode,
11
+ public JsiDomNodeCtor<JsiCircleNode> {
12
+ public:
13
+ explicit JsiCircleNode(std::shared_ptr<RNSkPlatformContext> context)
14
+ : JsiDomDrawingNode(context, "skCircle") {}
15
+
16
+ protected:
17
+ void draw(DrawingContext *context) override {
18
+ auto circle = _circleProp->getDerivedValue();
19
+ auto r = _radiusProp->value().getAsNumber();
20
+ context->getCanvas()->drawCircle(*circle, r, *context->getPaint());
21
+ }
22
+
23
+ void defineProperties(NodePropsContainer *container) override {
24
+ JsiDomDrawingNode::defineProperties(container);
25
+ _circleProp = container->defineProperty(std::make_shared<CircleProp>());
26
+ _radiusProp =
27
+ container->defineProperty(std::make_shared<NodeProp>(PropNameR));
28
+
29
+ _circleProp->require();
30
+ _radiusProp->require();
31
+ }
32
+
33
+ private:
34
+ CircleProp *_circleProp;
35
+ NodeProp *_radiusProp;
36
+ };
37
+
38
+ } // namespace RNSkia
@@ -0,0 +1,192 @@
1
+ #pragma once
2
+
3
+ #include "JsiDomDeclarationNode.h"
4
+
5
+ #include "BlendModeProp.h"
6
+ #include "ColorProp.h"
7
+ #include "NodeProp.h"
8
+
9
+ #include <memory>
10
+
11
+ #pragma clang diagnostic push
12
+ #pragma clang diagnostic ignored "-Wdocumentation"
13
+
14
+ #include <SkColorFilter.h>
15
+
16
+ #pragma clang diagnostic pop
17
+
18
+ namespace RNSkia {
19
+
20
+ class JsiBaseColorFilterNode
21
+ : public JsiDomDeclarationNode<JsiBaseColorFilterNode,
22
+ sk_sp<SkColorFilter>> {
23
+ public:
24
+ JsiBaseColorFilterNode(std::shared_ptr<RNSkPlatformContext> context,
25
+ const char *type)
26
+ : JsiDomDeclarationNode<JsiBaseColorFilterNode, sk_sp<SkColorFilter>>(
27
+ context, type) {}
28
+
29
+ protected:
30
+ sk_sp<SkColorFilter> resolve(std::shared_ptr<JsiDomNode> child) override {
31
+ auto ptr = std::dynamic_pointer_cast<JsiBaseColorFilterNode>(child);
32
+ if (ptr) {
33
+ return ptr->getCurrent();
34
+ }
35
+ return nullptr;
36
+ }
37
+
38
+ void setColorFilter(DrawingContext *context, sk_sp<SkColorFilter> f) {
39
+ set(context, f);
40
+ }
41
+
42
+ void set(DrawingContext *context, sk_sp<SkColorFilter> ColorFilter) override {
43
+ auto paint = context->getMutablePaint();
44
+ if (paint->getColorFilter() != nullptr &&
45
+ paint->getColorFilter() != getCurrent().get()) {
46
+ paint->setColorFilter(
47
+ SkColorFilters::Compose(paint->refColorFilter(), ColorFilter));
48
+ } else {
49
+ paint->setColorFilter(ColorFilter);
50
+ }
51
+
52
+ setCurrent(ColorFilter);
53
+ }
54
+ };
55
+
56
+ class JsiMatrixColorFilterNode
57
+ : public JsiBaseColorFilterNode,
58
+ public JsiDomNodeCtor<JsiMatrixColorFilterNode> {
59
+ public:
60
+ explicit JsiMatrixColorFilterNode(
61
+ std::shared_ptr<RNSkPlatformContext> context)
62
+ : JsiBaseColorFilterNode(context, "skMatrixColorFilter") {}
63
+
64
+ protected:
65
+ void decorate(DrawingContext *context) override {
66
+ if (isChanged(context)) {
67
+ auto array = _matrixProp->value().getAsArray();
68
+ float matrix[20];
69
+ for (int i = 0; i < 20; i++) {
70
+ if (array.size() > i) {
71
+ matrix[i] = array[i].getAsNumber();
72
+ }
73
+ }
74
+ setColorFilter(context, SkColorFilters::Matrix(matrix));
75
+ }
76
+ }
77
+
78
+ void defineProperties(NodePropsContainer *container) override {
79
+ JsiBaseDomDeclarationNode::defineProperties(container);
80
+ _matrixProp = container->defineProperty(
81
+ std::make_shared<NodeProp>(JsiPropId::get("matrix")));
82
+ _matrixProp->require();
83
+ }
84
+
85
+ private:
86
+ NodeProp *_matrixProp;
87
+ };
88
+
89
+ class JsiBlendColorFilterNode : public JsiBaseColorFilterNode,
90
+ public JsiDomNodeCtor<JsiBlendColorFilterNode> {
91
+ public:
92
+ explicit JsiBlendColorFilterNode(std::shared_ptr<RNSkPlatformContext> context)
93
+ : JsiBaseColorFilterNode(context, "skBlendColorFilter") {}
94
+
95
+ protected:
96
+ void decorate(DrawingContext *context) override {
97
+ if (isChanged(context)) {
98
+ setColorFilter(context,
99
+ SkColorFilters::Blend(*_colorProp->getDerivedValue(),
100
+ *_blendModeProp->getDerivedValue()));
101
+ }
102
+ }
103
+
104
+ void defineProperties(NodePropsContainer *container) override {
105
+ JsiBaseDomDeclarationNode::defineProperties(container);
106
+ _blendModeProp = container->defineProperty(
107
+ std::make_shared<BlendModeProp>(JsiPropId::get("mode")));
108
+ _colorProp = container->defineProperty(
109
+ std::make_shared<ColorProp>(JsiPropId::get("color")));
110
+
111
+ _blendModeProp->require();
112
+ _colorProp->require();
113
+ }
114
+
115
+ private:
116
+ BlendModeProp *_blendModeProp;
117
+ ColorProp *_colorProp;
118
+ };
119
+
120
+ class JsiLinearToSRGBGammaColorFilterNode
121
+ : public JsiBaseColorFilterNode,
122
+ public JsiDomNodeCtor<JsiLinearToSRGBGammaColorFilterNode> {
123
+ public:
124
+ explicit JsiLinearToSRGBGammaColorFilterNode(
125
+ std::shared_ptr<RNSkPlatformContext> context)
126
+ : JsiBaseColorFilterNode(context, "skLinearToSRGBGammaColorFilter") {}
127
+
128
+ protected:
129
+ void decorate(DrawingContext *context) override {
130
+ if (isChanged(context)) {
131
+ setColorFilter(context, SkColorFilters::LinearToSRGBGamma());
132
+ }
133
+ }
134
+ };
135
+
136
+ class JsiSRGBToLinearGammaColorFilterNode
137
+ : public JsiBaseColorFilterNode,
138
+ public JsiDomNodeCtor<JsiSRGBToLinearGammaColorFilterNode> {
139
+ public:
140
+ explicit JsiSRGBToLinearGammaColorFilterNode(
141
+ std::shared_ptr<RNSkPlatformContext> context)
142
+ : JsiBaseColorFilterNode(context, "skSRGBToLinearGammaColorFilter") {}
143
+
144
+ protected:
145
+ void decorate(DrawingContext *context) override {
146
+ if (isChanged(context)) {
147
+ setColorFilter(context, SkColorFilters::SRGBToLinearGamma());
148
+ }
149
+ }
150
+ };
151
+
152
+ class JsiLumaColorFilterNode : public JsiBaseColorFilterNode,
153
+ public JsiDomNodeCtor<JsiLumaColorFilterNode> {
154
+ public:
155
+ explicit JsiLumaColorFilterNode(std::shared_ptr<RNSkPlatformContext> context)
156
+ : JsiBaseColorFilterNode(context, "skLumaColorFilter") {}
157
+
158
+ protected:
159
+ void decorate(DrawingContext *context) override {
160
+ if (isChanged(context)) {
161
+ setColorFilter(context, SkLumaColorFilter::Make());
162
+ }
163
+ }
164
+ };
165
+
166
+ class JsiLerpColorFilterNode : public JsiBaseColorFilterNode,
167
+ public JsiDomNodeCtor<JsiLerpColorFilterNode> {
168
+ public:
169
+ explicit JsiLerpColorFilterNode(std::shared_ptr<RNSkPlatformContext> context)
170
+ : JsiBaseColorFilterNode(context, "skLerpColorFilter") {}
171
+
172
+ protected:
173
+ void decorate(DrawingContext *context) override {
174
+ if (isChanged(context)) {
175
+ setColorFilter(context,
176
+ SkColorFilters::Lerp(_tProp->value().getAsNumber(),
177
+ requireChild(0), requireChild(1)));
178
+ }
179
+ }
180
+
181
+ void defineProperties(NodePropsContainer *container) override {
182
+ JsiBaseDomDeclarationNode::defineProperties(container);
183
+ _tProp = container->defineProperty(
184
+ std::make_shared<NodeProp>(JsiPropId::get("t")));
185
+ _tProp->require();
186
+ }
187
+
188
+ private:
189
+ NodeProp *_tProp;
190
+ };
191
+
192
+ } // namespace RNSkia
@@ -0,0 +1,123 @@
1
+ #pragma once
2
+
3
+ #include "DrawingProp.h"
4
+ #include "JsiDomDrawingNode.h"
5
+
6
+ #include "JsiSkCanvas.h"
7
+ #include "JsiSkPaint.h"
8
+
9
+ #include <memory>
10
+ #include <utility>
11
+
12
+ namespace RNSkia {
13
+
14
+ class JsiCustomDrawingNode : public JsiDomDrawingNode,
15
+ public JsiDomNodeCtor<JsiCustomDrawingNode> {
16
+ public:
17
+ explicit JsiCustomDrawingNode(std::shared_ptr<RNSkPlatformContext> context)
18
+ : JsiDomDrawingNode(context, "skCustomDrawing") {}
19
+
20
+ protected:
21
+ void draw(DrawingContext *context) override {
22
+ if (_drawing != nullptr) {
23
+
24
+ // Only repaint the picture IF we did not get to the draw function
25
+ // from a redrawRequest after creating the picture!
26
+ if (!_inRedrawCycle || _drawingProp->isChanged()) {
27
+
28
+ float scaledWidth = context->getScaledWidth();
29
+ float scaledHeight = context->getScaledHeight();
30
+ auto paint = context->getPaint();
31
+ auto opacity = context->getOpacity();
32
+ auto platformContext = getContext();
33
+ auto requestRedraw = context->getRequestRedraw();
34
+
35
+ // Create/set the paint/canvas wrappers
36
+ if (_jsiPaint == nullptr) {
37
+ _jsiPaint = std::make_shared<JsiSkPaint>(getContext(), *paint);
38
+ } else {
39
+ _jsiPaint->fromPaint(*paint);
40
+ }
41
+
42
+ if (_jsiCanvas == nullptr) {
43
+ _jsiCanvas = std::make_shared<JsiSkCanvas>(getContext());
44
+ }
45
+
46
+ // Run rendering on the javascript thread
47
+ getContext()->runOnJavascriptThread([this, platformContext, opacity,
48
+ requestRedraw, scaledWidth,
49
+ scaledHeight]() {
50
+ // Get the runtime
51
+ auto runtime = platformContext->getJsRuntime();
52
+
53
+ // Create the picture recorder
54
+ SkPictureRecorder recorder;
55
+ SkRTreeFactory factory;
56
+ SkCanvas *canvas =
57
+ recorder.beginRecording(scaledWidth, scaledHeight, &factory);
58
+
59
+ auto jsiCanvas =
60
+ std::make_shared<JsiSkCanvas>(platformContext, canvas);
61
+
62
+ // Create context wrapper
63
+ auto jsiCtx = jsi::Object(*runtime);
64
+ jsiCtx.setProperty(
65
+ *runtime, "paint",
66
+ jsi::Object::createFromHostObject(*runtime, this->_jsiPaint));
67
+
68
+ jsiCtx.setProperty(*runtime, "opacity", opacity);
69
+ jsiCtx.setProperty(
70
+ *runtime, "canvas",
71
+ jsi::Object::createFromHostObject(*runtime, jsiCanvas));
72
+
73
+ std::array<jsi::Value, 1> args;
74
+ args[0] = std::move(jsiCtx);
75
+
76
+ // Draw
77
+ _drawing(*runtime, jsi::Value::undefined(),
78
+ static_cast<const jsi::Value *>(args.data()), 1);
79
+
80
+ auto picture = recorder.finishRecordingAsPicture();
81
+ this->_drawingProp->setPicture(picture);
82
+
83
+ // Ask view to redraw itself
84
+ _inRedrawCycle = true;
85
+ requestRedraw();
86
+ });
87
+ }
88
+ }
89
+
90
+ if (_drawingProp->isSet()) {
91
+ context->getCanvas()->drawPicture(_drawingProp->getDerivedValue());
92
+ _inRedrawCycle = false;
93
+ }
94
+ }
95
+
96
+ void defineProperties(NodePropsContainer *container) override {
97
+ JsiDomDrawingNode::defineProperties(container);
98
+
99
+ NotifyNeedRenderCallback cb =
100
+ std::bind(&JsiCustomDrawingNode::notifyPictureNeeded, this,
101
+ std::placeholders::_1);
102
+
103
+ _drawingProp = container->defineProperty(
104
+ std::make_shared<DrawingProp>(JsiPropId::get("drawing"), cb));
105
+ }
106
+
107
+ private:
108
+ void notifyPictureNeeded(jsi::HostFunctionType drawing) {
109
+ _drawing = drawing;
110
+ }
111
+
112
+ jsi::HostFunctionType _drawing;
113
+
114
+ DrawingProp *_drawingProp;
115
+
116
+ std::array<jsi::Value, 1> _argsCache;
117
+ std::shared_ptr<JsiSkPaint> _jsiPaint;
118
+ std::shared_ptr<JsiSkCanvas> _jsiCanvas;
119
+
120
+ std::atomic<bool> _inRedrawCycle = {false};
121
+ };
122
+
123
+ } // namespace RNSkia
@@ -0,0 +1,42 @@
1
+ #pragma once
2
+
3
+ #include "JsiDomDrawingNode.h"
4
+ #include "RRectProp.h"
5
+
6
+ #include <memory>
7
+
8
+ namespace RNSkia {
9
+
10
+ static PropId PropNameInner = JsiPropId::get("inner");
11
+ static PropId PropNameOuter = JsiPropId::get("outer");
12
+
13
+ class JsiDiffRectNode : public JsiDomDrawingNode,
14
+ public JsiDomNodeCtor<JsiDiffRectNode> {
15
+ public:
16
+ explicit JsiDiffRectNode(std::shared_ptr<RNSkPlatformContext> context)
17
+ : JsiDomDrawingNode(context, "skDiffRect") {}
18
+
19
+ protected:
20
+ void draw(DrawingContext *context) override {
21
+ context->getCanvas()->drawDRRect(*_outerRectProp->getDerivedValue(),
22
+ *_innerRectProp->getDerivedValue(),
23
+ *context->getPaint());
24
+ }
25
+
26
+ void defineProperties(NodePropsContainer *container) override {
27
+ JsiDomDrawingNode::defineProperties(container);
28
+ _innerRectProp =
29
+ container->defineProperty(std::make_shared<RRectProp>(PropNameInner));
30
+ _outerRectProp =
31
+ container->defineProperty(std::make_shared<RRectProp>(PropNameOuter));
32
+
33
+ _innerRectProp->require();
34
+ _outerRectProp->require();
35
+ }
36
+
37
+ private:
38
+ RRectProp *_innerRectProp;
39
+ RRectProp *_outerRectProp;
40
+ };
41
+
42
+ } // namespace RNSkia
@@ -0,0 +1,22 @@
1
+ #pragma once
2
+
3
+ #include "JsiDomDrawingNode.h"
4
+ #include "RectProp.h"
5
+
6
+ #include <memory>
7
+
8
+ namespace RNSkia {
9
+
10
+ class JsiFillNode : public JsiDomDrawingNode,
11
+ public JsiDomNodeCtor<JsiFillNode> {
12
+ public:
13
+ explicit JsiFillNode(std::shared_ptr<RNSkPlatformContext> context)
14
+ : JsiDomDrawingNode(context, "skFill") {}
15
+
16
+ protected:
17
+ void draw(DrawingContext *context) override {
18
+ context->getCanvas()->drawPaint(*context->getPaint());
19
+ }
20
+ };
21
+
22
+ } // namespace RNSkia
@@ -0,0 +1,56 @@
1
+ #pragma once
2
+
3
+ #include "JsiDomDrawingNode.h"
4
+
5
+ #include "FontProp.h"
6
+ #include "GlyphsProp.h"
7
+
8
+ #include <memory>
9
+
10
+ namespace RNSkia {
11
+
12
+ class JsiGlyphsNode : public JsiDomDrawingNode,
13
+ public JsiDomNodeCtor<JsiGlyphsNode> {
14
+ public:
15
+ explicit JsiGlyphsNode(std::shared_ptr<RNSkPlatformContext> context)
16
+ : JsiDomDrawingNode(context, "skGlyphs") {}
17
+
18
+ protected:
19
+ void draw(DrawingContext *context) override {
20
+ auto x = _xProp->value().getAsNumber();
21
+ auto y = _yProp->value().getAsNumber();
22
+ auto font = _fontProp->getDerivedValue();
23
+ auto glyphInfo = _glyphsProp->getDerivedValue();
24
+
25
+ context->getCanvas()->drawGlyphs(
26
+ static_cast<int>(glyphInfo->glyphIds.size()),
27
+ glyphInfo->glyphIds.data(), glyphInfo->positions.data(),
28
+ SkPoint::Make(x, y), *font, *context->getPaint());
29
+ }
30
+
31
+ void defineProperties(NodePropsContainer *container) override {
32
+ JsiDomDrawingNode::defineProperties(container);
33
+
34
+ _fontProp = container->defineProperty(
35
+ std::make_shared<FontProp>(JsiPropId::get("font")));
36
+ _glyphsProp = container->defineProperty(
37
+ std::make_shared<GlyphsProp>(JsiPropId::get("glyphs")));
38
+ _xProp = container->defineProperty(
39
+ std::make_shared<NodeProp>(JsiPropId::get("x")));
40
+ _yProp = container->defineProperty(
41
+ std::make_shared<NodeProp>(JsiPropId::get("y")));
42
+
43
+ _fontProp->require();
44
+ _glyphsProp->require();
45
+ _xProp->require();
46
+ _yProp->require();
47
+ }
48
+
49
+ private:
50
+ FontProp *_fontProp;
51
+ GlyphsProp *_glyphsProp;
52
+ NodeProp *_xProp;
53
+ NodeProp *_yProp;
54
+ };
55
+
56
+ } // namespace RNSkia