@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,54 @@
1
+ #pragma once
2
+
3
+ #include "JsiDomDrawingNode.h"
4
+
5
+ #include "FontProp.h"
6
+
7
+ #include <memory>
8
+
9
+ namespace RNSkia {
10
+
11
+ class JsiTextNode : public JsiDomDrawingNode,
12
+ public JsiDomNodeCtor<JsiTextNode> {
13
+ public:
14
+ explicit JsiTextNode(std::shared_ptr<RNSkPlatformContext> context)
15
+ : JsiDomDrawingNode(context, "skText") {}
16
+
17
+ protected:
18
+ void draw(DrawingContext *context) override {
19
+ auto text = _textProp->value().getAsString().c_str();
20
+ auto x = _xProp->value().getAsNumber();
21
+ auto y = _yProp->value().getAsNumber();
22
+ auto font = _fontProp->getDerivedValue();
23
+
24
+ context->getCanvas()->drawSimpleText(text, strlen(text),
25
+ SkTextEncoding::kUTF8, x, y, *font,
26
+ *context->getPaint());
27
+ }
28
+
29
+ void defineProperties(NodePropsContainer *container) override {
30
+ JsiDomDrawingNode::defineProperties(container);
31
+
32
+ _fontProp = container->defineProperty(
33
+ std::make_shared<FontProp>(JsiPropId::get("font")));
34
+ _textProp = container->defineProperty(
35
+ std::make_shared<NodeProp>(JsiPropId::get("text")));
36
+ _xProp = container->defineProperty(
37
+ std::make_shared<NodeProp>(JsiPropId::get("x")));
38
+ _yProp = container->defineProperty(
39
+ std::make_shared<NodeProp>(JsiPropId::get("y")));
40
+
41
+ _fontProp->require();
42
+ _textProp->require();
43
+ _xProp->require();
44
+ _yProp->require();
45
+ }
46
+
47
+ private:
48
+ FontProp *_fontProp;
49
+ NodeProp *_textProp;
50
+ NodeProp *_xProp;
51
+ NodeProp *_yProp;
52
+ };
53
+
54
+ } // namespace RNSkia
@@ -0,0 +1,32 @@
1
+ #pragma once
2
+
3
+ #include "JsiDomDrawingNode.h"
4
+ #include "TextBlobProp.h"
5
+
6
+ #include <memory>
7
+
8
+ namespace RNSkia {
9
+
10
+ class JsiTextPathNode : public JsiDomDrawingNode,
11
+ public JsiDomNodeCtor<JsiTextPathNode> {
12
+ public:
13
+ explicit JsiTextPathNode(std::shared_ptr<RNSkPlatformContext> context)
14
+ : JsiDomDrawingNode(context, "skTextPath") {}
15
+
16
+ protected:
17
+ void draw(DrawingContext *context) override {
18
+ auto blob = _textBlobProp->getDerivedValue();
19
+ context->getCanvas()->drawTextBlob(blob, 0, 0, *context->getPaint());
20
+ }
21
+
22
+ void defineProperties(NodePropsContainer *container) override {
23
+ JsiDomDrawingNode::defineProperties(container);
24
+ _textBlobProp =
25
+ container->defineProperty(std::make_shared<TextPathBlobProp>());
26
+ }
27
+
28
+ private:
29
+ TextPathBlobProp *_textBlobProp;
30
+ };
31
+
32
+ } // namespace RNSkia
@@ -0,0 +1,43 @@
1
+ #pragma once
2
+
3
+ #include "JsiDomDrawingNode.h"
4
+
5
+ #include "BlendModeProp.h"
6
+ #include "VerticesProps.h"
7
+
8
+ #include <memory>
9
+
10
+ namespace RNSkia {
11
+
12
+ class JsiVerticesNode : public JsiDomDrawingNode,
13
+ public JsiDomNodeCtor<JsiVerticesNode> {
14
+ public:
15
+ explicit JsiVerticesNode(std::shared_ptr<RNSkPlatformContext> context)
16
+ : JsiDomDrawingNode(context, "skVertices") {}
17
+
18
+ protected:
19
+ void draw(DrawingContext *context) override {
20
+ SkBlendMode defaultBlendMode = _verticesProps->hasColors()
21
+ ? SkBlendMode::kDstOver
22
+ : SkBlendMode::kSrcOver;
23
+ context->getCanvas()->drawVertices(_verticesProps->getDerivedValue(),
24
+ _blendModeProp->isSet()
25
+ ? *_blendModeProp->getDerivedValue()
26
+ : defaultBlendMode,
27
+ *context->getPaint());
28
+ }
29
+
30
+ void defineProperties(NodePropsContainer *container) override {
31
+ JsiDomDrawingNode::defineProperties(container);
32
+ _verticesProps =
33
+ container->defineProperty(std::make_shared<VerticesProps>());
34
+ _blendModeProp = container->defineProperty(
35
+ std::make_shared<BlendModeProp>(JsiPropId::get("blendMode")));
36
+ }
37
+
38
+ private:
39
+ VerticesProps *_verticesProps;
40
+ BlendModeProp *_blendModeProp;
41
+ };
42
+
43
+ } // namespace RNSkia
@@ -0,0 +1,63 @@
1
+ #pragma once
2
+
3
+ #include "DerivedNodeProp.h"
4
+
5
+ #include "JsiSkPicture.h"
6
+
7
+ #include <memory>
8
+ #include <utility>
9
+ #include <vector>
10
+
11
+ namespace RNSkia {
12
+
13
+ class BezierProp : public DerivedProp<std::vector<SkPoint>> {
14
+ public:
15
+ explicit BezierProp(PropId name) : DerivedProp<std::vector<SkPoint>>() {
16
+ _bezierProp = addProperty(std::make_shared<NodeProp>(name));
17
+ }
18
+
19
+ void updateDerivedValue() override {
20
+ if (_bezierProp->value().getType() == PropType::Array) {
21
+ // Patch requires a path with the following constraints:
22
+ // M tl
23
+ // C c1 c2 br
24
+ // C c1 c2 bl
25
+ // C c1 c2 tl (the redundant point in the last command is removed)
26
+ auto arr = _bezierProp->value().getAsArray();
27
+ std::vector<SkPoint> points;
28
+ points.reserve(12);
29
+
30
+ points.push_back(
31
+ PointProp::processValue(arr[0].getValue(JsiPropId::get("pos"))));
32
+ points.push_back(
33
+ PointProp::processValue(arr[0].getValue(JsiPropId::get("c2"))));
34
+ points.push_back(
35
+ PointProp::processValue(arr[1].getValue(JsiPropId::get("c1"))));
36
+ points.push_back(
37
+ PointProp::processValue(arr[1].getValue(JsiPropId::get("pos"))));
38
+ points.push_back(
39
+ PointProp::processValue(arr[1].getValue(JsiPropId::get("c2"))));
40
+ points.push_back(
41
+ PointProp::processValue(arr[2].getValue(JsiPropId::get("c1"))));
42
+ points.push_back(
43
+ PointProp::processValue(arr[2].getValue(JsiPropId::get("pos"))));
44
+ points.push_back(
45
+ PointProp::processValue(arr[2].getValue(JsiPropId::get("c2"))));
46
+ points.push_back(
47
+ PointProp::processValue(arr[3].getValue(JsiPropId::get("c1"))));
48
+ points.push_back(
49
+ PointProp::processValue(arr[3].getValue(JsiPropId::get("pos"))));
50
+ points.push_back(
51
+ PointProp::processValue(arr[3].getValue(JsiPropId::get("c2"))));
52
+ points.push_back(
53
+ PointProp::processValue(arr[0].getValue(JsiPropId::get("c1"))));
54
+
55
+ setDerivedValue(std::move(points));
56
+ }
57
+ }
58
+
59
+ private:
60
+ NodeProp *_bezierProp;
61
+ };
62
+
63
+ } // namespace RNSkia
@@ -0,0 +1,101 @@
1
+ #pragma once
2
+
3
+ #include "DerivedNodeProp.h"
4
+
5
+ #include <memory>
6
+ #include <string>
7
+ #include <utility>
8
+ #include <vector>
9
+
10
+ #pragma clang diagnostic push
11
+ #pragma clang diagnostic ignored "-Wdocumentation"
12
+
13
+ #include <SkBlendMode.h>
14
+
15
+ #pragma clang diagnostic pop
16
+
17
+ namespace RNSkia {
18
+
19
+ class BlendModeProp : public DerivedProp<SkBlendMode> {
20
+ public:
21
+ explicit BlendModeProp(PropId name) : DerivedProp<SkBlendMode>() {
22
+ _blendMode = addProperty(std::make_shared<NodeProp>(name));
23
+ }
24
+
25
+ void updateDerivedValue() override {
26
+ if (_blendMode->isSet() && (_blendMode->isChanged())) {
27
+ auto blendModeValue = _blendMode->value().getAsString();
28
+ setDerivedValue(getBlendModeFromString(blendModeValue));
29
+ }
30
+ }
31
+
32
+ private:
33
+ SkBlendMode getBlendModeFromString(const std::string &value) {
34
+ if (value == "clear") {
35
+ return SkBlendMode::kClear;
36
+ } else if (value == "src") {
37
+ return SkBlendMode::kSrc;
38
+ } else if (value == "dst") {
39
+ return SkBlendMode::kDst;
40
+ } else if (value == "srcOver") {
41
+ return SkBlendMode::kSrcOver;
42
+ } else if (value == "dstOver") {
43
+ return SkBlendMode::kDstOver;
44
+ } else if (value == "srcIn") {
45
+ return SkBlendMode::kSrcIn;
46
+ } else if (value == "kDstIn") {
47
+ return SkBlendMode::kDstIn;
48
+ } else if (value == "srcOut") {
49
+ return SkBlendMode::kSrcOut;
50
+ } else if (value == "dtsOut") {
51
+ return SkBlendMode::kDstOut;
52
+ } else if (value == "srcATop") {
53
+ return SkBlendMode::kSrcATop;
54
+ } else if (value == "dstATop") {
55
+ return SkBlendMode::kDstATop;
56
+ } else if (value == "xor") {
57
+ return SkBlendMode::kXor;
58
+ } else if (value == "plus") {
59
+ return SkBlendMode::kPlus;
60
+ } else if (value == "modulate") {
61
+ return SkBlendMode::kModulate;
62
+ } else if (value == "screen") {
63
+ return SkBlendMode::kScreen;
64
+ } else if (value == "overlay") {
65
+ return SkBlendMode::kOverlay;
66
+ } else if (value == "darken") {
67
+ return SkBlendMode::kDarken;
68
+ } else if (value == "lighten") {
69
+ return SkBlendMode::kLighten;
70
+ } else if (value == "colorDodge") {
71
+ return SkBlendMode::kColorDodge;
72
+ } else if (value == "colorBurn") {
73
+ return SkBlendMode::kColorBurn;
74
+ } else if (value == "hardLight") {
75
+ return SkBlendMode::kHardLight;
76
+ } else if (value == "softLight") {
77
+ return SkBlendMode::kSoftLight;
78
+ } else if (value == "difference") {
79
+ return SkBlendMode::kDifference;
80
+ } else if (value == "exclusion") {
81
+ return SkBlendMode::kExclusion;
82
+ } else if (value == "multiply") {
83
+ return SkBlendMode::kMultiply;
84
+ } else if (value == "hue") {
85
+ return SkBlendMode::kHue;
86
+ } else if (value == "saturation") {
87
+ return SkBlendMode::kSaturation;
88
+ } else if (value == "color") {
89
+ return SkBlendMode::kColor;
90
+ } else if (value == "luminosity") {
91
+ return SkBlendMode::kLuminosity;
92
+ }
93
+
94
+ throw std::runtime_error("Property value \"" + value +
95
+ "\" is not a legal blend mode.");
96
+ }
97
+
98
+ NodeProp *_blendMode;
99
+ };
100
+
101
+ } // namespace RNSkia
@@ -0,0 +1,61 @@
1
+ #pragma once
2
+
3
+ #include "NodeProp.h"
4
+
5
+ #include <memory>
6
+ #include <utility>
7
+
8
+ namespace RNSkia {
9
+
10
+ class BoxShadowProps : public DerivedProp<SkPaint> {
11
+ public:
12
+ BoxShadowProps() : DerivedProp<SkPaint>() {
13
+ _dxProp = addProperty(std::make_shared<NodeProp>(JsiPropId::get("dx")));
14
+ _dyProp = addProperty(std::make_shared<NodeProp>(JsiPropId::get("dy")));
15
+ _spreadProp =
16
+ addProperty(std::make_shared<NodeProp>(JsiPropId::get("spread")));
17
+ _blurProp = addProperty(std::make_shared<NodeProp>(JsiPropId::get("blur")));
18
+ _colorProp =
19
+ addProperty(std::make_shared<ColorProp>(JsiPropId::get("color")));
20
+ _innerProp =
21
+ addProperty(std::make_shared<NodeProp>(JsiPropId::get("inner")));
22
+
23
+ _blurProp->require();
24
+ }
25
+
26
+ void updateDerivedValue() override {
27
+ SkColor color =
28
+ _colorProp->isSet() ? *_colorProp->getDerivedValue() : SK_ColorBLACK;
29
+ SkScalar blur = _blurProp->value().getAsNumber();
30
+
31
+ auto paint = SkPaint();
32
+ paint.setColor(color);
33
+ auto filter = SkMaskFilter::MakeBlur(kNormal_SkBlurStyle, blur, true);
34
+ paint.setMaskFilter(filter);
35
+
36
+ setDerivedValue(std::move(paint));
37
+ }
38
+
39
+ bool isInner() {
40
+ return _innerProp->isSet() ? _innerProp->value().getAsBool() : false;
41
+ }
42
+ SkScalar getDx() {
43
+ return _dxProp->isSet() ? _dxProp->value().getAsNumber() : 0;
44
+ }
45
+ SkScalar getDy() {
46
+ return _dyProp->isSet() ? _dyProp->value().getAsNumber() : 0;
47
+ }
48
+ SkScalar getSpread() {
49
+ return _spreadProp->isSet() ? _spreadProp->value().getAsNumber() : 0;
50
+ }
51
+
52
+ private:
53
+ NodeProp *_dxProp;
54
+ NodeProp *_dyProp;
55
+ NodeProp *_spreadProp;
56
+ NodeProp *_blurProp;
57
+ ColorProp *_colorProp;
58
+ NodeProp *_innerProp;
59
+ };
60
+
61
+ } // namespace RNSkia
@@ -0,0 +1,46 @@
1
+ #pragma once
2
+
3
+ #include "NodeProp.h"
4
+ #include "PointProp.h"
5
+
6
+ #include <memory>
7
+
8
+ #pragma clang diagnostic push
9
+ #pragma clang diagnostic ignored "-Wdocumentation"
10
+
11
+ #include <SkPoint.h>
12
+
13
+ #pragma clang diagnostic pop
14
+
15
+ namespace RNSkia {
16
+
17
+ static PropId PropNameCx = JsiPropId::get("cx");
18
+ static PropId PropNameCy = JsiPropId::get("cy");
19
+ static PropId PropNameC = JsiPropId::get("c");
20
+
21
+ class CircleProp : public DerivedProp<SkPoint> {
22
+ public:
23
+ CircleProp() : DerivedProp<SkPoint>() {
24
+ _c = addProperty(std::make_shared<PointProp>(PropNameC));
25
+ _cx = addProperty(std::make_shared<NodeProp>(PropNameCx));
26
+ _cy = addProperty(std::make_shared<NodeProp>(PropNameCy));
27
+ }
28
+
29
+ void updateDerivedValue() override {
30
+ // Read in this order since point with x:0/y:0 is default for
31
+ // the c property.
32
+ if (_cx->isSet() && _cy->isSet()) {
33
+ setDerivedValue(SkPoint::Make(_cx->value().getAsNumber(),
34
+ _cy->value().getAsNumber()));
35
+ } else if (_c->isSet()) {
36
+ setDerivedValue(_c->getDerivedValue());
37
+ }
38
+ }
39
+
40
+ private:
41
+ PointProp *_c;
42
+ NodeProp *_cx;
43
+ NodeProp *_cy;
44
+ };
45
+
46
+ } // namespace RNSkia
@@ -0,0 +1,62 @@
1
+ #pragma once
2
+
3
+ #include "NodeProp.h"
4
+
5
+ #include "PathProp.h"
6
+ #include "RRectProp.h"
7
+ #include "RectProp.h"
8
+
9
+ #include <memory>
10
+
11
+ #pragma clang diagnostic push
12
+ #pragma clang diagnostic ignored "-Wdocumentation"
13
+
14
+ #include <SkPath.h>
15
+
16
+ #pragma clang diagnostic pop
17
+
18
+ namespace RNSkia {
19
+
20
+ class ClipProp : public BaseDerivedProp {
21
+ public:
22
+ explicit ClipProp(PropId name) : BaseDerivedProp() {
23
+ _pathProp = addProperty(std::make_shared<PathProp>(name));
24
+ _rectProp = addProperty(std::make_shared<RectProp>(name));
25
+ _rrectProp = addProperty(std::make_shared<RRectProp>(name));
26
+ }
27
+
28
+ void updateDerivedValue() override {
29
+ if (_pathProp->isSet()) {
30
+ _rect = nullptr;
31
+ _rrect = nullptr;
32
+ _path = _pathProp->getDerivedValue();
33
+ } else if (_rrectProp->isSet()) {
34
+ _rect = nullptr;
35
+ _rrect = _rrectProp->getDerivedValue();
36
+ _path = nullptr;
37
+ } else if (_rectProp->isSet()) {
38
+ _rect = _rectProp->getDerivedValue();
39
+ _rrect = nullptr;
40
+ _path = nullptr;
41
+ }
42
+ }
43
+
44
+ bool isSet() override {
45
+ return _pathProp->isSet() || _rectProp->isSet() || _rrectProp->isSet();
46
+ }
47
+
48
+ SkPath *getPath() { return _path.get(); }
49
+ SkRect *getRect() { return _rect.get(); }
50
+ SkRRect *getRRect() { return _rrect.get(); }
51
+
52
+ private:
53
+ PathProp *_pathProp;
54
+ RectProp *_rectProp;
55
+ RRectProp *_rrectProp;
56
+
57
+ std::shared_ptr<SkPath> _path;
58
+ std::shared_ptr<SkRect> _rect;
59
+ std::shared_ptr<SkRRect> _rrect;
60
+ };
61
+
62
+ } // namespace RNSkia
@@ -0,0 +1,80 @@
1
+ #pragma once
2
+
3
+ #include "DerivedNodeProp.h"
4
+ #include "third_party/CSSColorParser.h"
5
+
6
+ #include <memory>
7
+ #include <utility>
8
+ #include <vector>
9
+
10
+ namespace RNSkia {
11
+
12
+ class ColorProp : public DerivedProp<SkColor> {
13
+ public:
14
+ explicit ColorProp(PropId name) : DerivedProp<SkColor>() {
15
+ _colorProp = addProperty(std::make_shared<NodeProp>(name));
16
+ }
17
+
18
+ void updateDerivedValue() override {
19
+ if (_colorProp->isSet()) {
20
+ // Color might be a number, a string or a Float32Array of rgba values
21
+ setDerivedValue(
22
+ std::make_shared<SkColor>(parseColorValue(_colorProp->value())));
23
+ } else {
24
+ setDerivedValue(nullptr);
25
+ }
26
+ }
27
+
28
+ static SkColor parseColorValue(const JsiValue &color) {
29
+ if (color.getType() == PropType::Object) {
30
+ // Float array
31
+ auto r = color.getValue(JsiPropId::get("0"));
32
+ auto g = color.getValue(JsiPropId::get("1"));
33
+ auto b = color.getValue(JsiPropId::get("2"));
34
+ auto a = color.getValue(JsiPropId::get("3"));
35
+ return SkColorSetARGB(a.getAsNumber() * 255.0f, r.getAsNumber() * 255.0f,
36
+ g.getAsNumber() * 255.0f, b.getAsNumber() * 255.0f);
37
+
38
+ } else if (color.getType() == PropType::Number) {
39
+ return static_cast<SkColor>(color.getAsNumber());
40
+ } else {
41
+ auto parsedColor = CSSColorParser::parse(color.getAsString());
42
+ if (parsedColor.a == -1.0f) {
43
+ return SK_ColorBLACK;
44
+ } else {
45
+ return SkColorSetARGB(parsedColor.a * 255, parsedColor.r, parsedColor.g,
46
+ parsedColor.b);
47
+ }
48
+ }
49
+ }
50
+
51
+ private:
52
+ NodeProp *_colorProp;
53
+ };
54
+
55
+ class ColorsProp : public DerivedProp<std::vector<SkColor>> {
56
+ public:
57
+ explicit ColorsProp(PropId name) : DerivedProp<std::vector<SkColor>>() {
58
+ _colorsProp = addProperty(std::make_shared<NodeProp>(name));
59
+ }
60
+
61
+ void updateDerivedValue() override {
62
+ if (_colorsProp->isSet()) {
63
+ auto colors = _colorsProp->value().getAsArray();
64
+ std::vector<SkColor> derivedColors;
65
+ derivedColors.reserve(colors.size());
66
+
67
+ for (size_t i = 0; i < colors.size(); ++i) {
68
+ derivedColors.push_back(ColorProp::parseColorValue(colors[i]));
69
+ }
70
+ setDerivedValue(std::move(derivedColors));
71
+ } else {
72
+ setDerivedValue(nullptr);
73
+ }
74
+ }
75
+
76
+ private:
77
+ NodeProp *_colorsProp;
78
+ };
79
+
80
+ } // namespace RNSkia
@@ -0,0 +1,33 @@
1
+ #pragma once
2
+
3
+ #include "DerivedNodeProp.h"
4
+
5
+ #include "JsiSkFont.h"
6
+
7
+ #include <memory>
8
+
9
+ namespace RNSkia {
10
+
11
+ using NotifyNeedRenderCallback =
12
+ std::function<void(jsi::HostFunctionType drawing)>;
13
+
14
+ class DrawingProp : public DerivedSkProp<SkPicture> {
15
+ public:
16
+ DrawingProp(PropId name, NotifyNeedRenderCallback notifyPictureNeeded)
17
+ : _notifyPictureNeeded(notifyPictureNeeded), DerivedSkProp<SkPicture>() {
18
+ _drawingProp = addProperty(std::make_shared<NodeProp>(name));
19
+ }
20
+
21
+ void updateDerivedValue() override {
22
+ auto drawingFunc = _drawingProp->value().getAsFunction();
23
+ _notifyPictureNeeded(drawingFunc);
24
+ }
25
+
26
+ void setPicture(sk_sp<SkPicture> picture) { setDerivedValue(picture); }
27
+
28
+ private:
29
+ NodeProp *_drawingProp;
30
+ NotifyNeedRenderCallback _notifyPictureNeeded;
31
+ };
32
+
33
+ } // namespace RNSkia
@@ -0,0 +1,34 @@
1
+ #pragma once
2
+
3
+ #include "DerivedNodeProp.h"
4
+
5
+ #include "JsiSkFont.h"
6
+
7
+ #include <memory>
8
+
9
+ namespace RNSkia {
10
+
11
+ class FontProp : public DerivedProp<SkFont> {
12
+ public:
13
+ explicit FontProp(PropId name) : DerivedProp<SkFont>() {
14
+ _fontProp = addProperty(std::make_shared<NodeProp>(name));
15
+ }
16
+
17
+ void updateDerivedValue() override {
18
+ if (_fontProp->value().getType() != PropType::HostObject) {
19
+ throw std::runtime_error("Expected SkFont object for the Font property.");
20
+ }
21
+
22
+ auto ptr = _fontProp->value().getAs<JsiSkFont>();
23
+ if (ptr == nullptr) {
24
+ throw std::runtime_error("Expected SkFont object for the Font property.");
25
+ }
26
+
27
+ setDerivedValue(ptr->getObject());
28
+ }
29
+
30
+ private:
31
+ NodeProp *_fontProp;
32
+ };
33
+
34
+ } // namespace RNSkia
@@ -0,0 +1,53 @@
1
+ #pragma once
2
+
3
+ #include "DerivedNodeProp.h"
4
+ #include "PointProp.h"
5
+
6
+ #include <memory>
7
+ #include <utility>
8
+ #include <vector>
9
+
10
+ namespace RNSkia {
11
+
12
+ static PropId PropNamePos = JsiPropId::get("pos");
13
+ static PropId PropNameId = JsiPropId::get("id");
14
+
15
+ struct GlyphInfo {
16
+ std::vector<SkGlyphID> glyphIds;
17
+ std::vector<SkPoint> positions;
18
+ };
19
+
20
+ class GlyphsProp : public DerivedProp<GlyphInfo> {
21
+ public:
22
+ explicit GlyphsProp(PropId name) : DerivedProp<GlyphInfo>() {
23
+ _glyphsProp = addProperty(std::make_shared<NodeProp>(name));
24
+ }
25
+
26
+ void updateDerivedValue() override {
27
+ auto arr = _glyphsProp->value().getAsArray();
28
+
29
+ GlyphInfo glyphInfo;
30
+
31
+ std::vector<SkGlyphID> glyphIds;
32
+ std::vector<SkPoint> positions;
33
+
34
+ glyphIds.reserve(arr.size());
35
+ positions.reserve(arr.size());
36
+
37
+ for (size_t i = 0; i < arr.size(); ++i) {
38
+ auto obj = arr[i];
39
+ auto pos = PointProp::processValue(obj.getValue(PropNamePos));
40
+ auto identifier =
41
+ static_cast<SkGlyphID>(obj.getValue(PropNameId).getAsNumber());
42
+ glyphInfo.positions.push_back(pos);
43
+ glyphInfo.glyphIds.push_back(identifier);
44
+ }
45
+
46
+ setDerivedValue(std::move(glyphInfo));
47
+ }
48
+
49
+ private:
50
+ NodeProp *_glyphsProp;
51
+ };
52
+
53
+ } // namespace RNSkia