@shopify/react-native-skia 0.1.234 → 0.1.237

Sign up to get free protection for your applications and to get access to all the features.
Files changed (425) hide show
  1. package/cpp/api/JsiSkApi.h +2 -0
  2. package/cpp/api/JsiSkCanvas.h +36 -0
  3. package/cpp/api/JsiSkRSXform.h +35 -7
  4. package/cpp/api/JsiSkTypefaceFactory.h +2 -1
  5. package/cpp/rnskia/dom/JsiDomApi.h +2 -0
  6. package/cpp/rnskia/dom/nodes/JsiAtlasNode.h +60 -0
  7. package/cpp/rnskia/dom/props/RSXformProp.h +52 -0
  8. package/cpp/rnskia/dom/props/RectProp.h +31 -0
  9. package/cpp/skia/include/android/AHardwareBufferUtils.h +23 -0
  10. package/cpp/skia/include/android/GrAHardwareBufferUtils.h +2 -0
  11. package/cpp/skia/include/android/graphite/SurfaceAndroid.h +59 -0
  12. package/cpp/skia/include/codec/SkAvifDecoder.h +1 -1
  13. package/cpp/skia/include/codec/SkBmpDecoder.h +1 -1
  14. package/cpp/skia/include/codec/SkCodec.h +21 -3
  15. package/cpp/skia/include/codec/SkGifDecoder.h +1 -1
  16. package/cpp/skia/include/codec/SkIcoDecoder.h +1 -1
  17. package/cpp/skia/include/codec/SkJpegDecoder.h +1 -1
  18. package/cpp/skia/include/codec/SkJpegxlDecoder.h +1 -1
  19. package/cpp/skia/include/codec/SkPngDecoder.h +1 -1
  20. package/cpp/skia/include/codec/SkRawDecoder.h +1 -1
  21. package/cpp/skia/include/codec/SkWbmpDecoder.h +1 -1
  22. package/cpp/skia/include/codec/SkWebpDecoder.h +1 -1
  23. package/cpp/skia/include/config/SkUserConfig.h +3 -1
  24. package/cpp/skia/include/core/SkCanvas.h +66 -37
  25. package/cpp/skia/include/core/SkColorFilter.h +5 -2
  26. package/cpp/skia/include/core/SkContourMeasure.h +1 -0
  27. package/cpp/skia/include/core/SkDocument.h +1 -0
  28. package/cpp/skia/include/core/SkFont.h +14 -24
  29. package/cpp/skia/include/core/SkFontArguments.h +1 -1
  30. package/cpp/skia/include/core/SkFontMetrics.h +1 -1
  31. package/cpp/skia/include/core/SkFontMgr.h +0 -7
  32. package/cpp/skia/include/core/SkGraphics.h +13 -0
  33. package/cpp/skia/include/core/SkMesh.h +9 -13
  34. package/cpp/skia/include/core/SkMilestone.h +1 -1
  35. package/cpp/skia/include/core/SkPathMeasure.h +2 -0
  36. package/cpp/skia/include/core/SkSerialProcs.h +29 -11
  37. package/cpp/skia/include/core/SkSize.h +3 -3
  38. package/cpp/skia/include/core/SkStream.h +3 -13
  39. package/cpp/skia/include/core/SkSurface.h +6 -3
  40. package/cpp/skia/include/core/SkSurfaceProps.h +2 -4
  41. package/cpp/skia/include/core/SkTraceMemoryDump.h +15 -0
  42. package/cpp/skia/include/core/SkTypeface.h +8 -56
  43. package/cpp/skia/include/core/SkTypes.h +8 -0
  44. package/cpp/skia/include/core/SkVertices.h +1 -1
  45. package/cpp/skia/include/docs/SkMultiPictureDocument.h +53 -0
  46. package/cpp/skia/include/docs/SkPDFDocument.h +11 -0
  47. package/cpp/skia/include/effects/SkGradientShader.h +9 -0
  48. package/cpp/skia/include/effects/SkRuntimeEffect.h +3 -7
  49. package/cpp/skia/include/gpu/GrBackendSemaphore.h +33 -47
  50. package/cpp/skia/include/gpu/GrBackendSurface.h +2 -3
  51. package/cpp/skia/include/gpu/GrContextOptions.h +0 -6
  52. package/cpp/skia/include/gpu/GrContextThreadSafeProxy.h +44 -28
  53. package/cpp/skia/include/gpu/GrDirectContext.h +12 -31
  54. package/cpp/skia/include/gpu/GrTypes.h +1 -16
  55. package/cpp/skia/include/gpu/MutableTextureState.h +35 -80
  56. package/cpp/skia/include/gpu/ShaderErrorHandler.h +11 -1
  57. package/cpp/skia/include/gpu/ganesh/SkImageGanesh.h +2 -2
  58. package/cpp/skia/include/gpu/ganesh/SkSurfaceGanesh.h +1 -1
  59. package/cpp/skia/include/gpu/ganesh/gl/GrGLDirectContext.h +3 -2
  60. package/cpp/skia/include/gpu/ganesh/vk/GrVkBackendSemaphore.h +20 -0
  61. package/cpp/skia/include/gpu/ganesh/vk/GrVkDirectContext.h +30 -0
  62. package/cpp/skia/include/gpu/gl/GrGLFunctions.h +1 -1
  63. package/cpp/skia/include/gpu/gl/GrGLInterface.h +2 -0
  64. package/cpp/skia/include/gpu/gl/glx/GrGLMakeGLXInterface.h +6 -0
  65. package/cpp/skia/include/gpu/graphite/BackendSemaphore.h +3 -3
  66. package/cpp/skia/include/gpu/graphite/BackendTexture.h +39 -27
  67. package/cpp/skia/include/gpu/graphite/Context.h +39 -13
  68. package/cpp/skia/include/gpu/graphite/ContextOptions.h +2 -0
  69. package/cpp/skia/include/gpu/graphite/GraphiteTypes.h +2 -1
  70. package/cpp/skia/include/gpu/graphite/Image.h +106 -87
  71. package/cpp/skia/include/gpu/graphite/Recorder.h +24 -3
  72. package/cpp/skia/include/gpu/graphite/Surface.h +7 -2
  73. package/cpp/skia/include/gpu/graphite/dawn/DawnBackendContext.h +41 -2
  74. package/cpp/skia/include/gpu/graphite/dawn/DawnTypes.h +11 -6
  75. package/cpp/skia/include/gpu/graphite/mtl/MtlGraphiteTypes.h +1 -2
  76. package/cpp/skia/include/gpu/graphite/vk/VulkanGraphiteTypes.h +6 -6
  77. package/cpp/skia/include/gpu/mock/GrMockTypes.h +1 -0
  78. package/cpp/skia/include/gpu/vk/GrVkBackendContext.h +1 -1
  79. package/cpp/skia/include/gpu/vk/GrVkTypes.h +1 -44
  80. package/cpp/skia/include/gpu/vk/VulkanExtensions.h +1 -1
  81. package/cpp/skia/include/gpu/vk/VulkanMutableTextureState.h +25 -0
  82. package/cpp/skia/include/gpu/vk/VulkanTypes.h +44 -0
  83. package/cpp/skia/include/ports/SkFontConfigInterface.h +3 -6
  84. package/cpp/skia/include/private/SkEncodedInfo.h +5 -0
  85. package/cpp/skia/include/private/SkExif.h +102 -0
  86. package/cpp/skia/include/private/SkGainmapInfo.h +11 -1
  87. package/cpp/skia/include/private/base/SkAssert.h +16 -0
  88. package/cpp/skia/include/private/base/SkDeque.h +2 -7
  89. package/cpp/skia/include/private/base/SkLoadUserConfig.h +1 -1
  90. package/cpp/skia/include/private/base/SkTArray.h +69 -28
  91. package/cpp/skia/include/private/base/SkThreadAnnotations.h +18 -5
  92. package/cpp/skia/include/private/chromium/GrSurfaceCharacterization.h +26 -30
  93. package/cpp/skia/include/private/chromium/GrVkSecondaryCBDrawContext.h +4 -3
  94. package/cpp/skia/include/private/chromium/SkImageChromium.h +1 -1
  95. package/cpp/skia/include/private/gpu/ganesh/GrTypesPriv.h +8 -6
  96. package/cpp/skia/include/private/gpu/graphite/ContextOptionsPriv.h +29 -0
  97. package/cpp/skia/include/private/gpu/graphite/DawnTypesPriv.h +12 -9
  98. package/cpp/skia/include/private/gpu/graphite/VulkanGraphiteTypesPriv.h +16 -11
  99. package/cpp/skia/include/third_party/vulkan/vulkan/vk_platform.h +2 -2
  100. package/cpp/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_h264std.h +312 -0
  101. package/cpp/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_h264std_decode.h +77 -0
  102. package/cpp/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_h265std.h +446 -0
  103. package/cpp/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_h265std_decode.h +67 -0
  104. package/cpp/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codecs_common.h +36 -0
  105. package/cpp/skia/include/third_party/vulkan/vulkan/vulkan.h +9 -2
  106. package/cpp/skia/include/third_party/vulkan/vulkan/vulkan_android.h +31 -3
  107. package/cpp/skia/include/third_party/vulkan/vulkan/vulkan_core.h +10624 -5716
  108. package/cpp/skia/include/third_party/vulkan/vulkan/vulkan_ios.h +2 -1
  109. package/cpp/skia/include/third_party/vulkan/vulkan/vulkan_macos.h +2 -1
  110. package/cpp/skia/include/third_party/vulkan/vulkan/vulkan_win32.h +28 -1
  111. package/cpp/skia/include/third_party/vulkan/vulkan/vulkan_xcb.h +2 -1
  112. package/cpp/skia/include/utils/mac/SkCGUtils.h +23 -11
  113. package/cpp/skia/modules/skcms/skcms.h +2 -410
  114. package/cpp/skia/modules/skcms/src/Transform_inl.h +831 -704
  115. package/cpp/skia/modules/skcms/src/skcms_Transform.h +161 -0
  116. package/cpp/skia/modules/skcms/src/skcms_internals.h +136 -0
  117. package/cpp/skia/modules/skcms/src/skcms_public.h +404 -0
  118. package/cpp/skia/modules/skparagraph/include/FontArguments.h +1 -1
  119. package/cpp/skia/modules/skparagraph/include/FontCollection.h +2 -0
  120. package/cpp/skia/modules/skparagraph/include/Paragraph.h +2 -2
  121. package/cpp/skia/modules/skparagraph/include/TextStyle.h +4 -3
  122. package/cpp/skia/modules/skparagraph/include/TypefaceFontProvider.h +1 -3
  123. package/cpp/skia/modules/skresources/include/SkResources.h +28 -17
  124. package/cpp/skia/modules/skunicode/include/SkUnicode.h +12 -0
  125. package/cpp/skia/modules/svg/include/SkSVGDOM.h +4 -1
  126. package/cpp/skia/modules/svg/include/SkSVGRenderContext.h +4 -1
  127. package/cpp/skia/src/base/SkUTF.h +7 -0
  128. package/cpp/skia/src/core/SkTHash.h +20 -8
  129. package/lib/commonjs/dom/nodes/JsiSkDOM.d.ts +5 -3
  130. package/lib/commonjs/dom/nodes/JsiSkDOM.js +60 -57
  131. package/lib/commonjs/dom/nodes/JsiSkDOM.js.map +1 -1
  132. package/lib/commonjs/dom/nodes/drawings/AtlasNode.d.ts +8 -0
  133. package/lib/commonjs/dom/nodes/drawings/AtlasNode.js +47 -0
  134. package/lib/commonjs/dom/nodes/drawings/AtlasNode.js.map +1 -0
  135. package/lib/commonjs/dom/nodes/drawings/index.d.ts +1 -0
  136. package/lib/commonjs/dom/nodes/drawings/index.js +13 -0
  137. package/lib/commonjs/dom/nodes/drawings/index.js.map +1 -1
  138. package/lib/commonjs/dom/types/Drawings.d.ts +7 -1
  139. package/lib/commonjs/dom/types/Drawings.js.map +1 -1
  140. package/lib/commonjs/dom/types/NodeType.d.ts +1 -0
  141. package/lib/commonjs/dom/types/NodeType.js +1 -0
  142. package/lib/commonjs/dom/types/NodeType.js.map +1 -1
  143. package/lib/commonjs/dom/types/SkDOM.d.ts +2 -1
  144. package/lib/commonjs/dom/types/SkDOM.js.map +1 -1
  145. package/lib/commonjs/external/reanimated/buffers.d.ts +5 -0
  146. package/lib/commonjs/external/reanimated/buffers.js +48 -0
  147. package/lib/commonjs/external/reanimated/buffers.js.map +1 -0
  148. package/lib/commonjs/external/reanimated/index.d.ts +2 -0
  149. package/lib/commonjs/external/reanimated/index.js +26 -0
  150. package/lib/commonjs/external/reanimated/index.js.map +1 -1
  151. package/lib/commonjs/external/reanimated/interpolators.js +13 -1
  152. package/lib/commonjs/external/reanimated/interpolators.js.map +1 -1
  153. package/lib/commonjs/external/reanimated/moduleWrapper.d.ts +1 -0
  154. package/lib/commonjs/external/reanimated/moduleWrapper.js +5 -3
  155. package/lib/commonjs/external/reanimated/moduleWrapper.js.map +1 -1
  156. package/lib/commonjs/external/reanimated/textures.d.ts +5 -0
  157. package/lib/commonjs/external/reanimated/textures.js +38 -0
  158. package/lib/commonjs/external/reanimated/textures.js.map +1 -0
  159. package/lib/commonjs/external/reanimated/useAnimatedImageValue.js +8 -1
  160. package/lib/commonjs/external/reanimated/useAnimatedImageValue.js.map +1 -1
  161. package/lib/commonjs/headless/index.js +1 -1
  162. package/lib/commonjs/headless/index.js.map +1 -1
  163. package/lib/commonjs/mock/index.js +8 -0
  164. package/lib/commonjs/mock/index.js.map +1 -1
  165. package/lib/commonjs/renderer/Canvas.js +1 -1
  166. package/lib/commonjs/renderer/Canvas.js.map +1 -1
  167. package/lib/commonjs/renderer/Container.d.ts +1 -1
  168. package/lib/commonjs/renderer/Container.js +2 -1
  169. package/lib/commonjs/renderer/Container.js.map +1 -1
  170. package/lib/commonjs/renderer/HostComponents.d.ts +3 -1
  171. package/lib/commonjs/renderer/HostComponents.js +3 -0
  172. package/lib/commonjs/renderer/HostComponents.js.map +1 -1
  173. package/lib/commonjs/renderer/Offscreen.d.ts +4 -1
  174. package/lib/commonjs/renderer/Offscreen.js +28 -10
  175. package/lib/commonjs/renderer/Offscreen.js.map +1 -1
  176. package/lib/commonjs/renderer/Reconciler.d.ts +1 -1
  177. package/lib/commonjs/renderer/Reconciler.js +7 -4
  178. package/lib/commonjs/renderer/Reconciler.js.map +1 -1
  179. package/lib/commonjs/renderer/components/shapes/Atlas.d.ts +4 -0
  180. package/lib/commonjs/renderer/components/shapes/Atlas.js +17 -0
  181. package/lib/commonjs/renderer/components/shapes/Atlas.js.map +1 -0
  182. package/lib/commonjs/renderer/components/shapes/index.d.ts +1 -0
  183. package/lib/commonjs/renderer/components/shapes/index.js +13 -0
  184. package/lib/commonjs/renderer/components/shapes/index.js.map +1 -1
  185. package/lib/commonjs/skia/core/AnimatedImage.d.ts +1 -1
  186. package/lib/commonjs/skia/core/AnimatedImage.js +4 -1
  187. package/lib/commonjs/skia/core/AnimatedImage.js.map +1 -1
  188. package/lib/commonjs/skia/core/Data.d.ts +1 -1
  189. package/lib/commonjs/skia/core/Data.js +11 -4
  190. package/lib/commonjs/skia/core/Data.js.map +1 -1
  191. package/lib/commonjs/skia/core/Rect.d.ts +2 -2
  192. package/lib/commonjs/skia/types/Canvas.d.ts +16 -1
  193. package/lib/commonjs/skia/types/Canvas.js.map +1 -1
  194. package/lib/commonjs/skia/types/Image/Image.d.ts +8 -0
  195. package/lib/commonjs/skia/types/Image/Image.js.map +1 -1
  196. package/lib/commonjs/skia/types/Matrix4.d.ts +2 -2
  197. package/lib/commonjs/skia/types/Matrix4.js.map +1 -1
  198. package/lib/commonjs/skia/types/RSXform.d.ts +7 -1
  199. package/lib/commonjs/skia/types/RSXform.js.map +1 -1
  200. package/lib/commonjs/skia/types/Rect.d.ts +4 -0
  201. package/lib/commonjs/skia/types/Rect.js.map +1 -1
  202. package/lib/commonjs/skia/types/Shader/Shader.d.ts +1 -1
  203. package/lib/commonjs/skia/types/Shader/Shader.js.map +1 -1
  204. package/lib/commonjs/skia/types/Skia.d.ts +3 -2
  205. package/lib/commonjs/skia/types/Skia.js.map +1 -1
  206. package/lib/commonjs/skia/web/JsiSkCanvas.d.ts +2 -1
  207. package/lib/commonjs/skia/web/JsiSkCanvas.js +19 -0
  208. package/lib/commonjs/skia/web/JsiSkCanvas.js.map +1 -1
  209. package/lib/commonjs/skia/web/JsiSkRSXform.d.ts +8 -2
  210. package/lib/commonjs/skia/web/JsiSkRSXform.js +33 -2
  211. package/lib/commonjs/skia/web/JsiSkRSXform.js.map +1 -1
  212. package/lib/commonjs/skia/web/JsiSkRect.d.ts +3 -2
  213. package/lib/commonjs/skia/web/JsiSkRect.js +7 -0
  214. package/lib/commonjs/skia/web/JsiSkRect.js.map +1 -1
  215. package/lib/commonjs/skia/web/JsiSkTextBlobFactory.js +2 -1
  216. package/lib/commonjs/skia/web/JsiSkTextBlobFactory.js.map +1 -1
  217. package/lib/commonjs/skia/web/JsiSkia.js +5 -0
  218. package/lib/commonjs/skia/web/JsiSkia.js.map +1 -1
  219. package/lib/module/dom/nodes/JsiSkDOM.d.ts +5 -3
  220. package/lib/module/dom/nodes/JsiSkDOM.js +61 -57
  221. package/lib/module/dom/nodes/JsiSkDOM.js.map +1 -1
  222. package/lib/module/dom/nodes/drawings/AtlasNode.d.ts +8 -0
  223. package/lib/module/dom/nodes/drawings/AtlasNode.js +34 -0
  224. package/lib/module/dom/nodes/drawings/AtlasNode.js.map +1 -0
  225. package/lib/module/dom/nodes/drawings/index.d.ts +1 -0
  226. package/lib/module/dom/nodes/drawings/index.js +1 -0
  227. package/lib/module/dom/nodes/drawings/index.js.map +1 -1
  228. package/lib/module/dom/types/Drawings.d.ts +7 -1
  229. package/lib/module/dom/types/Drawings.js.map +1 -1
  230. package/lib/module/dom/types/NodeType.d.ts +1 -0
  231. package/lib/module/dom/types/NodeType.js +1 -0
  232. package/lib/module/dom/types/NodeType.js.map +1 -1
  233. package/lib/module/dom/types/SkDOM.d.ts +2 -1
  234. package/lib/module/dom/types/SkDOM.js.map +1 -1
  235. package/lib/module/external/reanimated/buffers.d.ts +5 -0
  236. package/lib/module/external/reanimated/buffers.js +27 -0
  237. package/lib/module/external/reanimated/buffers.js.map +1 -0
  238. package/lib/module/external/reanimated/index.d.ts +2 -0
  239. package/lib/module/external/reanimated/index.js +2 -0
  240. package/lib/module/external/reanimated/index.js.map +1 -1
  241. package/lib/module/external/reanimated/interpolators.js +13 -1
  242. package/lib/module/external/reanimated/interpolators.js.map +1 -1
  243. package/lib/module/external/reanimated/moduleWrapper.d.ts +1 -0
  244. package/lib/module/external/reanimated/moduleWrapper.js +3 -2
  245. package/lib/module/external/reanimated/moduleWrapper.js.map +1 -1
  246. package/lib/module/external/reanimated/textures.d.ts +5 -0
  247. package/lib/module/external/reanimated/textures.js +24 -0
  248. package/lib/module/external/reanimated/textures.js.map +1 -0
  249. package/lib/module/external/reanimated/useAnimatedImageValue.js +7 -1
  250. package/lib/module/external/reanimated/useAnimatedImageValue.js.map +1 -1
  251. package/lib/module/headless/index.js +1 -1
  252. package/lib/module/headless/index.js.map +1 -1
  253. package/lib/module/mock/index.js +8 -0
  254. package/lib/module/mock/index.js.map +1 -1
  255. package/lib/module/renderer/Canvas.js +1 -1
  256. package/lib/module/renderer/Canvas.js.map +1 -1
  257. package/lib/module/renderer/Container.d.ts +1 -1
  258. package/lib/module/renderer/Container.js +2 -1
  259. package/lib/module/renderer/Container.js.map +1 -1
  260. package/lib/module/renderer/HostComponents.d.ts +3 -1
  261. package/lib/module/renderer/HostComponents.js +3 -0
  262. package/lib/module/renderer/HostComponents.js.map +1 -1
  263. package/lib/module/renderer/Offscreen.d.ts +4 -1
  264. package/lib/module/renderer/Offscreen.js +19 -9
  265. package/lib/module/renderer/Offscreen.js.map +1 -1
  266. package/lib/module/renderer/Reconciler.d.ts +1 -1
  267. package/lib/module/renderer/Reconciler.js +7 -4
  268. package/lib/module/renderer/Reconciler.js.map +1 -1
  269. package/lib/module/renderer/components/shapes/Atlas.d.ts +4 -0
  270. package/lib/module/renderer/components/shapes/Atlas.js +5 -0
  271. package/lib/module/renderer/components/shapes/Atlas.js.map +1 -0
  272. package/lib/module/renderer/components/shapes/index.d.ts +1 -0
  273. package/lib/module/renderer/components/shapes/index.js +1 -0
  274. package/lib/module/renderer/components/shapes/index.js.map +1 -1
  275. package/lib/module/skia/core/AnimatedImage.d.ts +1 -1
  276. package/lib/module/skia/core/AnimatedImage.js +4 -1
  277. package/lib/module/skia/core/AnimatedImage.js.map +1 -1
  278. package/lib/module/skia/core/Data.d.ts +1 -1
  279. package/lib/module/skia/core/Data.js +11 -4
  280. package/lib/module/skia/core/Data.js.map +1 -1
  281. package/lib/module/skia/core/Rect.d.ts +2 -2
  282. package/lib/module/skia/types/Canvas.d.ts +16 -1
  283. package/lib/module/skia/types/Canvas.js.map +1 -1
  284. package/lib/module/skia/types/Image/Image.d.ts +8 -0
  285. package/lib/module/skia/types/Image/Image.js.map +1 -1
  286. package/lib/module/skia/types/Matrix4.d.ts +2 -2
  287. package/lib/module/skia/types/Matrix4.js.map +1 -1
  288. package/lib/module/skia/types/RSXform.d.ts +7 -1
  289. package/lib/module/skia/types/RSXform.js.map +1 -1
  290. package/lib/module/skia/types/Rect.d.ts +4 -0
  291. package/lib/module/skia/types/Rect.js.map +1 -1
  292. package/lib/module/skia/types/Shader/Shader.d.ts +1 -1
  293. package/lib/module/skia/types/Shader/Shader.js.map +1 -1
  294. package/lib/module/skia/types/Skia.d.ts +3 -2
  295. package/lib/module/skia/types/Skia.js.map +1 -1
  296. package/lib/module/skia/web/JsiSkCanvas.d.ts +2 -1
  297. package/lib/module/skia/web/JsiSkCanvas.js +18 -0
  298. package/lib/module/skia/web/JsiSkCanvas.js.map +1 -1
  299. package/lib/module/skia/web/JsiSkRSXform.d.ts +8 -2
  300. package/lib/module/skia/web/JsiSkRSXform.js +34 -3
  301. package/lib/module/skia/web/JsiSkRSXform.js.map +1 -1
  302. package/lib/module/skia/web/JsiSkRect.d.ts +3 -2
  303. package/lib/module/skia/web/JsiSkRect.js +7 -0
  304. package/lib/module/skia/web/JsiSkRect.js.map +1 -1
  305. package/lib/module/skia/web/JsiSkTextBlobFactory.js +2 -1
  306. package/lib/module/skia/web/JsiSkTextBlobFactory.js.map +1 -1
  307. package/lib/module/skia/web/JsiSkia.js +5 -0
  308. package/lib/module/skia/web/JsiSkia.js.map +1 -1
  309. package/lib/typescript/src/dom/nodes/JsiSkDOM.d.ts +5 -3
  310. package/lib/typescript/src/dom/nodes/drawings/AtlasNode.d.ts +8 -0
  311. package/lib/typescript/src/dom/nodes/drawings/index.d.ts +1 -0
  312. package/lib/typescript/src/dom/types/Drawings.d.ts +7 -1
  313. package/lib/typescript/src/dom/types/NodeType.d.ts +1 -0
  314. package/lib/typescript/src/dom/types/SkDOM.d.ts +2 -1
  315. package/lib/typescript/src/external/reanimated/buffers.d.ts +5 -0
  316. package/lib/typescript/src/external/reanimated/index.d.ts +2 -0
  317. package/lib/typescript/src/external/reanimated/moduleWrapper.d.ts +1 -0
  318. package/lib/typescript/src/external/reanimated/textures.d.ts +5 -0
  319. package/lib/typescript/src/renderer/Container.d.ts +1 -1
  320. package/lib/typescript/src/renderer/HostComponents.d.ts +3 -1
  321. package/lib/typescript/src/renderer/Offscreen.d.ts +4 -1
  322. package/lib/typescript/src/renderer/Reconciler.d.ts +1 -1
  323. package/lib/typescript/src/renderer/components/shapes/Atlas.d.ts +4 -0
  324. package/lib/typescript/src/renderer/components/shapes/index.d.ts +1 -0
  325. package/lib/typescript/src/skia/core/AnimatedImage.d.ts +1 -1
  326. package/lib/typescript/src/skia/core/Data.d.ts +1 -1
  327. package/lib/typescript/src/skia/core/Rect.d.ts +2 -2
  328. package/lib/typescript/src/skia/types/Canvas.d.ts +16 -1
  329. package/lib/typescript/src/skia/types/Image/Image.d.ts +8 -0
  330. package/lib/typescript/src/skia/types/Matrix4.d.ts +2 -2
  331. package/lib/typescript/src/skia/types/RSXform.d.ts +7 -1
  332. package/lib/typescript/src/skia/types/Rect.d.ts +4 -0
  333. package/lib/typescript/src/skia/types/Shader/Shader.d.ts +1 -1
  334. package/lib/typescript/src/skia/types/Skia.d.ts +3 -2
  335. package/lib/typescript/src/skia/web/JsiSkCanvas.d.ts +2 -1
  336. package/lib/typescript/src/skia/web/JsiSkRSXform.d.ts +8 -2
  337. package/lib/typescript/src/skia/web/JsiSkRect.d.ts +3 -2
  338. package/libs/android/arm64-v8a/libskia.a +0 -0
  339. package/libs/android/arm64-v8a/libskottie.a +0 -0
  340. package/libs/android/arm64-v8a/libskparagraph.a +0 -0
  341. package/libs/android/arm64-v8a/libsksg.a +0 -0
  342. package/libs/android/arm64-v8a/libskshaper.a +0 -0
  343. package/libs/android/arm64-v8a/libskunicode.a +0 -0
  344. package/libs/android/arm64-v8a/libsvg.a +0 -0
  345. package/libs/android/armeabi-v7a/libskia.a +0 -0
  346. package/libs/android/armeabi-v7a/libskottie.a +0 -0
  347. package/libs/android/armeabi-v7a/libskparagraph.a +0 -0
  348. package/libs/android/armeabi-v7a/libsksg.a +0 -0
  349. package/libs/android/armeabi-v7a/libskshaper.a +0 -0
  350. package/libs/android/armeabi-v7a/libskunicode.a +0 -0
  351. package/libs/android/armeabi-v7a/libsvg.a +0 -0
  352. package/libs/android/x86/libskia.a +0 -0
  353. package/libs/android/x86/libskottie.a +0 -0
  354. package/libs/android/x86/libskparagraph.a +0 -0
  355. package/libs/android/x86/libsksg.a +0 -0
  356. package/libs/android/x86/libskshaper.a +0 -0
  357. package/libs/android/x86/libskunicode.a +0 -0
  358. package/libs/android/x86/libsvg.a +0 -0
  359. package/libs/android/x86_64/libskia.a +0 -0
  360. package/libs/android/x86_64/libskottie.a +0 -0
  361. package/libs/android/x86_64/libskparagraph.a +0 -0
  362. package/libs/android/x86_64/libsksg.a +0 -0
  363. package/libs/android/x86_64/libskshaper.a +0 -0
  364. package/libs/android/x86_64/libskunicode.a +0 -0
  365. package/libs/android/x86_64/libsvg.a +0 -0
  366. package/libs/ios/libskia.xcframework/ios-arm64_arm64e/libskia.a +0 -0
  367. package/libs/ios/libskia.xcframework/ios-arm64_arm64e_x86_64-simulator/libskia.a +0 -0
  368. package/libs/ios/libskottie.xcframework/ios-arm64_arm64e/libskottie.a +0 -0
  369. package/libs/ios/libskottie.xcframework/ios-arm64_arm64e_x86_64-simulator/libskottie.a +0 -0
  370. package/libs/ios/libskparagraph.xcframework/ios-arm64_arm64e/libskparagraph.a +0 -0
  371. package/libs/ios/libskparagraph.xcframework/ios-arm64_arm64e_x86_64-simulator/libskparagraph.a +0 -0
  372. package/libs/ios/libsksg.xcframework/ios-arm64_arm64e/libsksg.a +0 -0
  373. package/libs/ios/libsksg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsksg.a +0 -0
  374. package/libs/ios/libskshaper.xcframework/Info.plist +5 -5
  375. package/libs/ios/libskshaper.xcframework/ios-arm64_arm64e/libskshaper.a +0 -0
  376. package/libs/ios/libskshaper.xcframework/ios-arm64_arm64e_x86_64-simulator/libskshaper.a +0 -0
  377. package/libs/ios/libskunicode.xcframework/ios-arm64_arm64e/libskunicode.a +0 -0
  378. package/libs/ios/libskunicode.xcframework/ios-arm64_arm64e_x86_64-simulator/libskunicode.a +0 -0
  379. package/libs/ios/libsvg.xcframework/Info.plist +5 -5
  380. package/libs/ios/libsvg.xcframework/ios-arm64_arm64e/libsvg.a +0 -0
  381. package/libs/ios/libsvg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsvg.a +0 -0
  382. package/package.json +1 -1
  383. package/src/dom/nodes/JsiSkDOM.ts +63 -56
  384. package/src/dom/nodes/drawings/AtlasNode.ts +24 -0
  385. package/src/dom/nodes/drawings/index.ts +1 -0
  386. package/src/dom/types/Drawings.ts +9 -0
  387. package/src/dom/types/NodeType.ts +1 -0
  388. package/src/dom/types/SkDOM.ts +2 -0
  389. package/src/external/reanimated/buffers.ts +53 -0
  390. package/src/external/reanimated/index.ts +2 -0
  391. package/src/external/reanimated/interpolators.ts +15 -2
  392. package/src/external/reanimated/moduleWrapper.ts +1 -0
  393. package/src/external/reanimated/textures.tsx +38 -0
  394. package/src/external/reanimated/useAnimatedImageValue.ts +15 -4
  395. package/src/headless/index.ts +1 -1
  396. package/src/mock/index.ts +8 -0
  397. package/src/renderer/Canvas.tsx +1 -1
  398. package/src/renderer/Container.tsx +3 -2
  399. package/src/renderer/HostComponents.ts +6 -1
  400. package/src/renderer/Offscreen.tsx +24 -11
  401. package/src/renderer/Reconciler.tsx +5 -2
  402. package/src/renderer/components/shapes/Atlas.tsx +8 -0
  403. package/src/renderer/components/shapes/index.ts +1 -0
  404. package/src/skia/core/AnimatedImage.ts +3 -2
  405. package/src/skia/core/Data.ts +8 -4
  406. package/src/skia/types/Canvas.ts +32 -1
  407. package/src/skia/types/Image/Image.ts +10 -0
  408. package/src/skia/types/Matrix4.ts +2 -2
  409. package/src/skia/types/RSXform.ts +7 -1
  410. package/src/skia/types/Rect.ts +6 -0
  411. package/src/skia/types/Shader/Shader.ts +6 -1
  412. package/src/skia/types/Skia.ts +10 -2
  413. package/src/skia/web/JsiSkCanvas.ts +60 -23
  414. package/src/skia/web/JsiSkRSXform.ts +28 -4
  415. package/src/skia/web/JsiSkRect.ts +12 -2
  416. package/src/skia/web/JsiSkTextBlobFactory.ts +5 -5
  417. package/src/skia/web/JsiSkia.ts +15 -0
  418. package/cpp/skia/include/gpu/GrSurfaceInfo.h +0 -142
  419. package/cpp/skia/include/private/gpu/ganesh/GrGLTypesPriv.h +0 -107
  420. package/cpp/skia/include/private/gpu/ganesh/GrMockTypesPriv.h +0 -32
  421. package/cpp/skia/include/private/gpu/ganesh/GrMtlTypesPriv.h +0 -83
  422. package/cpp/skia/include/private/gpu/ganesh/GrVkTypesPriv.h +0 -47
  423. package/cpp/skia/include/private/gpu/vk/VulkanTypesPriv.h +0 -57
  424. package/cpp/skia/include/utils/SkBase64.h +0 -53
  425. package/cpp/skia/modules/skcms/skcms_internal.h +0 -56
@@ -24,11 +24,13 @@
24
24
  #include "include/core/SkSamplingOptions.h"
25
25
  #include "include/core/SkScalar.h"
26
26
  #include "include/core/SkSize.h"
27
+ #include "include/core/SkSpan.h"
27
28
  #include "include/core/SkString.h"
28
29
  #include "include/core/SkSurfaceProps.h"
29
30
  #include "include/core/SkTypes.h"
30
31
  #include "include/private/base/SkCPUTypes.h"
31
32
  #include "include/private/base/SkDeque.h"
33
+ #include "include/private/base/SkTArray.h"
32
34
 
33
35
  #include <cstdint>
34
36
  #include <cstring>
@@ -70,6 +72,9 @@ class SkVertices;
70
72
  struct SkDrawShadowRec;
71
73
  struct SkRSXform;
72
74
 
75
+ template<typename E>
76
+ class SkEnumBitMask;
77
+
73
78
  namespace skgpu::graphite { class Recorder; }
74
79
  namespace sktext::gpu { class Slug; }
75
80
  namespace SkRecords { class Draw; }
@@ -667,7 +672,9 @@ public:
667
672
  kF16ColorType = 1 << 4,
668
673
  };
669
674
 
670
- typedef uint32_t SaveLayerFlags;
675
+ using SaveLayerFlags = uint32_t;
676
+ using FilterSpan = SkSpan<sk_sp<SkImageFilter>>;
677
+ static constexpr int kMaxFiltersPerLayer = 16;
671
678
 
672
679
  /** \struct SkCanvas::SaveLayerRec
673
680
  SaveLayerRec contains the state used to create the layer.
@@ -687,7 +694,7 @@ public:
687
694
  @return SaveLayerRec with empty fBackdrop
688
695
  */
689
696
  SaveLayerRec(const SkRect* bounds, const SkPaint* paint, SaveLayerFlags saveLayerFlags = 0)
690
- : SaveLayerRec(bounds, paint, nullptr, 1.f, saveLayerFlags) {}
697
+ : SaveLayerRec(bounds, paint, nullptr, 1.f, saveLayerFlags, /*filters=*/{}) {}
691
698
 
692
699
  /** Sets fBounds, fPaint, fBackdrop, and fSaveLayerFlags.
693
700
 
@@ -703,7 +710,7 @@ public:
703
710
  */
704
711
  SaveLayerRec(const SkRect* bounds, const SkPaint* paint, const SkImageFilter* backdrop,
705
712
  SaveLayerFlags saveLayerFlags)
706
- : SaveLayerRec(bounds, paint, backdrop, 1.f, saveLayerFlags) {}
713
+ : SaveLayerRec(bounds, paint, backdrop, 1.f, saveLayerFlags, /*filters=*/{}) {}
707
714
 
708
715
  /** hints at layer size limit */
709
716
  const SkRect* fBounds = nullptr;
@@ -711,6 +718,8 @@ public:
711
718
  /** modifies overlay */
712
719
  const SkPaint* fPaint = nullptr;
713
720
 
721
+ FilterSpan fFilters = {};
722
+
714
723
  /**
715
724
  * If not null, this triggers the same initialization behavior as setting
716
725
  * kInitWithPrevious_SaveLayerFlag on fSaveLayerFlags: the current layer is copied into
@@ -726,13 +735,23 @@ public:
726
735
  friend class SkCanvas;
727
736
  friend class SkCanvasPriv;
728
737
 
729
- SaveLayerRec(const SkRect* bounds, const SkPaint* paint, const SkImageFilter* backdrop,
730
- SkScalar backdropScale, SaveLayerFlags saveLayerFlags)
731
- : fBounds(bounds)
732
- , fPaint(paint)
733
- , fBackdrop(backdrop)
734
- , fSaveLayerFlags(saveLayerFlags)
735
- , fExperimentalBackdropScale(backdropScale) {}
738
+ SaveLayerRec(const SkRect* bounds,
739
+ const SkPaint* paint,
740
+ const SkImageFilter* backdrop,
741
+ SkScalar backdropScale,
742
+ SaveLayerFlags saveLayerFlags,
743
+ FilterSpan filters)
744
+ : fBounds(bounds)
745
+ , fPaint(paint)
746
+ , fFilters(filters)
747
+ , fBackdrop(backdrop)
748
+ , fSaveLayerFlags(saveLayerFlags)
749
+ , fExperimentalBackdropScale(backdropScale) {
750
+ // We only allow the paint's image filter or the side-car list of filters -- not both.
751
+ SkASSERT(fFilters.empty() || !paint || !paint->getImageFilter());
752
+ // To keep things reasonable (during deserialization), we limit filter list size.
753
+ SkASSERT(fFilters.size() <= kMaxFiltersPerLayer);
754
+ }
736
755
 
737
756
  // Relative scale factor that the image content used to initialize the layer when the
738
757
  // kInitFromPrevious flag or a backdrop filter is used.
@@ -2283,30 +2302,33 @@ protected:
2283
2302
  virtual void onDrawSlug(const sktext::gpu::Slug* slug);
2284
2303
 
2285
2304
  private:
2286
-
2287
- enum ShaderOverrideOpacity {
2288
- kNone_ShaderOverrideOpacity, //!< there is no overriding shader (bitmap or image)
2289
- kOpaque_ShaderOverrideOpacity, //!< the overriding shader is opaque
2290
- kNotOpaque_ShaderOverrideOpacity, //!< the overriding shader may not be opaque
2305
+ enum class PredrawFlags : unsigned {
2306
+ kNone = 0,
2307
+ kOpaqueShaderOverride = 1, // The paint's shader is overridden with an opaque image
2308
+ kNonOpaqueShaderOverride = 2, // The paint's shader is overridden but is not opaque
2309
+ kCheckForOverwrite = 4, // Check if the draw would overwrite the entire surface
2310
+ kSkipMaskFilterAutoLayer = 8, // Do not apply mask filters in the AutoLayer
2291
2311
  };
2312
+ // Inlined SK_DECL_BITMASK_OPS_FRIENDS to avoid including SkEnumBitMask.h
2313
+ friend constexpr SkEnumBitMask<PredrawFlags> operator|(PredrawFlags, PredrawFlags);
2314
+ friend constexpr SkEnumBitMask<PredrawFlags> operator&(PredrawFlags, PredrawFlags);
2315
+ friend constexpr SkEnumBitMask<PredrawFlags> operator^(PredrawFlags, PredrawFlags);
2316
+ friend constexpr SkEnumBitMask<PredrawFlags> operator~(PredrawFlags);
2292
2317
 
2293
2318
  // notify our surface (if we have one) that we are about to draw, so it
2294
2319
  // can perform copy-on-write or invalidate any cached images
2295
2320
  // returns false if the copy failed
2296
2321
  [[nodiscard]] bool predrawNotify(bool willOverwritesEntireSurface = false);
2297
- [[nodiscard]] bool predrawNotify(const SkRect*, const SkPaint*, ShaderOverrideOpacity);
2322
+ [[nodiscard]] bool predrawNotify(const SkRect*, const SkPaint*, SkEnumBitMask<PredrawFlags>);
2298
2323
 
2299
- enum class CheckForOverwrite : bool {
2300
- kNo = false,
2301
- kYes = true
2302
- };
2303
2324
  // call the appropriate predrawNotify and create a layer if needed.
2304
2325
  std::optional<AutoLayerForImageFilter> aboutToDraw(
2305
- SkCanvas* canvas,
2306
- const SkPaint& paint,
2307
- const SkRect* rawBounds = nullptr,
2308
- CheckForOverwrite = CheckForOverwrite::kNo,
2309
- ShaderOverrideOpacity = kNone_ShaderOverrideOpacity);
2326
+ const SkPaint& paint,
2327
+ const SkRect* rawBounds,
2328
+ SkEnumBitMask<PredrawFlags> flags);
2329
+ std::optional<AutoLayerForImageFilter> aboutToDraw(
2330
+ const SkPaint& paint,
2331
+ const SkRect* rawBounds = nullptr);
2310
2332
 
2311
2333
  // The bottom-most device in the stack, only changed by init(). Image properties and the final
2312
2334
  // canvas pixels are determined by this device.
@@ -2323,12 +2345,16 @@ private:
2323
2345
  // clip, and matrix commands. There is a layer per call to saveLayer() using the
2324
2346
  // kFullLayer_SaveLayerStrategy.
2325
2347
  struct Layer {
2326
- sk_sp<SkDevice> fDevice;
2327
- sk_sp<SkImageFilter> fImageFilter; // applied to layer *before* being drawn by paint
2328
- SkPaint fPaint;
2329
- bool fDiscard;
2330
-
2331
- Layer(sk_sp<SkDevice> device, sk_sp<SkImageFilter> imageFilter, const SkPaint& paint);
2348
+ sk_sp<SkDevice> fDevice;
2349
+ skia_private::STArray<1, sk_sp<SkImageFilter>> fImageFilters;
2350
+ SkPaint fPaint;
2351
+ bool fIsCoverage;
2352
+ bool fDiscard;
2353
+
2354
+ Layer(sk_sp<SkDevice> device,
2355
+ FilterSpan imageFilters,
2356
+ const SkPaint& paint,
2357
+ bool isCoverage);
2332
2358
  };
2333
2359
 
2334
2360
  // Encapsulate state needed to restore from saveBehind()
@@ -2364,8 +2390,9 @@ private:
2364
2390
  ~MCRec();
2365
2391
 
2366
2392
  void newLayer(sk_sp<SkDevice> layerDevice,
2367
- sk_sp<SkImageFilter> filter,
2368
- const SkPaint& restorePaint);
2393
+ FilterSpan filters,
2394
+ const SkPaint& restorePaint,
2395
+ bool layerIsCoverage);
2369
2396
 
2370
2397
  void reset(SkDevice* device);
2371
2398
  };
@@ -2470,7 +2497,7 @@ private:
2470
2497
  const SkMatrix* matrix = nullptr);
2471
2498
 
2472
2499
  void internalDrawPaint(const SkPaint& paint);
2473
- void internalSaveLayer(const SaveLayerRec&, SaveLayerStrategy);
2500
+ void internalSaveLayer(const SaveLayerRec&, SaveLayerStrategy, bool coverageOnly=false);
2474
2501
  void internalSaveBehind(const SkRect*);
2475
2502
 
2476
2503
  void internalConcat44(const SkM44&);
@@ -2499,16 +2526,18 @@ private:
2499
2526
  * relative transforms between the devices).
2500
2527
  */
2501
2528
  void internalDrawDeviceWithFilter(SkDevice* src, SkDevice* dst,
2502
- const SkImageFilter* filter, const SkPaint& paint,
2529
+ FilterSpan filters, const SkPaint& paint,
2503
2530
  DeviceCompatibleWithFilter compat,
2504
- SkScalar scaleFactor = 1.f);
2531
+ SkScalar scaleFactor = 1.f,
2532
+ bool srcIsCoverageLayer = false);
2505
2533
 
2506
2534
  /*
2507
2535
  * Returns true if drawing the specified rect (or all if it is null) with the specified
2508
2536
  * paint (or default if null) would overwrite the entire root device of the canvas
2509
2537
  * (i.e. the canvas' surface if it had one).
2510
2538
  */
2511
- bool wouldOverwriteEntireSurface(const SkRect*, const SkPaint*, ShaderOverrideOpacity) const;
2539
+ bool wouldOverwriteEntireSurface(const SkRect*, const SkPaint*,
2540
+ SkEnumBitMask<PredrawFlags>) const;
2512
2541
 
2513
2542
  /**
2514
2543
  * Returns true if the paint's imagefilter can be invoked directly, without needed a layer.
@@ -15,6 +15,7 @@
15
15
 
16
16
  #include <cstddef>
17
17
  #include <cstdint>
18
+ #include <utility>
18
19
 
19
20
  class SkColorMatrix;
20
21
  class SkColorSpace;
@@ -82,8 +83,10 @@ private:
82
83
 
83
84
  class SK_API SkColorFilters {
84
85
  public:
85
- static sk_sp<SkColorFilter> Compose(sk_sp<SkColorFilter> outer, sk_sp<SkColorFilter> inner) {
86
- return outer ? outer->makeComposed(inner) : inner;
86
+ static sk_sp<SkColorFilter> Compose(const sk_sp<SkColorFilter>& outer,
87
+ sk_sp<SkColorFilter> inner) {
88
+ return outer ? outer->makeComposed(std::move(inner))
89
+ : std::move(inner);
87
90
  }
88
91
 
89
92
  // Blends between the constant color (src) and input color (dst) based on the SkBlendMode.
@@ -90,6 +90,7 @@ private:
90
90
  const Segment* distanceToSegment(SkScalar distance, SkScalar* t) const;
91
91
 
92
92
  friend class SkContourMeasureIter;
93
+ friend class SkPathMeasurePriv;
93
94
  };
94
95
 
95
96
  class SK_API SkContourMeasureIter {
@@ -36,6 +36,7 @@ public:
36
36
  * Begin a new page for the document, returning the canvas that will draw
37
37
  * into the page. The document owns this canvas, and it will go out of
38
38
  * scope when endPage() or close() is called, or the document is deleted.
39
+ * This will call endPage() if there is a currently active page.
39
40
  */
40
41
  SkCanvas* beginPage(SkScalar width, SkScalar height, const SkRect* content = nullptr);
41
42
 
@@ -201,20 +201,14 @@ public:
201
201
  */
202
202
  SkFont makeWithSize(SkScalar size) const;
203
203
 
204
- /** Returns SkTypeface if set, or nullptr.
205
- Does not alter SkTypeface SkRefCnt.
204
+ /** Does not alter SkTypeface SkRefCnt.
206
205
 
207
- @return SkTypeface if previously set, nullptr otherwise
206
+ @return non-null SkTypeface
208
207
  */
209
- SkTypeface* getTypeface() const {return fTypeface.get(); }
210
-
211
- /** Returns SkTypeface if set, or the default typeface.
212
- Does not alter SkTypeface SkRefCnt.
213
-
214
- @return SkTypeface if previously set or, a pointer to the default typeface if not
215
- previously set.
216
- */
217
- SkTypeface* getTypefaceOrDefault() const;
208
+ SkTypeface* getTypeface() const {
209
+ SkASSERT(fTypeface);
210
+ return fTypeface.get();
211
+ }
218
212
 
219
213
  /** Returns text size in points.
220
214
 
@@ -238,24 +232,20 @@ public:
238
232
 
239
233
  /** Increases SkTypeface SkRefCnt by one.
240
234
 
241
- @return SkTypeface if previously set, nullptr otherwise
235
+ @return A non-null SkTypeface.
242
236
  */
243
- sk_sp<SkTypeface> refTypeface() const { return fTypeface; }
244
-
245
- /** Increases SkTypeface SkRefCnt by one.
246
-
247
- @return SkTypeface if previously set or, a pointer to the default typeface if not
248
- previously set.
249
- */
250
- sk_sp<SkTypeface> refTypefaceOrDefault() const;
237
+ sk_sp<SkTypeface> refTypeface() const {
238
+ SkASSERT(fTypeface);
239
+ return fTypeface;
240
+ }
251
241
 
252
242
  /** Sets SkTypeface to typeface, decreasing SkRefCnt of the previous SkTypeface.
253
- Pass nullptr to clear SkTypeface and use the default typeface. Increments
254
- tf SkRefCnt by one.
243
+ Pass nullptr to clear SkTypeface and use an empty typeface (which draws nothing).
244
+ Increments tf SkRefCnt by one.
255
245
 
256
246
  @param tf font and style used to draw text
257
247
  */
258
- void setTypeface(sk_sp<SkTypeface> tf) { fTypeface = tf; }
248
+ void setTypeface(sk_sp<SkTypeface> tf);
259
249
 
260
250
  /** Sets text size in points.
261
251
  Has no effect if textSize is not greater than or equal to zero.
@@ -32,7 +32,7 @@ struct SkFontArguments {
32
32
  */
33
33
  struct Palette {
34
34
  struct Override {
35
- int index;
35
+ uint16_t index;
36
36
  SkColor color;
37
37
  };
38
38
  int index;
@@ -16,7 +16,7 @@
16
16
  The metric values are consistent with the Skia y-down coordinate system.
17
17
  */
18
18
  struct SK_API SkFontMetrics {
19
- bool operator==(const SkFontMetrics& that) {
19
+ bool operator==(const SkFontMetrics& that) const {
20
20
  return
21
21
  this->fFlags == that.fFlags &&
22
22
  this->fTop == that.fTop &&
@@ -112,9 +112,6 @@ public:
112
112
 
113
113
  sk_sp<SkTypeface> legacyMakeTypeface(const char familyName[], SkFontStyle style) const;
114
114
 
115
- /** Return the default fontmgr. */
116
- static sk_sp<SkFontMgr> RefDefault();
117
-
118
115
  /* Returns an empty font manager without any typeface dependencies */
119
116
  static sk_sp<SkFontMgr> RefEmpty();
120
117
 
@@ -141,10 +138,6 @@ protected:
141
138
  virtual sk_sp<SkTypeface> onMakeFromFile(const char path[], int ttcIndex) const = 0;
142
139
 
143
140
  virtual sk_sp<SkTypeface> onLegacyMakeTypeface(const char familyName[], SkFontStyle) const = 0;
144
-
145
- private:
146
- /** Implemented by porting layer to return the default factory. */
147
- static sk_sp<SkFontMgr> Factory();
148
141
  };
149
142
 
150
143
  #endif
@@ -69,6 +69,19 @@ public:
69
69
  */
70
70
  static int SetFontCacheCountLimit(int count);
71
71
 
72
+ /**
73
+ * Return the current limit to the number of entries in the typeface cache.
74
+ * A cache "entry" is associated with each typeface.
75
+ */
76
+ static int GetTypefaceCacheCountLimit();
77
+
78
+ /**
79
+ * Set the limit to the number of entries in the typeface cache, and return
80
+ * the previous value. Changes to this only take effect the next time
81
+ * each cache object is modified.
82
+ */
83
+ static int SetTypefaceCacheCountLimit(int count);
84
+
72
85
  /**
73
86
  * For debugging purposes, this will attempt to purge the font cache. It
74
87
  * does not change the limit, but will cause subsequent font measures and
@@ -15,6 +15,7 @@
15
15
  #include "include/core/SkString.h"
16
16
  #include "include/effects/SkRuntimeEffect.h"
17
17
  #include "include/private/base/SkAPI.h"
18
+ #include "include/private/base/SkTArray.h"
18
19
 
19
20
  #include <cstddef>
20
21
  #include <cstdint>
@@ -168,10 +169,7 @@ public:
168
169
  */
169
170
  SkSpan<const Uniform> uniforms() const { return SkSpan(fUniforms); }
170
171
 
171
- /**
172
- * Provides basic info about individual children: names, indices and runtime effect type.
173
- * TODO(b/40045302): SkMesh will currently reject mesh specifications that include child effects
174
- */
172
+ /** Provides basic info about individual children: names, indices and runtime effect type. */
175
173
  SkSpan<const Child> children() const { return SkSpan(fChildren); }
176
174
 
177
175
  /** Returns a pointer to the named child's description, or nullptr if not found. */
@@ -188,6 +186,8 @@ public:
188
186
 
189
187
  size_t stride() const { return fStride; }
190
188
 
189
+ SkColorSpace* colorSpace() const { return fColorSpace.get(); }
190
+
191
191
  private:
192
192
  friend struct SkMeshSpecificationPriv;
193
193
 
@@ -317,8 +317,6 @@ public:
317
317
  * If the mesh is invalid the returned string give contain the reason for the failure (e.g. the
318
318
  * vertex buffer was null or uniform data too small).
319
319
  */
320
-
321
- // TODO(b/40045302): support for `children` is a work-in-progress
322
320
  static Result Make(sk_sp<SkMeshSpecification>,
323
321
  Mode,
324
322
  sk_sp<VertexBuffer>,
@@ -334,8 +332,6 @@ public:
334
332
  * If the mesh is invalid the returned string give contain the reason for the failure (e.g. the
335
333
  * index buffer was null or uniform data too small).
336
334
  */
337
-
338
- // TODO(b/40045302): support for `children` is a work-in-progress
339
335
  static Result MakeIndexed(sk_sp<SkMeshSpecification>,
340
336
  Mode,
341
337
  sk_sp<VertexBuffer>,
@@ -383,7 +379,7 @@ private:
383
379
  sk_sp<IndexBuffer> fIB;
384
380
 
385
381
  sk_sp<const SkData> fUniforms;
386
- std::vector<ChildPtr> fChildren;
382
+ skia_private::STArray<2, ChildPtr> fChildren;
387
383
 
388
384
  size_t fVOffset = 0; // Must be a multiple of spec->stride()
389
385
  size_t fVCount = 0;
@@ -405,14 +401,14 @@ namespace SkMeshes {
405
401
  * @param data The data used to populate the buffer, or nullptr to create a zero-
406
402
  * initialized buffer.
407
403
  * @param size Both the size of the data in 'data' and the size of the resulting
408
- * buffer.
404
+ * buffer, in bytes.
409
405
  */
410
406
  SK_API sk_sp<SkMesh::IndexBuffer> MakeIndexBuffer(const void* data, size_t size);
411
407
 
412
408
  /**
413
409
  * Makes a copy of an index buffer. The copy will be CPU-backed.
414
410
  */
415
- SK_API sk_sp<SkMesh::IndexBuffer> CopyIndexBuffer(sk_sp<SkMesh::IndexBuffer>);
411
+ SK_API sk_sp<SkMesh::IndexBuffer> CopyIndexBuffer(const sk_sp<SkMesh::IndexBuffer>&);
416
412
 
417
413
  /**
418
414
  * Makes a CPU-backed vertex buffer to be used with SkMeshes.
@@ -420,14 +416,14 @@ SK_API sk_sp<SkMesh::IndexBuffer> CopyIndexBuffer(sk_sp<SkMesh::IndexBuffer>);
420
416
  * @param data The data used to populate the buffer, or nullptr to create a zero-
421
417
  * initialized buffer.
422
418
  * @param size Both the size of the data in 'data' and the size of the resulting
423
- * buffer.
419
+ * buffer, in bytes.
424
420
  */
425
421
  SK_API sk_sp<SkMesh::VertexBuffer> MakeVertexBuffer(const void*, size_t size);
426
422
 
427
423
  /**
428
424
  * Makes a copy of a vertex buffer. The copy will be CPU-backed.
429
425
  */
430
- SK_API sk_sp<SkMesh::VertexBuffer> CopyVertexBuffer(sk_sp<SkMesh::VertexBuffer>);
426
+ SK_API sk_sp<SkMesh::VertexBuffer> CopyVertexBuffer(const sk_sp<SkMesh::VertexBuffer>&);
431
427
  } // namespace SkMeshes
432
428
 
433
429
  #endif
@@ -5,5 +5,5 @@
5
5
  * found in the LICENSE file.
6
6
  */
7
7
  #ifndef SK_MILESTONE
8
- #define SK_MILESTONE 119
8
+ #define SK_MILESTONE 122
9
9
  #endif
@@ -79,6 +79,8 @@ public:
79
79
  void dump();
80
80
  #endif
81
81
 
82
+ const SkContourMeasure* currentMeasure() const { return fContour.get(); }
83
+
82
84
  private:
83
85
  SkContourMeasureIter fIter;
84
86
  sk_sp<SkContourMeasure> fContour;
@@ -12,12 +12,14 @@
12
12
  #include "include/private/base/SkAPI.h"
13
13
 
14
14
  #include <cstddef>
15
+ #include <optional>
15
16
 
16
17
  class SkData;
17
18
  class SkImage;
18
19
  class SkPicture;
19
20
  class SkTypeface;
20
21
  class SkReadBuffer;
22
+ enum SkAlphaType : int;
21
23
  namespace sktext::gpu {
22
24
  class Slug;
23
25
  }
@@ -48,10 +50,25 @@ using SkDeserialPictureProc = sk_sp<SkPicture> (*)(const void* data, size_t leng
48
50
  *
49
51
  * This will also be used to decode the internal mipmap layers that are saved on some images.
50
52
  *
51
- * Note that unlike SkDeserialPictureProc and SkDeserialTypefaceProc, return nullptr from this
52
- * does not indicate failure, but is a signal for Skia to take its default action.
53
+ * An explicit SkAlphaType may have been encoded in the bytestream; if not, then the passed in
54
+ * optional will be not present.
55
+ *
56
+ * Clients should set at least SkDeserialImageProc; SkDeserialImageFromDataProc may be called
57
+ * if the internal implementation has a SkData copy already. Implementations of SkDeserialImageProc
58
+ * must make a copy of any data they needed after the proc finishes, since the data will go away
59
+ * after serialization ends.
53
60
  */
61
+ #if !defined(SK_LEGACY_DESERIAL_IMAGE_PROC)
54
62
  using SkDeserialImageProc = sk_sp<SkImage> (*)(const void* data, size_t length, void* ctx);
63
+ #else
64
+ using SkDeserialImageProc = sk_sp<SkImage> (*)(const void* data,
65
+ size_t length,
66
+ std::optional<SkAlphaType>,
67
+ void* ctx);
68
+ #endif
69
+ using SkDeserialImageFromDataProc = sk_sp<SkImage> (*)(sk_sp<SkData>,
70
+ std::optional<SkAlphaType>,
71
+ void* ctx);
55
72
 
56
73
  /**
57
74
  * Slugs are currently only deserializable with a GPU backend. Clients will not be able to
@@ -78,22 +95,23 @@ struct SK_API SkSerialProcs {
78
95
  };
79
96
 
80
97
  struct SK_API SkDeserialProcs {
81
- SkDeserialPictureProc fPictureProc = nullptr;
82
- void* fPictureCtx = nullptr;
98
+ SkDeserialPictureProc fPictureProc = nullptr;
99
+ void* fPictureCtx = nullptr;
83
100
 
84
- SkDeserialImageProc fImageProc = nullptr;
85
- void* fImageCtx = nullptr;
101
+ SkDeserialImageProc fImageProc = nullptr;
102
+ SkDeserialImageFromDataProc fImageDataProc = nullptr;
103
+ void* fImageCtx = nullptr;
86
104
 
87
- SkSlugProc fSlugProc = nullptr;
88
- void* fSlugCtx = nullptr;
105
+ SkSlugProc fSlugProc = nullptr;
106
+ void* fSlugCtx = nullptr;
89
107
 
90
- SkDeserialTypefaceProc fTypefaceProc = nullptr;
91
- void* fTypefaceCtx = nullptr;
108
+ SkDeserialTypefaceProc fTypefaceProc = nullptr;
109
+ void* fTypefaceCtx = nullptr;
92
110
 
93
111
  // This looks like a flag, but it could be considered a proc as well (one that takes no
94
112
  // parameters and returns a bool). Given that there are only two valid implementations of that
95
113
  // proc, we just insert the bool directly.
96
- bool fAllowSkSL = true;
114
+ bool fAllowSkSL = true;
97
115
  };
98
116
 
99
117
  #endif
@@ -52,13 +52,13 @@ struct SkSize {
52
52
  SkScalar fWidth;
53
53
  SkScalar fHeight;
54
54
 
55
- static SkSize Make(SkScalar w, SkScalar h) { return {w, h}; }
55
+ static constexpr SkSize Make(SkScalar w, SkScalar h) { return {w, h}; }
56
56
 
57
- static SkSize Make(const SkISize& src) {
57
+ static constexpr SkSize Make(const SkISize& src) {
58
58
  return {SkIntToScalar(src.width()), SkIntToScalar(src.height())};
59
59
  }
60
60
 
61
- static SkSize MakeEmpty() { return {0, 0}; }
61
+ static constexpr SkSize MakeEmpty() { return {0, 0}; }
62
62
 
63
63
  void set(SkScalar w, SkScalar h) { *this = SkSize{w, h}; }
64
64
 
@@ -25,19 +25,6 @@ class SkStreamAsset;
25
25
  /**
26
26
  * SkStream -- abstraction for a source of bytes. Subclasses can be backed by
27
27
  * memory, or a file, or something else.
28
- *
29
- * NOTE:
30
- *
31
- * Classic "streams" APIs are sort of async, in that on a request for N
32
- * bytes, they may return fewer than N bytes on a given call, in which case
33
- * the caller can "try again" to get more bytes, eventually (modulo an error)
34
- * receiving their total N bytes.
35
- *
36
- * Skia streams behave differently. They are effectively synchronous, and will
37
- * always return all N bytes of the request if possible. If they return fewer
38
- * (the read() call returns the number of bytes read) then that means there is
39
- * no more data (at EOF or hit an error). The caller should *not* call again
40
- * in hopes of fulfilling more of the request.
41
28
  */
42
29
  class SK_API SkStream {
43
30
  public:
@@ -81,6 +68,9 @@ public:
81
68
  virtual size_t peek(void* /*buffer*/, size_t /*size*/) const { return 0; }
82
69
 
83
70
  /** Returns true when all the bytes in the stream have been read.
71
+ * As SkStream represents synchronous I/O, isAtEnd returns false when the
72
+ * final stream length isn't known yet, even when all the bytes available
73
+ * so far have been read.
84
74
  * This may return true early (when there are no more bytes to be read)
85
75
  * or late (after the first unsuccessful read).
86
76
  */
@@ -604,9 +604,12 @@ public:
604
604
  const SkSurfaceProps& props() const { return fProps; }
605
605
 
606
606
  /** Inserts a list of GPU semaphores that the current GPU-backed API must wait on before
607
- executing any more commands on the GPU for this surface. If this call returns false, then
608
- the GPU back-end will not wait on any passed in semaphores, and the client will still own
609
- the semaphores, regardless of the value of deleteSemaphoresAfterWait.
607
+ executing any more commands on the GPU for this surface. We only guarantee blocking
608
+ transfer and fragment shader work, but may block earlier stages as well depending on the
609
+ backend.
610
+ If this call returns false, then the GPU back-end will not wait on any passed in
611
+ semaphores, and the client will still own the semaphores, regardless of the value of
612
+ deleteSemaphoresAfterWait.
610
613
 
611
614
  If deleteSemaphoresAfterWait is false then Skia will not delete the semaphores. In this case
612
615
  it is the client's responsibility to not destroy or attempt to reuse the semaphores until it
@@ -59,15 +59,13 @@ public:
59
59
  // Currently this only impacts GPU backends
60
60
  kAlwaysDither_Flag = 1 << 2,
61
61
  };
62
- /** Deprecated alias used by Chromium. Will be removed. */
63
- static const Flags kUseDistanceFieldFonts_Flag = kUseDeviceIndependentFonts_Flag;
64
62
 
65
63
  /** No flags, unknown pixel geometry. */
66
64
  SkSurfaceProps();
67
65
  SkSurfaceProps(uint32_t flags, SkPixelGeometry);
68
66
 
69
- SkSurfaceProps(const SkSurfaceProps&);
70
- SkSurfaceProps& operator=(const SkSurfaceProps&);
67
+ SkSurfaceProps(const SkSurfaceProps&) = default;
68
+ SkSurfaceProps& operator=(const SkSurfaceProps&) = default;
71
69
 
72
70
  SkSurfaceProps cloneWithPixelGeometry(SkPixelGeometry newPixelGeometry) const {
73
71
  return SkSurfaceProps(fFlags, newPixelGeometry);
@@ -89,6 +89,21 @@ public:
89
89
  */
90
90
  virtual void dumpWrappedState(const char* /*dumpName*/, bool /*isWrappedObject*/) {}
91
91
 
92
+ /**
93
+ * Returns true if we should dump unbudgeted objects. Unbudgeted objects can either come from
94
+ * wrapped objects passed into Skia from the client or from Skia created objects currently held
95
+ * by the client in a public Skia object (e.g. SkSurface or SkImage). This call is only used
96
+ * when dumping Graphite memory statistics.
97
+ */
98
+ virtual bool shouldDumpUnbudgetedObjects() const { return true; }
99
+
100
+ /**
101
+ * If shouldDumpUnbudgetedObjects() returns true then this function will be called to populate
102
+ * the output with information on whether the item being dumped is budgeted. This call is only
103
+ * used when dumping Graphite memory statistics.
104
+ */
105
+ virtual void dumpBudgetedState(const char* /*dumpName*/, bool /*isBudgeted*/) {}
106
+
92
107
  protected:
93
108
  virtual ~SkTraceMemoryDump() = default;
94
109
  SkTraceMemoryDump() = default;