@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
@@ -9,7 +9,7 @@
9
9
  #define SkHalf_DEFINED
10
10
 
11
11
  #include "include/core/SkTypes.h"
12
- #include "include/private/SkNx.h"
12
+ #include "include/private/SkVx.h"
13
13
 
14
14
  // 16-bit floating point value
15
15
  // format is 1 bit sign, 5 bits exponent, 10 bits mantissa
@@ -28,58 +28,11 @@ SkHalf SkFloatToHalf(float f);
28
28
  // Convert between half and single precision floating point,
29
29
  // assuming inputs and outputs are both finite, and may
30
30
  // flush values which would be denormal half floats to zero.
31
- static inline Sk4f SkHalfToFloat_finite_ftz(uint64_t);
32
- static inline Sk4h SkFloatToHalf_finite_ftz(const Sk4f&);
33
-
34
- // ~~~~~~~~~~~ impl ~~~~~~~~~~~~~~ //
35
-
36
- // Like the serial versions in SkHalf.cpp, these are based on
37
- // https://fgiesen.wordpress.com/2012/03/28/half-to-float-done-quic/
38
-
39
- // GCC 4.9 lacks the intrinsics to use ARMv8 f16<->f32 instructions, so we use inline assembly.
40
-
41
- static inline Sk4f SkHalfToFloat_finite_ftz(uint64_t rgba) {
42
- Sk4h hs = Sk4h::Load(&rgba);
43
- #if !defined(SKNX_NO_SIMD) && defined(SK_CPU_ARM64)
44
- float32x4_t fs;
45
- asm ("fcvtl %[fs].4s, %[hs].4h \n" // vcvt_f32_f16(...)
46
- : [fs] "=w" (fs) // =w: write-only NEON register
47
- : [hs] "w" (hs.fVec)); // w: read-only NEON register
48
- return fs;
49
- #else
50
- Sk4i bits = SkNx_cast<int>(hs), // Expand to 32 bit.
51
- sign = bits & 0x00008000, // Save the sign bit for later...
52
- positive = bits ^ sign, // ...but strip it off for now.
53
- is_norm = 0x03ff < positive; // Exponent > 0?
54
-
55
- // For normal half floats, extend the mantissa by 13 zero bits,
56
- // then adjust the exponent from 15 bias to 127 bias.
57
- Sk4i norm = (positive << 13) + ((127 - 15) << 23);
58
-
59
- Sk4i merged = (sign << 16) | (norm & is_norm);
60
- return Sk4f::Load(&merged);
61
- #endif
31
+ static inline skvx::float4 SkHalfToFloat_finite_ftz(uint64_t rgba) {
32
+ return skvx::from_half(skvx::half4::Load(&rgba));
62
33
  }
63
-
64
- static inline Sk4h SkFloatToHalf_finite_ftz(const Sk4f& fs) {
65
- #if !defined(SKNX_NO_SIMD) && defined(SK_CPU_ARM64)
66
- float32x4_t vec = fs.fVec;
67
- asm ("fcvtn %[vec].4h, %[vec].4s \n" // vcvt_f16_f32(vec)
68
- : [vec] "+w" (vec)); // +w: read-write NEON register
69
- return vreinterpret_u16_f32(vget_low_f32(vec));
70
- #else
71
- Sk4i bits = Sk4i::Load(&fs),
72
- sign = bits & 0x80000000, // Save the sign bit for later...
73
- positive = bits ^ sign, // ...but strip it off for now.
74
- will_be_norm = 0x387fdfff < positive; // greater than largest denorm half?
75
-
76
- // For normal half floats, adjust the exponent from 127 bias to 15 bias,
77
- // then drop the bottom 13 mantissa bits.
78
- Sk4i norm = (positive - ((127 - 15) << 23)) >> 13;
79
-
80
- Sk4i merged = (sign >> 16) | (will_be_norm & norm);
81
- return SkNx_cast<uint16_t>(merged);
82
- #endif
34
+ static inline skvx::half4 SkFloatToHalf_finite_ftz(const skvx::float4& c) {
35
+ return skvx::to_half(c);
83
36
  }
84
37
 
85
38
  #endif
@@ -30,7 +30,7 @@
30
30
 
31
31
  ////////////////////////////////////////////////////////////////////////////////
32
32
 
33
- // Can be used to bracket data types that must be dense, e.g. hash keys.
33
+ // Can be used to bracket data types that must be dense/packed, e.g. hash keys.
34
34
  #if defined(__clang__) // This should work on GCC too, but GCC diagnostic pop didn't seem to work!
35
35
  #define SK_BEGIN_REQUIRE_DENSE _Pragma("GCC diagnostic push") \
36
36
  _Pragma("GCC diagnostic error \"-Wpadded\"")
@@ -78,6 +78,10 @@ SK_API extern void* sk_calloc_throw(size_t count, size_t elemSize);
78
78
  SK_API extern void* sk_malloc_throw(size_t count, size_t elemSize);
79
79
  SK_API extern void* sk_realloc_throw(void* buffer, size_t count, size_t elemSize);
80
80
 
81
+ // Returns the true usable size provided by the underlying allocator, or 0 if
82
+ // querying the allocation size is not supported.
83
+ SK_API extern size_t sk_malloc_usable_size(void* buffer);
84
+
81
85
  /**
82
86
  * These variants return nullptr on failure
83
87
  */
@@ -283,9 +283,9 @@ public:
283
283
  static void Rewind(sk_sp<SkPathRef>* pathRef);
284
284
 
285
285
  ~SkPathRef();
286
- int countPoints() const { return fPoints.count(); }
287
- int countVerbs() const { return fVerbs.count(); }
288
- int countWeights() const { return fConicWeights.count(); }
286
+ int countPoints() const { return fPoints.size(); }
287
+ int countVerbs() const { return fVerbs.size(); }
288
+ int countWeights() const { return fConicWeights.size(); }
289
289
 
290
290
  size_t approximateBytesUsed() const;
291
291
 
@@ -397,8 +397,8 @@ private:
397
397
  /** Makes additional room but does not change the counts or change the genID */
398
398
  void incReserve(int additionalVerbs, int additionalPoints) {
399
399
  SkDEBUGCODE(this->validate();)
400
- fPoints.setReserve(fPoints.count() + additionalPoints);
401
- fVerbs.setReserve(fVerbs.count() + additionalVerbs);
400
+ fPoints.reserve(fPoints.size() + additionalPoints);
401
+ fVerbs.reserve(fVerbs.size() + additionalVerbs);
402
402
  SkDEBUGCODE(this->validate();)
403
403
  }
404
404
 
@@ -415,11 +415,11 @@ private:
415
415
  fIsOval = false;
416
416
  fIsRRect = false;
417
417
 
418
- fPoints.setReserve(pointCount + reservePoints);
419
- fPoints.setCount(pointCount);
420
- fVerbs.setReserve(verbCount + reserveVerbs);
421
- fVerbs.setCount(verbCount);
422
- fConicWeights.setCount(conicCount);
418
+ fPoints.reserve(pointCount + reservePoints);
419
+ fPoints.resize(pointCount);
420
+ fVerbs.reserve(verbCount + reserveVerbs);
421
+ fVerbs.resize(verbCount);
422
+ fConicWeights.resize(conicCount);
423
423
  SkDEBUGCODE(this->validate();)
424
424
  }
425
425
 
@@ -9,13 +9,15 @@
9
9
  #define SKSL_MODIFIERS
10
10
 
11
11
  #include "include/private/SkSLLayout.h"
12
- #include "include/sksl/SkSLPosition.h"
13
12
 
14
- #include <vector>
13
+ #include <cstddef>
14
+ #include <memory>
15
+ #include <string>
15
16
 
16
17
  namespace SkSL {
17
18
 
18
19
  class Context;
20
+ class Position;
19
21
 
20
22
  /**
21
23
  * A set of modifier keywords (in, out, uniform, etc.) appearing before a declaration.
@@ -44,11 +46,17 @@ struct Modifiers {
44
46
  kHighp_Flag = 1 << 6,
45
47
  kMediump_Flag = 1 << 7,
46
48
  kLowp_Flag = 1 << 8,
49
+ kReadOnly_Flag = 1 << 9,
50
+ kWriteOnly_Flag = 1 << 10,
51
+ kBuffer_Flag = 1 << 11,
52
+ // We use the Metal name for this one (corresponds to the GLSL 'shared' modifier)
53
+ kThreadgroup_Flag = 1 << 12,
47
54
  // SkSL extensions, not present in GLSL
48
- kES3_Flag = 1 << 9,
49
- kHasSideEffects_Flag = 1 << 10,
50
- kInline_Flag = 1 << 11,
51
- kNoInline_Flag = 1 << 12,
55
+ kExport_Flag = 1 << 13,
56
+ kES3_Flag = 1 << 14,
57
+ kPure_Flag = 1 << 15,
58
+ kInline_Flag = 1 << 16,
59
+ kNoInline_Flag = 1 << 17,
52
60
  };
53
61
 
54
62
  Modifiers()
@@ -60,49 +68,75 @@ struct Modifiers {
60
68
  , fFlags(flags) {}
61
69
 
62
70
  std::string description() const {
63
- std::string result = fLayout.description();
71
+ return fLayout.description() + DescribeFlags(fFlags) + " ";
72
+ }
64
73
 
74
+ static std::string DescribeFlags(int flags) {
65
75
  // SkSL extensions
66
- if (fFlags & kES3_Flag) {
76
+ std::string result;
77
+ if (flags & kExport_Flag) {
78
+ result += "$export ";
79
+ }
80
+ if (flags & kES3_Flag) {
67
81
  result += "$es3 ";
68
82
  }
69
- if (fFlags & kHasSideEffects_Flag) {
70
- result += "sk_has_side_effects ";
83
+ if (flags & kPure_Flag) {
84
+ result += "$pure ";
85
+ }
86
+ if (flags & kInline_Flag) {
87
+ result += "inline ";
71
88
  }
72
- if (fFlags & kNoInline_Flag) {
89
+ if (flags & kNoInline_Flag) {
73
90
  result += "noinline ";
74
91
  }
75
92
 
76
93
  // Real GLSL qualifiers (must be specified in order in GLSL 4.1 and below)
77
- if (fFlags & kFlat_Flag) {
94
+ if (flags & kFlat_Flag) {
78
95
  result += "flat ";
79
96
  }
80
- if (fFlags & kNoPerspective_Flag) {
97
+ if (flags & kNoPerspective_Flag) {
81
98
  result += "noperspective ";
82
99
  }
83
- if (fFlags & kConst_Flag) {
100
+ if (flags & kConst_Flag) {
84
101
  result += "const ";
85
102
  }
86
- if (fFlags & kUniform_Flag) {
103
+ if (flags & kUniform_Flag) {
87
104
  result += "uniform ";
88
105
  }
89
- if ((fFlags & kIn_Flag) && (fFlags & kOut_Flag)) {
106
+ if ((flags & kIn_Flag) && (flags & kOut_Flag)) {
90
107
  result += "inout ";
91
- } else if (fFlags & kIn_Flag) {
108
+ } else if (flags & kIn_Flag) {
92
109
  result += "in ";
93
- } else if (fFlags & kOut_Flag) {
110
+ } else if (flags & kOut_Flag) {
94
111
  result += "out ";
95
112
  }
96
- if (fFlags & kHighp_Flag) {
113
+ if (flags & kHighp_Flag) {
97
114
  result += "highp ";
98
115
  }
99
- if (fFlags & kMediump_Flag) {
116
+ if (flags & kMediump_Flag) {
100
117
  result += "mediump ";
101
118
  }
102
- if (fFlags & kLowp_Flag) {
119
+ if (flags & kLowp_Flag) {
103
120
  result += "lowp ";
104
121
  }
122
+ if (flags & kReadOnly_Flag) {
123
+ result += "readonly ";
124
+ }
125
+ if (flags & kWriteOnly_Flag) {
126
+ result += "writeonly ";
127
+ }
128
+ if (flags & kBuffer_Flag) {
129
+ result += "buffer ";
130
+ }
131
+
132
+ // We're using a non-GLSL name for this one; the GLSL equivalent is "shared"
133
+ if (flags & kThreadgroup_Flag) {
134
+ result += "threadgroup ";
135
+ }
105
136
 
137
+ if (!result.empty()) {
138
+ result.pop_back();
139
+ }
106
140
  return result;
107
141
  }
108
142
 
@@ -118,8 +152,10 @@ struct Modifiers {
118
152
  * Verifies that only permitted modifiers and layout flags are included. Reports errors and
119
153
  * returns false in the event of a violation.
120
154
  */
121
- bool checkPermitted(const Context& context, Position pos, int permittedModifierFlags,
122
- int permittedLayoutFlags) const;
155
+ bool checkPermitted(const Context& context,
156
+ Position pos,
157
+ int permittedModifierFlags,
158
+ int permittedLayoutFlags) const;
123
159
 
124
160
  Layout fLayout;
125
161
  int fFlags;
@@ -18,6 +18,7 @@ namespace SkSL {
18
18
  enum class ProgramKind : int8_t {
19
19
  kFragment,
20
20
  kVertex,
21
+ kCompute,
21
22
  kGraphiteFragment,
22
23
  kGraphiteVertex,
23
24
  kRuntimeColorFilter, // Runtime effect only suitable as SkColorFilter
@@ -23,7 +23,6 @@ public:
23
23
  kField,
24
24
  kFunctionDeclaration,
25
25
  kType,
26
- kUnresolvedFunction,
27
26
  kVariable,
28
27
 
29
28
  kFirst = kExternal,
@@ -52,6 +51,13 @@ public:
52
51
  return fName;
53
52
  }
54
53
 
54
+ /**
55
+ * Don't call this directly--use SymbolTable::renameSymbol instead!
56
+ */
57
+ void setName(std::string_view newName) {
58
+ fName = newName;
59
+ }
60
+
55
61
  /**
56
62
  * Use is<T> to check the type of a symbol.
57
63
  * e.g. replace `sym.kind() == Symbol::Kind::kVariable` with `sym.is<Variable>()`.
@@ -81,8 +87,6 @@ private:
81
87
  const Type* fType;
82
88
 
83
89
  using INHERITED = IRNode;
84
-
85
- friend class Type;
86
90
  };
87
91
 
88
92
  } // namespace SkSL
@@ -42,6 +42,10 @@ inline constexpr bool contains(std::string_view str, std::string_view needle) {
42
42
  return str.find(needle) != std::string_view::npos;
43
43
  }
44
44
 
45
+ inline constexpr bool contains(std::string_view str, std::string_view::value_type c) {
46
+ return str.find(c) != std::string_view::npos;
47
+ }
48
+
45
49
  } // namespace skstd
46
50
 
47
51
  #endif
@@ -33,7 +33,7 @@
33
33
  Modern implementations of std::vector<T> will generally provide similar performance
34
34
  characteristics when used with appropriate care. Consider using std::vector<T> in new code.
35
35
  */
36
- template <typename T, bool MEM_MOVE = false> class SkTArray {
36
+ template <typename T, bool MEM_MOVE = sk_is_trivially_relocatable<T>::value> class SkTArray {
37
37
  private:
38
38
  enum ReallocType { kExactFit, kGrowing, kShrinking };
39
39
 
@@ -461,6 +461,18 @@ protected:
461
461
  }
462
462
 
463
463
  private:
464
+ // We disable Control-Flow Integrity sanitization (go/cfi) when casting item-array buffers.
465
+ // CFI flags this code as dangerous because we are casting `buffer` to a T* while the buffer's
466
+ // contents might still be uninitialized memory. When T has a vtable, this is especially risky
467
+ // because we could hypothetically access a virtual method on fItemArray and jump to an
468
+ // unpredictable location in memory. Of course, SkTArray won't actually use fItemArray in this
469
+ // way, and we don't want to construct a T before the user requests one. There's no real risk
470
+ // here, so disable CFI when doing these casts.
471
+ SK_ATTRIBUTE(no_sanitize("cfi"))
472
+ static T* TCast(void* buffer) {
473
+ return (T*)buffer;
474
+ }
475
+
464
476
  void init(int count) {
465
477
  fCount = SkToU32(count);
466
478
  if (!count) {
@@ -468,7 +480,7 @@ private:
468
480
  fItemArray = nullptr;
469
481
  } else {
470
482
  fAllocCount = SkToU32(std::max(count, kMinHeapAllocCount));
471
- fItemArray = (T*)sk_malloc_throw((size_t)fAllocCount, sizeof(T));
483
+ fItemArray = TCast(sk_malloc_throw((size_t)fAllocCount, sizeof(T)));
472
484
  }
473
485
  fOwnMemory = true;
474
486
  fReserved = false;
@@ -483,11 +495,11 @@ private:
483
495
  fReserved = false;
484
496
  if (count > preallocCount) {
485
497
  fAllocCount = SkToU32(std::max(count, kMinHeapAllocCount));
486
- fItemArray = (T*)sk_malloc_throw(fAllocCount, sizeof(T));
498
+ fItemArray = TCast(sk_malloc_throw(fAllocCount, sizeof(T)));
487
499
  fOwnMemory = true;
488
500
  } else {
489
501
  fAllocCount = SkToU32(preallocCount);
490
- fItemArray = (T*)preallocStorage;
502
+ fItemArray = TCast(preallocStorage);
491
503
  fOwnMemory = false;
492
504
  }
493
505
  }
@@ -506,7 +518,9 @@ private:
506
518
  }
507
519
 
508
520
  template <bool E = MEM_MOVE> std::enable_if_t<E, void> move(int dst, int src) {
509
- memcpy(&fItemArray[dst], &fItemArray[src], sizeof(T));
521
+ memcpy(static_cast<void*>(&fItemArray[dst]),
522
+ static_cast<void*>(&fItemArray[src]),
523
+ sizeof(T));
510
524
  }
511
525
  template <bool E = MEM_MOVE> std::enable_if_t<E, void> move(void* dst) {
512
526
  sk_careful_memcpy(dst, fItemArray, fCount * sizeof(T));
@@ -567,7 +581,7 @@ private:
567
581
 
568
582
  fAllocCount = SkToU32(Sk64_pin_to_s32(newAllocCount));
569
583
  SkASSERT(fAllocCount >= newCount);
570
- T* newItemArray = (T*)sk_malloc_throw((size_t)fAllocCount, sizeof(T));
584
+ T* newItemArray = TCast(sk_malloc_throw((size_t)fAllocCount, sizeof(T)));
571
585
  this->move(newItemArray);
572
586
  if (fOwnMemory) {
573
587
  sk_free(fItemArray);
@@ -593,7 +607,7 @@ template<typename T, bool MEM_MOVE> constexpr int SkTArray<T, MEM_MOVE>::kMinHea
593
607
  /**
594
608
  * Subclass of SkTArray that contains a preallocated memory block for the array.
595
609
  */
596
- template <int N, typename T, bool MEM_MOVE = false>
610
+ template <int N, typename T, bool MEM_MOVE = sk_is_trivially_relocatable<T>::value>
597
611
  class SkSTArray : private SkAlignedSTStorage<N,T>, public SkTArray<T, MEM_MOVE> {
598
612
  private:
599
613
  using STORAGE = SkAlignedSTStorage<N,T>;