@shopify/react-native-skia 1.3.13 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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
@@ -0,0 +1,197 @@
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 skgpu_graphite_precompile_PaintOptions_DEFINED
9
+ #define skgpu_graphite_precompile_PaintOptions_DEFINED
10
+
11
+ #include "include/core/SkBlendMode.h"
12
+ #include "include/core/SkRefCnt.h"
13
+ #include "include/core/SkSpan.h"
14
+ #include "include/private/base/SkTArray.h"
15
+ #include "include/private/base/SkTDArray.h"
16
+
17
+ #include <functional>
18
+
19
+ namespace skgpu::graphite {
20
+
21
+ class PrecompileBlender;
22
+ class PrecompileColorFilter;
23
+ class PrecompileImageFilter;
24
+ class PrecompileMaskFilter;
25
+ class PrecompileShader;
26
+
27
+ enum class Coverage;
28
+ enum DrawTypeFlags : uint16_t;
29
+ enum class PrecompileImageFilterFlags : uint32_t;
30
+
31
+ class KeyContext;
32
+ class PaintOptionsPriv;
33
+ class PaintParamsKeyBuilder;
34
+ class PipelineDataGatherer;
35
+ class UniquePaintParamsID;
36
+
37
+ /** \class PaintOptions
38
+ This is the Precompilation analog to SkPaint. It encapsulates a set of options for each
39
+ field of the SkPaint (e.g., colorFilters, imageFilters, etc). Many of the specific details
40
+ of an SkPaint that are irrelevant to the final compiled Pipelines are abstracted away
41
+ (e.g., the SkPaint's color field).
42
+
43
+ How Precompilation works in practice is a PaintOptions object is created and a set of options
44
+ for each slot (e.g., shader, blender) are added. When passed to the Precompile() function,
45
+ all the combinations specified by the PaintOptions will be created and precompiled.
46
+
47
+ To be concrete, if a PaintOptions object had two shader options and two blender options,
48
+ four combinations would be precompiled.
49
+ */
50
+ class SK_API PaintOptions {
51
+ public:
52
+ /** Constructs a PaintOptions object with default values. It is equivalent to a default
53
+ * initialized SkPaint.
54
+
55
+ @return default initialized PaintOptions
56
+ */
57
+ PaintOptions();
58
+ PaintOptions(const PaintOptions&);
59
+ ~PaintOptions();
60
+ PaintOptions& operator=(const PaintOptions&);
61
+
62
+ /** Sets the shader options used when generating precompilation combinations.
63
+
64
+ This corresponds to SkPaint's setShader() method
65
+
66
+ @param shaders The options used for shading when generating precompilation combinations.
67
+ */
68
+ void setShaders(SkSpan<const sk_sp<PrecompileShader>> shaders);
69
+ SkSpan<const sk_sp<PrecompileShader>> getShaders() const {
70
+ return SkSpan<const sk_sp<PrecompileShader>>(fShaderOptions);
71
+ }
72
+
73
+ /** Sets the image filter options used when generating precompilation combinations.
74
+
75
+ This corresponds to SkPaint's setImageFilter() method
76
+
77
+ @param imageFilters The options used for image filtering when generating precompilation
78
+ combinations.
79
+ */
80
+ void setImageFilters(SkSpan<const sk_sp<PrecompileImageFilter>> imageFilters);
81
+ SkSpan<const sk_sp<PrecompileImageFilter>> getImageFilters() const {
82
+ return SkSpan<const sk_sp<PrecompileImageFilter>>(fImageFilterOptions);
83
+ }
84
+
85
+ /** Sets the mask filter options used when generating precompilation combinations.
86
+
87
+ This corresponds to SkPaint's setMaskFilter() method
88
+
89
+ @param maskFilters The options used for mask filtering when generating precompilation
90
+ combinations.
91
+ */
92
+ void setMaskFilters(SkSpan<const sk_sp<PrecompileMaskFilter>> maskFilters);
93
+ SkSpan<const sk_sp<PrecompileMaskFilter>> getMaskFilters() const {
94
+ return SkSpan<const sk_sp<PrecompileMaskFilter>>(fMaskFilterOptions);
95
+ }
96
+
97
+ /** Sets the color filter options used when generating precompilation combinations.
98
+
99
+ This corresponds to SkPaint's setColorFilter() method
100
+
101
+ @param colorFilters The options used for color filtering when generating precompilation
102
+ combinations.
103
+ */
104
+ void setColorFilters(SkSpan<const sk_sp<PrecompileColorFilter>> colorFilters);
105
+ SkSpan<const sk_sp<PrecompileColorFilter>> getColorFilters() const {
106
+ return SkSpan<const sk_sp<PrecompileColorFilter>>(fColorFilterOptions);
107
+ }
108
+
109
+ /** Sets the blend mode options used when generating precompilation combinations.
110
+
111
+ This corresponds to SkPaint's setBlendMode() method
112
+
113
+ @param blendModes The options used for blending when generating precompilation
114
+ combinations.
115
+ */
116
+ void setBlendModes(SkSpan<const SkBlendMode> blendModes);
117
+ SkSpan<const SkBlendMode> getBlendModes() const {
118
+ return SkSpan<const SkBlendMode>(fBlendModeOptions.data(), fBlendModeOptions.size());
119
+ }
120
+
121
+ /** Sets the blender options used when generating precompilation combinations.
122
+
123
+ This corresponds to SkPaint's setBlender() method
124
+
125
+ @param blenders The options used for blending when generating precompilation combinations.
126
+ */
127
+ void setBlenders(SkSpan<const sk_sp<PrecompileBlender>> blenders);
128
+ SkSpan<const sk_sp<PrecompileBlender>> getBlenders() const {
129
+ return SkSpan<const sk_sp<PrecompileBlender>>(fBlenderOptions);
130
+ }
131
+
132
+ /** Sets the dither setting used when generating precompilation combinations
133
+
134
+ This corresponds to SkPaint's setDither() method
135
+
136
+ @param dither the dither setting used when generating precompilation combinations.
137
+ */
138
+ void setDither(bool dither) { fDither = dither; }
139
+ bool isDither() const { return fDither; }
140
+
141
+ // Provides access to functions that aren't part of the public API.
142
+ PaintOptionsPriv priv();
143
+ const PaintOptionsPriv priv() const; // NOLINT(readability-const-return-type)
144
+
145
+ private:
146
+ friend class PaintOptionsPriv;
147
+ friend class PrecompileImageFilter; // for ProcessCombination access
148
+ friend class PrecompileMaskFilter; // for ProcessCombination access
149
+
150
+ void addColorFilter(sk_sp<PrecompileColorFilter> cf);
151
+ void addBlendMode(SkBlendMode bm) {
152
+ fBlendModeOptions.push_back(bm);
153
+ }
154
+
155
+ void setClipShaders(SkSpan<const sk_sp<PrecompileShader>> clipShaders);
156
+
157
+ int numShaderCombinations() const;
158
+ int numColorFilterCombinations() const;
159
+ int numBlendCombinations() const;
160
+ int numClipShaderCombinations() const;
161
+
162
+ int numCombinations() const;
163
+ // 'desiredCombination' must be less than the result of the numCombinations call
164
+ void createKey(const KeyContext&,
165
+ PaintParamsKeyBuilder*,
166
+ PipelineDataGatherer*,
167
+ int desiredCombination,
168
+ bool addPrimitiveBlender,
169
+ Coverage coverage) const;
170
+
171
+ typedef std::function<void(UniquePaintParamsID id,
172
+ DrawTypeFlags,
173
+ bool withPrimitiveBlender,
174
+ Coverage)> ProcessCombination;
175
+
176
+ void buildCombinations(const KeyContext&,
177
+ PipelineDataGatherer*,
178
+ DrawTypeFlags drawTypes,
179
+ bool addPrimitiveBlender,
180
+ Coverage coverage,
181
+ const ProcessCombination& processCombination) const;
182
+
183
+ skia_private::TArray<sk_sp<PrecompileShader>> fShaderOptions;
184
+ skia_private::TArray<sk_sp<PrecompileColorFilter>> fColorFilterOptions;
185
+ skia_private::TArray<SkBlendMode> fBlendModeOptions;
186
+ skia_private::TArray<sk_sp<PrecompileBlender>> fBlenderOptions;
187
+ skia_private::TArray<sk_sp<PrecompileShader>> fClipShaderOptions;
188
+
189
+ skia_private::TArray<sk_sp<PrecompileImageFilter>> fImageFilterOptions;
190
+ skia_private::TArray<sk_sp<PrecompileMaskFilter>> fMaskFilterOptions;
191
+
192
+ bool fDither = false;
193
+ };
194
+
195
+ } // namespace skgpu::graphite
196
+
197
+ #endif // skgpu_graphite_precompile_PaintOptions_DEFINED
@@ -0,0 +1,48 @@
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 skgpu_graphite_precompile_Precompile_DEFINED
9
+ #define skgpu_graphite_precompile_Precompile_DEFINED
10
+
11
+ #include "include/core/SkSpan.h"
12
+ #include "include/gpu/graphite/GraphiteTypes.h"
13
+
14
+ namespace skgpu::graphite {
15
+
16
+ class Context;
17
+ class PaintOptions;
18
+
19
+ /**
20
+ * Describes the required properties of a RenderPass that will be combined with the
21
+ * other portions of the Precompilation API (i.e., paintOptions and drawTypes) to yield
22
+ * a pipeline.
23
+ */
24
+ struct SK_API RenderPassProperties {
25
+ DepthStencilFlags fDSFlags = DepthStencilFlags::kNone;
26
+ SkColorType fDstCT = kRGBA_8888_SkColorType;
27
+ bool fRequiresMSAA = false;
28
+ };
29
+
30
+ /**
31
+ * Precompilation allows clients to create pipelines ahead of time based on what they expect
32
+ * to draw. This can reduce performance hitches, due to inline compilation, during the actual
33
+ * drawing. Graphite will always be able to perform an inline compilation if some SkPaint
34
+ * combination was omitted from precompilation.
35
+ *
36
+ * @param context the Context to which the actual draws will be submitted
37
+ * @param paintOptions captures a set of SkPaints that will be drawn
38
+ * @param drawTypes communicates which primitives those paints will be drawn with
39
+ * @param renderPassProperties describes the RenderPasses needed for the desired Pipelines
40
+ */
41
+ void SK_API Precompile(Context* context,
42
+ const PaintOptions& paintOptions,
43
+ DrawTypeFlags drawTypes,
44
+ SkSpan<const RenderPassProperties> renderPassProperties);
45
+
46
+ } // namespace skgpu::graphite
47
+
48
+ #endif // skgpu_graphite_precompile_Precompile_DEFINED
@@ -0,0 +1,84 @@
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 skgpu_graphite_precompile_PrecompileBase_DEFINED
9
+ #define skgpu_graphite_precompile_PrecompileBase_DEFINED
10
+
11
+ #include "include/core/SkRefCnt.h"
12
+ #include "include/core/SkSpan.h"
13
+
14
+ namespace skgpu::graphite {
15
+
16
+ class KeyContext;
17
+ class PaintParamsKeyBuilder;
18
+ class PipelineDataGatherer;
19
+ class PrecompileBasePriv;
20
+
21
+ /** \class PrecompileBase
22
+ This is the base class for all the objects that can be attached to PaintOptions.
23
+ */
24
+ class SK_API PrecompileBase : public SkRefCnt {
25
+ public:
26
+ enum class Type {
27
+ kBlender,
28
+ kColorFilter,
29
+ kImageFilter,
30
+ kMaskFilter,
31
+ kShader,
32
+ };
33
+
34
+ Type type() const { return fType; }
35
+
36
+ // Provides access to functions that aren't part of the public API.
37
+ PrecompileBasePriv priv();
38
+ const PrecompileBasePriv priv() const; // NOLINT(readability-const-return-type)
39
+
40
+ protected:
41
+ PrecompileBase(Type type) : fType(type) {}
42
+
43
+ virtual int numIntrinsicCombinations() const { return 1; }
44
+ virtual int numChildCombinations() const { return 1; }
45
+
46
+ /** This call returns the number of combinations generated from this object and its childen.
47
+
48
+ @return number of precompilation combinations generated by this object
49
+ */
50
+ int numCombinations() const {
51
+ return this->numIntrinsicCombinations() * this->numChildCombinations();
52
+ }
53
+
54
+ virtual void addToKey(const KeyContext&,
55
+ PaintParamsKeyBuilder*,
56
+ PipelineDataGatherer*,
57
+ int desiredCombination) const = 0;
58
+
59
+ // This returns the desired option along with the child options.
60
+ template<typename T>
61
+ static std::pair<sk_sp<T>, int> SelectOption(SkSpan<const sk_sp<T>> options,
62
+ int desiredOption);
63
+
64
+ // In general, derived classes should use AddToKey to select the desired child option from
65
+ // a span and then have it added to the key with its reduced/nested child option.
66
+ template<typename T>
67
+ static void AddToKey(const KeyContext&,
68
+ PaintParamsKeyBuilder*,
69
+ PipelineDataGatherer*,
70
+ SkSpan<const sk_sp<T>> options,
71
+ int desiredOption);
72
+
73
+ private:
74
+ friend class PrecompileBasePriv;
75
+
76
+ friend class PaintOptions; // for access to SelectOption
77
+ friend class PrecompileBlenderList; // ""
78
+
79
+ Type fType;
80
+ };
81
+
82
+ } // namespace skgpu::graphite
83
+
84
+ #endif // skgpu_graphite_precompile_PrecompileBase_DEFINED
@@ -0,0 +1,56 @@
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 skgpu_graphite_precompile_PrecompileBlender_DEFINED
9
+ #define skgpu_graphite_precompile_PrecompileBlender_DEFINED
10
+
11
+ #include "include/core/SkBlendMode.h"
12
+ #include "include/gpu/graphite/precompile/PrecompileBase.h"
13
+
14
+ #include <optional>
15
+
16
+ namespace skgpu::graphite {
17
+
18
+ class PrecompileBlenderPriv;
19
+
20
+ /** \class PrecompileBlender
21
+ This class corresponds to the SkBlender class in the main API.
22
+ */
23
+ class SK_API PrecompileBlender : public PrecompileBase {
24
+ public:
25
+ // Provides access to functions that aren't part of the public API.
26
+ PrecompileBlenderPriv priv();
27
+ const PrecompileBlenderPriv priv() const; // NOLINT(readability-const-return-type)
28
+
29
+ protected:
30
+ friend class PrecompileBlenderPriv;
31
+
32
+ virtual std::optional<SkBlendMode> asBlendMode() const { return {}; }
33
+
34
+ PrecompileBlender() : PrecompileBase(Type::kBlender) {}
35
+ ~PrecompileBlender() override;
36
+ };
37
+
38
+ //--------------------------------------------------------------------------------------------------
39
+ // This is the Precompile correlate to the SkBlenders namespace in the main API
40
+ namespace PrecompileBlenders {
41
+
42
+ // This factory creates a Precompilation object that represents the Arithmetic SkBlender from
43
+ // the main API. Note that the actual Arithmetic parameters (i.e., k1, k2, k3 and k4) are
44
+ // abstracted away since they do not impact the generated shader.
45
+ SK_API sk_sp<PrecompileBlender> Arithmetic();
46
+
47
+ // This is the Precompilation correlate to the SkBlender::Mode factory in the main API. It
48
+ // creates an object that represents SkBlendMode-based blending.
49
+ SK_API sk_sp<PrecompileBlender> Mode(SkBlendMode);
50
+
51
+ } // namespace PrecompileBlenders
52
+
53
+
54
+ } // namespace skgpu::graphite
55
+
56
+ #endif // skgpu_graphite_precompile_PrecompileBlender_DEFINED
@@ -0,0 +1,85 @@
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 skgpu_graphite_precompile_PrecompileColorFilter_DEFINED
9
+ #define skgpu_graphite_precompile_PrecompileColorFilter_DEFINED
10
+
11
+ #include "include/gpu/graphite/precompile/PrecompileBase.h"
12
+
13
+ enum class SkBlendMode;
14
+
15
+ namespace skgpu::graphite {
16
+
17
+ /** \class PrecompileColorFilter
18
+ This class corresponds to the SkColorFilter class in the main API.
19
+ */
20
+ class SK_API PrecompileColorFilter : public PrecompileBase {
21
+ public:
22
+ /**
23
+ * This is the Precompile correlate to SkColorFilter::makeComposed.
24
+ *
25
+ * The PrecompileColorFilters::Compose factory can be used to generate a set of color filters
26
+ * that would've been generated via multiple makeComposed calls. That is, rather than
27
+ * performing:
28
+ * sk_sp<PrecompileColorFilter> option1 = outer->makeComposed(colorFilter1);
29
+ * sk_sp<PrecompileColorFilter> option2 = outer->makeComposed(colorFilter2);
30
+ * one could call:
31
+ * sk_sp<PrecompileColorFilter> combinedOptions = Compose({ outer },
32
+ * { colorFilter1, colorFilter2 });
33
+ * With an alternative use case one could also use the Compose factory thusly:
34
+ * sk_sp<PrecompileColorFilter> combinedOptions = Compose({ outer1, outer2 },
35
+ * { innerColorFilter });
36
+ */
37
+ sk_sp<PrecompileColorFilter> makeComposed(sk_sp<PrecompileColorFilter> inner) const;
38
+
39
+ protected:
40
+ PrecompileColorFilter() : PrecompileBase(Type::kColorFilter) {}
41
+ ~PrecompileColorFilter() override;
42
+ };
43
+
44
+ //--------------------------------------------------------------------------------------------------
45
+ // This is the Precompile correlate to the SkColorFilters namespace in the main API
46
+ namespace PrecompileColorFilters {
47
+
48
+ // --- The next 9 entries match those in include/core/SkColorFilter.h
49
+ SK_API sk_sp<PrecompileColorFilter> Compose(SkSpan<const sk_sp<PrecompileColorFilter>> outer,
50
+ SkSpan<const sk_sp<PrecompileColorFilter>> inner);
51
+
52
+ // This encompasses both variants of SkColorFilters::Blend
53
+ SK_API sk_sp<PrecompileColorFilter> Blend(SkSpan<const SkBlendMode> blendModes);
54
+ SK_API sk_sp<PrecompileColorFilter> Blend(); // Prefer the explicit blend mode variant
55
+
56
+ // This encompasses both variants of SkColorFilters::Matrix
57
+ SK_API sk_sp<PrecompileColorFilter> Matrix();
58
+
59
+ // This encompasses both variants of SkColorFilters::HSLAMatrix
60
+ SK_API sk_sp<PrecompileColorFilter> HSLAMatrix();
61
+
62
+ SK_API sk_sp<PrecompileColorFilter> LinearToSRGBGamma();
63
+ SK_API sk_sp<PrecompileColorFilter> SRGBToLinearGamma();
64
+ SK_API sk_sp<PrecompileColorFilter> Lerp(SkSpan<const sk_sp<PrecompileColorFilter>> dstOptions,
65
+ SkSpan<const sk_sp<PrecompileColorFilter>> srcOptions);
66
+
67
+ // This encompases both the SkColorFilters::Table and TableARGB variants
68
+ SK_API sk_sp<PrecompileColorFilter> Table();
69
+
70
+ SK_API sk_sp<PrecompileColorFilter> Lighting();
71
+
72
+ // This matches the main API's factory in include/effects/SkHighContrastFilter.h
73
+ SK_API sk_sp<PrecompileColorFilter> HighContrast();
74
+
75
+ // This matches the main API's factory in include/effects/SkLumaColorFilter.h
76
+ SK_API sk_sp<PrecompileColorFilter> Luma();
77
+
78
+ // This matches the main API's factory in include/effects/SkOverdrawColorFilter.h
79
+ SK_API sk_sp<PrecompileColorFilter> Overdraw();
80
+
81
+ } // namespace PrecompileColorFilters
82
+
83
+ } // namespace skgpu::graphite
84
+
85
+ #endif // skgpu_graphite_precompile_PrecompileColorFilter_DEFINED
@@ -0,0 +1,119 @@
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 skgpu_graphite_precompile_PrecompileImageFilter_DEFINED
9
+ #define skgpu_graphite_precompile_PrecompileImageFilter_DEFINED
10
+
11
+ #include "include/gpu/graphite/precompile/PrecompileBase.h"
12
+
13
+ #include "include/core/SkBlendMode.h"
14
+ #include "include/gpu/graphite/precompile/PaintOptions.h"
15
+ #include "include/private/base/SkTemplates.h"
16
+
17
+ namespace skgpu::graphite {
18
+
19
+ class PrecompileBlender;
20
+ class PrecompileColorFilter;
21
+ class PrecompileImageFilterPriv;
22
+
23
+ /** \class PrecompileImageFilter
24
+ This class corresponds to the SkImageFilter class in the main API.
25
+ */
26
+ class SK_API PrecompileImageFilter : public PrecompileBase {
27
+ public:
28
+ ~PrecompileImageFilter() override;
29
+
30
+ // Provides access to functions that aren't part of the public API.
31
+ PrecompileImageFilterPriv priv();
32
+ const PrecompileImageFilterPriv priv() const; // NOLINT(readability-const-return-type)
33
+
34
+ protected:
35
+ PrecompileImageFilter(SkSpan<sk_sp<PrecompileImageFilter>> inputs);
36
+
37
+ private:
38
+ friend class PaintOptions; // for createPipelines() access
39
+ friend class PrecompileImageFilterPriv;
40
+
41
+ int countInputs() const { return fInputs.count(); }
42
+
43
+ const PrecompileImageFilter* getInput(int index) const {
44
+ SkASSERT(index < this->countInputs());
45
+ return fInputs[index].get();
46
+ }
47
+
48
+ virtual sk_sp<PrecompileColorFilter> isColorFilterNode() const { return nullptr; }
49
+
50
+ sk_sp<PrecompileColorFilter> asAColorFilter() const;
51
+
52
+ // The PrecompileImageFilter classes do not use the PrecompileBase::addToKey virtual since
53
+ // they, in general, do not themselves contribute to a given SkPaint/Pipeline but, rather,
54
+ // create separate SkPaints/Pipelines from whole cloth (in onCreatePipelines).
55
+ void addToKey(const KeyContext& /* keyContext */,
56
+ PaintParamsKeyBuilder* /* builder */,
57
+ PipelineDataGatherer* /* gatherer */,
58
+ int /* desiredCombination */) const final {
59
+ SkASSERT(false);
60
+ }
61
+
62
+ virtual void onCreatePipelines(const KeyContext&,
63
+ PipelineDataGatherer*,
64
+ const PaintOptions::ProcessCombination&) const = 0;
65
+
66
+ void createPipelines(const KeyContext&,
67
+ PipelineDataGatherer*,
68
+ const PaintOptions::ProcessCombination&);
69
+
70
+ skia_private::AutoSTArray<2, sk_sp<PrecompileImageFilter>> fInputs;
71
+ };
72
+
73
+ //--------------------------------------------------------------------------------------------------
74
+ // This is the Precompile correlate to the SkImageFilters class' factories in the main API
75
+ //
76
+ // Note: In order to make precompilation analysis more tractable we don't allow options for the
77
+ // internals of an PrecompileImageFilter nor in the structure of the DAG.
78
+ namespace PrecompileImageFilters {
79
+
80
+ // This is the Precompile correlate to SkImageFilters::Arithmetic
81
+ SK_API sk_sp<PrecompileImageFilter> Arithmetic(sk_sp<PrecompileImageFilter> background,
82
+ sk_sp<PrecompileImageFilter> foreground);
83
+
84
+ // This is the Precompile correlate to SkImageFilters::Blend(SkBlendMode, ...)
85
+ SK_API sk_sp<PrecompileImageFilter> Blend(SkBlendMode bm,
86
+ sk_sp<PrecompileImageFilter> background,
87
+ sk_sp<PrecompileImageFilter> foreground);
88
+
89
+ // This is the Precompile correlate to SkImageFilters::Blend(sk_sp<SkBlender>, ...)
90
+ SK_API sk_sp<PrecompileImageFilter> Blend(sk_sp<PrecompileBlender> blender,
91
+ sk_sp<PrecompileImageFilter> background,
92
+ sk_sp<PrecompileImageFilter> foreground);
93
+
94
+ // This is the Precompile correlate to the two SkImageFilters::Blur factories
95
+ SK_API sk_sp<PrecompileImageFilter> Blur(sk_sp<PrecompileImageFilter> input);
96
+
97
+ // This is the Precompile correlate to SkImageFilters::ColorFilter.
98
+ SK_API sk_sp<PrecompileImageFilter> ColorFilter(sk_sp<PrecompileColorFilter> colorFilter,
99
+ sk_sp<PrecompileImageFilter> input);
100
+
101
+ // This is the Precompile correlate to SkImageFilters::DisplacementMap
102
+ SK_API sk_sp<PrecompileImageFilter> DisplacementMap(sk_sp<PrecompileImageFilter> input);
103
+
104
+ // This is the Precompile correlate to all of SkImageFilters::
105
+ // DistantLitDiffuse, PointLitDiffuse, SpotLitDiffuse
106
+ // DistantLitSpecular, PointLitSpecular, SpotLitSpecular
107
+ SK_API sk_sp<PrecompileImageFilter> Lighting(sk_sp<PrecompileImageFilter> input);
108
+
109
+ // This is the Precompile correlate to SkImageFilters::MatrixConvolution
110
+ SK_API sk_sp<PrecompileImageFilter> MatrixConvolution(sk_sp<PrecompileImageFilter> input);
111
+
112
+ // This is the Precompile correlate to SkImageFilters::Erode and SkImageFilters::Dilate
113
+ SK_API sk_sp<PrecompileImageFilter> Morphology(sk_sp<PrecompileImageFilter> input);
114
+
115
+ } // namespace PrecompileImageFilters
116
+
117
+ } // namespace skgpu::graphite
118
+
119
+ #endif // skgpu_graphite_precompile_PrecompileImageFilter_DEFINED
@@ -0,0 +1,51 @@
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 skgpu_graphite_precompile_PrecompileMaskFilter_DEFINED
9
+ #define skgpu_graphite_precompile_PrecompileMaskFilter_DEFINED
10
+
11
+ #include "include/gpu/graphite/precompile/PrecompileBase.h"
12
+
13
+ #include "include/gpu/graphite/precompile/PaintOptions.h"
14
+
15
+ namespace skgpu::graphite {
16
+
17
+ /** \class PrecompileMaskFilter
18
+ This class corresponds to the SkMaskFilter class in the main API.
19
+ */
20
+ class SK_API PrecompileMaskFilter : public PrecompileBase {
21
+ protected:
22
+ friend class PaintOptions; // for createPipelines() access
23
+
24
+ PrecompileMaskFilter() : PrecompileBase(Type::kMaskFilter) {}
25
+ ~PrecompileMaskFilter() override;
26
+
27
+ void addToKey(const KeyContext&,
28
+ PaintParamsKeyBuilder*,
29
+ PipelineDataGatherer*,
30
+ int desiredCombination) const final;
31
+
32
+ virtual void createPipelines(const KeyContext&,
33
+ PipelineDataGatherer*,
34
+ const PaintOptions::ProcessCombination&) const = 0;
35
+ };
36
+
37
+ //--------------------------------------------------------------------------------------------------
38
+ // This is the Precompile correlate to the SkMaskFilter class' factories in the main API
39
+ namespace PrecompileMaskFilters {
40
+
41
+ // This corresponds to the SkMaskFilter::MakeBlur factory in the main Skia API.
42
+ // The specific details of the blur have been elided since they don't impact the generated
43
+ // shader.
44
+ SK_API sk_sp<PrecompileMaskFilter> Blur();
45
+
46
+ } // namespace PrecompileMaskFilters
47
+
48
+ } // namespace skgpu::graphite
49
+
50
+
51
+ #endif // skgpu_graphite_precompile_PrecompileMaskFilter_DEFINED