@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,80 @@
1
+ #pragma once
2
+
3
+ #include "DerivedNodeProp.h"
4
+ #include "JsiSkMatrix.h"
5
+
6
+ #include <memory>
7
+ #include <string>
8
+
9
+ namespace RNSkia {
10
+
11
+ static PropId PropNameTransform = JsiPropId::get("transform");
12
+
13
+ static PropId PropNameTranslateX = JsiPropId::get("translateX");
14
+ static PropId PropNameTranslateY = JsiPropId::get("translateY");
15
+ static PropId PropNameScale = JsiPropId::get("scale");
16
+ static PropId PropNameScaleX = JsiPropId::get("scaleX");
17
+ static PropId PropNameScaleY = JsiPropId::get("scaleY");
18
+ static PropId PropNameSkewX = JsiPropId::get("skewX");
19
+ static PropId PropNameSkewY = JsiPropId::get("skewY");
20
+ static PropId PropNameRotate = JsiPropId::get("rotate");
21
+ static PropId PropNameRotateZ = JsiPropId::get("rotateZ");
22
+
23
+ class TransformProp : public DerivedProp<SkMatrix> {
24
+ public:
25
+ explicit TransformProp(PropId name) : DerivedProp<SkMatrix>() {
26
+ _transformProp = addProperty(std::make_shared<NodeProp>(name));
27
+ }
28
+
29
+ void updateDerivedValue() override {
30
+ if (!_transformProp->isSet()) {
31
+ setDerivedValue(nullptr);
32
+ } else if (_transformProp->value().getType() != PropType::Array) {
33
+ throw std::runtime_error(
34
+ "Expected array for transform property, got " +
35
+ JsiValue::getTypeAsString(_transformProp->value().getType()));
36
+ } else {
37
+ auto m = std::make_shared<SkMatrix>(SkMatrix());
38
+ for (auto &el : _transformProp->value().getAsArray()) {
39
+ auto keys = el.getKeys();
40
+ if (keys.size() == 0) {
41
+ throw std::runtime_error(
42
+ "Empty value in transform. Expected translateX, translateY, "
43
+ "scale, "
44
+ "scaleX, scaleY, skewX, skewY, rotate or rotateZ.");
45
+ }
46
+ auto key = el.getKeys().at(0);
47
+ auto value = el.getValue(key).getAsNumber();
48
+ if (key == PropNameTranslateX) {
49
+ m->preTranslate(value, 0);
50
+ } else if (key == PropNameTranslateY) {
51
+ m->preTranslate(0, value);
52
+ } else if (key == PropNameScale) {
53
+ m->preScale(value, value);
54
+ } else if (key == PropNameScaleX) {
55
+ m->preScale(value, 1);
56
+ } else if (key == PropNameScaleY) {
57
+ m->preScale(1, value);
58
+ } else if (key == PropNameSkewX) {
59
+ m->preScale(value, 0);
60
+ } else if (key == PropNameSkewY) {
61
+ m->preScale(value, 0);
62
+ } else if (key == PropNameRotate || key == PropNameRotateZ) {
63
+ m->preRotate(SkRadiansToDegrees(value));
64
+ } else {
65
+ throw std::runtime_error(
66
+ "Unknown key in transform. Expected translateX, translateY, "
67
+ "scale, "
68
+ "scaleX, scaleY, skewX, skewY, rotate or rotateZ - got " +
69
+ std::string(key) + ".");
70
+ }
71
+ }
72
+ setDerivedValue(m);
73
+ }
74
+ }
75
+
76
+ private:
77
+ NodeProp *_transformProp;
78
+ };
79
+
80
+ } // namespace RNSkia
@@ -0,0 +1,68 @@
1
+ #pragma once
2
+
3
+ #include "MatrixProp.h"
4
+ #include "NodeProp.h"
5
+ #include "PointProp.h"
6
+ #include "TransformProp.h"
7
+
8
+ #include <memory>
9
+ #include <utility>
10
+
11
+ namespace RNSkia {
12
+
13
+ class TransformsProps : public DerivedProp<SkMatrix> {
14
+ public:
15
+ TransformsProps() : DerivedProp<SkMatrix>() {
16
+ _transformProp = addProperty(
17
+ std::make_shared<TransformProp>(JsiPropId::get("transform")));
18
+ _originProp =
19
+ addProperty(std::make_shared<PointProp>(JsiPropId::get("origin")));
20
+ _matrixProp =
21
+ addProperty(std::make_shared<MatrixProp>(JsiPropId::get("matrix")));
22
+ }
23
+
24
+ void updateDerivedValue() override {
25
+ if (_transformProp->isSet() || _originProp->isSet() ||
26
+ _matrixProp->isSet()) {
27
+
28
+ auto matrix =
29
+ _matrixProp->isSet() ? _matrixProp->getDerivedValue() : nullptr;
30
+ auto origin =
31
+ _originProp->isSet() ? _originProp->getDerivedValue() : nullptr;
32
+ auto transform =
33
+ _transformProp->isSet() ? _transformProp->getDerivedValue() : nullptr;
34
+
35
+ auto lm = SkMatrix();
36
+ if (matrix) {
37
+ if (origin) {
38
+ lm.preTranslate(origin->x(), origin->y());
39
+ lm.preConcat(*matrix);
40
+ lm.preTranslate(-origin->x(), -origin->y());
41
+ } else {
42
+ lm.setIdentity();
43
+ lm.preConcat(*matrix);
44
+ }
45
+ } else if (transform) {
46
+ lm.setIdentity();
47
+ if (origin) {
48
+ lm.preTranslate(origin->x(), origin->y());
49
+ }
50
+ lm.preConcat(*transform);
51
+ if (origin) {
52
+ lm.preTranslate(-origin->x(), -origin->y());
53
+ }
54
+ }
55
+ setDerivedValue(std::move(lm));
56
+
57
+ } else {
58
+ setDerivedValue(nullptr);
59
+ }
60
+ }
61
+
62
+ private:
63
+ TransformProp *_transformProp;
64
+ PointProp *_originProp;
65
+ MatrixProp *_matrixProp;
66
+ };
67
+
68
+ } // namespace RNSkia
@@ -0,0 +1,194 @@
1
+ #pragma once
2
+
3
+ #include "DerivedNodeProp.h"
4
+ #include "JsiSkRuntimeEffect.h"
5
+
6
+ #include <memory>
7
+ #include <string>
8
+ #include <vector>
9
+
10
+ #pragma clang diagnostic push
11
+ #pragma clang diagnostic ignored "-Wdocumentation"
12
+
13
+ #include <SkRuntimeEffect.h>
14
+
15
+ #pragma clang diagnostic pop
16
+
17
+ namespace RNSkia {
18
+
19
+ class UniformsProp : public DerivedSkProp<SkData> {
20
+ public:
21
+ UniformsProp(PropId name, NodeProp *sourceProp) : DerivedSkProp<SkData>() {
22
+ _uniformsProp = addProperty(std::make_shared<NodeProp>(name));
23
+ _sourceProp = sourceProp;
24
+ }
25
+
26
+ void updateDerivedValue() override {
27
+ if (!_uniformsProp->isSet()) {
28
+ return;
29
+ }
30
+
31
+ // Get the effect
32
+ auto source = _sourceProp->value().getAs<JsiSkRuntimeEffect>()->getObject();
33
+
34
+ // Flatten uniforms from property
35
+ auto uniformValues = flattenUniforms(source.get(), _uniformsProp->value());
36
+
37
+ // Cast uniforms according to the declaration in the shader
38
+ auto uniformsData = castUniforms(source.get(), uniformValues);
39
+
40
+ // Save derived value
41
+ setDerivedValue(uniformsData);
42
+ }
43
+
44
+ private:
45
+ sk_sp<SkData> castUniforms(SkRuntimeEffect *source,
46
+ const std::vector<SkScalar> &values) {
47
+ // Create memory for uniforms
48
+ auto uniformsData = SkData::MakeUninitialized(source->uniformSize());
49
+
50
+ // Loop through all uniforms in the effect and load data from the flattened
51
+ // array of values
52
+ const auto &u = source->uniforms();
53
+ for (std::size_t i = 0; i < u.size(); i++) {
54
+ auto it = source->uniforms().begin() + i;
55
+ RuntimeEffectUniform reu = JsiSkRuntimeEffect::fromUniform(*it);
56
+ for (std::size_t j = 0; j < reu.columns * reu.rows; ++j) {
57
+ const std::size_t offset = reu.slot + j;
58
+ float fValue = values.at(offset);
59
+ int iValue = static_cast<int>(fValue);
60
+ auto value = reu.isInteger ? iValue : fValue;
61
+ memcpy(SkTAddOffset<void>(uniformsData->writable_data(),
62
+ offset * sizeof(value)),
63
+ &value, sizeof(value));
64
+ }
65
+ }
66
+
67
+ return uniformsData;
68
+ }
69
+
70
+ std::vector<SkScalar> flattenUniforms(SkRuntimeEffect *source,
71
+ const JsiValue &propObject) {
72
+ auto uniformsCount = source->uniforms().size();
73
+ std::vector<SkScalar> uniformValues;
74
+
75
+ for (size_t i = 0; i < uniformsCount; ++i) {
76
+ auto it = source->uniforms().begin() + i;
77
+ auto name = JsiPropId::get(std::string(it->name));
78
+
79
+ if (!propObject.hasValue(name)) {
80
+ throw std::runtime_error("The runtime effect has the uniform value \"" +
81
+ std::string(name) +
82
+ "\" declared, but it is missing from the "
83
+ "uniforms property of the Runtime effect.");
84
+ }
85
+
86
+ auto value = propObject.getValue(name);
87
+
88
+ // A uniform value can be a single number, a vector or an array of numbers
89
+ // Or an array of the above
90
+ if (value.getType() == PropType::Number) {
91
+ // Set numeric uniform
92
+ uniformValues.push_back(value.getAsNumber());
93
+ } else if (value.getType() == PropType::Array) {
94
+ // Array
95
+ auto arrayValue = value.getAsArray();
96
+ for (size_t n = 0; n < arrayValue.size(); ++n) {
97
+ auto a = arrayValue[n];
98
+ if (a.getType() == PropType::Number) {
99
+ uniformValues.push_back(a.getAsNumber());
100
+ } else {
101
+ for (size_t j = 0; j < a.getAsArray().size(); ++j) {
102
+ uniformValues.push_back(a.getAsArray()[j].getAsNumber());
103
+ }
104
+ }
105
+ }
106
+ } else if (value.getType() == PropType::HostObject ||
107
+ value.getType() == PropType::Object) {
108
+ // Vector (JsiSkPoint / JsiSkRect)
109
+ auto pointValue = PointProp::processValue(value);
110
+ uniformValues.push_back(pointValue.x());
111
+ uniformValues.push_back(pointValue.y());
112
+ }
113
+ }
114
+ return uniformValues;
115
+ }
116
+
117
+ NodeProp *_uniformsProp;
118
+ NodeProp *_sourceProp;
119
+ };
120
+
121
+ class SimpleUniformsProp : public BaseDerivedProp {
122
+ public:
123
+ SimpleUniformsProp(PropId name, NodeProp *sourceProp) : BaseDerivedProp() {
124
+ _uniformsProp = addProperty(std::make_shared<NodeProp>(name));
125
+ _sourceProp = sourceProp;
126
+ }
127
+
128
+ void processUniforms(SkRuntimeShaderBuilder &rtb) {
129
+ if (!_uniformsProp->isSet()) {
130
+ return;
131
+ }
132
+
133
+ auto propObject = _uniformsProp->value();
134
+ auto source = _sourceProp->value().getAs<JsiSkRuntimeEffect>()->getObject();
135
+
136
+ auto uniformsCount = source->uniforms().size();
137
+
138
+ for (size_t i = 0; i < uniformsCount; ++i) {
139
+ auto it = source->uniforms().begin() + i;
140
+ auto name = JsiPropId::get(std::string(it->name));
141
+
142
+ if (!propObject.hasValue(name)) {
143
+ throw std::runtime_error("The runtime effect has the uniform value \"" +
144
+ std::string(name) +
145
+ "\" declared, but it is missing from the "
146
+ "uniforms property of the Runtime effect.");
147
+ }
148
+
149
+ auto value = propObject.getValue(name);
150
+
151
+ // A uniform value can be a single number, a vector or an array of numbers
152
+ // Or an array of the above
153
+ if (value.getType() == PropType::Number) {
154
+ // Set numeric uniform
155
+ rtb.uniform(name) = value.getAsNumber();
156
+ } else if (value.getType() == PropType::Array) {
157
+ // Array
158
+ auto arrayValue = value.getAsArray();
159
+ std::vector<SkScalar> set;
160
+ for (size_t n = 0; n < arrayValue.size(); ++n) {
161
+ auto a = arrayValue[n];
162
+ if (a.getType() == PropType::Number) {
163
+ set.push_back(a.getAsNumber());
164
+ } else {
165
+ for (size_t j = 0; j < a.getAsArray().size(); ++j) {
166
+ set.push_back(a.getAsArray()[j].getAsNumber());
167
+ }
168
+ }
169
+ }
170
+ rtb.uniform(name).set(set.data(), static_cast<int>(set.size()));
171
+
172
+ } else if (value.getType() == PropType::HostObject ||
173
+ value.getType() == PropType::Object) {
174
+ // Vector (JsiSkPoint / JsiSkRect)
175
+ auto pointValue = PointProp::processValue(value);
176
+ std::vector<SkScalar> set = {pointValue.x(), pointValue.y()};
177
+
178
+ rtb.uniform(name).set(set.data(), static_cast<int>(set.size()));
179
+ } else {
180
+ throw std::runtime_error("Unexpected type for uniform prop \"" +
181
+ std::string(name) + "\". Got " +
182
+ value.getTypeAsString(value.getType()));
183
+ }
184
+ }
185
+ }
186
+
187
+ void updateDerivedValue() override {}
188
+
189
+ private:
190
+ NodeProp *_uniformsProp;
191
+ NodeProp *_sourceProp;
192
+ };
193
+
194
+ } // namespace RNSkia
@@ -0,0 +1,47 @@
1
+ #pragma once
2
+
3
+ #include "DerivedNodeProp.h"
4
+
5
+ #include <memory>
6
+ #include <string>
7
+
8
+ #pragma clang diagnostic push
9
+ #pragma clang diagnostic ignored "-Wdocumentation"
10
+
11
+ #include <SkVertices.h>
12
+
13
+ #pragma clang diagnostic pop
14
+
15
+ namespace RNSkia {
16
+
17
+ class VertexModeProp : public DerivedProp<SkVertices::VertexMode> {
18
+ public:
19
+ explicit VertexModeProp(PropId name) : DerivedProp<SkVertices::VertexMode>() {
20
+ _vertexModeProp = addProperty(std::make_shared<NodeProp>(name));
21
+ }
22
+
23
+ void updateDerivedValue() override {
24
+ if (_vertexModeProp->isSet() && (_vertexModeProp->isChanged())) {
25
+ auto vertexModeValue = _vertexModeProp->value().getAsString();
26
+ setDerivedValue(getVertexModeFromStringValue(vertexModeValue));
27
+ }
28
+ }
29
+
30
+ private:
31
+ SkVertices::VertexMode
32
+ getVertexModeFromStringValue(const std::string &value) {
33
+ if (value == "triangles") {
34
+ return SkVertices::VertexMode::kTriangles_VertexMode;
35
+ } else if (value == "triangleStrip") {
36
+ return SkVertices::VertexMode::kTriangleStrip_VertexMode;
37
+ } else if (value == "triangleFan") {
38
+ return SkVertices::VertexMode::kTriangleFan_VertexMode;
39
+ }
40
+ throw std::runtime_error("Property value \"" + value +
41
+ "\" is not a legal blend mode.");
42
+ }
43
+
44
+ NodeProp *_vertexModeProp;
45
+ };
46
+
47
+ } // namespace RNSkia
@@ -0,0 +1,67 @@
1
+ #pragma once
2
+
3
+ #include "DerivedNodeProp.h"
4
+
5
+ #include "ColorProp.h"
6
+ #include "NumbersProp.h"
7
+ #include "PointsProp.h"
8
+ #include "VertexModeProp.h"
9
+
10
+ #include <memory>
11
+ #include <vector>
12
+
13
+ #pragma clang diagnostic push
14
+ #pragma clang diagnostic ignored "-Wdocumentation"
15
+
16
+ #include <SkVertices.h>
17
+
18
+ #pragma clang diagnostic pop
19
+
20
+ namespace RNSkia {
21
+
22
+ class VerticesProps : public DerivedSkProp<SkVertices> {
23
+ public:
24
+ VerticesProps() : DerivedSkProp<SkVertices>() {
25
+ _vertexModeProp =
26
+ addProperty(std::make_shared<VertexModeProp>(JsiPropId::get("mode")));
27
+ _colorsProp =
28
+ addProperty(std::make_shared<ColorsProp>(JsiPropId::get("colors")));
29
+ _verticesProp =
30
+ addProperty(std::make_shared<PointsProp>(JsiPropId::get("vertices")));
31
+ _texturesProp =
32
+ addProperty(std::make_shared<PointsProp>(JsiPropId::get("textures")));
33
+ _indicesProp =
34
+ addProperty(std::make_shared<Numbers16Prop>(JsiPropId::get("indices")));
35
+
36
+ _vertexModeProp->require();
37
+ _verticesProp->require();
38
+ }
39
+
40
+ bool hasColors() { return _colorsProp->isSet(); }
41
+
42
+ void updateDerivedValue() override {
43
+ SkVertices::VertexMode *vertextMode =
44
+ _vertexModeProp->getDerivedValue().get();
45
+ std::vector<SkColor> *colors = _colorsProp->getDerivedValue().get();
46
+ auto vertices = _verticesProp->getDerivedValue();
47
+ auto textures = _texturesProp->getDerivedValue();
48
+ auto indices = _indicesProp->getDerivedValue();
49
+
50
+ setDerivedValue(SkVertices::MakeCopy(
51
+ *vertextMode, static_cast<int>(vertices->size()),
52
+ _verticesProp->isSet() ? vertices->data() : nullptr,
53
+ _texturesProp->isSet() ? textures->data() : nullptr,
54
+ _colorsProp->isSet() ? colors->data() : nullptr,
55
+ _indicesProp->isSet() ? static_cast<int>(indices->size()) : 0,
56
+ _indicesProp->isSet() ? indices->data() : nullptr));
57
+ }
58
+
59
+ private:
60
+ VertexModeProp *_vertexModeProp;
61
+ ColorsProp *_colorsProp;
62
+ PointsProp *_verticesProp;
63
+ PointsProp *_texturesProp;
64
+ Numbers16Prop *_indicesProp;
65
+ };
66
+
67
+ } // namespace RNSkia
@@ -10,8 +10,8 @@
10
10
 
11
11
  #include <jsi/jsi.h>
12
12
 
13
- #include <JsiSimpleValueWrapper.h>
14
13
  #include <JsiSkHostObjects.h>
14
+ #include <JsiValueWrapper.h>
15
15
  #include <RNSkPlatformContext.h>
16
16
 
17
17
  namespace RNSkia {
@@ -29,7 +29,7 @@ public:
29
29
  explicit RNSkReadonlyValue(
30
30
  std::shared_ptr<RNSkPlatformContext> platformContext)
31
31
  : JsiSkHostObject(platformContext),
32
- _valueHolder(std::make_unique<RNJsi::JsiSimpleValueWrapper>(
32
+ _valueHolder(std::make_shared<RNJsi::JsiValueWrapper>(
33
33
  *platformContext->getJsRuntime())) {}
34
34
 
35
35
  virtual ~RNSkReadonlyValue() { invalidate(); }
@@ -108,8 +108,8 @@ public:
108
108
  */
109
109
  virtual void update(jsi::Runtime &runtime, const jsi::Value &value) {
110
110
  auto equal = _valueHolder->equals(runtime, value);
111
- _valueHolder->setCurrent(runtime, value);
112
111
  if (!equal) {
112
+ _valueHolder->setCurrent(runtime, value);
113
113
  notifyListeners(runtime);
114
114
  }
115
115
  }
@@ -123,10 +123,19 @@ public:
123
123
  _listeners.clear();
124
124
  }
125
125
 
126
+ /**
127
+ Returns the current value as a jsi::Value
128
+ */
126
129
  jsi::Value getCurrent(jsi::Runtime &runtime) {
127
130
  return _valueHolder->getCurrent(runtime);
128
131
  }
129
132
 
133
+ /**
134
+ Returns the underlying current value wrapper. This can be used to query the
135
+ holder for data type and get pointers to elements in the holder.
136
+ */
137
+ std::shared_ptr<RNJsi::JsiValueWrapper> getCurrent() { return _valueHolder; }
138
+
130
139
  protected:
131
140
  /**
132
141
  Notifies listeners about changes
@@ -153,7 +162,7 @@ protected:
153
162
  }
154
163
 
155
164
  private:
156
- std::unique_ptr<RNJsi::JsiSimpleValueWrapper> _valueHolder;
165
+ std::shared_ptr<RNJsi::JsiValueWrapper> _valueHolder;
157
166
 
158
167
  long _listenerId = 0;
159
168
  std::unordered_map<long, std::function<void(jsi::Runtime &)>> _listeners;
@@ -8,8 +8,10 @@
8
8
  #ifndef SkAndroidFrameworkUtils_DEFINED
9
9
  #define SkAndroidFrameworkUtils_DEFINED
10
10
 
11
+ #include "include/core/SkColor.h"
12
+ #include "include/core/SkPoint.h"
11
13
  #include "include/core/SkRefCnt.h"
12
- #include "include/core/SkTypes.h"
14
+ #include "include/core/SkTileMode.h"
13
15
 
14
16
  #ifdef SK_BUILD_FOR_ANDROID_FRAMEWORK
15
17
 
@@ -17,6 +19,7 @@ class SkCanvas;
17
19
  struct SkIRect;
18
20
  struct SkRect;
19
21
  class SkSurface;
22
+ class SkShader;
20
23
 
21
24
  /**
22
25
  * SkAndroidFrameworkUtils expose private APIs used only by Android framework.
@@ -54,6 +57,37 @@ public:
54
57
  * @return SkCanvas that was found in the innermost SkPaintFilterCanvas.
55
58
  */
56
59
  static SkCanvas* getBaseWrappedCanvas(SkCanvas* canvas);
60
+
61
+ /**
62
+ * Skia will change the order in which local matrices concatenate. In order to not break Android
63
+ * apps targeting older API levels we offer this function to use the legacy concatenation order.
64
+ */
65
+ static void UseLegacyLocalMatrixConcatenation();
66
+
67
+ /**
68
+ * If the shader represents a linear gradient ShaderAsALinearGradient
69
+ * returns true and if info is not null, ShaderAsALinearGradient populates
70
+ * info with the parameters for the gradient. fColorCount is both an input
71
+ * and output parameter. On input, it indicates how many entries in
72
+ * fColors and fColorOffsets can be used, if they are not nullptr. After
73
+ * asAGradient has run, fColorCount indicates how many color-offset pairs
74
+ * there are in the gradient. fColorOffsets specifies where on the range of
75
+ * 0 to 1 to transition to the given color. fPoints represent the endpoints
76
+ * of the gradient.
77
+ */
78
+ struct LinearGradientInfo {
79
+ int fColorCount = 0; //!< In-out parameter, specifies passed size
80
+ // of fColors/fColorOffsets on input, and
81
+ // actual number of colors/offsets on
82
+ // output.
83
+ SkColor* fColors = nullptr; //!< The colors in the gradient.
84
+ SkScalar* fColorOffsets = nullptr; //!< The unit offset for color transitions.
85
+ SkPoint fPoints[2]; //!< Type specific, see above.
86
+ SkTileMode fTileMode;
87
+ uint32_t fGradientFlags = 0; //!< see SkGradientShader::Flags
88
+ };
89
+
90
+ static bool ShaderAsALinearGradient(SkShader* shader, LinearGradientInfo*);
57
91
  };
58
92
 
59
93
  #endif // SK_BUILD_FOR_ANDROID_ANDROID
@@ -9,9 +9,25 @@
9
9
  #define SkAndroidCodec_DEFINED
10
10
 
11
11
  #include "include/codec/SkCodec.h"
12
+ #include "include/core/SkAlphaType.h"
13
+ #include "include/core/SkColorSpace.h"
14
+ #include "include/core/SkColorType.h"
12
15
  #include "include/core/SkEncodedImageFormat.h"
13
- #include "include/core/SkStream.h"
16
+ #include "include/core/SkImageInfo.h"
17
+ #include "include/core/SkRefCnt.h"
18
+ #include "include/core/SkSize.h"
14
19
  #include "include/core/SkTypes.h"
20
+ #include "include/private/SkEncodedInfo.h"
21
+ #include "include/private/SkNoncopyable.h"
22
+ #include "modules/skcms/skcms.h"
23
+
24
+ #include <cstddef>
25
+ #include <memory>
26
+
27
+ class SkData;
28
+ class SkPngChunkReader;
29
+ class SkStream;
30
+ struct SkIRect;
15
31
 
16
32
  /**
17
33
  * Abstract interface defining image codec functionality that is necessary for
@@ -10,31 +10,34 @@
10
10
 
11
11
  #include "include/codec/SkCodecAnimation.h"
12
12
  #include "include/codec/SkEncodedOrigin.h"
13
- #include "include/core/SkColor.h"
13
+ #include "include/core/SkAlphaType.h"
14
14
  #include "include/core/SkEncodedImageFormat.h"
15
15
  #include "include/core/SkImageInfo.h"
16
16
  #include "include/core/SkPixmap.h"
17
+ #include "include/core/SkRect.h"
18
+ #include "include/core/SkRefCnt.h"
17
19
  #include "include/core/SkSize.h"
18
- #include "include/core/SkStream.h"
19
20
  #include "include/core/SkTypes.h"
20
21
  #include "include/core/SkYUVAPixmaps.h"
21
22
  #include "include/private/SkEncodedInfo.h"
22
23
  #include "include/private/SkNoncopyable.h"
23
- #include "include/private/SkTemplates.h"
24
+ #include "modules/skcms/skcms.h"
24
25
 
26
+ #include <cstddef>
27
+ #include <memory>
28
+ #include <tuple>
25
29
  #include <vector>
26
30
 
27
31
  class SkAndroidCodec;
28
- class SkColorSpace;
29
32
  class SkData;
30
33
  class SkFrameHolder;
31
34
  class SkImage;
32
35
  class SkPngChunkReader;
33
36
  class SkSampler;
37
+ class SkStream;
34
38
 
35
39
  namespace DM {
36
40
  class CodecSrc;
37
- class ColorCodecSrc;
38
41
  } // namespace DM
39
42
 
40
43
  /**
@@ -19,6 +19,8 @@ class SkCanvas;
19
19
  * Annotate the canvas by associating the specified URL with the
20
20
  * specified rectangle (in local coordinates, just like drawRect).
21
21
  *
22
+ * The URL is expected to be escaped and be valid 7-bit ASCII.
23
+ *
22
24
  * If the backend of this canvas does not support annotations, this call is
23
25
  * safely ignored.
24
26
  *