@shopify/react-native-skia 1.3.13 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (361) hide show
  1. package/android/CMakeLists.txt +9 -4
  2. package/android/cpp/rnskia-android/RNSkAndroidPlatformContext.h +6 -0
  3. package/android/cpp/rnskia-android/SkiaOpenGLSurfaceFactory.cpp +81 -0
  4. package/android/cpp/rnskia-android/SkiaOpenGLSurfaceFactory.h +40 -0
  5. package/cpp/api/JsiSkApi.h +2 -0
  6. package/cpp/api/JsiSkPath.h +29 -19
  7. package/cpp/api/JsiSkRuntimeEffect.h +7 -0
  8. package/cpp/api/JsiSkiaContext.h +79 -0
  9. package/cpp/rnskia/RNSkPlatformContext.h +4 -0
  10. package/cpp/rnskia/SkiaContext.h +22 -0
  11. package/cpp/skia/include/android/GrAHardwareBufferUtils.h +2 -2
  12. package/cpp/skia/include/android/SkImageAndroid.h +1 -1
  13. package/cpp/skia/include/android/SkSurfaceAndroid.h +1 -1
  14. package/cpp/skia/include/codec/SkAndroidCodec.h +13 -9
  15. package/cpp/skia/include/codec/SkCodec.h +28 -5
  16. package/cpp/skia/include/core/SkArc.h +69 -0
  17. package/cpp/skia/include/core/SkBitmap.h +10 -0
  18. package/cpp/skia/include/core/SkBlender.h +2 -3
  19. package/cpp/skia/include/core/SkCanvas.h +86 -16
  20. package/cpp/skia/include/core/SkCapabilities.h +0 -4
  21. package/cpp/skia/include/core/SkColorFilter.h +4 -4
  22. package/cpp/skia/include/core/SkColorPriv.h +5 -7
  23. package/cpp/skia/include/core/SkColorType.h +2 -0
  24. package/cpp/skia/include/core/SkFlattenable.h +1 -1
  25. package/cpp/skia/include/core/SkFontArguments.h +3 -1
  26. package/cpp/skia/include/core/SkFontParameters.h +3 -2
  27. package/cpp/skia/include/core/SkFourByteTag.h +19 -0
  28. package/cpp/skia/include/core/SkImage.h +41 -1
  29. package/cpp/skia/include/core/SkImageGenerator.h +0 -5
  30. package/cpp/skia/include/core/SkImageInfo.h +20 -0
  31. package/cpp/skia/include/core/SkM44.h +1 -1
  32. package/cpp/skia/include/core/SkMatrix.h +2 -1
  33. package/cpp/skia/include/core/SkMilestone.h +1 -1
  34. package/cpp/skia/include/core/SkPaint.h +1 -1
  35. package/cpp/skia/include/core/SkPath.h +20 -6
  36. package/cpp/skia/include/core/SkPathMeasure.h +1 -0
  37. package/cpp/skia/include/core/SkPicture.h +5 -5
  38. package/cpp/skia/include/core/SkPoint3.h +2 -12
  39. package/cpp/skia/include/core/SkRRect.h +5 -0
  40. package/cpp/skia/include/core/SkRect.h +5 -16
  41. package/cpp/skia/include/core/SkRefCnt.h +2 -0
  42. package/cpp/skia/include/core/SkScalar.h +20 -32
  43. package/cpp/skia/include/core/SkShader.h +17 -0
  44. package/cpp/skia/include/core/SkSize.h +2 -1
  45. package/cpp/skia/include/core/SkStream.h +2 -3
  46. package/cpp/skia/include/core/SkStrokeRec.h +6 -1
  47. package/cpp/skia/include/core/SkSurface.h +13 -4
  48. package/cpp/skia/include/core/SkSurfaceProps.h +5 -0
  49. package/cpp/skia/include/core/SkSwizzle.h +3 -1
  50. package/cpp/skia/include/core/SkTypeface.h +1 -0
  51. package/cpp/skia/include/core/SkTypes.h +1 -19
  52. package/cpp/skia/include/core/SkUnPreMultiply.h +4 -5
  53. package/cpp/skia/include/core/SkVertices.h +4 -2
  54. package/cpp/skia/include/docs/SkPDFDocument.h +11 -14
  55. package/cpp/skia/include/effects/SkHighContrastFilter.h +6 -6
  56. package/cpp/skia/include/effects/SkImageFilters.h +49 -23
  57. package/cpp/skia/include/effects/SkRuntimeEffect.h +51 -70
  58. package/cpp/skia/include/effects/SkShaderMaskFilter.h +2 -0
  59. package/cpp/skia/include/effects/SkTableMaskFilter.h +2 -0
  60. package/cpp/skia/include/gpu/GrBackendSemaphore.h +2 -120
  61. package/cpp/skia/include/gpu/GrBackendSurface.h +2 -466
  62. package/cpp/skia/include/gpu/GrContextOptions.h +2 -368
  63. package/cpp/skia/include/gpu/GrContextThreadSafeProxy.h +2 -179
  64. package/cpp/skia/include/gpu/GrDirectContext.h +2 -1011
  65. package/cpp/skia/include/gpu/GrDriverBugWorkarounds.h +2 -47
  66. package/cpp/skia/include/gpu/GrDriverBugWorkaroundsAutogen.h +2 -41
  67. package/cpp/skia/include/gpu/GrRecordingContext.h +2 -279
  68. package/cpp/skia/include/gpu/GrTypes.h +2 -238
  69. package/cpp/skia/include/gpu/GrYUVABackendTextures.h +2 -118
  70. package/cpp/skia/include/gpu/d3d/GrD3DBackendContext.h +2 -29
  71. package/cpp/skia/include/gpu/d3d/GrD3DTypes.h +2 -242
  72. package/cpp/skia/include/gpu/ganesh/GrBackendSemaphore.h +80 -0
  73. package/cpp/skia/include/gpu/ganesh/GrBackendSurface.h +412 -0
  74. package/cpp/skia/include/gpu/ganesh/GrContextOptions.h +386 -0
  75. package/cpp/skia/include/gpu/ganesh/GrContextThreadSafeProxy.h +175 -0
  76. package/cpp/skia/include/gpu/ganesh/GrDirectContext.h +993 -0
  77. package/cpp/skia/include/gpu/ganesh/GrDriverBugWorkarounds.h +53 -0
  78. package/cpp/skia/include/gpu/ganesh/GrDriverBugWorkaroundsAutogen.h +45 -0
  79. package/cpp/skia/include/gpu/ganesh/GrExternalTextureGenerator.h +1 -1
  80. package/cpp/skia/include/gpu/ganesh/GrRecordingContext.h +285 -0
  81. package/cpp/skia/include/gpu/ganesh/GrTypes.h +177 -0
  82. package/cpp/skia/include/gpu/ganesh/GrYUVABackendTextures.h +130 -0
  83. package/cpp/skia/include/gpu/ganesh/SkImageGanesh.h +1 -1
  84. package/cpp/skia/include/gpu/ganesh/SkSurfaceGanesh.h +1 -1
  85. package/cpp/skia/include/gpu/ganesh/d3d/GrD3DBackendContext.h +35 -0
  86. package/cpp/skia/include/gpu/ganesh/d3d/GrD3DTypes.h +248 -0
  87. package/cpp/skia/include/gpu/ganesh/gl/GrGLAssembleHelpers.h +17 -0
  88. package/cpp/skia/include/gpu/ganesh/gl/GrGLAssembleInterface.h +45 -0
  89. package/cpp/skia/include/gpu/ganesh/gl/GrGLBackendSurface.h +1 -1
  90. package/cpp/skia/include/gpu/ganesh/gl/GrGLConfig.h +69 -0
  91. package/cpp/skia/include/gpu/ganesh/gl/GrGLExtensions.h +79 -0
  92. package/cpp/skia/include/gpu/ganesh/gl/GrGLFunctions.h +306 -0
  93. package/cpp/skia/include/gpu/ganesh/gl/GrGLInterface.h +338 -0
  94. package/cpp/skia/include/gpu/ganesh/gl/GrGLMakeWebGLInterface.h +19 -0
  95. package/cpp/skia/include/gpu/ganesh/gl/GrGLTypes.h +219 -0
  96. package/cpp/skia/include/gpu/{gl → ganesh/gl}/egl/GrGLMakeEGLInterface.h +2 -2
  97. package/cpp/skia/include/gpu/ganesh/gl/epoxy/GrGLMakeEpoxyEGLInterface.h +20 -0
  98. package/cpp/skia/include/gpu/ganesh/gl/ios/GrGLMakeIOSInterface.h +20 -0
  99. package/cpp/skia/include/gpu/ganesh/gl/mac/GrGLMakeMacInterface.h +20 -0
  100. package/cpp/skia/include/gpu/ganesh/gl/win/GrGLMakeWinInterface.h +20 -0
  101. package/cpp/skia/include/gpu/ganesh/mock/GrMockTypes.h +166 -0
  102. package/cpp/skia/include/gpu/{mtl → ganesh/mtl}/GrMtlBackendContext.h +2 -2
  103. package/cpp/skia/include/gpu/ganesh/mtl/GrMtlBackendSemaphore.h +23 -0
  104. package/cpp/skia/include/gpu/ganesh/mtl/GrMtlBackendSurface.h +44 -0
  105. package/cpp/skia/include/gpu/ganesh/mtl/GrMtlDirectContext.h +30 -0
  106. package/cpp/skia/include/gpu/{mtl → ganesh/mtl}/GrMtlTypes.h +1 -3
  107. package/cpp/skia/include/gpu/ganesh/mtl/SkSurfaceMetal.h +2 -2
  108. package/cpp/skia/include/gpu/ganesh/vk/GrBackendDrawableInfo.h +2 -2
  109. package/cpp/skia/include/gpu/ganesh/vk/GrVkBackendSemaphore.h +1 -1
  110. package/cpp/skia/include/gpu/ganesh/vk/GrVkBackendSurface.h +7 -3
  111. package/cpp/skia/include/gpu/ganesh/vk/GrVkDirectContext.h +6 -3
  112. package/cpp/skia/include/gpu/ganesh/vk/GrVkTypes.h +101 -0
  113. package/cpp/skia/include/gpu/gl/GrGLAssembleHelpers.h +2 -9
  114. package/cpp/skia/include/gpu/gl/GrGLAssembleInterface.h +2 -38
  115. package/cpp/skia/include/gpu/gl/GrGLConfig.h +2 -73
  116. package/cpp/skia/include/gpu/gl/GrGLExtensions.h +2 -72
  117. package/cpp/skia/include/gpu/gl/GrGLFunctions.h +2 -301
  118. package/cpp/skia/include/gpu/gl/GrGLInterface.h +2 -332
  119. package/cpp/skia/include/gpu/gl/GrGLTypes.h +2 -213
  120. package/cpp/skia/include/gpu/graphite/BackendSemaphore.h +20 -41
  121. package/cpp/skia/include/gpu/graphite/BackendTexture.h +18 -118
  122. package/cpp/skia/include/gpu/graphite/Context.h +122 -44
  123. package/cpp/skia/include/gpu/graphite/ContextOptions.h +30 -3
  124. package/cpp/skia/include/gpu/graphite/GraphiteTypes.h +45 -17
  125. package/cpp/skia/include/gpu/graphite/Image.h +56 -54
  126. package/cpp/skia/include/gpu/graphite/Recorder.h +68 -14
  127. package/cpp/skia/include/gpu/graphite/Recording.h +3 -3
  128. package/cpp/skia/include/gpu/graphite/Surface.h +6 -2
  129. package/cpp/skia/include/gpu/graphite/TextureInfo.h +36 -117
  130. package/cpp/skia/include/gpu/graphite/dawn/DawnTypes.h +108 -6
  131. package/cpp/skia/include/gpu/graphite/mtl/MtlBackendContext.h +4 -1
  132. package/cpp/skia/include/gpu/graphite/mtl/MtlGraphiteTypes.h +41 -25
  133. package/cpp/skia/include/gpu/graphite/precompile/PaintOptions.h +197 -0
  134. package/cpp/skia/include/gpu/graphite/precompile/Precompile.h +48 -0
  135. package/cpp/skia/include/gpu/graphite/precompile/PrecompileBase.h +84 -0
  136. package/cpp/skia/include/gpu/graphite/precompile/PrecompileBlender.h +56 -0
  137. package/cpp/skia/include/gpu/graphite/precompile/PrecompileColorFilter.h +85 -0
  138. package/cpp/skia/include/gpu/graphite/precompile/PrecompileImageFilter.h +119 -0
  139. package/cpp/skia/include/gpu/graphite/precompile/PrecompileMaskFilter.h +51 -0
  140. package/cpp/skia/include/gpu/graphite/precompile/PrecompileRuntimeEffect.h +47 -0
  141. package/cpp/skia/include/gpu/graphite/precompile/PrecompileShader.h +170 -0
  142. package/cpp/skia/include/gpu/graphite/vk/VulkanGraphiteTypes.h +24 -2
  143. package/cpp/skia/include/gpu/mock/GrMockTypes.h +2 -157
  144. package/cpp/skia/include/gpu/mtl/MtlMemoryAllocator.h +2 -0
  145. package/cpp/skia/include/gpu/vk/GrVkTypes.h +2 -101
  146. package/cpp/skia/include/gpu/vk/VulkanBackendContext.h +13 -8
  147. package/cpp/skia/include/gpu/vk/VulkanExtensions.h +9 -3
  148. package/cpp/skia/include/gpu/vk/VulkanMemoryAllocator.h +4 -1
  149. package/cpp/skia/include/gpu/vk/VulkanTypes.h +25 -8
  150. package/cpp/skia/include/ports/SkFontMgr_Fontations.h +20 -0
  151. package/cpp/skia/include/ports/SkFontMgr_android.h +7 -0
  152. package/cpp/skia/include/ports/SkImageGeneratorCG.h +3 -1
  153. package/cpp/skia/include/ports/SkTypeface_win.h +0 -17
  154. package/cpp/skia/include/private/SkEncodedInfo.h +8 -2
  155. package/cpp/skia/include/private/SkExif.h +28 -75
  156. package/cpp/skia/include/private/SkGainmapInfo.h +47 -7
  157. package/cpp/skia/include/private/SkJpegMetadataDecoder.h +12 -0
  158. package/cpp/skia/include/private/SkPathRef.h +52 -44
  159. package/cpp/skia/include/private/SkXmp.h +13 -4
  160. package/cpp/skia/include/private/base/SkASAN.h +56 -0
  161. package/cpp/skia/include/private/base/SkAlign.h +5 -0
  162. package/cpp/skia/include/private/base/SkContainers.h +10 -2
  163. package/cpp/skia/include/private/base/SkFeatures.h +22 -1
  164. package/cpp/skia/include/private/base/SkFloatingPoint.h +51 -65
  165. package/cpp/skia/include/private/base/SkMacros.h +67 -0
  166. package/cpp/skia/include/private/base/SkMalloc.h +8 -0
  167. package/cpp/skia/include/private/base/SkPoint_impl.h +2 -11
  168. package/cpp/skia/include/private/base/SkTArray.h +108 -23
  169. package/cpp/skia/include/private/base/SkTFitsIn.h +1 -12
  170. package/cpp/skia/include/private/chromium/GrDeferredDisplayList.h +1 -1
  171. package/cpp/skia/include/private/chromium/GrDeferredDisplayListRecorder.h +0 -39
  172. package/cpp/skia/include/private/chromium/GrPromiseImageTexture.h +1 -1
  173. package/cpp/skia/include/private/chromium/GrSurfaceCharacterization.h +3 -3
  174. package/cpp/skia/include/private/chromium/SkChromeRemoteGlyphCache.h +1 -4
  175. package/cpp/skia/include/private/chromium/Slug.h +5 -11
  176. package/cpp/skia/include/private/gpu/ganesh/GrContext_Base.h +1 -1
  177. package/cpp/skia/include/private/gpu/ganesh/GrD3DTypesMinimal.h +2 -2
  178. package/cpp/skia/include/private/gpu/ganesh/GrTextureGenerator.h +1 -1
  179. package/cpp/skia/include/private/gpu/ganesh/GrTypesPriv.h +21 -93
  180. package/cpp/skia/include/private/gpu/vk/SkiaVulkan.h +2 -2
  181. package/cpp/skia/include/utils/SkCustomTypeface.h +1 -0
  182. package/cpp/skia/include/utils/SkNWayCanvas.h +1 -1
  183. package/cpp/skia/include/utils/SkParse.h +0 -1
  184. package/cpp/skia/modules/skcms/src/Transform_inl.h +59 -56
  185. package/cpp/skia/modules/skcms/src/skcms_Transform.h +3 -0
  186. package/cpp/skia/modules/skcms/src/skcms_internals.h +2 -0
  187. package/cpp/skia/modules/skcms/src/skcms_public.h +46 -14
  188. package/cpp/skia/modules/skparagraph/include/ParagraphBuilder.h +15 -1
  189. package/cpp/skia/modules/skparagraph/include/TextStyle.h +2 -2
  190. package/cpp/skia/modules/skparagraph/include/TypefaceFontProvider.h +2 -4
  191. package/cpp/skia/modules/skresources/include/SkResources.h +1 -1
  192. package/cpp/skia/modules/skshaper/include/SkShaper.h +316 -0
  193. package/cpp/skia/modules/skshaper/include/SkShaper_coretext.h +19 -0
  194. package/cpp/skia/modules/skshaper/include/SkShaper_factory.h +41 -0
  195. package/cpp/skia/modules/skshaper/include/SkShaper_harfbuzz.h +39 -0
  196. package/cpp/skia/modules/skshaper/include/SkShaper_skunicode.h +28 -0
  197. package/cpp/skia/modules/skunicode/include/SkUnicode.h +6 -23
  198. package/cpp/skia/modules/svg/include/SkSVGAttribute.h +0 -3
  199. package/cpp/skia/modules/svg/include/SkSVGAttributeParser.h +12 -2
  200. package/cpp/skia/modules/svg/include/SkSVGCircle.h +13 -0
  201. package/cpp/skia/modules/svg/include/SkSVGClipPath.h +6 -0
  202. package/cpp/skia/modules/svg/include/SkSVGContainer.h +17 -1
  203. package/cpp/skia/modules/svg/include/SkSVGDOM.h +25 -15
  204. package/cpp/skia/modules/svg/include/SkSVGEllipse.h +13 -2
  205. package/cpp/skia/modules/svg/include/SkSVGFe.h +11 -2
  206. package/cpp/skia/modules/svg/include/SkSVGFeBlend.h +9 -0
  207. package/cpp/skia/modules/svg/include/SkSVGFeColorMatrix.h +9 -0
  208. package/cpp/skia/modules/svg/include/SkSVGFeComponentTransfer.h +82 -0
  209. package/cpp/skia/modules/svg/include/SkSVGFeComposite.h +10 -1
  210. package/cpp/skia/modules/svg/include/SkSVGFeDisplacementMap.h +10 -0
  211. package/cpp/skia/modules/svg/include/SkSVGFeFlood.h +10 -0
  212. package/cpp/skia/modules/svg/include/SkSVGFeGaussianBlur.h +9 -0
  213. package/cpp/skia/modules/svg/include/SkSVGFeImage.h +9 -0
  214. package/cpp/skia/modules/svg/include/SkSVGFeLightSource.h +5 -0
  215. package/cpp/skia/modules/svg/include/SkSVGFeLighting.h +11 -0
  216. package/cpp/skia/modules/svg/include/SkSVGFeMerge.h +63 -0
  217. package/cpp/skia/modules/svg/include/SkSVGFeMorphology.h +8 -0
  218. package/cpp/skia/modules/svg/include/SkSVGFeOffset.h +9 -0
  219. package/cpp/skia/modules/svg/include/SkSVGFeTurbulence.h +9 -0
  220. package/cpp/skia/modules/svg/include/SkSVGFilter.h +9 -0
  221. package/cpp/skia/modules/svg/include/SkSVGFilterContext.h +3 -3
  222. package/cpp/skia/modules/svg/include/SkSVGGradient.h +10 -2
  223. package/cpp/skia/modules/svg/include/SkSVGImage.h +9 -0
  224. package/cpp/skia/modules/svg/include/SkSVGLine.h +11 -0
  225. package/cpp/skia/modules/svg/include/SkSVGLinearGradient.h +10 -0
  226. package/cpp/skia/modules/svg/include/SkSVGMask.h +6 -0
  227. package/cpp/skia/modules/svg/include/SkSVGNode.h +13 -2
  228. package/cpp/skia/modules/svg/include/SkSVGOpenTypeSVGDecoder.h +5 -0
  229. package/cpp/skia/modules/svg/include/SkSVGPath.h +10 -0
  230. package/cpp/skia/modules/svg/include/SkSVGPattern.h +5 -0
  231. package/cpp/skia/modules/svg/include/SkSVGPoly.h +11 -0
  232. package/cpp/skia/modules/svg/include/SkSVGRadialGradient.h +11 -0
  233. package/cpp/skia/modules/svg/include/SkSVGRect.h +11 -0
  234. package/cpp/skia/modules/svg/include/SkSVGRenderContext.h +43 -7
  235. package/cpp/skia/modules/svg/include/SkSVGSVG.h +7 -0
  236. package/cpp/skia/modules/svg/include/SkSVGShape.h +8 -2
  237. package/cpp/skia/modules/svg/include/SkSVGStop.h +5 -3
  238. package/cpp/skia/modules/svg/include/SkSVGText.h +8 -2
  239. package/cpp/skia/modules/svg/include/SkSVGTransformableNode.h +8 -0
  240. package/cpp/skia/modules/svg/include/SkSVGTypes.h +9 -0
  241. package/cpp/skia/modules/svg/include/SkSVGUse.h +7 -0
  242. package/cpp/skia/src/base/SkMathPriv.h +337 -0
  243. package/cpp/skia/src/base/SkTLazy.h +208 -0
  244. package/cpp/skia/src/core/SkTHash.h +58 -7
  245. package/cpp/skia/src/gpu/ganesh/gl/GrGLDefines.h +3 -0
  246. package/ios/RNSkia-iOS/RNSkiOSPlatformContext.h +3 -0
  247. package/ios/RNSkia-iOS/RNSkiOSPlatformContext.mm +7 -0
  248. package/ios/RNSkia-iOS/SkiaCVPixelBufferUtils.mm +7 -2
  249. package/ios/RNSkia-iOS/SkiaMetalSurfaceFactory.h +78 -0
  250. package/ios/RNSkia-iOS/SkiaMetalSurfaceFactory.mm +20 -4
  251. package/lib/commonjs/renderer/HostConfig.js.map +1 -1
  252. package/lib/commonjs/skia/types/Paragraph/TextStyle.d.ts +2 -2
  253. package/lib/commonjs/skia/types/Paragraph/TextStyle.js.map +1 -1
  254. package/lib/commonjs/skia/types/Skia.d.ts +6 -1
  255. package/lib/commonjs/skia/types/Skia.js.map +1 -1
  256. package/lib/commonjs/skia/web/JsiSkia.js +4 -1
  257. package/lib/commonjs/skia/web/JsiSkia.js.map +1 -1
  258. package/lib/commonjs/web/WithSkiaWeb.d.ts +11 -4
  259. package/lib/commonjs/web/WithSkiaWeb.js +3 -2
  260. package/lib/commonjs/web/WithSkiaWeb.js.map +1 -1
  261. package/lib/module/renderer/HostConfig.js.map +1 -1
  262. package/lib/module/skia/types/Paragraph/TextStyle.d.ts +2 -2
  263. package/lib/module/skia/types/Paragraph/TextStyle.js.map +1 -1
  264. package/lib/module/skia/types/Skia.d.ts +6 -1
  265. package/lib/module/skia/types/Skia.js.map +1 -1
  266. package/lib/module/skia/web/JsiSkia.js +4 -1
  267. package/lib/module/skia/web/JsiSkia.js.map +1 -1
  268. package/lib/module/web/WithSkiaWeb.d.ts +11 -4
  269. package/lib/module/web/WithSkiaWeb.js +3 -2
  270. package/lib/module/web/WithSkiaWeb.js.map +1 -1
  271. package/lib/typescript/lib/commonjs/skia/web/JsiSkia.d.ts +1 -0
  272. package/lib/typescript/lib/commonjs/web/WithSkiaWeb.d.ts +2 -1
  273. package/lib/typescript/lib/module/skia/Skia.web.d.ts +1 -0
  274. package/lib/typescript/lib/module/skia/web/JsiSkia.d.ts +1 -0
  275. package/lib/typescript/lib/module/web/WithSkiaWeb.d.ts +2 -1
  276. package/lib/typescript/src/skia/types/Paragraph/TextStyle.d.ts +2 -2
  277. package/lib/typescript/src/skia/types/Skia.d.ts +6 -1
  278. package/lib/typescript/src/web/WithSkiaWeb.d.ts +11 -4
  279. package/libs/android/arm64-v8a/libskia.a +0 -0
  280. package/libs/android/arm64-v8a/libskottie.a +0 -0
  281. package/libs/android/arm64-v8a/libskparagraph.a +0 -0
  282. package/libs/android/arm64-v8a/libsksg.a +0 -0
  283. package/libs/android/arm64-v8a/libskshaper.a +0 -0
  284. package/libs/android/arm64-v8a/libskunicode_core.a +0 -0
  285. package/libs/android/arm64-v8a/libskunicode_icu.a +0 -0
  286. package/libs/android/arm64-v8a/libsvg.a +0 -0
  287. package/libs/android/armeabi-v7a/libskia.a +0 -0
  288. package/libs/android/armeabi-v7a/libskottie.a +0 -0
  289. package/libs/android/armeabi-v7a/libskparagraph.a +0 -0
  290. package/libs/android/armeabi-v7a/libsksg.a +0 -0
  291. package/libs/android/armeabi-v7a/libskshaper.a +0 -0
  292. package/libs/android/armeabi-v7a/libskunicode_core.a +0 -0
  293. package/libs/android/armeabi-v7a/libskunicode_icu.a +0 -0
  294. package/libs/android/armeabi-v7a/libsvg.a +0 -0
  295. package/libs/android/x86/libskia.a +0 -0
  296. package/libs/android/x86/libskottie.a +0 -0
  297. package/libs/android/x86/libskparagraph.a +0 -0
  298. package/libs/android/x86/libsksg.a +0 -0
  299. package/libs/android/x86/libskshaper.a +0 -0
  300. package/libs/android/x86/libskunicode_core.a +0 -0
  301. package/libs/android/x86/libskunicode_icu.a +0 -0
  302. package/libs/android/x86/libsvg.a +0 -0
  303. package/libs/android/x86_64/libskia.a +0 -0
  304. package/libs/android/x86_64/libskottie.a +0 -0
  305. package/libs/android/x86_64/libskparagraph.a +0 -0
  306. package/libs/android/x86_64/libsksg.a +0 -0
  307. package/libs/android/x86_64/libskshaper.a +0 -0
  308. package/libs/android/x86_64/libskunicode_core.a +0 -0
  309. package/libs/android/x86_64/libskunicode_icu.a +0 -0
  310. package/libs/android/x86_64/libsvg.a +0 -0
  311. package/libs/ios/libskia.xcframework/Info.plist +5 -5
  312. package/libs/ios/libskia.xcframework/ios-arm64_arm64e/libskia.a +0 -0
  313. package/libs/ios/libskia.xcframework/ios-arm64_arm64e_x86_64-simulator/libskia.a +0 -0
  314. package/libs/ios/libskottie.xcframework/Info.plist +5 -5
  315. package/libs/ios/libskottie.xcframework/ios-arm64_arm64e/libskottie.a +0 -0
  316. package/libs/ios/libskottie.xcframework/ios-arm64_arm64e_x86_64-simulator/libskottie.a +0 -0
  317. package/libs/ios/libskparagraph.xcframework/ios-arm64_arm64e/libskparagraph.a +0 -0
  318. package/libs/ios/libskparagraph.xcframework/ios-arm64_arm64e_x86_64-simulator/libskparagraph.a +0 -0
  319. package/libs/ios/libsksg.xcframework/Info.plist +5 -5
  320. package/libs/ios/libsksg.xcframework/ios-arm64_arm64e/libsksg.a +0 -0
  321. package/libs/ios/libsksg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsksg.a +0 -0
  322. package/libs/ios/libskshaper.xcframework/ios-arm64_arm64e/libskshaper.a +0 -0
  323. package/libs/ios/libskshaper.xcframework/ios-arm64_arm64e_x86_64-simulator/libskshaper.a +0 -0
  324. package/libs/ios/libsvg.xcframework/Info.plist +5 -5
  325. package/libs/ios/libsvg.xcframework/ios-arm64_arm64e/libsvg.a +0 -0
  326. package/libs/ios/libsvg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsvg.a +0 -0
  327. package/package.json +3 -5
  328. package/react-native-skia.podspec +2 -1
  329. package/src/renderer/HostConfig.ts +5 -1
  330. package/src/renderer/__tests__/e2e/ImageFilters.spec.tsx +5 -2
  331. package/src/renderer/__tests__/e2e/Paths.spec.tsx +12 -5
  332. package/src/renderer/__tests__/e2e/SDF.spec.tsx +1 -1
  333. package/src/renderer/__tests__/e2e/Snapshot.spec.tsx +1 -1
  334. package/src/skia/types/Paragraph/TextStyle.ts +2 -2
  335. package/src/skia/types/Skia.ts +7 -1
  336. package/src/skia/web/JsiSkia.ts +3 -0
  337. package/src/web/WithSkiaWeb.tsx +17 -6
  338. package/cpp/skia/include/core/SkDrawLooper.h +0 -135
  339. package/cpp/skia/include/effects/SkBlurDrawLooper.h +0 -26
  340. package/cpp/skia/include/effects/SkLayerDrawLooper.h +0 -161
  341. package/cpp/skia/include/gpu/gl/GrGLConfig_chrome.h +0 -14
  342. package/cpp/skia/include/gpu/vk/GrVkBackendContext.h +0 -84
  343. package/cpp/skia/include/gpu/vk/GrVkExtensions.h +0 -15
  344. package/cpp/skia/include/gpu/vk/GrVkMemoryAllocator.h +0 -15
  345. package/cpp/skia/include/ports/SkFontMgr_indirect.h +0 -102
  346. package/cpp/skia/include/ports/SkRemotableFontMgr.h +0 -139
  347. package/cpp/skia/include/private/base/SkFloatBits.h +0 -90
  348. package/cpp/skia/include/private/gpu/graphite/ContextOptionsPriv.h +0 -69
  349. package/cpp/skia/include/private/gpu/graphite/DawnTypesPriv.h +0 -54
  350. package/cpp/skia/include/private/gpu/graphite/MtlGraphiteTypesPriv.h +0 -95
  351. package/cpp/skia/include/private/gpu/graphite/VulkanGraphiteTypesPriv.h +0 -83
  352. package/cpp/skia/src/core/SkPathEnums.h +0 -25
  353. package/cpp/skia/src/core/SkPathPriv.h +0 -540
  354. package/libs/android/arm64-v8a/libskunicode.a +0 -0
  355. package/libs/android/armeabi-v7a/libskunicode.a +0 -0
  356. package/libs/android/x86/libskunicode.a +0 -0
  357. package/libs/android/x86_64/libskunicode.a +0 -0
  358. package/libs/ios/libskunicode.xcframework/Info.plist +0 -46
  359. package/libs/ios/libskunicode.xcframework/ios-arm64_arm64e/libskunicode.a +0 -0
  360. package/libs/ios/libskunicode.xcframework/ios-arm64_arm64e_x86_64-simulator/libskunicode.a +0 -0
  361. /package/cpp/skia/include/gpu/{gl → ganesh/gl}/glx/GrGLMakeGLXInterface.h +0 -0
@@ -12,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