@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
@@ -5,7 +5,6 @@
5
5
  * found in the LICENSE file.
6
6
  */
7
7
 
8
-
9
8
  #ifndef SkTDArray_DEFINED
10
9
  #define SkTDArray_DEFINED
11
10
 
@@ -14,372 +13,261 @@
14
13
  #include "include/private/SkTo.h"
15
14
 
16
15
  #include <algorithm>
16
+ #include <cstddef>
17
+ #include <climits>
17
18
  #include <initializer_list>
19
+ #include <tuple>
18
20
  #include <utility>
19
21
 
20
- /** SkTDArray<T> implements a std::vector-like array for raw data-only objects that do not require
21
- construction or destruction. The constructor and destructor for T will not be called; T objects
22
- will always be moved via raw memcpy. Newly created T objects will contain uninitialized memory.
22
+ class SK_SPI SkTDStorage {
23
+ public:
24
+ explicit SkTDStorage(int sizeOfT);
25
+ SkTDStorage(const void* src, int count, int sizeOfT);
26
+
27
+ // Copy
28
+ SkTDStorage(const SkTDStorage& that);
29
+ SkTDStorage& operator= (const SkTDStorage& that);
30
+
31
+ // Move
32
+ SkTDStorage(SkTDStorage&& that);
33
+ SkTDStorage& operator= (SkTDStorage&& that);
34
+
35
+ ~SkTDStorage();
36
+
37
+ void reset();
38
+ void swap(SkTDStorage& that);
39
+
40
+ // Size routines
41
+ bool empty() const { return fCount == 0; }
42
+ void clear() { fCount = 0; }
43
+ int size() const { return fCount; }
44
+ void resize(int newCount);
45
+ size_t size_bytes() const { return this->bytes(fCount); }
46
+
47
+ // Capacity routines
48
+ int capacity() const { return fReserve; }
49
+ void reserve(int newReserve);
50
+ void shrink_to_fit();
51
+
52
+ void* data() { return fStorage; }
53
+ const void* data() const { return fStorage; }
54
+
55
+ // Deletion routines
56
+ void erase(int index, int count);
57
+ // Removes the entry at 'index' and replaces it with the last array element
58
+ void removeShuffle(int index);
59
+
60
+ // Insertion routines
61
+ void* prepend();
62
+
63
+ void append();
64
+ void append(int count);
65
+ void* append(const void* src, int count);
66
+
67
+ void* insert(int index);
68
+ void* insert(int index, int count, const void* src);
69
+
70
+ void pop_back() {
71
+ SkASSERT(fCount > 0);
72
+ fCount--;
73
+ }
74
+
75
+ friend bool operator==(const SkTDStorage& a, const SkTDStorage& b);
76
+ friend bool operator!=(const SkTDStorage& a, const SkTDStorage& b) {
77
+ return !(a == b);
78
+ }
79
+
80
+ private:
81
+ size_t bytes(int n) const { return SkToSizeT(n * fSizeOfT); }
82
+ void* address(int n) { return fStorage + this->bytes(n); }
83
+
84
+ // Adds delta to fCount. Crash if outside [0, INT_MAX]
85
+ int calculateSizeOrDie(int delta);
86
+
87
+ // Move the tail of the array defined by the indexes tailStart and tailEnd to dstIndex. The
88
+ // elements at dstIndex are overwritten by the tail.
89
+ void moveTail(int dstIndex, int tailStart, int tailEnd);
23
90
 
24
- In most cases, std::vector<T> can provide a similar level of performance for POD objects when
25
- used with appropriate care. In new code, consider std::vector<T> instead.
26
- */
91
+ // Copy src into the array at dstIndex.
92
+ void copySrc(int dstIndex, const void* src, int count);
93
+
94
+ const int fSizeOfT;
95
+ std::byte* fStorage{nullptr};
96
+ int fReserve{0}; // size of the allocation in fArray (#elements)
97
+ int fCount{0}; // logical number of elements (fCount <= fReserve)
98
+ };
99
+
100
+ static inline void swap(SkTDStorage& a, SkTDStorage& b) {
101
+ a.swap(b);
102
+ }
103
+
104
+ // SkTDArray<T> implements a std::vector-like array for raw data-only objects that do not require
105
+ // construction or destruction. The constructor and destructor for T will not be called; T objects
106
+ // will always be moved via raw memcpy. Newly created T objects will contain uninitialized memory.
27
107
  template <typename T> class SkTDArray {
28
108
  public:
29
- SkTDArray() : fArray(nullptr), fReserve(0), fCount(0) {}
30
- SkTDArray(const T src[], int count) {
31
- SkASSERT(src || count == 0);
32
-
33
- fReserve = fCount = 0;
34
- fArray = nullptr;
35
- if (count) {
36
- fArray = (T*)sk_malloc_throw(SkToSizeT(count) * sizeof(T));
37
- memcpy(fArray, src, sizeof(T) * SkToSizeT(count));
38
- fReserve = fCount = count;
39
- }
40
- }
109
+ SkTDArray() : fStorage{sizeof(T)} {}
110
+ SkTDArray(const T src[], int count) : fStorage{src, count, sizeof(T)} { }
41
111
  SkTDArray(const std::initializer_list<T>& list) : SkTDArray(list.begin(), list.size()) {}
42
- SkTDArray(const SkTDArray<T>& src) : fArray(nullptr), fReserve(0), fCount(0) {
43
- SkTDArray<T> tmp(src.fArray, src.fCount);
44
- this->swap(tmp);
45
- }
46
- SkTDArray(SkTDArray<T>&& src) : fArray(nullptr), fReserve(0), fCount(0) {
47
- this->swap(src);
48
- }
49
- ~SkTDArray() {
50
- sk_free(fArray);
51
- }
52
112
 
113
+ // Copy
114
+ SkTDArray(const SkTDArray<T>& src) : SkTDArray(src.data(), src.size()) {}
53
115
  SkTDArray<T>& operator=(const SkTDArray<T>& src) {
54
- if (this != &src) {
55
- if (src.fCount > fReserve) {
56
- SkTDArray<T> tmp(src.fArray, src.fCount);
57
- this->swap(tmp);
58
- } else {
59
- sk_careful_memcpy(fArray, src.fArray, sizeof(T) * SkToSizeT(src.fCount));
60
- fCount = src.fCount;
61
- }
62
- }
116
+ fStorage = src.fStorage;
63
117
  return *this;
64
118
  }
119
+
120
+ // Move
121
+ SkTDArray(SkTDArray<T>&& src) : fStorage{std::move(src.fStorage)} {}
65
122
  SkTDArray<T>& operator=(SkTDArray<T>&& src) {
66
- if (this != &src) {
67
- this->swap(src);
68
- src.reset();
69
- }
123
+ fStorage = std::move(src.fStorage);
70
124
  return *this;
71
125
  }
72
126
 
73
127
  friend bool operator==(const SkTDArray<T>& a, const SkTDArray<T>& b) {
74
- return a.fCount == b.fCount &&
75
- (a.fCount == 0 ||
76
- !memcmp(a.fArray, b.fArray, SkToSizeT(a.fCount) * sizeof(T)));
77
- }
78
- friend bool operator!=(const SkTDArray<T>& a, const SkTDArray<T>& b) {
79
- return !(a == b);
128
+ return a.fStorage == b.fStorage;
80
129
  }
130
+ friend bool operator!=(const SkTDArray<T>& a, const SkTDArray<T>& b) { return !(a == b); }
81
131
 
82
132
  void swap(SkTDArray<T>& that) {
83
133
  using std::swap;
84
- swap(fArray, that.fArray);
85
- swap(fReserve, that.fReserve);
86
- swap(fCount, that.fCount);
134
+ swap(fStorage, that.fStorage);
87
135
  }
88
136
 
89
- bool isEmpty() const { return fCount == 0; }
90
- bool empty() const { return this->isEmpty(); }
91
-
92
- /**
93
- * Return the number of elements in the array
94
- */
95
- int count() const { return fCount; }
96
- size_t size() const { return fCount; }
97
-
98
- /**
99
- * Return the total number of elements allocated.
100
- * reserved() - count() gives you the number of elements you can add
101
- * without causing an allocation.
102
- */
103
- int reserved() const { return fReserve; }
104
-
105
- /**
106
- * return the number of bytes in the array: count * sizeof(T)
107
- */
108
- size_t bytes() const { return fCount * sizeof(T); }
109
-
110
- T* begin() { return fArray; }
111
- const T* begin() const { return fArray; }
112
- T* end() { return fArray ? fArray + fCount : nullptr; }
113
- const T* end() const { return fArray ? fArray + fCount : nullptr; }
114
-
115
- T& operator[](int index) {
116
- SkASSERT(index < fCount);
117
- return fArray[index];
137
+ bool empty() const { return fStorage.empty(); }
138
+
139
+ // Return the number of elements in the array
140
+ int size() const { return fStorage.size(); }
141
+
142
+ // Return the total number of elements allocated.
143
+ // Note: capacity() - size() gives you the number of elements you can add without causing an
144
+ // allocation.
145
+ int capacity() const { return fStorage.capacity(); }
146
+
147
+ // return the number of bytes in the array: count * sizeof(T)
148
+ size_t size_bytes() const { return fStorage.size_bytes(); }
149
+
150
+ T* data() { return static_cast<T*>(fStorage.data()); }
151
+ const T* data() const { return static_cast<const T*>(fStorage.data()); }
152
+ T* begin() { return this->data(); }
153
+ const T* begin() const { return this->data(); }
154
+ T* end() { return this->data() + this->size(); }
155
+ const T* end() const { return this->data() + this->size(); }
156
+
157
+ T& operator[](int index) {
158
+ SkASSERT(index < this->size());
159
+ return this->data()[index];
118
160
  }
119
- const T& operator[](int index) const {
120
- SkASSERT(index < fCount);
121
- return fArray[index];
161
+ const T& operator[](int index) const {
162
+ SkASSERT(index < this->size());
163
+ return this->data()[index];
122
164
  }
123
165
 
124
- T& getAt(int index) {
125
- return (*this)[index];
166
+ const T& back() const {
167
+ SkASSERT(this->size() > 0);
168
+ return this->data()[this->size() - 1];
169
+ }
170
+ T& back() {
171
+ SkASSERT(this->size() > 0);
172
+ return this->data()[this->size() - 1];
126
173
  }
127
-
128
- const T& back() const { SkASSERT(fCount > 0); return fArray[fCount-1]; }
129
- T& back() { SkASSERT(fCount > 0); return fArray[fCount-1]; }
130
174
 
131
175
  void reset() {
132
- if (fArray) {
133
- sk_free(fArray);
134
- fArray = nullptr;
135
- fReserve = fCount = 0;
136
- } else {
137
- SkASSERT(fReserve == 0 && fCount == 0);
138
- }
176
+ fStorage.reset();
139
177
  }
140
178
 
141
- void rewind() {
142
- // same as setCount(0)
143
- fCount = 0;
179
+ void clear() {
180
+ fStorage.clear();
144
181
  }
145
182
 
146
- /**
147
- * Sets the number of elements in the array.
148
- * If the array does not have space for count elements, it will increase
149
- * the storage allocated to some amount greater than that required.
150
- * It will never shrink the storage.
151
- */
152
- void setCount(int count) {
153
- SkASSERT(count >= 0);
154
- if (count > fReserve) {
155
- this->resizeStorageToAtLeast(count);
156
- }
157
- fCount = count;
183
+ // Sets the number of elements in the array.
184
+ // If the array does not have space for count elements, it will increase
185
+ // the storage allocated to some amount greater than that required.
186
+ // It will never shrink the storage.
187
+ void resize(int count) {
188
+ fStorage.resize(count);
158
189
  }
159
190
 
160
- void setReserve(int reserve) {
161
- SkASSERT(reserve >= 0);
162
- if (reserve > fReserve) {
163
- this->resizeStorageToAtLeast(reserve);
164
- }
165
- }
166
191
  void reserve(size_t n) {
167
- SkASSERT_RELEASE(SkTFitsIn<int>(n));
168
- this->setReserve(SkToInt(n));
169
- }
170
-
171
- T* prepend() {
172
- this->adjustCount(1);
173
- memmove(fArray + 1, fArray, (fCount - 1) * sizeof(T));
174
- return fArray;
192
+ fStorage.reserve(n);
175
193
  }
176
194
 
177
195
  T* append() {
178
- return this->append(1, nullptr);
196
+ fStorage.append();
197
+ return this->end() - 1;
179
198
  }
180
- T* append(int count, const T* src = nullptr) {
181
- int oldCount = fCount;
182
- if (count) {
183
- SkASSERT(src == nullptr || fArray == nullptr ||
184
- src + count <= fArray || fArray + oldCount <= src);
185
-
186
- this->adjustCount(count);
187
- if (src) {
188
- memcpy(fArray + oldCount, src, sizeof(T) * count);
189
- }
190
- }
191
- return fArray + oldCount;
199
+ T* append(int count) {
200
+ fStorage.append(count);
201
+ return this->end() - count;
202
+ }
203
+ T* append(int count, const T* src) {
204
+ return static_cast<T*>(fStorage.append(src, count));
192
205
  }
193
206
 
194
207
  T* insert(int index) {
195
- return this->insert(index, 1, nullptr);
208
+ return static_cast<T*>(fStorage.insert(index));
196
209
  }
197
210
  T* insert(int index, int count, const T* src = nullptr) {
198
- SkASSERT(count);
199
- SkASSERT(index <= fCount);
200
- size_t oldCount = fCount;
201
- this->adjustCount(count);
202
- T* dst = fArray + index;
203
- memmove(dst + count, dst, sizeof(T) * (oldCount - index));
204
- if (src) {
205
- memcpy(dst, src, sizeof(T) * count);
206
- }
207
- return dst;
211
+ return static_cast<T*>(fStorage.insert(index, count, src));
208
212
  }
209
213
 
210
214
  void remove(int index, int count = 1) {
211
- SkASSERT(index + count <= fCount);
212
- fCount = fCount - count;
213
- memmove(fArray + index, fArray + index + count, sizeof(T) * (fCount - index));
215
+ fStorage.erase(index, count);
214
216
  }
215
217
 
216
218
  void removeShuffle(int index) {
217
- SkASSERT(index < fCount);
218
- int newCount = fCount - 1;
219
- fCount = newCount;
220
- if (index != newCount) {
221
- memcpy(fArray + index, fArray + newCount, sizeof(T));
222
- }
219
+ fStorage.removeShuffle(index);
223
220
  }
224
221
 
225
222
  int find(const T& elem) const {
226
- const T* iter = fArray;
227
- const T* stop = fArray + fCount;
223
+ const T* iter = this->begin();
224
+ const T* stop = this->end();
228
225
 
229
226
  for (; iter < stop; iter++) {
230
227
  if (*iter == elem) {
231
- return SkToInt(iter - fArray);
232
- }
233
- }
234
- return -1;
235
- }
236
-
237
- int rfind(const T& elem) const {
238
- const T* iter = fArray + fCount;
239
- const T* stop = fArray;
240
-
241
- while (iter > stop) {
242
- if (*--iter == elem) {
243
- return SkToInt(iter - stop);
228
+ return SkToInt(iter - this->begin());
244
229
  }
245
230
  }
246
231
  return -1;
247
232
  }
248
233
 
249
- /**
250
- * Returns true iff the array contains this element.
251
- */
252
- bool contains(const T& elem) const {
253
- return (this->find(elem) >= 0);
254
- }
255
-
256
- /**
257
- * Copies up to max elements into dst. The number of items copied is
258
- * capped by count - index. The actual number copied is returned.
259
- */
260
- int copyRange(T* dst, int index, int max) const {
261
- SkASSERT(max >= 0);
262
- SkASSERT(!max || dst);
263
- if (index >= fCount) {
264
- return 0;
265
- }
266
- int count = std::min(max, fCount - index);
267
- memcpy(dst, fArray + index, sizeof(T) * count);
268
- return count;
269
- }
270
-
271
- void copy(T* dst) const {
272
- this->copyRange(dst, 0, fCount);
273
- }
274
-
275
234
  // routines to treat the array like a stack
276
- void push_back(const T& v) { *this->append() = v; }
277
- T* push() { return this->append(); }
278
- const T& top() const { return (*this)[fCount - 1]; }
279
- T& top() { return (*this)[fCount - 1]; }
280
- void pop(T* elem) { SkASSERT(fCount > 0); if (elem) *elem = (*this)[fCount - 1]; --fCount; }
281
- void pop() { SkASSERT(fCount > 0); --fCount; }
235
+ void push_back(const T& v) {
236
+ this->append();
237
+ this->back() = v;
238
+ }
239
+ void pop_back() { fStorage.pop_back(); }
282
240
 
283
241
  void deleteAll() {
284
- T* iter = fArray;
285
- T* stop = fArray + fCount;
286
- while (iter < stop) {
287
- delete *iter;
288
- iter += 1;
242
+ for (T p : *this) {
243
+ delete p;
289
244
  }
290
245
  this->reset();
291
246
  }
292
247
 
293
248
  void freeAll() {
294
- T* iter = fArray;
295
- T* stop = fArray + fCount;
296
- while (iter < stop) {
297
- sk_free(*iter);
298
- iter += 1;
249
+ for (T p : *this) {
250
+ sk_free(p);
299
251
  }
300
- this->reset();
301
- }
302
252
 
303
- void unrefAll() {
304
- T* iter = fArray;
305
- T* stop = fArray + fCount;
306
- while (iter < stop) {
307
- (*iter)->unref();
308
- iter += 1;
309
- }
310
253
  this->reset();
311
254
  }
312
255
 
313
- void safeUnrefAll() {
314
- T* iter = fArray;
315
- T* stop = fArray + fCount;
316
- while (iter < stop) {
317
- SkSafeUnref(*iter);
318
- iter += 1;
256
+ void unrefAll() {
257
+ for (T p : *this) {
258
+ p->unref();
319
259
  }
320
260
  this->reset();
321
261
  }
322
262
 
323
- #ifdef SK_DEBUG
324
- void validate() const {
325
- SkASSERT((fReserve == 0 && fArray == nullptr) ||
326
- (fReserve > 0 && fArray != nullptr));
327
- SkASSERT(fCount <= fReserve);
328
- }
329
- #endif
330
-
331
- void shrinkToFit() {
332
- if (fReserve != fCount) {
333
- SkASSERT(fReserve > fCount);
334
- fReserve = fCount;
335
- fArray = (T*)sk_realloc_throw(fArray, fReserve * sizeof(T));
336
- }
263
+ void shrink_to_fit() {
264
+ fStorage.shrink_to_fit();
337
265
  }
338
266
 
339
267
  private:
340
- T* fArray;
341
- int fReserve; // size of the allocation in fArray (#elements)
342
- int fCount; // logical number of elements (fCount <= fReserve)
343
-
344
- /**
345
- * Adjusts the number of elements in the array.
346
- * This is the same as calling setCount(count() + delta).
347
- */
348
- void adjustCount(int delta) {
349
- SkASSERT(delta > 0);
350
-
351
- // We take care to avoid overflow here.
352
- // The sum of fCount and delta is at most 4294967294, which fits fine in uint32_t.
353
- uint32_t count = (uint32_t)fCount + (uint32_t)delta;
354
- SkASSERT_RELEASE( SkTFitsIn<int>(count) );
355
-
356
- this->setCount(SkTo<int>(count));
357
- }
358
-
359
- /**
360
- * Increase the storage allocation such that it can hold (fCount + extra)
361
- * elements.
362
- * It never shrinks the allocation, and it may increase the allocation by
363
- * more than is strictly required, based on a private growth heuristic.
364
- *
365
- * note: does NOT modify fCount
366
- */
367
- void resizeStorageToAtLeast(int count) {
368
- SkASSERT(count > fReserve);
369
-
370
- // We take care to avoid overflow here.
371
- // The maximum value we can get for reserve here is 2684354563, which fits in uint32_t.
372
- uint32_t reserve = (uint32_t)count + 4;
373
- reserve += reserve / 4;
374
- SkASSERT_RELEASE( SkTFitsIn<int>(reserve) );
375
-
376
- fReserve = SkTo<int>(reserve);
377
- fArray = (T*)sk_realloc_throw(fArray, (size_t)fReserve * sizeof(T));
378
- }
268
+ SkTDStorage fStorage;
379
269
  };
380
270
 
381
- template <typename T> static inline void swap(SkTDArray<T>& a, SkTDArray<T>& b) {
382
- a.swap(b);
383
- }
271
+ template <typename T> static inline void swap(SkTDArray<T>& a, SkTDArray<T>& b) { a.swap(b); }
384
272
 
385
273
  #endif