@shopify/react-native-skia 1.3.13 → 1.4.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (361) hide show
  1. package/android/CMakeLists.txt +9 -4
  2. package/android/cpp/rnskia-android/RNSkAndroidPlatformContext.h +6 -0
  3. package/android/cpp/rnskia-android/SkiaOpenGLSurfaceFactory.cpp +81 -0
  4. package/android/cpp/rnskia-android/SkiaOpenGLSurfaceFactory.h +40 -0
  5. package/cpp/api/JsiSkApi.h +2 -0
  6. package/cpp/api/JsiSkPath.h +29 -19
  7. package/cpp/api/JsiSkRuntimeEffect.h +7 -0
  8. package/cpp/api/JsiSkiaContext.h +79 -0
  9. package/cpp/rnskia/RNSkPlatformContext.h +4 -0
  10. package/cpp/rnskia/SkiaContext.h +22 -0
  11. package/cpp/skia/include/android/GrAHardwareBufferUtils.h +2 -2
  12. package/cpp/skia/include/android/SkImageAndroid.h +1 -1
  13. package/cpp/skia/include/android/SkSurfaceAndroid.h +1 -1
  14. package/cpp/skia/include/codec/SkAndroidCodec.h +13 -9
  15. package/cpp/skia/include/codec/SkCodec.h +28 -5
  16. package/cpp/skia/include/core/SkArc.h +69 -0
  17. package/cpp/skia/include/core/SkBitmap.h +10 -0
  18. package/cpp/skia/include/core/SkBlender.h +2 -3
  19. package/cpp/skia/include/core/SkCanvas.h +86 -16
  20. package/cpp/skia/include/core/SkCapabilities.h +0 -4
  21. package/cpp/skia/include/core/SkColorFilter.h +4 -4
  22. package/cpp/skia/include/core/SkColorPriv.h +5 -7
  23. package/cpp/skia/include/core/SkColorType.h +2 -0
  24. package/cpp/skia/include/core/SkFlattenable.h +1 -1
  25. package/cpp/skia/include/core/SkFontArguments.h +3 -1
  26. package/cpp/skia/include/core/SkFontParameters.h +3 -2
  27. package/cpp/skia/include/core/SkFourByteTag.h +19 -0
  28. package/cpp/skia/include/core/SkImage.h +41 -1
  29. package/cpp/skia/include/core/SkImageGenerator.h +0 -5
  30. package/cpp/skia/include/core/SkImageInfo.h +20 -0
  31. package/cpp/skia/include/core/SkM44.h +1 -1
  32. package/cpp/skia/include/core/SkMatrix.h +2 -1
  33. package/cpp/skia/include/core/SkMilestone.h +1 -1
  34. package/cpp/skia/include/core/SkPaint.h +1 -1
  35. package/cpp/skia/include/core/SkPath.h +20 -6
  36. package/cpp/skia/include/core/SkPathMeasure.h +1 -0
  37. package/cpp/skia/include/core/SkPicture.h +5 -5
  38. package/cpp/skia/include/core/SkPoint3.h +2 -12
  39. package/cpp/skia/include/core/SkRRect.h +5 -0
  40. package/cpp/skia/include/core/SkRect.h +5 -16
  41. package/cpp/skia/include/core/SkRefCnt.h +2 -0
  42. package/cpp/skia/include/core/SkScalar.h +20 -32
  43. package/cpp/skia/include/core/SkShader.h +17 -0
  44. package/cpp/skia/include/core/SkSize.h +2 -1
  45. package/cpp/skia/include/core/SkStream.h +2 -3
  46. package/cpp/skia/include/core/SkStrokeRec.h +6 -1
  47. package/cpp/skia/include/core/SkSurface.h +13 -4
  48. package/cpp/skia/include/core/SkSurfaceProps.h +5 -0
  49. package/cpp/skia/include/core/SkSwizzle.h +3 -1
  50. package/cpp/skia/include/core/SkTypeface.h +1 -0
  51. package/cpp/skia/include/core/SkTypes.h +1 -19
  52. package/cpp/skia/include/core/SkUnPreMultiply.h +4 -5
  53. package/cpp/skia/include/core/SkVertices.h +4 -2
  54. package/cpp/skia/include/docs/SkPDFDocument.h +11 -14
  55. package/cpp/skia/include/effects/SkHighContrastFilter.h +6 -6
  56. package/cpp/skia/include/effects/SkImageFilters.h +49 -23
  57. package/cpp/skia/include/effects/SkRuntimeEffect.h +51 -70
  58. package/cpp/skia/include/effects/SkShaderMaskFilter.h +2 -0
  59. package/cpp/skia/include/effects/SkTableMaskFilter.h +2 -0
  60. package/cpp/skia/include/gpu/GrBackendSemaphore.h +2 -120
  61. package/cpp/skia/include/gpu/GrBackendSurface.h +2 -466
  62. package/cpp/skia/include/gpu/GrContextOptions.h +2 -368
  63. package/cpp/skia/include/gpu/GrContextThreadSafeProxy.h +2 -179
  64. package/cpp/skia/include/gpu/GrDirectContext.h +2 -1011
  65. package/cpp/skia/include/gpu/GrDriverBugWorkarounds.h +2 -47
  66. package/cpp/skia/include/gpu/GrDriverBugWorkaroundsAutogen.h +2 -41
  67. package/cpp/skia/include/gpu/GrRecordingContext.h +2 -279
  68. package/cpp/skia/include/gpu/GrTypes.h +2 -238
  69. package/cpp/skia/include/gpu/GrYUVABackendTextures.h +2 -118
  70. package/cpp/skia/include/gpu/d3d/GrD3DBackendContext.h +2 -29
  71. package/cpp/skia/include/gpu/d3d/GrD3DTypes.h +2 -242
  72. package/cpp/skia/include/gpu/ganesh/GrBackendSemaphore.h +80 -0
  73. package/cpp/skia/include/gpu/ganesh/GrBackendSurface.h +412 -0
  74. package/cpp/skia/include/gpu/ganesh/GrContextOptions.h +386 -0
  75. package/cpp/skia/include/gpu/ganesh/GrContextThreadSafeProxy.h +175 -0
  76. package/cpp/skia/include/gpu/ganesh/GrDirectContext.h +993 -0
  77. package/cpp/skia/include/gpu/ganesh/GrDriverBugWorkarounds.h +53 -0
  78. package/cpp/skia/include/gpu/ganesh/GrDriverBugWorkaroundsAutogen.h +45 -0
  79. package/cpp/skia/include/gpu/ganesh/GrExternalTextureGenerator.h +1 -1
  80. package/cpp/skia/include/gpu/ganesh/GrRecordingContext.h +285 -0
  81. package/cpp/skia/include/gpu/ganesh/GrTypes.h +177 -0
  82. package/cpp/skia/include/gpu/ganesh/GrYUVABackendTextures.h +130 -0
  83. package/cpp/skia/include/gpu/ganesh/SkImageGanesh.h +1 -1
  84. package/cpp/skia/include/gpu/ganesh/SkSurfaceGanesh.h +1 -1
  85. package/cpp/skia/include/gpu/ganesh/d3d/GrD3DBackendContext.h +35 -0
  86. package/cpp/skia/include/gpu/ganesh/d3d/GrD3DTypes.h +248 -0
  87. package/cpp/skia/include/gpu/ganesh/gl/GrGLAssembleHelpers.h +17 -0
  88. package/cpp/skia/include/gpu/ganesh/gl/GrGLAssembleInterface.h +45 -0
  89. package/cpp/skia/include/gpu/ganesh/gl/GrGLBackendSurface.h +1 -1
  90. package/cpp/skia/include/gpu/ganesh/gl/GrGLConfig.h +69 -0
  91. package/cpp/skia/include/gpu/ganesh/gl/GrGLExtensions.h +79 -0
  92. package/cpp/skia/include/gpu/ganesh/gl/GrGLFunctions.h +306 -0
  93. package/cpp/skia/include/gpu/ganesh/gl/GrGLInterface.h +338 -0
  94. package/cpp/skia/include/gpu/ganesh/gl/GrGLMakeWebGLInterface.h +19 -0
  95. package/cpp/skia/include/gpu/ganesh/gl/GrGLTypes.h +219 -0
  96. package/cpp/skia/include/gpu/{gl → ganesh/gl}/egl/GrGLMakeEGLInterface.h +2 -2
  97. package/cpp/skia/include/gpu/ganesh/gl/epoxy/GrGLMakeEpoxyEGLInterface.h +20 -0
  98. package/cpp/skia/include/gpu/ganesh/gl/ios/GrGLMakeIOSInterface.h +20 -0
  99. package/cpp/skia/include/gpu/ganesh/gl/mac/GrGLMakeMacInterface.h +20 -0
  100. package/cpp/skia/include/gpu/ganesh/gl/win/GrGLMakeWinInterface.h +20 -0
  101. package/cpp/skia/include/gpu/ganesh/mock/GrMockTypes.h +166 -0
  102. package/cpp/skia/include/gpu/{mtl → ganesh/mtl}/GrMtlBackendContext.h +2 -2
  103. package/cpp/skia/include/gpu/ganesh/mtl/GrMtlBackendSemaphore.h +23 -0
  104. package/cpp/skia/include/gpu/ganesh/mtl/GrMtlBackendSurface.h +44 -0
  105. package/cpp/skia/include/gpu/ganesh/mtl/GrMtlDirectContext.h +30 -0
  106. package/cpp/skia/include/gpu/{mtl → ganesh/mtl}/GrMtlTypes.h +1 -3
  107. package/cpp/skia/include/gpu/ganesh/mtl/SkSurfaceMetal.h +2 -2
  108. package/cpp/skia/include/gpu/ganesh/vk/GrBackendDrawableInfo.h +2 -2
  109. package/cpp/skia/include/gpu/ganesh/vk/GrVkBackendSemaphore.h +1 -1
  110. package/cpp/skia/include/gpu/ganesh/vk/GrVkBackendSurface.h +7 -3
  111. package/cpp/skia/include/gpu/ganesh/vk/GrVkDirectContext.h +6 -3
  112. package/cpp/skia/include/gpu/ganesh/vk/GrVkTypes.h +101 -0
  113. package/cpp/skia/include/gpu/gl/GrGLAssembleHelpers.h +2 -9
  114. package/cpp/skia/include/gpu/gl/GrGLAssembleInterface.h +2 -38
  115. package/cpp/skia/include/gpu/gl/GrGLConfig.h +2 -73
  116. package/cpp/skia/include/gpu/gl/GrGLExtensions.h +2 -72
  117. package/cpp/skia/include/gpu/gl/GrGLFunctions.h +2 -301
  118. package/cpp/skia/include/gpu/gl/GrGLInterface.h +2 -332
  119. package/cpp/skia/include/gpu/gl/GrGLTypes.h +2 -213
  120. package/cpp/skia/include/gpu/graphite/BackendSemaphore.h +20 -41
  121. package/cpp/skia/include/gpu/graphite/BackendTexture.h +18 -118
  122. package/cpp/skia/include/gpu/graphite/Context.h +122 -44
  123. package/cpp/skia/include/gpu/graphite/ContextOptions.h +30 -3
  124. package/cpp/skia/include/gpu/graphite/GraphiteTypes.h +45 -17
  125. package/cpp/skia/include/gpu/graphite/Image.h +56 -54
  126. package/cpp/skia/include/gpu/graphite/Recorder.h +68 -14
  127. package/cpp/skia/include/gpu/graphite/Recording.h +3 -3
  128. package/cpp/skia/include/gpu/graphite/Surface.h +6 -2
  129. package/cpp/skia/include/gpu/graphite/TextureInfo.h +36 -117
  130. package/cpp/skia/include/gpu/graphite/dawn/DawnTypes.h +108 -6
  131. package/cpp/skia/include/gpu/graphite/mtl/MtlBackendContext.h +4 -1
  132. package/cpp/skia/include/gpu/graphite/mtl/MtlGraphiteTypes.h +41 -25
  133. package/cpp/skia/include/gpu/graphite/precompile/PaintOptions.h +197 -0
  134. package/cpp/skia/include/gpu/graphite/precompile/Precompile.h +48 -0
  135. package/cpp/skia/include/gpu/graphite/precompile/PrecompileBase.h +84 -0
  136. package/cpp/skia/include/gpu/graphite/precompile/PrecompileBlender.h +56 -0
  137. package/cpp/skia/include/gpu/graphite/precompile/PrecompileColorFilter.h +85 -0
  138. package/cpp/skia/include/gpu/graphite/precompile/PrecompileImageFilter.h +119 -0
  139. package/cpp/skia/include/gpu/graphite/precompile/PrecompileMaskFilter.h +51 -0
  140. package/cpp/skia/include/gpu/graphite/precompile/PrecompileRuntimeEffect.h +47 -0
  141. package/cpp/skia/include/gpu/graphite/precompile/PrecompileShader.h +170 -0
  142. package/cpp/skia/include/gpu/graphite/vk/VulkanGraphiteTypes.h +24 -2
  143. package/cpp/skia/include/gpu/mock/GrMockTypes.h +2 -157
  144. package/cpp/skia/include/gpu/mtl/MtlMemoryAllocator.h +2 -0
  145. package/cpp/skia/include/gpu/vk/GrVkTypes.h +2 -101
  146. package/cpp/skia/include/gpu/vk/VulkanBackendContext.h +13 -8
  147. package/cpp/skia/include/gpu/vk/VulkanExtensions.h +9 -3
  148. package/cpp/skia/include/gpu/vk/VulkanMemoryAllocator.h +4 -1
  149. package/cpp/skia/include/gpu/vk/VulkanTypes.h +25 -8
  150. package/cpp/skia/include/ports/SkFontMgr_Fontations.h +20 -0
  151. package/cpp/skia/include/ports/SkFontMgr_android.h +7 -0
  152. package/cpp/skia/include/ports/SkImageGeneratorCG.h +3 -1
  153. package/cpp/skia/include/ports/SkTypeface_win.h +0 -17
  154. package/cpp/skia/include/private/SkEncodedInfo.h +8 -2
  155. package/cpp/skia/include/private/SkExif.h +28 -75
  156. package/cpp/skia/include/private/SkGainmapInfo.h +47 -7
  157. package/cpp/skia/include/private/SkJpegMetadataDecoder.h +12 -0
  158. package/cpp/skia/include/private/SkPathRef.h +52 -44
  159. package/cpp/skia/include/private/SkXmp.h +13 -4
  160. package/cpp/skia/include/private/base/SkASAN.h +56 -0
  161. package/cpp/skia/include/private/base/SkAlign.h +5 -0
  162. package/cpp/skia/include/private/base/SkContainers.h +10 -2
  163. package/cpp/skia/include/private/base/SkFeatures.h +22 -1
  164. package/cpp/skia/include/private/base/SkFloatingPoint.h +51 -65
  165. package/cpp/skia/include/private/base/SkMacros.h +67 -0
  166. package/cpp/skia/include/private/base/SkMalloc.h +8 -0
  167. package/cpp/skia/include/private/base/SkPoint_impl.h +2 -11
  168. package/cpp/skia/include/private/base/SkTArray.h +108 -23
  169. package/cpp/skia/include/private/base/SkTFitsIn.h +1 -12
  170. package/cpp/skia/include/private/chromium/GrDeferredDisplayList.h +1 -1
  171. package/cpp/skia/include/private/chromium/GrDeferredDisplayListRecorder.h +0 -39
  172. package/cpp/skia/include/private/chromium/GrPromiseImageTexture.h +1 -1
  173. package/cpp/skia/include/private/chromium/GrSurfaceCharacterization.h +3 -3
  174. package/cpp/skia/include/private/chromium/SkChromeRemoteGlyphCache.h +1 -4
  175. package/cpp/skia/include/private/chromium/Slug.h +5 -11
  176. package/cpp/skia/include/private/gpu/ganesh/GrContext_Base.h +1 -1
  177. package/cpp/skia/include/private/gpu/ganesh/GrD3DTypesMinimal.h +2 -2
  178. package/cpp/skia/include/private/gpu/ganesh/GrTextureGenerator.h +1 -1
  179. package/cpp/skia/include/private/gpu/ganesh/GrTypesPriv.h +21 -93
  180. package/cpp/skia/include/private/gpu/vk/SkiaVulkan.h +2 -2
  181. package/cpp/skia/include/utils/SkCustomTypeface.h +1 -0
  182. package/cpp/skia/include/utils/SkNWayCanvas.h +1 -1
  183. package/cpp/skia/include/utils/SkParse.h +0 -1
  184. package/cpp/skia/modules/skcms/src/Transform_inl.h +59 -56
  185. package/cpp/skia/modules/skcms/src/skcms_Transform.h +3 -0
  186. package/cpp/skia/modules/skcms/src/skcms_internals.h +2 -0
  187. package/cpp/skia/modules/skcms/src/skcms_public.h +46 -14
  188. package/cpp/skia/modules/skparagraph/include/ParagraphBuilder.h +15 -1
  189. package/cpp/skia/modules/skparagraph/include/TextStyle.h +2 -2
  190. package/cpp/skia/modules/skparagraph/include/TypefaceFontProvider.h +2 -4
  191. package/cpp/skia/modules/skresources/include/SkResources.h +1 -1
  192. package/cpp/skia/modules/skshaper/include/SkShaper.h +316 -0
  193. package/cpp/skia/modules/skshaper/include/SkShaper_coretext.h +19 -0
  194. package/cpp/skia/modules/skshaper/include/SkShaper_factory.h +41 -0
  195. package/cpp/skia/modules/skshaper/include/SkShaper_harfbuzz.h +39 -0
  196. package/cpp/skia/modules/skshaper/include/SkShaper_skunicode.h +28 -0
  197. package/cpp/skia/modules/skunicode/include/SkUnicode.h +6 -23
  198. package/cpp/skia/modules/svg/include/SkSVGAttribute.h +0 -3
  199. package/cpp/skia/modules/svg/include/SkSVGAttributeParser.h +12 -2
  200. package/cpp/skia/modules/svg/include/SkSVGCircle.h +13 -0
  201. package/cpp/skia/modules/svg/include/SkSVGClipPath.h +6 -0
  202. package/cpp/skia/modules/svg/include/SkSVGContainer.h +17 -1
  203. package/cpp/skia/modules/svg/include/SkSVGDOM.h +25 -15
  204. package/cpp/skia/modules/svg/include/SkSVGEllipse.h +13 -2
  205. package/cpp/skia/modules/svg/include/SkSVGFe.h +11 -2
  206. package/cpp/skia/modules/svg/include/SkSVGFeBlend.h +9 -0
  207. package/cpp/skia/modules/svg/include/SkSVGFeColorMatrix.h +9 -0
  208. package/cpp/skia/modules/svg/include/SkSVGFeComponentTransfer.h +82 -0
  209. package/cpp/skia/modules/svg/include/SkSVGFeComposite.h +10 -1
  210. package/cpp/skia/modules/svg/include/SkSVGFeDisplacementMap.h +10 -0
  211. package/cpp/skia/modules/svg/include/SkSVGFeFlood.h +10 -0
  212. package/cpp/skia/modules/svg/include/SkSVGFeGaussianBlur.h +9 -0
  213. package/cpp/skia/modules/svg/include/SkSVGFeImage.h +9 -0
  214. package/cpp/skia/modules/svg/include/SkSVGFeLightSource.h +5 -0
  215. package/cpp/skia/modules/svg/include/SkSVGFeLighting.h +11 -0
  216. package/cpp/skia/modules/svg/include/SkSVGFeMerge.h +63 -0
  217. package/cpp/skia/modules/svg/include/SkSVGFeMorphology.h +8 -0
  218. package/cpp/skia/modules/svg/include/SkSVGFeOffset.h +9 -0
  219. package/cpp/skia/modules/svg/include/SkSVGFeTurbulence.h +9 -0
  220. package/cpp/skia/modules/svg/include/SkSVGFilter.h +9 -0
  221. package/cpp/skia/modules/svg/include/SkSVGFilterContext.h +3 -3
  222. package/cpp/skia/modules/svg/include/SkSVGGradient.h +10 -2
  223. package/cpp/skia/modules/svg/include/SkSVGImage.h +9 -0
  224. package/cpp/skia/modules/svg/include/SkSVGLine.h +11 -0
  225. package/cpp/skia/modules/svg/include/SkSVGLinearGradient.h +10 -0
  226. package/cpp/skia/modules/svg/include/SkSVGMask.h +6 -0
  227. package/cpp/skia/modules/svg/include/SkSVGNode.h +13 -2
  228. package/cpp/skia/modules/svg/include/SkSVGOpenTypeSVGDecoder.h +5 -0
  229. package/cpp/skia/modules/svg/include/SkSVGPath.h +10 -0
  230. package/cpp/skia/modules/svg/include/SkSVGPattern.h +5 -0
  231. package/cpp/skia/modules/svg/include/SkSVGPoly.h +11 -0
  232. package/cpp/skia/modules/svg/include/SkSVGRadialGradient.h +11 -0
  233. package/cpp/skia/modules/svg/include/SkSVGRect.h +11 -0
  234. package/cpp/skia/modules/svg/include/SkSVGRenderContext.h +43 -7
  235. package/cpp/skia/modules/svg/include/SkSVGSVG.h +7 -0
  236. package/cpp/skia/modules/svg/include/SkSVGShape.h +8 -2
  237. package/cpp/skia/modules/svg/include/SkSVGStop.h +5 -3
  238. package/cpp/skia/modules/svg/include/SkSVGText.h +8 -2
  239. package/cpp/skia/modules/svg/include/SkSVGTransformableNode.h +8 -0
  240. package/cpp/skia/modules/svg/include/SkSVGTypes.h +9 -0
  241. package/cpp/skia/modules/svg/include/SkSVGUse.h +7 -0
  242. package/cpp/skia/src/base/SkMathPriv.h +337 -0
  243. package/cpp/skia/src/base/SkTLazy.h +208 -0
  244. package/cpp/skia/src/core/SkTHash.h +58 -7
  245. package/cpp/skia/src/gpu/ganesh/gl/GrGLDefines.h +3 -0
  246. package/ios/RNSkia-iOS/RNSkiOSPlatformContext.h +3 -0
  247. package/ios/RNSkia-iOS/RNSkiOSPlatformContext.mm +7 -0
  248. package/ios/RNSkia-iOS/SkiaCVPixelBufferUtils.mm +7 -2
  249. package/ios/RNSkia-iOS/SkiaMetalSurfaceFactory.h +78 -0
  250. package/ios/RNSkia-iOS/SkiaMetalSurfaceFactory.mm +20 -4
  251. package/lib/commonjs/renderer/HostConfig.js.map +1 -1
  252. package/lib/commonjs/skia/types/Paragraph/TextStyle.d.ts +2 -2
  253. package/lib/commonjs/skia/types/Paragraph/TextStyle.js.map +1 -1
  254. package/lib/commonjs/skia/types/Skia.d.ts +6 -1
  255. package/lib/commonjs/skia/types/Skia.js.map +1 -1
  256. package/lib/commonjs/skia/web/JsiSkia.js +4 -1
  257. package/lib/commonjs/skia/web/JsiSkia.js.map +1 -1
  258. package/lib/commonjs/web/WithSkiaWeb.d.ts +11 -4
  259. package/lib/commonjs/web/WithSkiaWeb.js +3 -2
  260. package/lib/commonjs/web/WithSkiaWeb.js.map +1 -1
  261. package/lib/module/renderer/HostConfig.js.map +1 -1
  262. package/lib/module/skia/types/Paragraph/TextStyle.d.ts +2 -2
  263. package/lib/module/skia/types/Paragraph/TextStyle.js.map +1 -1
  264. package/lib/module/skia/types/Skia.d.ts +6 -1
  265. package/lib/module/skia/types/Skia.js.map +1 -1
  266. package/lib/module/skia/web/JsiSkia.js +4 -1
  267. package/lib/module/skia/web/JsiSkia.js.map +1 -1
  268. package/lib/module/web/WithSkiaWeb.d.ts +11 -4
  269. package/lib/module/web/WithSkiaWeb.js +3 -2
  270. package/lib/module/web/WithSkiaWeb.js.map +1 -1
  271. package/lib/typescript/lib/commonjs/skia/web/JsiSkia.d.ts +1 -0
  272. package/lib/typescript/lib/commonjs/web/WithSkiaWeb.d.ts +2 -1
  273. package/lib/typescript/lib/module/skia/Skia.web.d.ts +1 -0
  274. package/lib/typescript/lib/module/skia/web/JsiSkia.d.ts +1 -0
  275. package/lib/typescript/lib/module/web/WithSkiaWeb.d.ts +2 -1
  276. package/lib/typescript/src/skia/types/Paragraph/TextStyle.d.ts +2 -2
  277. package/lib/typescript/src/skia/types/Skia.d.ts +6 -1
  278. package/lib/typescript/src/web/WithSkiaWeb.d.ts +11 -4
  279. package/libs/android/arm64-v8a/libskia.a +0 -0
  280. package/libs/android/arm64-v8a/libskottie.a +0 -0
  281. package/libs/android/arm64-v8a/libskparagraph.a +0 -0
  282. package/libs/android/arm64-v8a/libsksg.a +0 -0
  283. package/libs/android/arm64-v8a/libskshaper.a +0 -0
  284. package/libs/android/arm64-v8a/libskunicode_core.a +0 -0
  285. package/libs/android/arm64-v8a/libskunicode_icu.a +0 -0
  286. package/libs/android/arm64-v8a/libsvg.a +0 -0
  287. package/libs/android/armeabi-v7a/libskia.a +0 -0
  288. package/libs/android/armeabi-v7a/libskottie.a +0 -0
  289. package/libs/android/armeabi-v7a/libskparagraph.a +0 -0
  290. package/libs/android/armeabi-v7a/libsksg.a +0 -0
  291. package/libs/android/armeabi-v7a/libskshaper.a +0 -0
  292. package/libs/android/armeabi-v7a/libskunicode_core.a +0 -0
  293. package/libs/android/armeabi-v7a/libskunicode_icu.a +0 -0
  294. package/libs/android/armeabi-v7a/libsvg.a +0 -0
  295. package/libs/android/x86/libskia.a +0 -0
  296. package/libs/android/x86/libskottie.a +0 -0
  297. package/libs/android/x86/libskparagraph.a +0 -0
  298. package/libs/android/x86/libsksg.a +0 -0
  299. package/libs/android/x86/libskshaper.a +0 -0
  300. package/libs/android/x86/libskunicode_core.a +0 -0
  301. package/libs/android/x86/libskunicode_icu.a +0 -0
  302. package/libs/android/x86/libsvg.a +0 -0
  303. package/libs/android/x86_64/libskia.a +0 -0
  304. package/libs/android/x86_64/libskottie.a +0 -0
  305. package/libs/android/x86_64/libskparagraph.a +0 -0
  306. package/libs/android/x86_64/libsksg.a +0 -0
  307. package/libs/android/x86_64/libskshaper.a +0 -0
  308. package/libs/android/x86_64/libskunicode_core.a +0 -0
  309. package/libs/android/x86_64/libskunicode_icu.a +0 -0
  310. package/libs/android/x86_64/libsvg.a +0 -0
  311. package/libs/ios/libskia.xcframework/Info.plist +5 -5
  312. package/libs/ios/libskia.xcframework/ios-arm64_arm64e/libskia.a +0 -0
  313. package/libs/ios/libskia.xcframework/ios-arm64_arm64e_x86_64-simulator/libskia.a +0 -0
  314. package/libs/ios/libskottie.xcframework/Info.plist +5 -5
  315. package/libs/ios/libskottie.xcframework/ios-arm64_arm64e/libskottie.a +0 -0
  316. package/libs/ios/libskottie.xcframework/ios-arm64_arm64e_x86_64-simulator/libskottie.a +0 -0
  317. package/libs/ios/libskparagraph.xcframework/ios-arm64_arm64e/libskparagraph.a +0 -0
  318. package/libs/ios/libskparagraph.xcframework/ios-arm64_arm64e_x86_64-simulator/libskparagraph.a +0 -0
  319. package/libs/ios/libsksg.xcframework/Info.plist +5 -5
  320. package/libs/ios/libsksg.xcframework/ios-arm64_arm64e/libsksg.a +0 -0
  321. package/libs/ios/libsksg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsksg.a +0 -0
  322. package/libs/ios/libskshaper.xcframework/ios-arm64_arm64e/libskshaper.a +0 -0
  323. package/libs/ios/libskshaper.xcframework/ios-arm64_arm64e_x86_64-simulator/libskshaper.a +0 -0
  324. package/libs/ios/libsvg.xcframework/Info.plist +5 -5
  325. package/libs/ios/libsvg.xcframework/ios-arm64_arm64e/libsvg.a +0 -0
  326. package/libs/ios/libsvg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsvg.a +0 -0
  327. package/package.json +3 -5
  328. package/react-native-skia.podspec +2 -1
  329. package/src/renderer/HostConfig.ts +5 -1
  330. package/src/renderer/__tests__/e2e/ImageFilters.spec.tsx +5 -2
  331. package/src/renderer/__tests__/e2e/Paths.spec.tsx +12 -5
  332. package/src/renderer/__tests__/e2e/SDF.spec.tsx +1 -1
  333. package/src/renderer/__tests__/e2e/Snapshot.spec.tsx +1 -1
  334. package/src/skia/types/Paragraph/TextStyle.ts +2 -2
  335. package/src/skia/types/Skia.ts +7 -1
  336. package/src/skia/web/JsiSkia.ts +3 -0
  337. package/src/web/WithSkiaWeb.tsx +17 -6
  338. package/cpp/skia/include/core/SkDrawLooper.h +0 -135
  339. package/cpp/skia/include/effects/SkBlurDrawLooper.h +0 -26
  340. package/cpp/skia/include/effects/SkLayerDrawLooper.h +0 -161
  341. package/cpp/skia/include/gpu/gl/GrGLConfig_chrome.h +0 -14
  342. package/cpp/skia/include/gpu/vk/GrVkBackendContext.h +0 -84
  343. package/cpp/skia/include/gpu/vk/GrVkExtensions.h +0 -15
  344. package/cpp/skia/include/gpu/vk/GrVkMemoryAllocator.h +0 -15
  345. package/cpp/skia/include/ports/SkFontMgr_indirect.h +0 -102
  346. package/cpp/skia/include/ports/SkRemotableFontMgr.h +0 -139
  347. package/cpp/skia/include/private/base/SkFloatBits.h +0 -90
  348. package/cpp/skia/include/private/gpu/graphite/ContextOptionsPriv.h +0 -69
  349. package/cpp/skia/include/private/gpu/graphite/DawnTypesPriv.h +0 -54
  350. package/cpp/skia/include/private/gpu/graphite/MtlGraphiteTypesPriv.h +0 -95
  351. package/cpp/skia/include/private/gpu/graphite/VulkanGraphiteTypesPriv.h +0 -83
  352. package/cpp/skia/src/core/SkPathEnums.h +0 -25
  353. package/cpp/skia/src/core/SkPathPriv.h +0 -540
  354. package/libs/android/arm64-v8a/libskunicode.a +0 -0
  355. package/libs/android/armeabi-v7a/libskunicode.a +0 -0
  356. package/libs/android/x86/libskunicode.a +0 -0
  357. package/libs/android/x86_64/libskunicode.a +0 -0
  358. package/libs/ios/libskunicode.xcframework/Info.plist +0 -46
  359. package/libs/ios/libskunicode.xcframework/ios-arm64_arm64e/libskunicode.a +0 -0
  360. package/libs/ios/libskunicode.xcframework/ios-arm64_arm64e_x86_64-simulator/libskunicode.a +0 -0
  361. /package/cpp/skia/include/gpu/{gl → ganesh/gl}/glx/GrGLMakeGLXInterface.h +0 -0
@@ -12,9 +12,8 @@
12
12
  #include "include/core/SkFlattenable.h"
13
13
 
14
14
  /**
15
- * SkBlender represents a custom blend function in the Skia pipeline. When an SkBlender is
16
- * present in a paint, the SkBlendMode is ignored. A blender combines a source color (the
17
- * result of our paint) and destination color (from the canvas) into a final color.
15
+ * SkBlender represents a custom blend function in the Skia pipeline. A blender combines a source
16
+ * color (the result of our paint) and destination color (from the canvas) into a final color.
18
17
  */
19
18
  class SK_API SkBlender : public SkFlattenable {
20
19
  public:
@@ -8,6 +8,7 @@
8
8
  #ifndef SkCanvas_DEFINED
9
9
  #define SkCanvas_DEFINED
10
10
 
11
+ #include "include/core/SkArc.h"
11
12
  #include "include/core/SkBlendMode.h"
12
13
  #include "include/core/SkClipOp.h"
13
14
  #include "include/core/SkColor.h"
@@ -51,6 +52,7 @@ class GrRecordingContext;
51
52
 
52
53
  class SkBitmap;
53
54
  class SkBlender;
55
+ class SkColorSpace;
54
56
  class SkData;
55
57
  class SkDevice;
56
58
  class SkDrawable;
@@ -78,6 +80,10 @@ class SkEnumBitMask;
78
80
  namespace skgpu::graphite { class Recorder; }
79
81
  namespace sktext::gpu { class Slug; }
80
82
  namespace SkRecords { class Draw; }
83
+ namespace skiatest {
84
+ template <typename Key>
85
+ class TestCanvas;// IWYU pragma: keep
86
+ }
81
87
 
82
88
  /** \class SkCanvas
83
89
  SkCanvas provides an interface for drawing, and how the drawing is clipped and transformed.
@@ -694,7 +700,7 @@ public:
694
700
  @return SaveLayerRec with empty fBackdrop
695
701
  */
696
702
  SaveLayerRec(const SkRect* bounds, const SkPaint* paint, SaveLayerFlags saveLayerFlags = 0)
697
- : SaveLayerRec(bounds, paint, nullptr, 1.f, saveLayerFlags, /*filters=*/{}) {}
703
+ : SaveLayerRec(bounds, paint, nullptr, nullptr, 1.f, saveLayerFlags, /*filters=*/{}) {}
698
704
 
699
705
  /** Sets fBounds, fPaint, fBackdrop, and fSaveLayerFlags.
700
706
 
@@ -710,7 +716,29 @@ public:
710
716
  */
711
717
  SaveLayerRec(const SkRect* bounds, const SkPaint* paint, const SkImageFilter* backdrop,
712
718
  SaveLayerFlags saveLayerFlags)
713
- : SaveLayerRec(bounds, paint, backdrop, 1.f, saveLayerFlags, /*filters=*/{}) {}
719
+ : SaveLayerRec(bounds, paint, backdrop, nullptr, 1.f, saveLayerFlags, /*filters=*/{}) {}
720
+
721
+ /** Sets fBounds, fColorSpace, and fSaveLayerFlags.
722
+
723
+ @param bounds layer dimensions; may be nullptr
724
+ @param paint applied to layer when overlaying prior layer;
725
+ may be nullptr
726
+ @param backdrop If not null, this causes the current layer to be filtered by
727
+ backdrop, and then drawn into the new layer
728
+ (respecting the current clip).
729
+ If null, the new layer is initialized with transparent-black.
730
+ @param colorSpace If not null, when the layer is restored, a color space
731
+ conversion will be applied from this color space to the
732
+ parent's color space. The restore paint and backdrop filters will
733
+ be applied in this color space.
734
+ If null, the new layer will inherit the color space from its
735
+ parent.
736
+ @param saveLayerFlags SaveLayerRec options to modify layer
737
+ @return SaveLayerRec fully specified
738
+ */
739
+ SaveLayerRec(const SkRect* bounds, const SkPaint* paint, const SkImageFilter* backdrop,
740
+ const SkColorSpace* colorSpace, SaveLayerFlags saveLayerFlags)
741
+ : SaveLayerRec(bounds, paint, backdrop, colorSpace, 1.f, saveLayerFlags, /*filters=*/{}) {}
714
742
 
715
743
  /** hints at layer size limit */
716
744
  const SkRect* fBounds = nullptr;
@@ -728,6 +756,13 @@ public:
728
756
  */
729
757
  const SkImageFilter* fBackdrop = nullptr;
730
758
 
759
+ /**
760
+ * If not null, this triggers a color space conversion when the layer is restored. It
761
+ * will be as if the layer's contents are drawn in this color space. Filters from
762
+ * fBackdrop and fPaint will be applied in this color space.
763
+ */
764
+ const SkColorSpace* fColorSpace = nullptr;
765
+
731
766
  /** preserves LCD text, creates with prior layer contents */
732
767
  SaveLayerFlags fSaveLayerFlags = 0;
733
768
 
@@ -738,6 +773,7 @@ public:
738
773
  SaveLayerRec(const SkRect* bounds,
739
774
  const SkPaint* paint,
740
775
  const SkImageFilter* backdrop,
776
+ const SkColorSpace* colorSpace,
741
777
  SkScalar backdropScale,
742
778
  SaveLayerFlags saveLayerFlags,
743
779
  FilterSpan filters)
@@ -745,6 +781,7 @@ public:
745
781
  , fPaint(paint)
746
782
  , fFilters(filters)
747
783
  , fBackdrop(backdrop)
784
+ , fColorSpace(colorSpace)
748
785
  , fSaveLayerFlags(saveLayerFlags)
749
786
  , fExperimentalBackdropScale(backdropScale) {
750
787
  // We only allow the paint's image filter or the side-car list of filters -- not both.
@@ -1436,6 +1473,27 @@ public:
1436
1473
  void drawArc(const SkRect& oval, SkScalar startAngle, SkScalar sweepAngle,
1437
1474
  bool useCenter, const SkPaint& paint);
1438
1475
 
1476
+ /** Draws arc using clip, SkMatrix, and SkPaint paint.
1477
+
1478
+ Arc is part of oval bounded by oval, sweeping from startAngle to startAngle plus
1479
+ sweepAngle. startAngle and sweepAngle are in degrees.
1480
+
1481
+ startAngle of zero places start point at the right middle edge of oval.
1482
+ A positive sweepAngle places arc end point clockwise from start point;
1483
+ a negative sweepAngle places arc end point counterclockwise from start point.
1484
+ sweepAngle may exceed 360 degrees, a full circle.
1485
+ If useCenter is true, draw a wedge that includes lines from oval
1486
+ center to arc end points. If useCenter is false, draw arc between end points.
1487
+
1488
+ If SkRect oval is empty or sweepAngle is zero, nothing is drawn.
1489
+
1490
+ @param arc SkArc specifying oval, startAngle, sweepAngle, and arc-vs-wedge
1491
+ @param paint SkPaint stroke or fill, blend, color, and so on, used to draw
1492
+ */
1493
+ void drawArc(const SkArc& arc, const SkPaint& paint) {
1494
+ this->drawArc(arc.fOval, arc.fStartAngle, arc.fSweepAngle, arc.isWedge(), paint);
1495
+ }
1496
+
1439
1497
  /** Draws SkRRect bounded by SkRect rect, with corner radii (rx, ry) using clip,
1440
1498
  SkMatrix, and SkPaint paint.
1441
1499
 
@@ -2299,7 +2357,7 @@ protected:
2299
2357
 
2300
2358
  /**
2301
2359
  */
2302
- virtual void onDrawSlug(const sktext::gpu::Slug* slug);
2360
+ virtual void onDrawSlug(const sktext::gpu::Slug* slug, const SkPaint& paint);
2303
2361
 
2304
2362
  private:
2305
2363
  enum class PredrawFlags : unsigned {
@@ -2351,10 +2409,15 @@ private:
2351
2409
  bool fIsCoverage;
2352
2410
  bool fDiscard;
2353
2411
 
2412
+ // If true, the layer image is sized to include a 1px buffer that remains transparent
2413
+ // to allow for faster linear filtering under complex transforms.
2414
+ bool fIncludesPadding;
2415
+
2354
2416
  Layer(sk_sp<SkDevice> device,
2355
2417
  FilterSpan imageFilters,
2356
2418
  const SkPaint& paint,
2357
- bool isCoverage);
2419
+ bool isCoverage,
2420
+ bool includesPadding);
2358
2421
  };
2359
2422
 
2360
2423
  // Encapsulate state needed to restore from saveBehind()
@@ -2392,7 +2455,8 @@ private:
2392
2455
  void newLayer(sk_sp<SkDevice> layerDevice,
2393
2456
  FilterSpan filters,
2394
2457
  const SkPaint& restorePaint,
2395
- bool layerIsCoverage);
2458
+ bool layerIsCoverage,
2459
+ bool includesPadding);
2396
2460
 
2397
2461
  void reset(SkDevice* device);
2398
2462
  };
@@ -2441,7 +2505,7 @@ private:
2441
2505
  friend class SkRasterHandleAllocator;
2442
2506
  friend class SkRecords::Draw;
2443
2507
  template <typename Key>
2444
- friend class SkTestCanvas;
2508
+ friend class skiatest::TestCanvas;
2445
2509
 
2446
2510
  protected:
2447
2511
  // For use by SkNoDrawCanvas (via SkCanvasVirtualEnforcer, which can't be a friend)
@@ -2466,7 +2530,7 @@ private:
2466
2530
  /**
2467
2531
  * Draw an sktext::gpu::Slug given the current canvas state.
2468
2532
  */
2469
- void drawSlug(const sktext::gpu::Slug* slug);
2533
+ void drawSlug(const sktext::gpu::Slug* slug, const SkPaint& paint);
2470
2534
 
2471
2535
  /** Experimental
2472
2536
  * Saves the specified subset of the current pixels in the current layer,
@@ -2506,13 +2570,16 @@ private:
2506
2570
  void internalSave();
2507
2571
  void internalRestore();
2508
2572
 
2509
- enum class DeviceCompatibleWithFilter : bool {
2573
+ enum class DeviceCompatibleWithFilter : int {
2510
2574
  // Check the src device's local-to-device matrix for compatibility with the filter, and if
2511
2575
  // it is not compatible, introduce an intermediate image and transformation that allows the
2512
2576
  // filter to be evaluated on the modified src content.
2513
- kUnknown = false,
2577
+ kUnknown,
2514
2578
  // Assume that the src device's local-to-device matrix is compatible with the filter.
2515
- kYes = true
2579
+ kYes,
2580
+ // Assume that the src device's local-to-device matrix is compatible with the filter,
2581
+ // *and* the source image has a 1px buffer of padding.
2582
+ kYesWithPadding
2516
2583
  };
2517
2584
  /**
2518
2585
  * Filters the contents of 'src' and draws the result into 'dst'. The filter is evaluated
@@ -2528,6 +2595,7 @@ private:
2528
2595
  void internalDrawDeviceWithFilter(SkDevice* src, SkDevice* dst,
2529
2596
  FilterSpan filters, const SkPaint& paint,
2530
2597
  DeviceCompatibleWithFilter compat,
2598
+ const SkColorInfo& filterColorInfo,
2531
2599
  SkScalar scaleFactor = 1.f,
2532
2600
  bool srcIsCoverageLayer = false);
2533
2601
 
@@ -2539,12 +2607,6 @@ private:
2539
2607
  bool wouldOverwriteEntireSurface(const SkRect*, const SkPaint*,
2540
2608
  SkEnumBitMask<PredrawFlags>) const;
2541
2609
 
2542
- /**
2543
- * Returns true if the paint's imagefilter can be invoked directly, without needed a layer.
2544
- */
2545
- bool canDrawBitmapAsSprite(SkScalar x, SkScalar y, int w, int h, const SkSamplingOptions&,
2546
- const SkPaint&);
2547
-
2548
2610
  /**
2549
2611
  * Returns true if the clip (for any active layer) contains antialiasing.
2550
2612
  * If the clip is empty, this will return false.
@@ -2568,6 +2630,14 @@ private:
2568
2630
  // into the canvas' global space.
2569
2631
  SkRect computeDeviceClipBounds(bool outsetForAA=true) const;
2570
2632
 
2633
+ // Attempt to draw a rrect with an analytic blur. If the paint does not contain a blur, or the
2634
+ // geometry can't be drawn with an analytic blur by the device, a layer is returned for a
2635
+ // regular draw. If the draw succeeds or predrawNotify fails, nullopt is returned indicating
2636
+ // that nothing further should be drawn.
2637
+ std::optional<AutoLayerForImageFilter> attemptBlurredRRectDraw(const SkRRect&,
2638
+ const SkPaint&,
2639
+ SkEnumBitMask<PredrawFlags>);
2640
+
2571
2641
  class AutoUpdateQRBounds;
2572
2642
  void validateClip() const;
2573
2643
 
@@ -14,9 +14,7 @@
14
14
 
15
15
  namespace SkSL { struct ShaderCaps; }
16
16
 
17
- #if defined(SK_GRAPHITE)
18
17
  namespace skgpu::graphite { class Caps; }
19
- #endif
20
18
 
21
19
  class SK_API SkCapabilities : public SkRefCnt {
22
20
  public:
@@ -25,9 +23,7 @@ public:
25
23
  SkSL::Version skslVersion() const { return fSkSLVersion; }
26
24
 
27
25
  protected:
28
- #if defined(SK_GRAPHITE)
29
26
  friend class skgpu::graphite::Caps; // for ctor
30
- #endif
31
27
 
32
28
  SkCapabilities() = default;
33
29
 
@@ -49,8 +49,6 @@ public:
49
49
  // Returns true if the filter is guaranteed to never change the alpha of a color it filters.
50
50
  bool isAlphaUnchanged() const;
51
51
 
52
- SkColor filterColor(SkColor) const;
53
-
54
52
  /**
55
53
  * Converts the src color (in src colorspace), into the dst colorspace,
56
54
  * then applies this filter to it, returning the filtered color in the dst colorspace.
@@ -94,8 +92,10 @@ public:
94
92
  static sk_sp<SkColorFilter> Blend(const SkColor4f& c, sk_sp<SkColorSpace>, SkBlendMode mode);
95
93
  static sk_sp<SkColorFilter> Blend(SkColor c, SkBlendMode mode);
96
94
 
97
- static sk_sp<SkColorFilter> Matrix(const SkColorMatrix&);
98
- static sk_sp<SkColorFilter> Matrix(const float rowMajor[20]);
95
+ enum class Clamp : bool { kNo, kYes };
96
+
97
+ static sk_sp<SkColorFilter> Matrix(const SkColorMatrix&, Clamp clamp = Clamp::kYes);
98
+ static sk_sp<SkColorFilter> Matrix(const float rowMajor[20], Clamp clamp = Clamp::kYes);
99
99
 
100
100
  // A version of Matrix which operates in HSLA space instead of RGBA.
101
101
  // I.e. HSLA-to-RGBA(Matrix(RGBA-to-HSLA(input))).
@@ -100,22 +100,20 @@ static inline U8CPU SkUnitScalarClampToByte(SkScalar x) {
100
100
  #define SkB32Assert(b) SkASSERT((unsigned)(b) <= SK_B32_MASK)
101
101
 
102
102
  /**
103
- * Pack the components into a SkPMColor, checking (in the debug version) that
104
- * the components are 0..255, and are already premultiplied (i.e. alpha >= color)
103
+ * Pack the components into a SkPMColor
105
104
  */
106
105
  static inline SkPMColor SkPackARGB32(U8CPU a, U8CPU r, U8CPU g, U8CPU b) {
107
106
  SkA32Assert(a);
108
- SkASSERT(r <= a);
109
- SkASSERT(g <= a);
110
- SkASSERT(b <= a);
107
+ SkR32Assert(r);
108
+ SkG32Assert(g);
109
+ SkB32Assert(b);
111
110
 
112
111
  return (a << SK_A32_SHIFT) | (r << SK_R32_SHIFT) |
113
112
  (g << SK_G32_SHIFT) | (b << SK_B32_SHIFT);
114
113
  }
115
114
 
116
115
  /**
117
- * Same as SkPackARGB32, but this version guarantees to not check that the
118
- * values are premultiplied in the debug version.
116
+ * Legacy "NoCheck" version of SkPackARGB32. Remove this once all callers are updated.
119
117
  */
120
118
  static inline SkPMColor SkPackARGB32NoCheck(U8CPU a, U8CPU r, U8CPU g, U8CPU b) {
121
119
  return (a << SK_A32_SHIFT) | (r << SK_R32_SHIFT) |
@@ -29,6 +29,7 @@ enum SkColorType : int {
29
29
  kRGB_101010x_SkColorType, //!< pixel with 10 bits each for red, green, blue; in 32-bit word
30
30
  kBGR_101010x_SkColorType, //!< pixel with 10 bits each for blue, green, red; in 32-bit word
31
31
  kBGR_101010x_XR_SkColorType, //!< pixel with 10 bits each for blue, green, red; in 32-bit word, extended range
32
+ kBGRA_10101010_XR_SkColorType, //!< pixel with 10 bits each for blue, green, red, alpha; in 64-bit word, extended range
32
33
  kRGBA_10x6_SkColorType, //!< pixel with 10 used bits (most significant) followed by 6 unused
33
34
  // bits for red, green, blue, alpha; in 64-bit word
34
35
  kGray_8_SkColorType, //!< pixel with grayscale level in 8-bit byte
@@ -36,6 +37,7 @@ enum SkColorType : int {
36
37
  // in 64-bit word
37
38
  kRGBA_F16_SkColorType, //!< pixel with half floats for red, green, blue, alpha;
38
39
  // in 64-bit word
40
+ kRGB_F16F16F16x_SkColorType, //!< pixel with half floats for red, green, blue; in 64-bit word
39
41
  kRGBA_F32_SkColorType, //!< pixel using C float for red, green, blue, alpha; in 128-bit word
40
42
 
41
43
  // The following 6 colortypes are just for reading from - not for rendering to
@@ -31,7 +31,7 @@ public:
31
31
  kSkColorFilter_Type,
32
32
  kSkBlender_Type,
33
33
  kSkDrawable_Type,
34
- kSkDrawLooper_Type, // no longer used internally by Skia
34
+ kSkDrawLooper_Type, // no longer supported by Skia
35
35
  kSkImageFilter_Type,
36
36
  kSkMaskFilter_Type,
37
37
  kSkPathEffect_Type,
@@ -9,9 +9,11 @@
9
9
  #define SkFontArguments_DEFINED
10
10
 
11
11
  #include "include/core/SkColor.h"
12
- #include "include/core/SkScalar.h"
12
+ #include "include/core/SkFourByteTag.h"
13
13
  #include "include/core/SkTypes.h"
14
14
 
15
+ #include <cstdint>
16
+
15
17
  /** Represents a set of actual arguments for a font. */
16
18
  struct SkFontArguments {
17
19
  struct VariationPosition {
@@ -8,8 +8,9 @@
8
8
  #ifndef SkFontParameters_DEFINED
9
9
  #define SkFontParameters_DEFINED
10
10
 
11
- #include "include/core/SkScalar.h"
12
- #include "include/core/SkTypes.h"
11
+ #include "include/core/SkFourByteTag.h"
12
+
13
+ #include <cstdint>
13
14
 
14
15
  struct SkFontParameters {
15
16
  struct Variation {
@@ -0,0 +1,19 @@
1
+ /*
2
+ * Copyright 2024 Google LLC
3
+ *
4
+ * Use of this source code is governed by a BSD-style license that can be
5
+ * found in the LICENSE file.
6
+ */
7
+
8
+ #ifndef SkFourByteTag_DEFINED
9
+ #define SkFourByteTag_DEFINED
10
+
11
+ #include <cstdint>
12
+
13
+ using SkFourByteTag = uint32_t;
14
+
15
+ static inline constexpr SkFourByteTag SkSetFourByteTag(char a, char b, char c, char d) {
16
+ return (((uint32_t)a << 24) | ((uint32_t)b << 16) | ((uint32_t)c << 8) | (uint32_t)d);
17
+ }
18
+
19
+ #endif
@@ -98,6 +98,8 @@ SK_API sk_sp<SkImage> RasterFromCompressedTextureData(sk_sp<SkData> data,
98
98
  *
99
99
  * If the encoded format is not supported, nullptr is returned.
100
100
  *
101
+ * If possible, clients should use SkCodecs::DeferredImage instead.
102
+ *
101
103
  * @param encoded the encoded data
102
104
  * @return created SkImage, or nullptr
103
105
 
@@ -466,6 +468,9 @@ public:
466
468
  /** Copies SkRect of pixels from SkImage to dstPixels. Copy starts at offset (srcX, srcY),
467
469
  and does not exceed SkImage (width(), height()).
468
470
 
471
+ Graphite has deprecated this API in favor of the equivalent asynchronous API on
472
+ skgpu::graphite::Context (with an optional explicit synchonization).
473
+
469
474
  dstInfo specifies width, height, SkColorType, SkAlphaType, and SkColorSpace of
470
475
  destination. dstRowBytes specifies the gap from one destination row to the next.
471
476
  Returns true if pixels are copied. Returns false if:
@@ -506,6 +511,9 @@ public:
506
511
  /** Copies a SkRect of pixels from SkImage to dst. Copy starts at (srcX, srcY), and
507
512
  does not exceed SkImage (width(), height()).
508
513
 
514
+ Graphite has deprecated this API in favor of the equivalent asynchronous API on
515
+ skgpu::graphite::Context (with an optional explicit synchonization).
516
+
509
517
  dst specifies width, height, SkColorType, SkAlphaType, SkColorSpace, pixel storage,
510
518
  and row bytes of destination. dst.rowBytes() specifics the gap from one destination
511
519
  row to the next. Returns true if pixels are copied. Returns false if:
@@ -557,8 +565,17 @@ public:
557
565
  AsyncReadResult& operator=(AsyncReadResult&&) = delete;
558
566
 
559
567
  virtual ~AsyncReadResult() = default;
568
+ /** Returns how many planes of data are in the result. e.g. 3 for YUV data. */
560
569
  virtual int count() const = 0;
570
+ /** Returns the raw pixel data for a given plane.
571
+ *
572
+ * It will be organized as per the dst SkImageInfo passed in to the async read call.
573
+ *
574
+ * Clients may wish to create an SkPixmap with this data using the dst SkImageInfo
575
+ * and rowBytes(i).
576
+ */
561
577
  virtual const void* data(int i) const = 0;
578
+ /** Returns how many bytes correspond to a single row of image data */
562
579
  virtual size_t rowBytes(int i) const = 0;
563
580
 
564
581
  protected:
@@ -585,10 +602,13 @@ public:
585
602
  /** Makes image pixel data available to caller, possibly asynchronously. It can also rescale
586
603
  the image pixels.
587
604
 
588
- Currently asynchronous reads are only supported on the GPU backend and only when the
605
+ Currently asynchronous reads are only supported in the Ganesh GPU backend and only when the
589
606
  underlying 3D API supports transfer buffers and CPU/GPU synchronization primitives. In all
590
607
  other cases this operates synchronously.
591
608
 
609
+ For the Graphite backend this API has been deprecated in favor of the equivalent API
610
+ on skgpu::graphite::Context.
611
+
592
612
  Data is read from the source sub-rectangle, is optionally converted to a linear gamma, is
593
613
  rescaled to the size indicated by 'info', is then converted to the color space, color type,
594
614
  and alpha type of 'info'. A 'srcRect' that is not contained by the bounds of the image
@@ -692,6 +712,26 @@ public:
692
712
  bool scalePixels(const SkPixmap& dst, const SkSamplingOptions&,
693
713
  CachingHint cachingHint = kAllow_CachingHint) const;
694
714
 
715
+ /**
716
+ * Create a new image by copying this image and scaling to fit the ImageInfo's dimensions
717
+ * and converting the pixels into the ImageInfo's ColorInfo.
718
+ * This is done retaining the domain (backend) of the image (e.g. gpu, raster)
719
+ *
720
+ * The Recorder parameter is required if the original image was created on a graphite Recorder,
721
+ * but must be nullptr if it was create in some other way (e.g. GrContext, raster, deferred).
722
+ *
723
+ * return nullptr if the requested ColorInfo is not supported, its dimesions are out of range,
724
+ * or if the recorder is null on a graphite Image.
725
+ */
726
+ sk_sp<SkImage> makeScaled(skgpu::graphite::Recorder*,
727
+ const SkImageInfo&,
728
+ const SkSamplingOptions&) const;
729
+
730
+ sk_sp<SkImage> makeScaled(const SkImageInfo& info,
731
+ const SkSamplingOptions& sampling) const {
732
+ return this->makeScaled(nullptr, info, sampling);
733
+ }
734
+
695
735
  /** Returns encoded SkImage pixels as SkData, if SkImage was created from supported
696
736
  encoded stream format. Platform support for formats vary and may require building
697
737
  with one or more of: SK_ENCODE_JPEG, SK_ENCODE_PNG, SK_ENCODE_WEBP.
@@ -15,11 +15,6 @@
15
15
  #include "include/core/SkYUVAPixmaps.h"
16
16
  #include "include/private/base/SkAPI.h"
17
17
 
18
- #if defined(SK_GRAPHITE)
19
- #include "include/core/SkImage.h"
20
- #include "include/gpu/graphite/Recorder.h"
21
- #endif
22
-
23
18
  #include <cstddef>
24
19
  #include <cstdint>
25
20
 
@@ -76,6 +76,24 @@ enum SkYUVColorSpace : int {
76
76
  kBT2020_10bit_Limited_SkYUVColorSpace,
77
77
  kBT2020_12bit_Full_SkYUVColorSpace,
78
78
  kBT2020_12bit_Limited_SkYUVColorSpace,
79
+ kBT2020_16bit_Full_SkYUVColorSpace,
80
+ kBT2020_16bit_Limited_SkYUVColorSpace,
81
+ kFCC_Full_SkYUVColorSpace, //!< describes FCC range
82
+ kFCC_Limited_SkYUVColorSpace,
83
+ kSMPTE240_Full_SkYUVColorSpace, //!< describes SMPTE240M range
84
+ kSMPTE240_Limited_SkYUVColorSpace,
85
+ kYDZDX_Full_SkYUVColorSpace, //!< describes YDZDX range
86
+ kYDZDX_Limited_SkYUVColorSpace,
87
+ kGBR_Full_SkYUVColorSpace, //!< describes GBR range
88
+ kGBR_Limited_SkYUVColorSpace,
89
+ kYCgCo_8bit_Full_SkYUVColorSpace, //!< describes YCgCo matrix
90
+ kYCgCo_8bit_Limited_SkYUVColorSpace,
91
+ kYCgCo_10bit_Full_SkYUVColorSpace,
92
+ kYCgCo_10bit_Limited_SkYUVColorSpace,
93
+ kYCgCo_12bit_Full_SkYUVColorSpace,
94
+ kYCgCo_12bit_Limited_SkYUVColorSpace,
95
+ kYCgCo_16bit_Full_SkYUVColorSpace,
96
+ kYCgCo_16bit_Limited_SkYUVColorSpace,
79
97
  kIdentity_SkYUVColorSpace, //!< maps Y->R, U->G, V->B
80
98
 
81
99
  kLastEnum_SkYUVColorSpace = kIdentity_SkYUVColorSpace, //!< last valid value
@@ -87,6 +105,8 @@ enum SkYUVColorSpace : int {
87
105
  kBT2020_SkYUVColorSpace = kBT2020_8bit_Limited_SkYUVColorSpace,
88
106
  };
89
107
 
108
+ SK_API bool SkYUVColorSpaceIsLimitedRange(SkYUVColorSpace cs);
109
+
90
110
  /** \struct SkColorInfo
91
111
  Describes pixel and encoding. SkImageInfo can be created from SkColorInfo by
92
112
  providing dimensions.
@@ -375,7 +375,7 @@ public:
375
375
 
376
376
  @return true if matrix has only finite elements
377
377
  */
378
- bool isFinite() const { return SkScalarsAreFinite(fMat, 16); }
378
+ bool isFinite() const { return SkIsFinite(fMat, 16); }
379
379
 
380
380
  /** If this is invertible, return that in inverse and return true. If it is
381
381
  * not invertible, return false and leave the inverse parameter unchanged.
@@ -12,6 +12,7 @@
12
12
  #include "include/core/SkRect.h"
13
13
  #include "include/core/SkScalar.h"
14
14
  #include "include/core/SkTypes.h"
15
+ #include "include/private/base/SkFloatingPoint.h"
15
16
  #include "include/private/base/SkMacros.h"
16
17
  #include "include/private/base/SkTo.h"
17
18
 
@@ -1830,7 +1831,7 @@ public:
1830
1831
 
1831
1832
  @return true if matrix has only finite elements
1832
1833
  */
1833
- bool isFinite() const { return SkScalarsAreFinite(fMat, 9); }
1834
+ bool isFinite() const { return SkIsFinite(fMat, 9); }
1834
1835
 
1835
1836
  private:
1836
1837
  /** Set if the matrix will map a rectangle to another rectangle. This
@@ -5,5 +5,5 @@
5
5
  * found in the LICENSE file.
6
6
  */
7
7
  #ifndef SK_MILESTONE
8
- #define SK_MILESTONE 123
8
+ #define SK_MILESTONE 130
9
9
  #endif
@@ -177,7 +177,7 @@ public:
177
177
  }
178
178
 
179
179
  /** Requests, but does not require, to distribute color error.
180
- @param dither setting for ditering
180
+ @param dither setting for dithering
181
181
  */
182
182
  void setDither(bool dither) { fBitfields.fDither = static_cast<unsigned>(dither); }
183
183
 
@@ -137,6 +137,18 @@ public:
137
137
  */
138
138
  ~SkPath();
139
139
 
140
+ /** Returns a copy of this path in the current state. */
141
+ SkPath snapshot() const {
142
+ return *this;
143
+ }
144
+
145
+ /** Returns a copy of this path in the current state, and resets the path to empty. */
146
+ SkPath detach() {
147
+ SkPath result = *this;
148
+ this->reset();
149
+ return result;
150
+ }
151
+
140
152
  /** Constructs a copy of an existing path.
141
153
  SkPath assignment makes two paths identical by value. Internally, assignment
142
154
  shares pointer values. The underlying verb array, SkPoint array and weights
@@ -537,15 +549,17 @@ public:
537
549
  */
538
550
  bool conservativelyContainsRect(const SkRect& rect) const;
539
551
 
540
- /** Grows SkPath verb array and SkPoint array to contain extraPtCount additional SkPoint.
552
+ /** Grows SkPath verb array, SkPoint array, and conics to contain additional space.
541
553
  May improve performance and use less memory by
542
554
  reducing the number and size of allocations when creating SkPath.
543
555
 
544
556
  @param extraPtCount number of additional SkPoint to allocate
557
+ @param extraVerbCount number of additional verbs
558
+ @param extraConicCount number of additional conics
545
559
 
546
560
  example: https://fiddle.skia.org/c/@Path_incReserve
547
561
  */
548
- void incReserve(int extraPtCount);
562
+ void incReserve(int extraPtCount, int extraVerbCount = 0, int extraConicCount = 0);
549
563
 
550
564
  #ifdef SK_HIDE_PATH_EDIT_METHODS
551
565
  private:
@@ -1332,8 +1346,9 @@ public:
1332
1346
  @param dx offset added to SkPoint array x-axis coordinates
1333
1347
  @param dy offset added to SkPoint array y-axis coordinates
1334
1348
  */
1335
- void offset(SkScalar dx, SkScalar dy) {
1349
+ SkPath& offset(SkScalar dx, SkScalar dy) {
1336
1350
  this->offset(dx, dy, this);
1351
+ return *this;
1337
1352
  }
1338
1353
 
1339
1354
  /** Transforms verb array, SkPoint array, and weight by matrix.
@@ -1357,9 +1372,10 @@ public:
1357
1372
  @param matrix SkMatrix to apply to SkPath
1358
1373
  @param pc whether to apply perspective clipping
1359
1374
  */
1360
- void transform(const SkMatrix& matrix,
1375
+ SkPath& transform(const SkMatrix& matrix,
1361
1376
  SkApplyPerspectiveClip pc = SkApplyPerspectiveClip::kYes) {
1362
1377
  this->transform(matrix, this, pc);
1378
+ return *this;
1363
1379
  }
1364
1380
 
1365
1381
  SkPath makeTransform(const SkMatrix& m,
@@ -1790,7 +1806,6 @@ private:
1790
1806
 
1791
1807
  /** Resets all fields other than fPathRef to their initial 'empty' values.
1792
1808
  * Assumes the caller has already emptied fPathRef.
1793
- * On Android increments fGenerationID without reseting it.
1794
1809
  */
1795
1810
  void resetFields();
1796
1811
 
@@ -1802,7 +1817,6 @@ private:
1802
1817
 
1803
1818
  size_t writeToMemoryAsRRect(void* buffer) const;
1804
1819
  size_t readAsRRect(const void*, size_t);
1805
- size_t readFromMemory_EQ4Or5(const void*, size_t);
1806
1820
 
1807
1821
  friend class Iter;
1808
1822
  friend class SkPathPriv;
@@ -13,6 +13,7 @@
13
13
  #include "include/core/SkRefCnt.h"
14
14
  #include "include/core/SkScalar.h"
15
15
  #include "include/private/base/SkAPI.h"
16
+ #include "include/private/base/SkDebug.h"
16
17
 
17
18
  class SkMatrix;
18
19
  class SkPath;