@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
@@ -12,6 +12,7 @@
12
12
  #include "include/private/gpu/vk/SkiaVulkan.h"
13
13
 
14
14
  #include <cstddef>
15
+ #include <cstdint>
15
16
  #include <functional>
16
17
  #include <string>
17
18
  #include <vector>
@@ -65,14 +66,24 @@ struct VulkanYcbcrConversionInfo {
65
66
  if (!this->isValid() && !that.isValid()) {
66
67
  return true;
67
68
  }
68
- return this->fFormat == that.fFormat &&
69
- this->fExternalFormat == that.fExternalFormat &&
70
- this->fYcbcrModel == that.fYcbcrModel &&
71
- this->fYcbcrRange == that.fYcbcrRange &&
72
- this->fXChromaOffset == that.fXChromaOffset &&
73
- this->fYChromaOffset == that.fYChromaOffset &&
74
- this->fChromaFilter == that.fChromaFilter &&
75
- this->fForceExplicitReconstruction == that.fForceExplicitReconstruction;
69
+
70
+ // Note that we do not need to check for fFormatFeatures equality. This is because the
71
+ // Vulkan spec dictates that Android hardware buffers with the same external format must
72
+ // have the same support for key features. See
73
+ // https://docs.vulkan.org/spec/latest/chapters/memory.html#_android_hardware_buffer_external_memory
74
+ // for more details.
75
+ return this->fFormat == that.fFormat &&
76
+ this->fExternalFormat == that.fExternalFormat &&
77
+ this->fYcbcrModel == that.fYcbcrModel &&
78
+ this->fYcbcrRange == that.fYcbcrRange &&
79
+ this->fXChromaOffset == that.fXChromaOffset &&
80
+ this->fYChromaOffset == that.fYChromaOffset &&
81
+ this->fChromaFilter == that.fChromaFilter &&
82
+ this->fForceExplicitReconstruction == that.fForceExplicitReconstruction &&
83
+ this->fComponents.r == that.fComponents.r &&
84
+ this->fComponents.g == that.fComponents.g &&
85
+ this->fComponents.b == that.fComponents.b &&
86
+ this->fComponents.a == that.fComponents.a;
76
87
  }
77
88
  bool operator!=(const VulkanYcbcrConversionInfo& that) const { return !(*this == that); }
78
89
 
@@ -99,6 +110,12 @@ struct VulkanYcbcrConversionInfo {
99
110
  // For external images format features here should be those returned by a call to
100
111
  // vkAndroidHardwareBufferFormatPropertiesANDROID
101
112
  VkFormatFeatureFlags fFormatFeatures = 0;
113
+
114
+ // This is ignored when fExternalFormat is non-zero.
115
+ VkComponentMapping fComponents = {VK_COMPONENT_SWIZZLE_IDENTITY,
116
+ VK_COMPONENT_SWIZZLE_IDENTITY,
117
+ VK_COMPONENT_SWIZZLE_IDENTITY,
118
+ VK_COMPONENT_SWIZZLE_IDENTITY};
102
119
  };
103
120
 
104
121
  typedef void* VulkanDeviceLostContext;
@@ -0,0 +1,20 @@
1
+ /*
2
+ * Copyright 2024 Google Inc.
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 SkFontMgr_fontations_DEFINED
9
+ #define SkFontMgr_fontations_DEFINED
10
+
11
+ #include "include/core/SkRefCnt.h"
12
+
13
+ class SkFontMgr;
14
+
15
+ /** Create a font manager instantiating fonts using the Rust Fontations backend.
16
+ * This font manager does not support matching fonts, only instantiation.
17
+ */
18
+ SK_API sk_sp<SkFontMgr> SkFontMgr_New_Fontations_Empty();
19
+
20
+ #endif // #ifndef SkFontMgr_fontations_DEFINED
@@ -10,7 +10,10 @@
10
10
 
11
11
  #include "include/core/SkRefCnt.h"
12
12
 
13
+ #include <memory>
14
+
13
15
  class SkFontMgr;
16
+ class SkFontScanner;
14
17
 
15
18
  struct SkFontMgr_Android_CustomFonts {
16
19
  /** When specifying custom fonts, indicates how to use system fonts. */
@@ -40,6 +43,10 @@ struct SkFontMgr_Android_CustomFonts {
40
43
  };
41
44
 
42
45
  /** Create a font manager for Android. If 'custom' is NULL, use only system fonts. */
46
+
47
+ // Deprecated
43
48
  SK_API sk_sp<SkFontMgr> SkFontMgr_New_Android(const SkFontMgr_Android_CustomFonts* custom);
44
49
 
50
+ SK_API sk_sp<SkFontMgr> SkFontMgr_New_Android(const SkFontMgr_Android_CustomFonts* custom,
51
+ std::unique_ptr<SkFontScanner> scanner);
45
52
  #endif // SkFontMgr_android_DEFINED
@@ -7,7 +7,9 @@
7
7
  #ifndef SkImageGeneratorCG_DEFINED
8
8
  #define SkImageGeneratorCG_DEFINED
9
9
 
10
- #include "include/private/base/SkFeatures.h"
10
+ // This is needed as clients may override the target platform
11
+ // using SkUserConfig
12
+ #include "include/private/base/SkLoadUserConfig.h"
11
13
 
12
14
  #if defined(SK_BUILD_FOR_MAC) || defined(SK_BUILD_FOR_IOS)
13
15
 
@@ -48,7 +48,6 @@ SK_API void SkTypeface_SetEnsureLOGFONTAccessibleProc(void (*)(const LOGFONT&));
48
48
  // Experimental!
49
49
  //
50
50
  class SkFontMgr;
51
- class SkRemotableFontMgr;
52
51
  struct IDWriteFactory;
53
52
  struct IDWriteFontCollection;
54
53
  struct IDWriteFontFallback;
@@ -60,21 +59,5 @@ SK_API sk_sp<SkFontMgr> SkFontMgr_New_DirectWrite(IDWriteFactory* factory,
60
59
  IDWriteFontCollection* collection,
61
60
  IDWriteFontFallback* fallback);
62
61
 
63
- /**
64
- * Creates an SkFontMgr which renders using DirectWrite and obtains its data
65
- * from the SkRemotableFontMgr.
66
- *
67
- * If DirectWrite could not be initialized, will return NULL.
68
- */
69
- SK_API sk_sp<SkFontMgr> SkFontMgr_New_DirectWriteRenderer(sk_sp<SkRemotableFontMgr>);
70
-
71
- /**
72
- * Creates an SkRemotableFontMgr backed by DirectWrite using the default
73
- * system font collection in the current locale.
74
- *
75
- * If DirectWrite could not be initialized, will return NULL.
76
- */
77
- SK_API sk_sp<SkRemotableFontMgr> SkRemotableFontMgr_New_DirectWrite();
78
-
79
62
  #endif // SK_BUILD_FOR_WIN
80
63
  #endif // SkTypeface_win_DEFINED
@@ -15,6 +15,7 @@
15
15
  #include "include/core/SkImageInfo.h"
16
16
  #include "include/core/SkRefCnt.h"
17
17
  #include "include/core/SkTypes.h"
18
+ #include "include/private/base/SkTo.h"
18
19
  #include "modules/skcms/skcms.h"
19
20
 
20
21
  #include <cstdint>
@@ -165,8 +166,13 @@ public:
165
166
  break;
166
167
  }
167
168
 
168
- return SkEncodedInfo(width, height, color, alpha,
169
- bitsPerComponent, colorDepth, std::move(profile));
169
+ return SkEncodedInfo(width,
170
+ height,
171
+ color,
172
+ alpha,
173
+ SkToU8(bitsPerComponent),
174
+ SkToU8(colorDepth),
175
+ std::move(profile));
170
176
  }
171
177
 
172
178
  /*
@@ -9,94 +9,47 @@
9
9
  #define SkExif_DEFINED
10
10
 
11
11
  #include "include/codec/SkEncodedOrigin.h"
12
- #include "include/core/SkData.h"
13
- #include "include/core/SkRefCnt.h"
14
12
  #include "include/private/base/SkAPI.h"
15
13
 
16
14
  #include <cstdint>
15
+ #include <optional>
17
16
 
18
- class SK_API SkExifMetadata {
19
- public:
20
- /*
21
- * Parse the metadata specified in |data|.
22
- */
23
- SkExifMetadata(const sk_sp<SkData> data);
17
+ class SkData;
24
18
 
25
- /*
26
- * If the image encoded origin is specified, populate |out| and return true. Otherwise return
27
- * false.
28
- */
29
- bool getOrigin(SkEncodedOrigin* out) const {
30
- if (fOriginPresent && out) *out = fOriginValue;
31
- return fOriginPresent;
32
- }
19
+ namespace SkExif {
33
20
 
34
- /*
35
- * If the HDR headroom is specified, populate |out| and return true. Otherwise return false.
36
- */
37
- bool getHdrHeadroom(float* out) const {
38
- if (fHdrHeadroomPresent && out) *out = fHdrHeadroomValue;
39
- return fHdrHeadroomPresent;
40
- }
21
+ // Tag values that are parsed by Parse and stored in Metadata.
22
+ static constexpr uint16_t kOriginTag = 0x112;
23
+ static constexpr uint16_t kResolutionUnitTag = 0x0128;
24
+ static constexpr uint16_t kXResolutionTag = 0x011a;
25
+ static constexpr uint16_t kYResolutionTag = 0x011b;
26
+ static constexpr uint16_t kPixelXDimensionTag = 0xa002;
27
+ static constexpr uint16_t kPixelYDimensionTag = 0xa003;
41
28
 
42
- /*
43
- * If resolution unit, x, or y is specified, populate |out| and return true. Otherwise return
44
- * false.
45
- */
46
- bool getResolutionUnit(uint16_t* out) const {
47
- if (fResolutionUnitPresent && out) *out = fResolutionUnitValue;
48
- return fResolutionUnitPresent;
49
- }
50
- bool getXResolution(float* out) const {
51
- if (fXResolutionPresent && out) *out = fXResolutionValue;
52
- return fXResolutionPresent;
53
- }
54
- bool getYResolution(float* out) const {
55
- if (fYResolutionPresent && out) *out = fYResolutionValue;
56
- return fYResolutionPresent;
57
- }
58
-
59
- /*
60
- * If pixel dimension x or y is specified, populate |out| and return true. Otherwise return
61
- * false.
62
- */
63
- bool getPixelXDimension(uint32_t* out) const {
64
- if (fPixelXDimensionPresent && out) *out = fPixelXDimensionValue;
65
- return fPixelXDimensionPresent;
66
- }
67
- bool getPixelYDimension(uint32_t* out) const {
68
- if (fPixelYDimensionPresent && out) *out = fPixelYDimensionValue;
69
- return fPixelYDimensionPresent;
70
- }
71
-
72
- private:
73
- // Helper functions and constants for parsing the data.
74
- void parseIfd(uint32_t ifdOffset, bool littleEndian, bool isRoot);
75
-
76
- // The input data.
77
- const sk_sp<SkData> fData;
78
-
79
- // The origin property.
80
- bool fOriginPresent = false;
81
- SkEncodedOrigin fOriginValue = kTopLeft_SkEncodedOrigin;
29
+ struct Metadata {
30
+ // The image orientation.
31
+ std::optional<SkEncodedOrigin> fOrigin;
82
32
 
83
33
  // The HDR headroom property.
84
- bool fHdrHeadroomPresent = false;
85
- float fHdrHeadroomValue = 1.f;
34
+ // https://developer.apple.com/documentation/appkit/images_and_pdf/applying_apple_hdr_effect_to_your_photos
35
+ std::optional<float> fHdrHeadroom;
86
36
 
87
37
  // Resolution.
88
- bool fResolutionUnitPresent = false;
89
- uint16_t fResolutionUnitValue = 0;
90
- bool fXResolutionPresent = false;
91
- float fXResolutionValue = 0;
92
- bool fYResolutionPresent = false;
93
- float fYResolutionValue = 0;
38
+ std::optional<uint16_t> fResolutionUnit;
39
+ std::optional<float> fXResolution;
40
+ std::optional<float> fYResolution;
94
41
 
95
42
  // Size in pixels.
96
- bool fPixelXDimensionPresent = false;
97
- uint32_t fPixelXDimensionValue = 0;
98
- bool fPixelYDimensionPresent = false;
99
- uint32_t fPixelYDimensionValue = 0;
43
+ std::optional<uint32_t> fPixelXDimension;
44
+ std::optional<uint32_t> fPixelYDimension;
100
45
  };
101
46
 
47
+ /*
48
+ * Parse the metadata specified in |data| and write them to |metadata|. Stop only at an
49
+ * unrecoverable error (allow truncated input).
50
+ */
51
+ void SK_API Parse(Metadata& metadata, const SkData* data);
52
+
53
+ } // namespace SkExif
54
+
102
55
  #endif
@@ -10,6 +10,8 @@
10
10
 
11
11
  #include "include/core/SkColor.h"
12
12
  #include "include/core/SkColorSpace.h"
13
+ #include "include/core/SkRefCnt.h"
14
+ class SkData;
13
15
 
14
16
  /**
15
17
  * Gainmap rendering parameters. Suppose our display has HDR to SDR ratio of H and we wish to
@@ -72,29 +74,67 @@ struct SkGainmapInfo {
72
74
  };
73
75
  BaseImageType fBaseImageType = BaseImageType::kSDR;
74
76
 
77
+ /**
78
+ * The type of the gainmap image. If the type is kApple, then the gainmap image was originally
79
+ * encoded according to the specification at [0], and can be converted to the kDefault type by
80
+ * applying the transformation described at [1].
81
+ * [0] https://developer.apple.com/documentation/appkit/images_and_pdf/
82
+ * applying_apple_hdr_effect_to_your_photos
83
+ * [1] https://docs.google.com/document/d/1iUpYAThVV_FuDdeiO3t0vnlfoA1ryq0WfGS9FuydwKc
84
+ */
85
+ enum class Type {
86
+ kDefault,
87
+ kApple,
88
+ };
89
+ Type fType = Type::kDefault;
90
+
75
91
  /**
76
92
  * If specified, color space to apply the gainmap in, otherwise the base image's color space
77
93
  * is used. Only the color primaries are used, the transfer function is irrelevant.
78
94
  */
79
95
  sk_sp<SkColorSpace> fGainmapMathColorSpace = nullptr;
80
96
 
97
+ /**
98
+ * Return true if this can be encoded as an UltraHDR v1 image.
99
+ */
100
+ bool isUltraHDRv1Compatible() const;
101
+
102
+ /**
103
+ * If |data| contains an ISO 21496-1 version that is supported, return true. Otherwise return
104
+ * false.
105
+ */
106
+ static bool ParseVersion(const SkData* data);
107
+
108
+ /**
109
+ * If |data| constains ISO 21496-1 metadata then parse that metadata then use it to populate
110
+ * |info| and return true, otherwise return false. If |data| indicates that that the base image
111
+ * color space primaries should be used for gainmap application then set
112
+ * |fGainmapMathColorSpace| to nullptr, otherwise set |fGainmapMathColorSpace| to sRGB (the
113
+ * default, to be overwritten by the image decoder).
114
+ */
115
+ static bool Parse(const SkData* data, SkGainmapInfo& info);
116
+
117
+ /**
118
+ * Serialize an ISO 21496-1 version 0 blob containing only the version structure.
119
+ */
120
+ static sk_sp<SkData> SerializeVersion();
121
+
122
+ /**
123
+ * Serialize an ISO 21496-1 version 0 blob containing this' gainmap parameters.
124
+ */
125
+ sk_sp<SkData> serialize() const;
126
+
81
127
  inline bool operator==(const SkGainmapInfo& other) const {
82
128
  return fGainmapRatioMin == other.fGainmapRatioMin &&
83
129
  fGainmapRatioMax == other.fGainmapRatioMax && fGainmapGamma == other.fGainmapGamma &&
84
130
  fEpsilonSdr == other.fEpsilonSdr && fEpsilonHdr == other.fEpsilonHdr &&
85
131
  fDisplayRatioSdr == other.fDisplayRatioSdr &&
86
132
  fDisplayRatioHdr == other.fDisplayRatioHdr &&
87
- fBaseImageType == other.fBaseImageType &&
133
+ fBaseImageType == other.fBaseImageType && fType == other.fType &&
88
134
  SkColorSpace::Equals(fGainmapMathColorSpace.get(),
89
135
  other.fGainmapMathColorSpace.get());
90
136
  }
91
137
  inline bool operator!=(const SkGainmapInfo& other) const { return !(*this == other); }
92
-
93
- // TODO(ccameron): Remove these parameters once we are certain they are not used in Android.
94
- enum class Type {
95
- kDefault,
96
- };
97
- Type fType = Type::kDefault;
98
138
  };
99
139
 
100
140
  #endif
@@ -47,6 +47,11 @@ public:
47
47
  */
48
48
  static std::unique_ptr<SkJpegMetadataDecoder> Make(std::vector<Segment> headerSegments);
49
49
 
50
+ /**
51
+ * Create metadata for the specified encoded JPEG file. This may return nullptr.
52
+ */
53
+ static std::unique_ptr<SkJpegMetadataDecoder> Make(sk_sp<SkData> data);
54
+
50
55
  /**
51
56
  * Return the Exif data attached to the image (if any) and nullptr otherwise. If |copyData| is
52
57
  * false, then the returned SkData may directly reference the data provided when this object was
@@ -61,6 +66,13 @@ public:
61
66
  */
62
67
  virtual sk_sp<SkData> getICCProfileData(bool copyData) const = 0;
63
68
 
69
+ /**
70
+ * Return the ISO 21496-1 metadata, if any, and nullptr otherwise. If |copyData| is false,
71
+ * then the returned SkData may directly reference the data provided when this object was
72
+ * created.
73
+ */
74
+ virtual sk_sp<SkData> getISOGainmapMetadata(bool copyData) const = 0;
75
+
64
76
  /**
65
77
  * Return true if there is a possibility that this image contains a gainmap image.
66
78
  */
@@ -15,6 +15,7 @@
15
15
  #include "include/core/SkTypes.h"
16
16
  #include "include/private/SkIDChangeListener.h"
17
17
  #include "include/private/base/SkDebug.h"
18
+ #include "include/private/base/SkSpan_impl.h"
18
19
  #include "include/private/base/SkTArray.h"
19
20
  #include "include/private/base/SkTo.h"
20
21
 
@@ -22,7 +23,6 @@
22
23
  #include <cstddef>
23
24
  #include <cstdint>
24
25
  #include <tuple>
25
- #include <utility>
26
26
 
27
27
  class SkMatrix;
28
28
  class SkRRect;
@@ -59,18 +59,23 @@ public:
59
59
  using VerbsArray = skia_private::STArray<4, uint8_t>;
60
60
  using ConicWeightsArray = skia_private::STArray<2, SkScalar>;
61
61
 
62
- SkPathRef(PointsArray points, VerbsArray verbs, ConicWeightsArray weights,
63
- unsigned segmentMask)
64
- : fPoints(std::move(points))
65
- , fVerbs(std::move(verbs))
66
- , fConicWeights(std::move(weights))
62
+ enum class PathType : uint8_t {
63
+ kGeneral,
64
+ kOval,
65
+ kRRect,
66
+ };
67
+
68
+ SkPathRef(SkSpan<const SkPoint> points, SkSpan<const uint8_t> verbs,
69
+ SkSpan<const SkScalar> weights, unsigned segmentMask)
70
+ : fPoints(points)
71
+ , fVerbs(verbs)
72
+ , fConicWeights(weights)
67
73
  {
68
74
  fBoundsIsDirty = true; // this also invalidates fIsFinite
69
75
  fGenerationID = 0; // recompute
70
76
  fSegmentMask = segmentMask;
71
- fIsOval = false;
72
- fIsRRect = false;
73
- // The next two values don't matter unless fIsOval or fIsRRect are true.
77
+ fType = PathType::kGeneral;
78
+ // The next two values don't matter unless fType is kOval or kRRect
74
79
  fRRectOrOvalIsCCW = false;
75
80
  fRRectOrOvalStartIdx = 0xAC;
76
81
  SkDEBUGCODE(fEditorsAttached.store(0);)
@@ -83,7 +88,8 @@ public:
83
88
  public:
84
89
  Editor(sk_sp<SkPathRef>* pathRef,
85
90
  int incReserveVerbs = 0,
86
- int incReservePoints = 0);
91
+ int incReservePoints = 0,
92
+ int incReserveConics = 0);
87
93
 
88
94
  ~Editor() { SkDEBUGCODE(fPathRef->fEditorsAttached--;) }
89
95
 
@@ -146,12 +152,12 @@ public:
146
152
  */
147
153
  SkPathRef* pathRef() { return fPathRef; }
148
154
 
149
- void setIsOval(bool isOval, bool isCCW, unsigned start) {
150
- fPathRef->setIsOval(isOval, isCCW, start);
155
+ void setIsOval(bool isCCW, unsigned start) {
156
+ fPathRef->setIsOval(isCCW, start);
151
157
  }
152
158
 
153
- void setIsRRect(bool isRRect, bool isCCW, unsigned start) {
154
- fPathRef->setIsRRect(isRRect, isCCW, start);
159
+ void setIsRRect(bool isCCW, unsigned start) {
160
+ fPathRef->setIsRRect(isCCW, start);
155
161
  }
156
162
 
157
163
  void setBounds(const SkRect& rect) { fPathRef->setBounds(rect); }
@@ -226,7 +232,7 @@ public:
226
232
  * fact ovals can report false.
227
233
  */
228
234
  bool isOval(SkRect* rect, bool* isCCW, unsigned* start) const {
229
- if (fIsOval) {
235
+ if (fType == PathType::kOval) {
230
236
  if (rect) {
231
237
  *rect = this->getBounds();
232
238
  }
@@ -238,7 +244,7 @@ public:
238
244
  }
239
245
  }
240
246
 
241
- return SkToBool(fIsOval);
247
+ return fType == PathType::kOval;
242
248
  }
243
249
 
244
250
  bool isRRect(SkRRect* rrect, bool* isCCW, unsigned* start) const;
@@ -351,13 +357,12 @@ private:
351
357
  kSegmentMask_SerializationShift = 0 // requires 4 bits (deprecated)
352
358
  };
353
359
 
354
- SkPathRef(int numVerbs = 0, int numPoints = 0) {
360
+ SkPathRef(int numVerbs = 0, int numPoints = 0, int numConics = 0) {
355
361
  fBoundsIsDirty = true; // this also invalidates fIsFinite
356
362
  fGenerationID = kEmptyGenID;
357
363
  fSegmentMask = 0;
358
- fIsOval = false;
359
- fIsRRect = false;
360
- // The next two values don't matter unless fIsOval or fIsRRect are true.
364
+ fType = PathType::kGeneral;
365
+ // The next two values don't matter unless fType is kOval or kRRect
361
366
  fRRectOrOvalIsCCW = false;
362
367
  fRRectOrOvalStartIdx = 0xAC;
363
368
  if (numPoints > 0) {
@@ -366,11 +371,14 @@ private:
366
371
  if (numVerbs > 0) {
367
372
  fVerbs.reserve_exact(numVerbs);
368
373
  }
374
+ if (numConics > 0) {
375
+ fConicWeights.reserve_exact(numConics);
376
+ }
369
377
  SkDEBUGCODE(fEditorsAttached.store(0);)
370
378
  SkDEBUGCODE(this->validate();)
371
379
  }
372
380
 
373
- void copy(const SkPathRef& ref, int additionalReserveVerbs, int additionalReservePoints);
381
+ void copy(const SkPathRef& ref, int additionalReserveVerbs, int additionalReservePoints, int additionalReserveConics);
374
382
 
375
383
  // Return true if the computed bounds are finite.
376
384
  static bool ComputePtBounds(SkRect* bounds, const SkPathRef& ref) {
@@ -396,14 +404,19 @@ private:
396
404
  }
397
405
 
398
406
  /** Makes additional room but does not change the counts or change the genID */
399
- void incReserve(int additionalVerbs, int additionalPoints) {
407
+ void incReserve(int additionalVerbs, int additionalPoints, int additionalConics) {
400
408
  SkDEBUGCODE(this->validate();)
401
409
  // Use reserve() so that if there is not enough space, the array will grow with some
402
410
  // additional space. This ensures repeated calls to grow won't always allocate.
403
- if (additionalPoints > 0)
411
+ if (additionalPoints > 0) {
404
412
  fPoints.reserve(fPoints.size() + additionalPoints);
405
- if (additionalVerbs > 0)
413
+ }
414
+ if (additionalVerbs > 0) {
406
415
  fVerbs.reserve(fVerbs.size() + additionalVerbs);
416
+ }
417
+ if (additionalConics > 0) {
418
+ fConicWeights.reserve(fConicWeights.size() + additionalConics);
419
+ }
407
420
  SkDEBUGCODE(this->validate();)
408
421
  }
409
422
 
@@ -418,14 +431,14 @@ private:
418
431
  fGenerationID = 0;
419
432
 
420
433
  fSegmentMask = 0;
421
- fIsOval = false;
422
- fIsRRect = false;
434
+ fType = PathType::kGeneral;
423
435
  }
424
436
 
425
437
  /** Resets the path ref with verbCount verbs and pointCount points, all uninitialized. Also
426
438
  * allocates space for reserveVerb additional verbs and reservePoints additional points.*/
427
439
  void resetToSize(int verbCount, int pointCount, int conicCount,
428
- int reserveVerbs = 0, int reservePoints = 0) {
440
+ int reserveVerbs = 0, int reservePoints = 0,
441
+ int reserveConics = 0) {
429
442
  this->commonReset();
430
443
  // Use reserve_exact() so the arrays are sized to exactly fit the data.
431
444
  fPoints.reserve_exact(pointCount + reservePoints);
@@ -434,6 +447,7 @@ private:
434
447
  fVerbs.reserve_exact(verbCount + reserveVerbs);
435
448
  fVerbs.resize_back(verbCount);
436
449
 
450
+ fConicWeights.reserve_exact(conicCount + reserveConics);
437
451
  fConicWeights.resize_back(conicCount);
438
452
  SkDEBUGCODE(this->validate();)
439
453
  }
@@ -471,14 +485,14 @@ private:
471
485
  */
472
486
  friend SkPathRef* sk_create_empty_pathref();
473
487
 
474
- void setIsOval(bool isOval, bool isCCW, unsigned start) {
475
- fIsOval = isOval;
488
+ void setIsOval(bool isCCW, unsigned start) {
489
+ fType = PathType::kOval;
476
490
  fRRectOrOvalIsCCW = isCCW;
477
491
  fRRectOrOvalStartIdx = SkToU8(start);
478
492
  }
479
493
 
480
- void setIsRRect(bool isRRect, bool isCCW, unsigned start) {
481
- fIsRRect = isRRect;
494
+ void setIsRRect(bool isCCW, unsigned start) {
495
+ fType = PathType::kRRect;
482
496
  fRRectOrOvalIsCCW = isCCW;
483
497
  fRRectOrOvalStartIdx = SkToU8(start);
484
498
  }
@@ -486,8 +500,7 @@ private:
486
500
  // called only by the editor. Note that this is not a const function.
487
501
  SkPoint* getWritablePoints() {
488
502
  SkDEBUGCODE(this->validate();)
489
- fIsOval = false;
490
- fIsRRect = false;
503
+ fType = PathType::kGeneral;
491
504
  return fPoints.begin();
492
505
  }
493
506
 
@@ -498,29 +511,24 @@ private:
498
511
 
499
512
  void callGenIDChangeListeners();
500
513
 
514
+ mutable SkRect fBounds;
515
+
501
516
  enum {
502
- kMinSize = 256,
517
+ kEmptyGenID = 1, // GenID reserved for path ref with zero points and zero verbs.
503
518
  };
504
-
505
- mutable SkRect fBounds;
519
+ mutable uint32_t fGenerationID;
520
+ SkIDChangeListener::List fGenIDChangeListeners;
506
521
 
507
522
  PointsArray fPoints;
508
523
  VerbsArray fVerbs;
509
524
  ConicWeightsArray fConicWeights;
510
525
 
511
- enum {
512
- kEmptyGenID = 1, // GenID reserved for path ref with zero points and zero verbs.
513
- };
514
- mutable uint32_t fGenerationID;
515
526
  SkDEBUGCODE(std::atomic<int> fEditorsAttached;) // assert only one editor in use at any time.
516
527
 
517
- SkIDChangeListener::List fGenIDChangeListeners;
518
-
519
528
  mutable uint8_t fBoundsIsDirty;
520
529
  mutable bool fIsFinite; // only meaningful if bounds are valid
521
530
 
522
- bool fIsOval;
523
- bool fIsRRect;
531
+ PathType fType;
524
532
  // Both the circle and rrect special cases have a notion of direction and starting point
525
533
  // The next two variables store that information for either.
526
534
  bool fRRectOrOvalIsCCW;
@@ -35,10 +35,19 @@ public:
35
35
  static std::unique_ptr<SkXmp> Make(sk_sp<SkData> xmpStandard, sk_sp<SkData> xmpExtended);
36
36
 
37
37
  // Extract HDRGM gainmap parameters.
38
- virtual bool getGainmapInfoHDRGM(SkGainmapInfo* info) const = 0;
39
-
40
- // Extract HDRGainMap gainmap parameters.
41
- virtual bool getGainmapInfoHDRGainMap(SkGainmapInfo* info) const = 0;
38
+ // TODO(b/338342146): Remove this once all callers are removed.
39
+ bool getGainmapInfoHDRGM(SkGainmapInfo* info) const { return getGainmapInfoAdobe(info); }
40
+
41
+ // Extract gainmap parameters from http://ns.adobe.com/hdr-gain-map/1.0/.
42
+ virtual bool getGainmapInfoAdobe(SkGainmapInfo* info) const = 0;
43
+
44
+ // If the image specifies http://ns.apple.com/pixeldatainfo/1.0/ AuxiliaryImageType of
45
+ // urn:com:apple:photo:2020:aux:hdrgainmap, and includes a http://ns.apple.com/HDRGainMap/1.0/
46
+ // HDRGainMapVersion, then populate |info| with gainmap parameters that will approximate the
47
+ // math specified at [0] and return true.
48
+ // [0] https://developer.apple.com/documentation/appkit/images_and_pdf/
49
+ // applying_apple_hdr_effect_to_your_photos
50
+ virtual bool getGainmapInfoApple(float exifHdrHeadroom, SkGainmapInfo* info) const = 0;
42
51
 
43
52
  // If this includes GContainer metadata and the GContainer contains an item with semantic
44
53
  // GainMap and Mime of image/jpeg, then return true, and populate |offset| and |size| with