@shopify/react-native-skia 1.3.13 → 1.4.1
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.
- package/android/CMakeLists.txt +9 -4
- package/android/cpp/rnskia-android/RNSkAndroidPlatformContext.h +6 -0
- package/android/cpp/rnskia-android/SkiaOpenGLSurfaceFactory.cpp +81 -0
- package/android/cpp/rnskia-android/SkiaOpenGLSurfaceFactory.h +40 -0
- package/cpp/api/JsiSkApi.h +2 -0
- package/cpp/api/JsiSkPath.h +29 -19
- package/cpp/api/JsiSkRuntimeEffect.h +7 -0
- package/cpp/api/JsiSkiaContext.h +79 -0
- package/cpp/rnskia/RNSkPlatformContext.h +4 -0
- package/cpp/rnskia/SkiaContext.h +22 -0
- package/cpp/skia/include/android/GrAHardwareBufferUtils.h +2 -2
- package/cpp/skia/include/android/SkImageAndroid.h +1 -1
- package/cpp/skia/include/android/SkSurfaceAndroid.h +1 -1
- package/cpp/skia/include/codec/SkAndroidCodec.h +13 -9
- package/cpp/skia/include/codec/SkCodec.h +28 -5
- package/cpp/skia/include/core/SkArc.h +69 -0
- package/cpp/skia/include/core/SkBitmap.h +10 -0
- package/cpp/skia/include/core/SkBlender.h +2 -3
- package/cpp/skia/include/core/SkCanvas.h +86 -16
- package/cpp/skia/include/core/SkCapabilities.h +0 -4
- package/cpp/skia/include/core/SkColorFilter.h +4 -4
- package/cpp/skia/include/core/SkColorPriv.h +5 -7
- package/cpp/skia/include/core/SkColorType.h +2 -0
- package/cpp/skia/include/core/SkFlattenable.h +1 -1
- package/cpp/skia/include/core/SkFontArguments.h +3 -1
- package/cpp/skia/include/core/SkFontParameters.h +3 -2
- package/cpp/skia/include/core/SkFourByteTag.h +19 -0
- package/cpp/skia/include/core/SkImage.h +41 -1
- package/cpp/skia/include/core/SkImageGenerator.h +0 -5
- package/cpp/skia/include/core/SkImageInfo.h +20 -0
- package/cpp/skia/include/core/SkM44.h +1 -1
- package/cpp/skia/include/core/SkMatrix.h +2 -1
- package/cpp/skia/include/core/SkMilestone.h +1 -1
- package/cpp/skia/include/core/SkPaint.h +1 -1
- package/cpp/skia/include/core/SkPath.h +20 -6
- package/cpp/skia/include/core/SkPathMeasure.h +1 -0
- package/cpp/skia/include/core/SkPicture.h +5 -5
- package/cpp/skia/include/core/SkPoint3.h +2 -12
- package/cpp/skia/include/core/SkRRect.h +5 -0
- package/cpp/skia/include/core/SkRect.h +5 -16
- package/cpp/skia/include/core/SkRefCnt.h +2 -0
- package/cpp/skia/include/core/SkScalar.h +20 -32
- package/cpp/skia/include/core/SkShader.h +17 -0
- package/cpp/skia/include/core/SkSize.h +2 -1
- package/cpp/skia/include/core/SkStream.h +2 -3
- package/cpp/skia/include/core/SkStrokeRec.h +6 -1
- package/cpp/skia/include/core/SkSurface.h +13 -4
- package/cpp/skia/include/core/SkSurfaceProps.h +5 -0
- package/cpp/skia/include/core/SkSwizzle.h +3 -1
- package/cpp/skia/include/core/SkTypeface.h +1 -0
- package/cpp/skia/include/core/SkTypes.h +1 -19
- package/cpp/skia/include/core/SkUnPreMultiply.h +4 -5
- package/cpp/skia/include/core/SkVertices.h +4 -2
- package/cpp/skia/include/docs/SkPDFDocument.h +11 -14
- package/cpp/skia/include/effects/SkHighContrastFilter.h +6 -6
- package/cpp/skia/include/effects/SkImageFilters.h +49 -23
- package/cpp/skia/include/effects/SkRuntimeEffect.h +51 -70
- package/cpp/skia/include/effects/SkShaderMaskFilter.h +2 -0
- package/cpp/skia/include/effects/SkTableMaskFilter.h +2 -0
- package/cpp/skia/include/gpu/GrBackendSemaphore.h +2 -120
- package/cpp/skia/include/gpu/GrBackendSurface.h +2 -466
- package/cpp/skia/include/gpu/GrContextOptions.h +2 -368
- package/cpp/skia/include/gpu/GrContextThreadSafeProxy.h +2 -179
- package/cpp/skia/include/gpu/GrDirectContext.h +2 -1011
- package/cpp/skia/include/gpu/GrDriverBugWorkarounds.h +2 -47
- package/cpp/skia/include/gpu/GrDriverBugWorkaroundsAutogen.h +2 -41
- package/cpp/skia/include/gpu/GrRecordingContext.h +2 -279
- package/cpp/skia/include/gpu/GrTypes.h +2 -238
- package/cpp/skia/include/gpu/GrYUVABackendTextures.h +2 -118
- package/cpp/skia/include/gpu/d3d/GrD3DBackendContext.h +2 -29
- package/cpp/skia/include/gpu/d3d/GrD3DTypes.h +2 -242
- package/cpp/skia/include/gpu/ganesh/GrBackendSemaphore.h +80 -0
- package/cpp/skia/include/gpu/ganesh/GrBackendSurface.h +412 -0
- package/cpp/skia/include/gpu/ganesh/GrContextOptions.h +386 -0
- package/cpp/skia/include/gpu/ganesh/GrContextThreadSafeProxy.h +175 -0
- package/cpp/skia/include/gpu/ganesh/GrDirectContext.h +993 -0
- package/cpp/skia/include/gpu/ganesh/GrDriverBugWorkarounds.h +53 -0
- package/cpp/skia/include/gpu/ganesh/GrDriverBugWorkaroundsAutogen.h +45 -0
- package/cpp/skia/include/gpu/ganesh/GrExternalTextureGenerator.h +1 -1
- package/cpp/skia/include/gpu/ganesh/GrRecordingContext.h +285 -0
- package/cpp/skia/include/gpu/ganesh/GrTypes.h +177 -0
- package/cpp/skia/include/gpu/ganesh/GrYUVABackendTextures.h +130 -0
- package/cpp/skia/include/gpu/ganesh/SkImageGanesh.h +1 -1
- package/cpp/skia/include/gpu/ganesh/SkSurfaceGanesh.h +1 -1
- package/cpp/skia/include/gpu/ganesh/d3d/GrD3DBackendContext.h +35 -0
- package/cpp/skia/include/gpu/ganesh/d3d/GrD3DTypes.h +248 -0
- package/cpp/skia/include/gpu/ganesh/gl/GrGLAssembleHelpers.h +17 -0
- package/cpp/skia/include/gpu/ganesh/gl/GrGLAssembleInterface.h +45 -0
- package/cpp/skia/include/gpu/ganesh/gl/GrGLBackendSurface.h +1 -1
- package/cpp/skia/include/gpu/ganesh/gl/GrGLConfig.h +69 -0
- package/cpp/skia/include/gpu/ganesh/gl/GrGLExtensions.h +79 -0
- package/cpp/skia/include/gpu/ganesh/gl/GrGLFunctions.h +306 -0
- package/cpp/skia/include/gpu/ganesh/gl/GrGLInterface.h +338 -0
- package/cpp/skia/include/gpu/ganesh/gl/GrGLMakeWebGLInterface.h +19 -0
- package/cpp/skia/include/gpu/ganesh/gl/GrGLTypes.h +219 -0
- package/cpp/skia/include/gpu/{gl → ganesh/gl}/egl/GrGLMakeEGLInterface.h +2 -2
- package/cpp/skia/include/gpu/ganesh/gl/epoxy/GrGLMakeEpoxyEGLInterface.h +20 -0
- package/cpp/skia/include/gpu/ganesh/gl/ios/GrGLMakeIOSInterface.h +20 -0
- package/cpp/skia/include/gpu/ganesh/gl/mac/GrGLMakeMacInterface.h +20 -0
- package/cpp/skia/include/gpu/ganesh/gl/win/GrGLMakeWinInterface.h +20 -0
- package/cpp/skia/include/gpu/ganesh/mock/GrMockTypes.h +166 -0
- package/cpp/skia/include/gpu/{mtl → ganesh/mtl}/GrMtlBackendContext.h +2 -2
- package/cpp/skia/include/gpu/ganesh/mtl/GrMtlBackendSemaphore.h +23 -0
- package/cpp/skia/include/gpu/ganesh/mtl/GrMtlBackendSurface.h +44 -0
- package/cpp/skia/include/gpu/ganesh/mtl/GrMtlDirectContext.h +30 -0
- package/cpp/skia/include/gpu/{mtl → ganesh/mtl}/GrMtlTypes.h +1 -3
- package/cpp/skia/include/gpu/ganesh/mtl/SkSurfaceMetal.h +2 -2
- package/cpp/skia/include/gpu/ganesh/vk/GrBackendDrawableInfo.h +2 -2
- package/cpp/skia/include/gpu/ganesh/vk/GrVkBackendSemaphore.h +1 -1
- package/cpp/skia/include/gpu/ganesh/vk/GrVkBackendSurface.h +7 -3
- package/cpp/skia/include/gpu/ganesh/vk/GrVkDirectContext.h +6 -3
- package/cpp/skia/include/gpu/ganesh/vk/GrVkTypes.h +101 -0
- package/cpp/skia/include/gpu/gl/GrGLAssembleHelpers.h +2 -9
- package/cpp/skia/include/gpu/gl/GrGLAssembleInterface.h +2 -38
- package/cpp/skia/include/gpu/gl/GrGLConfig.h +2 -73
- package/cpp/skia/include/gpu/gl/GrGLExtensions.h +2 -72
- package/cpp/skia/include/gpu/gl/GrGLFunctions.h +2 -301
- package/cpp/skia/include/gpu/gl/GrGLInterface.h +2 -332
- package/cpp/skia/include/gpu/gl/GrGLTypes.h +2 -213
- package/cpp/skia/include/gpu/graphite/BackendSemaphore.h +20 -41
- package/cpp/skia/include/gpu/graphite/BackendTexture.h +18 -118
- package/cpp/skia/include/gpu/graphite/Context.h +122 -44
- package/cpp/skia/include/gpu/graphite/ContextOptions.h +30 -3
- package/cpp/skia/include/gpu/graphite/GraphiteTypes.h +45 -17
- package/cpp/skia/include/gpu/graphite/Image.h +56 -54
- package/cpp/skia/include/gpu/graphite/Recorder.h +68 -14
- package/cpp/skia/include/gpu/graphite/Recording.h +3 -3
- package/cpp/skia/include/gpu/graphite/Surface.h +6 -2
- package/cpp/skia/include/gpu/graphite/TextureInfo.h +36 -117
- package/cpp/skia/include/gpu/graphite/dawn/DawnTypes.h +108 -6
- package/cpp/skia/include/gpu/graphite/mtl/MtlBackendContext.h +4 -1
- package/cpp/skia/include/gpu/graphite/mtl/MtlGraphiteTypes.h +41 -25
- package/cpp/skia/include/gpu/graphite/precompile/PaintOptions.h +197 -0
- package/cpp/skia/include/gpu/graphite/precompile/Precompile.h +48 -0
- package/cpp/skia/include/gpu/graphite/precompile/PrecompileBase.h +84 -0
- package/cpp/skia/include/gpu/graphite/precompile/PrecompileBlender.h +56 -0
- package/cpp/skia/include/gpu/graphite/precompile/PrecompileColorFilter.h +85 -0
- package/cpp/skia/include/gpu/graphite/precompile/PrecompileImageFilter.h +119 -0
- package/cpp/skia/include/gpu/graphite/precompile/PrecompileMaskFilter.h +51 -0
- package/cpp/skia/include/gpu/graphite/precompile/PrecompileRuntimeEffect.h +47 -0
- package/cpp/skia/include/gpu/graphite/precompile/PrecompileShader.h +170 -0
- package/cpp/skia/include/gpu/graphite/vk/VulkanGraphiteTypes.h +24 -2
- package/cpp/skia/include/gpu/mock/GrMockTypes.h +2 -157
- package/cpp/skia/include/gpu/mtl/MtlMemoryAllocator.h +2 -0
- package/cpp/skia/include/gpu/vk/GrVkTypes.h +2 -101
- package/cpp/skia/include/gpu/vk/VulkanBackendContext.h +13 -8
- package/cpp/skia/include/gpu/vk/VulkanExtensions.h +9 -3
- package/cpp/skia/include/gpu/vk/VulkanMemoryAllocator.h +4 -1
- package/cpp/skia/include/gpu/vk/VulkanTypes.h +25 -8
- package/cpp/skia/include/ports/SkFontMgr_Fontations.h +20 -0
- package/cpp/skia/include/ports/SkFontMgr_android.h +7 -0
- package/cpp/skia/include/ports/SkImageGeneratorCG.h +3 -1
- package/cpp/skia/include/ports/SkTypeface_win.h +0 -17
- package/cpp/skia/include/private/SkEncodedInfo.h +8 -2
- package/cpp/skia/include/private/SkExif.h +28 -75
- package/cpp/skia/include/private/SkGainmapInfo.h +47 -7
- package/cpp/skia/include/private/SkJpegMetadataDecoder.h +12 -0
- package/cpp/skia/include/private/SkPathRef.h +52 -44
- package/cpp/skia/include/private/SkXmp.h +13 -4
- package/cpp/skia/include/private/base/SkASAN.h +56 -0
- package/cpp/skia/include/private/base/SkAlign.h +5 -0
- package/cpp/skia/include/private/base/SkContainers.h +10 -2
- package/cpp/skia/include/private/base/SkFeatures.h +22 -1
- package/cpp/skia/include/private/base/SkFloatingPoint.h +51 -65
- package/cpp/skia/include/private/base/SkMacros.h +67 -0
- package/cpp/skia/include/private/base/SkMalloc.h +8 -0
- package/cpp/skia/include/private/base/SkPoint_impl.h +2 -11
- package/cpp/skia/include/private/base/SkTArray.h +108 -23
- package/cpp/skia/include/private/base/SkTFitsIn.h +1 -12
- package/cpp/skia/include/private/chromium/GrDeferredDisplayList.h +1 -1
- package/cpp/skia/include/private/chromium/GrDeferredDisplayListRecorder.h +0 -39
- package/cpp/skia/include/private/chromium/GrPromiseImageTexture.h +1 -1
- package/cpp/skia/include/private/chromium/GrSurfaceCharacterization.h +3 -3
- package/cpp/skia/include/private/chromium/SkChromeRemoteGlyphCache.h +1 -4
- package/cpp/skia/include/private/chromium/Slug.h +5 -11
- package/cpp/skia/include/private/gpu/ganesh/GrContext_Base.h +1 -1
- package/cpp/skia/include/private/gpu/ganesh/GrD3DTypesMinimal.h +2 -2
- package/cpp/skia/include/private/gpu/ganesh/GrTextureGenerator.h +1 -1
- package/cpp/skia/include/private/gpu/ganesh/GrTypesPriv.h +21 -93
- package/cpp/skia/include/private/gpu/vk/SkiaVulkan.h +2 -2
- package/cpp/skia/include/utils/SkCustomTypeface.h +1 -0
- package/cpp/skia/include/utils/SkNWayCanvas.h +1 -1
- package/cpp/skia/include/utils/SkParse.h +0 -1
- package/cpp/skia/modules/skcms/src/Transform_inl.h +59 -56
- package/cpp/skia/modules/skcms/src/skcms_Transform.h +3 -0
- package/cpp/skia/modules/skcms/src/skcms_internals.h +2 -0
- package/cpp/skia/modules/skcms/src/skcms_public.h +46 -14
- package/cpp/skia/modules/skparagraph/include/ParagraphBuilder.h +15 -1
- package/cpp/skia/modules/skparagraph/include/TextStyle.h +2 -2
- package/cpp/skia/modules/skparagraph/include/TypefaceFontProvider.h +2 -4
- package/cpp/skia/modules/skresources/include/SkResources.h +1 -1
- package/cpp/skia/modules/skshaper/include/SkShaper.h +316 -0
- package/cpp/skia/modules/skshaper/include/SkShaper_coretext.h +19 -0
- package/cpp/skia/modules/skshaper/include/SkShaper_factory.h +41 -0
- package/cpp/skia/modules/skshaper/include/SkShaper_harfbuzz.h +39 -0
- package/cpp/skia/modules/skshaper/include/SkShaper_skunicode.h +28 -0
- package/cpp/skia/modules/skunicode/include/SkUnicode.h +6 -23
- package/cpp/skia/modules/svg/include/SkSVGAttribute.h +0 -3
- package/cpp/skia/modules/svg/include/SkSVGAttributeParser.h +12 -2
- package/cpp/skia/modules/svg/include/SkSVGCircle.h +13 -0
- package/cpp/skia/modules/svg/include/SkSVGClipPath.h +6 -0
- package/cpp/skia/modules/svg/include/SkSVGContainer.h +17 -1
- package/cpp/skia/modules/svg/include/SkSVGDOM.h +25 -15
- package/cpp/skia/modules/svg/include/SkSVGEllipse.h +13 -2
- package/cpp/skia/modules/svg/include/SkSVGFe.h +11 -2
- package/cpp/skia/modules/svg/include/SkSVGFeBlend.h +9 -0
- package/cpp/skia/modules/svg/include/SkSVGFeColorMatrix.h +9 -0
- package/cpp/skia/modules/svg/include/SkSVGFeComponentTransfer.h +82 -0
- package/cpp/skia/modules/svg/include/SkSVGFeComposite.h +10 -1
- package/cpp/skia/modules/svg/include/SkSVGFeDisplacementMap.h +10 -0
- package/cpp/skia/modules/svg/include/SkSVGFeFlood.h +10 -0
- package/cpp/skia/modules/svg/include/SkSVGFeGaussianBlur.h +9 -0
- package/cpp/skia/modules/svg/include/SkSVGFeImage.h +9 -0
- package/cpp/skia/modules/svg/include/SkSVGFeLightSource.h +5 -0
- package/cpp/skia/modules/svg/include/SkSVGFeLighting.h +11 -0
- package/cpp/skia/modules/svg/include/SkSVGFeMerge.h +63 -0
- package/cpp/skia/modules/svg/include/SkSVGFeMorphology.h +8 -0
- package/cpp/skia/modules/svg/include/SkSVGFeOffset.h +9 -0
- package/cpp/skia/modules/svg/include/SkSVGFeTurbulence.h +9 -0
- package/cpp/skia/modules/svg/include/SkSVGFilter.h +9 -0
- package/cpp/skia/modules/svg/include/SkSVGFilterContext.h +3 -3
- package/cpp/skia/modules/svg/include/SkSVGGradient.h +10 -2
- package/cpp/skia/modules/svg/include/SkSVGImage.h +9 -0
- package/cpp/skia/modules/svg/include/SkSVGLine.h +11 -0
- package/cpp/skia/modules/svg/include/SkSVGLinearGradient.h +10 -0
- package/cpp/skia/modules/svg/include/SkSVGMask.h +6 -0
- package/cpp/skia/modules/svg/include/SkSVGNode.h +13 -2
- package/cpp/skia/modules/svg/include/SkSVGOpenTypeSVGDecoder.h +5 -0
- package/cpp/skia/modules/svg/include/SkSVGPath.h +10 -0
- package/cpp/skia/modules/svg/include/SkSVGPattern.h +5 -0
- package/cpp/skia/modules/svg/include/SkSVGPoly.h +11 -0
- package/cpp/skia/modules/svg/include/SkSVGRadialGradient.h +11 -0
- package/cpp/skia/modules/svg/include/SkSVGRect.h +11 -0
- package/cpp/skia/modules/svg/include/SkSVGRenderContext.h +43 -7
- package/cpp/skia/modules/svg/include/SkSVGSVG.h +7 -0
- package/cpp/skia/modules/svg/include/SkSVGShape.h +8 -2
- package/cpp/skia/modules/svg/include/SkSVGStop.h +5 -3
- package/cpp/skia/modules/svg/include/SkSVGText.h +8 -2
- package/cpp/skia/modules/svg/include/SkSVGTransformableNode.h +8 -0
- package/cpp/skia/modules/svg/include/SkSVGTypes.h +9 -0
- package/cpp/skia/modules/svg/include/SkSVGUse.h +7 -0
- package/cpp/skia/src/base/SkMathPriv.h +337 -0
- package/cpp/skia/src/base/SkTLazy.h +208 -0
- package/cpp/skia/src/core/SkTHash.h +58 -7
- package/cpp/skia/src/gpu/ganesh/gl/GrGLDefines.h +3 -0
- package/ios/RNSkia-iOS/RNSkiOSPlatformContext.h +3 -0
- package/ios/RNSkia-iOS/RNSkiOSPlatformContext.mm +7 -0
- package/ios/RNSkia-iOS/SkiaCVPixelBufferUtils.mm +7 -2
- package/ios/RNSkia-iOS/SkiaMetalSurfaceFactory.h +78 -0
- package/ios/RNSkia-iOS/SkiaMetalSurfaceFactory.mm +20 -4
- package/lib/commonjs/renderer/HostConfig.js.map +1 -1
- package/lib/commonjs/skia/types/Paragraph/TextStyle.d.ts +2 -2
- package/lib/commonjs/skia/types/Paragraph/TextStyle.js.map +1 -1
- package/lib/commonjs/skia/types/Skia.d.ts +6 -1
- package/lib/commonjs/skia/types/Skia.js.map +1 -1
- package/lib/commonjs/skia/web/JsiSkia.js +4 -1
- package/lib/commonjs/skia/web/JsiSkia.js.map +1 -1
- package/lib/commonjs/web/WithSkiaWeb.d.ts +11 -4
- package/lib/commonjs/web/WithSkiaWeb.js +3 -2
- package/lib/commonjs/web/WithSkiaWeb.js.map +1 -1
- package/lib/module/renderer/HostConfig.js.map +1 -1
- package/lib/module/skia/types/Paragraph/TextStyle.d.ts +2 -2
- package/lib/module/skia/types/Paragraph/TextStyle.js.map +1 -1
- package/lib/module/skia/types/Skia.d.ts +6 -1
- package/lib/module/skia/types/Skia.js.map +1 -1
- package/lib/module/skia/web/JsiSkia.js +4 -1
- package/lib/module/skia/web/JsiSkia.js.map +1 -1
- package/lib/module/web/WithSkiaWeb.d.ts +11 -4
- package/lib/module/web/WithSkiaWeb.js +3 -2
- package/lib/module/web/WithSkiaWeb.js.map +1 -1
- package/lib/typescript/lib/commonjs/skia/web/JsiSkia.d.ts +1 -0
- package/lib/typescript/lib/commonjs/web/WithSkiaWeb.d.ts +2 -1
- package/lib/typescript/lib/module/skia/Skia.web.d.ts +1 -0
- package/lib/typescript/lib/module/skia/web/JsiSkia.d.ts +1 -0
- package/lib/typescript/lib/module/web/WithSkiaWeb.d.ts +2 -1
- package/lib/typescript/src/skia/types/Paragraph/TextStyle.d.ts +2 -2
- package/lib/typescript/src/skia/types/Skia.d.ts +6 -1
- package/lib/typescript/src/web/WithSkiaWeb.d.ts +11 -4
- package/libs/android/arm64-v8a/libskia.a +0 -0
- package/libs/android/arm64-v8a/libskottie.a +0 -0
- package/libs/android/arm64-v8a/libskparagraph.a +0 -0
- package/libs/android/arm64-v8a/libsksg.a +0 -0
- package/libs/android/arm64-v8a/libskshaper.a +0 -0
- package/libs/android/arm64-v8a/libskunicode_core.a +0 -0
- package/libs/android/arm64-v8a/libskunicode_icu.a +0 -0
- package/libs/android/arm64-v8a/libsvg.a +0 -0
- package/libs/android/armeabi-v7a/libskia.a +0 -0
- package/libs/android/armeabi-v7a/libskottie.a +0 -0
- package/libs/android/armeabi-v7a/libskparagraph.a +0 -0
- package/libs/android/armeabi-v7a/libsksg.a +0 -0
- package/libs/android/armeabi-v7a/libskshaper.a +0 -0
- package/libs/android/armeabi-v7a/libskunicode_core.a +0 -0
- package/libs/android/armeabi-v7a/libskunicode_icu.a +0 -0
- package/libs/android/armeabi-v7a/libsvg.a +0 -0
- package/libs/android/x86/libskia.a +0 -0
- package/libs/android/x86/libskottie.a +0 -0
- package/libs/android/x86/libskparagraph.a +0 -0
- package/libs/android/x86/libsksg.a +0 -0
- package/libs/android/x86/libskshaper.a +0 -0
- package/libs/android/x86/libskunicode_core.a +0 -0
- package/libs/android/x86/libskunicode_icu.a +0 -0
- package/libs/android/x86/libsvg.a +0 -0
- package/libs/android/x86_64/libskia.a +0 -0
- package/libs/android/x86_64/libskottie.a +0 -0
- package/libs/android/x86_64/libskparagraph.a +0 -0
- package/libs/android/x86_64/libsksg.a +0 -0
- package/libs/android/x86_64/libskshaper.a +0 -0
- package/libs/android/x86_64/libskunicode_core.a +0 -0
- package/libs/android/x86_64/libskunicode_icu.a +0 -0
- package/libs/android/x86_64/libsvg.a +0 -0
- package/libs/ios/libskia.xcframework/Info.plist +5 -5
- package/libs/ios/libskia.xcframework/ios-arm64_arm64e/libskia.a +0 -0
- package/libs/ios/libskia.xcframework/ios-arm64_arm64e_x86_64-simulator/libskia.a +0 -0
- package/libs/ios/libskottie.xcframework/Info.plist +5 -5
- package/libs/ios/libskottie.xcframework/ios-arm64_arm64e/libskottie.a +0 -0
- package/libs/ios/libskottie.xcframework/ios-arm64_arm64e_x86_64-simulator/libskottie.a +0 -0
- package/libs/ios/libskparagraph.xcframework/ios-arm64_arm64e/libskparagraph.a +0 -0
- package/libs/ios/libskparagraph.xcframework/ios-arm64_arm64e_x86_64-simulator/libskparagraph.a +0 -0
- package/libs/ios/libsksg.xcframework/Info.plist +5 -5
- package/libs/ios/libsksg.xcframework/ios-arm64_arm64e/libsksg.a +0 -0
- package/libs/ios/libsksg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsksg.a +0 -0
- package/libs/ios/libskshaper.xcframework/ios-arm64_arm64e/libskshaper.a +0 -0
- package/libs/ios/libskshaper.xcframework/ios-arm64_arm64e_x86_64-simulator/libskshaper.a +0 -0
- package/libs/ios/libsvg.xcframework/Info.plist +5 -5
- package/libs/ios/libsvg.xcframework/ios-arm64_arm64e/libsvg.a +0 -0
- package/libs/ios/libsvg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsvg.a +0 -0
- package/package.json +3 -5
- package/react-native-skia.podspec +2 -1
- package/src/renderer/HostConfig.ts +5 -1
- package/src/renderer/__tests__/e2e/ImageFilters.spec.tsx +5 -2
- package/src/renderer/__tests__/e2e/Paths.spec.tsx +12 -5
- package/src/renderer/__tests__/e2e/SDF.spec.tsx +1 -1
- package/src/renderer/__tests__/e2e/Snapshot.spec.tsx +1 -1
- package/src/skia/types/Paragraph/TextStyle.ts +2 -2
- package/src/skia/types/Skia.ts +7 -1
- package/src/skia/web/JsiSkia.ts +3 -0
- package/src/web/WithSkiaWeb.tsx +17 -6
- package/cpp/skia/include/core/SkDrawLooper.h +0 -135
- package/cpp/skia/include/effects/SkBlurDrawLooper.h +0 -26
- package/cpp/skia/include/effects/SkLayerDrawLooper.h +0 -161
- package/cpp/skia/include/gpu/gl/GrGLConfig_chrome.h +0 -14
- package/cpp/skia/include/gpu/vk/GrVkBackendContext.h +0 -84
- package/cpp/skia/include/gpu/vk/GrVkExtensions.h +0 -15
- package/cpp/skia/include/gpu/vk/GrVkMemoryAllocator.h +0 -15
- package/cpp/skia/include/ports/SkFontMgr_indirect.h +0 -102
- package/cpp/skia/include/ports/SkRemotableFontMgr.h +0 -139
- package/cpp/skia/include/private/base/SkFloatBits.h +0 -90
- package/cpp/skia/include/private/gpu/graphite/ContextOptionsPriv.h +0 -69
- package/cpp/skia/include/private/gpu/graphite/DawnTypesPriv.h +0 -54
- package/cpp/skia/include/private/gpu/graphite/MtlGraphiteTypesPriv.h +0 -95
- package/cpp/skia/include/private/gpu/graphite/VulkanGraphiteTypesPriv.h +0 -83
- package/cpp/skia/src/core/SkPathEnums.h +0 -25
- package/cpp/skia/src/core/SkPathPriv.h +0 -540
- package/libs/android/arm64-v8a/libskunicode.a +0 -0
- package/libs/android/armeabi-v7a/libskunicode.a +0 -0
- package/libs/android/x86/libskunicode.a +0 -0
- package/libs/android/x86_64/libskunicode.a +0 -0
- package/libs/ios/libskunicode.xcframework/Info.plist +0 -46
- package/libs/ios/libskunicode.xcframework/ios-arm64_arm64e/libskunicode.a +0 -0
- package/libs/ios/libskunicode.xcframework/ios-arm64_arm64e_x86_64-simulator/libskunicode.a +0 -0
- /package/cpp/skia/include/gpu/{gl → ganesh/gl}/glx/GrGLMakeGLXInterface.h +0 -0
@@ -0,0 +1,56 @@
|
|
1
|
+
/*
|
2
|
+
* Copyright 2020 Google LLC
|
3
|
+
*
|
4
|
+
* Use of this source code is governed by a BSD-style license that can be
|
5
|
+
* found in the LICENSE file.
|
6
|
+
*/
|
7
|
+
|
8
|
+
#ifndef SkASAN_DEFINED
|
9
|
+
#define SkASAN_DEFINED
|
10
|
+
|
11
|
+
#include <cstddef>
|
12
|
+
|
13
|
+
#ifdef __SANITIZE_ADDRESS__
|
14
|
+
#define SK_SANITIZE_ADDRESS 1
|
15
|
+
#endif
|
16
|
+
#if !defined(SK_SANITIZE_ADDRESS) && defined(__has_feature)
|
17
|
+
#if __has_feature(address_sanitizer)
|
18
|
+
#define SK_SANITIZE_ADDRESS 1
|
19
|
+
#endif
|
20
|
+
#endif
|
21
|
+
|
22
|
+
// Typically declared in LLVM's asan_interface.h.
|
23
|
+
#ifdef SK_SANITIZE_ADDRESS
|
24
|
+
extern "C" {
|
25
|
+
void __asan_poison_memory_region(void const volatile *addr, size_t size);
|
26
|
+
void __asan_unpoison_memory_region(void const volatile *addr, size_t size);
|
27
|
+
int __asan_address_is_poisoned(void const volatile *addr);
|
28
|
+
}
|
29
|
+
#endif
|
30
|
+
|
31
|
+
// Code that implements bespoke allocation arenas can poison the entire arena on creation, then
|
32
|
+
// unpoison chunks of arena memory as they are parceled out. Consider leaving gaps between blocks
|
33
|
+
// to detect buffer overrun.
|
34
|
+
static inline void sk_asan_poison_memory_region([[maybe_unused]] void const volatile* addr,
|
35
|
+
[[maybe_unused]] size_t size) {
|
36
|
+
#ifdef SK_SANITIZE_ADDRESS
|
37
|
+
__asan_poison_memory_region(addr, size);
|
38
|
+
#endif
|
39
|
+
}
|
40
|
+
|
41
|
+
static inline void sk_asan_unpoison_memory_region([[maybe_unused]] void const volatile* addr,
|
42
|
+
[[maybe_unused]] size_t size) {
|
43
|
+
#ifdef SK_SANITIZE_ADDRESS
|
44
|
+
__asan_unpoison_memory_region(addr, size);
|
45
|
+
#endif
|
46
|
+
}
|
47
|
+
|
48
|
+
static inline int sk_asan_address_is_poisoned([[maybe_unused]] void const volatile* addr) {
|
49
|
+
#ifdef SK_SANITIZE_ADDRESS
|
50
|
+
return __asan_address_is_poisoned(addr);
|
51
|
+
#else
|
52
|
+
return 0;
|
53
|
+
#endif
|
54
|
+
}
|
55
|
+
|
56
|
+
#endif // SkASAN_DEFINED
|
@@ -15,15 +15,20 @@
|
|
15
15
|
template <typename T> static constexpr T SkAlign2(T x) { return (x + 1) >> 1 << 1; }
|
16
16
|
template <typename T> static constexpr T SkAlign4(T x) { return (x + 3) >> 2 << 2; }
|
17
17
|
template <typename T> static constexpr T SkAlign8(T x) { return (x + 7) >> 3 << 3; }
|
18
|
+
template <typename T> static constexpr T SkAlign16(T x) { return (x + 15) >> 4 << 4; }
|
18
19
|
|
19
20
|
template <typename T> static constexpr bool SkIsAlign2(T x) { return 0 == (x & 1); }
|
20
21
|
template <typename T> static constexpr bool SkIsAlign4(T x) { return 0 == (x & 3); }
|
21
22
|
template <typename T> static constexpr bool SkIsAlign8(T x) { return 0 == (x & 7); }
|
23
|
+
template <typename T> static constexpr bool SkIsAlign16(T x) { return 0 == (x & 15); }
|
24
|
+
|
22
25
|
|
23
26
|
template <typename T> static constexpr T SkAlignPtr(T x) {
|
27
|
+
static_assert(sizeof(void*) == 4 || sizeof(void*) == 8);
|
24
28
|
return sizeof(void*) == 8 ? SkAlign8(x) : SkAlign4(x);
|
25
29
|
}
|
26
30
|
template <typename T> static constexpr bool SkIsAlignPtr(T x) {
|
31
|
+
static_assert(sizeof(void*) == 4 || sizeof(void*) == 8);
|
27
32
|
return sizeof(void*) == 8 ? SkIsAlign8(x) : SkIsAlign4(x);
|
28
33
|
}
|
29
34
|
|
@@ -5,6 +5,7 @@
|
|
5
5
|
#define SkContainers_DEFINED
|
6
6
|
|
7
7
|
#include "include/private/base/SkAPI.h"
|
8
|
+
#include "include/private/base/SkAlign.h"
|
8
9
|
#include "include/private/base/SkSpan_impl.h"
|
9
10
|
|
10
11
|
#include <cstddef>
|
@@ -20,10 +21,17 @@ public:
|
|
20
21
|
// The bytes allocated are freed using sk_free().
|
21
22
|
SkSpan<std::byte> allocate(int capacity, double growthFactor = 1.0);
|
22
23
|
|
24
|
+
// Rounds a requested capacity up towards `kCapacityMultiple` in a constexpr-friendly fashion.
|
25
|
+
template <typename T>
|
26
|
+
static constexpr size_t RoundUp(size_t capacity) {
|
27
|
+
return SkAlignTo(capacity * sizeof(T), kCapacityMultiple) / sizeof(T);
|
28
|
+
}
|
29
|
+
|
23
30
|
private:
|
24
31
|
friend struct SkContainerAllocatorTestingPeer;
|
25
|
-
|
26
|
-
//
|
32
|
+
|
33
|
+
// All capacity counts will be rounded up to kCapacityMultiple. This matches ASAN's shadow
|
34
|
+
// granularity, as well as our typical struct alignment on a 64-bit machine.
|
27
35
|
static constexpr int64_t kCapacityMultiple = 8;
|
28
36
|
|
29
37
|
// Rounds up capacity to next multiple of kCapacityMultiple and pin to fMaxCapacity.
|
@@ -65,6 +65,10 @@
|
|
65
65
|
#define SK_CPU_X86 1
|
66
66
|
#endif
|
67
67
|
|
68
|
+
#if defined(__loongarch__) || defined (__loongarch64)
|
69
|
+
#define SK_CPU_LOONGARCH 1
|
70
|
+
#endif
|
71
|
+
|
68
72
|
/**
|
69
73
|
* SK_CPU_SSE_LEVEL
|
70
74
|
*
|
@@ -81,7 +85,16 @@
|
|
81
85
|
#define SK_CPU_SSE_LEVEL_AVX2 52
|
82
86
|
#define SK_CPU_SSE_LEVEL_SKX 60
|
83
87
|
|
84
|
-
|
88
|
+
/**
|
89
|
+
* SK_CPU_LSX_LEVEL
|
90
|
+
*
|
91
|
+
* If defined, SK_CPU_LSX_LEVEL should be set to the highest supported level.
|
92
|
+
* On non-loongarch CPU this should be undefined.
|
93
|
+
*/
|
94
|
+
#define SK_CPU_LSX_LEVEL_LSX 70
|
95
|
+
#define SK_CPU_LSX_LEVEL_LASX 80
|
96
|
+
|
97
|
+
// TODO(kjlubick) clean up these checks
|
85
98
|
|
86
99
|
// Are we in GCC/Clang?
|
87
100
|
#ifndef SK_CPU_SSE_LEVEL
|
@@ -107,6 +120,14 @@
|
|
107
120
|
#endif
|
108
121
|
#endif
|
109
122
|
|
123
|
+
#ifndef SK_CPU_LSX_LEVEL
|
124
|
+
#if defined(__loongarch_asx)
|
125
|
+
#define SK_CPU_LSX_LEVEL SK_CPU_LSX_LEVEL_LASX
|
126
|
+
#elif defined(__loongarch_sx)
|
127
|
+
#define SK_CPU_LSX_LEVEL SK_CPU_LSX_LEVEL_LSX
|
128
|
+
#endif
|
129
|
+
#endif
|
130
|
+
|
110
131
|
// Are we in VisualStudio?
|
111
132
|
#ifndef SK_CPU_SSE_LEVEL
|
112
133
|
// These checks must be done in descending order to ensure we set the highest
|
@@ -9,36 +9,17 @@
|
|
9
9
|
#define SkFloatingPoint_DEFINED
|
10
10
|
|
11
11
|
#include "include/private/base/SkAttributes.h"
|
12
|
-
#include "include/private/base/SkFloatBits.h"
|
13
12
|
#include "include/private/base/SkMath.h"
|
14
13
|
|
15
14
|
#include <cmath>
|
16
15
|
#include <cstdint>
|
17
|
-
#include <cstring>
|
18
16
|
#include <limits>
|
17
|
+
#include <type_traits>
|
19
18
|
|
20
19
|
inline constexpr float SK_FloatSqrt2 = 1.41421356f;
|
21
20
|
inline constexpr float SK_FloatPI = 3.14159265f;
|
22
21
|
inline constexpr double SK_DoublePI = 3.14159265358979323846264338327950288;
|
23
22
|
|
24
|
-
static inline float sk_float_sqrt(float x) { return std::sqrt(x); }
|
25
|
-
static inline float sk_float_sin(float x) { return std::sin(x); }
|
26
|
-
static inline float sk_float_cos(float x) { return std::cos(x); }
|
27
|
-
static inline float sk_float_tan(float x) { return std::tan(x); }
|
28
|
-
static inline float sk_float_floor(float x) { return std::floor(x); }
|
29
|
-
static inline float sk_float_ceil(float x) { return std::ceil(x); }
|
30
|
-
static inline float sk_float_trunc(float x) { return std::trunc(x); }
|
31
|
-
static inline float sk_float_acos(float x) { return std::acos(x); }
|
32
|
-
static inline float sk_float_asin(float x) { return std::asin(x); }
|
33
|
-
static inline float sk_float_atan2(float y, float x) { return std::atan2(y,x); }
|
34
|
-
static inline float sk_float_abs(float x) { return std::fabs(x); }
|
35
|
-
static inline float sk_float_copysign(float x, float y) { return std::copysign(x, y); }
|
36
|
-
static inline float sk_float_mod(float x, float y) { return std::fmod(x,y); }
|
37
|
-
static inline float sk_float_pow(float x, float y) { return std::pow(x, y); }
|
38
|
-
static inline float sk_float_exp(float x) { return std::exp(x); }
|
39
|
-
static inline float sk_float_log(float x) { return std::log(x); }
|
40
|
-
static inline float sk_float_log2(float x) { return std::log2(x); }
|
41
|
-
|
42
23
|
static constexpr int sk_float_sgn(float x) {
|
43
24
|
return (0.0f < x) - (x < 0.0f);
|
44
25
|
}
|
@@ -56,30 +37,34 @@ static constexpr float sk_float_radians_to_degrees(float radians) {
|
|
56
37
|
// as floatf(x + .5f), they would be 1 higher than expected.
|
57
38
|
#define sk_float_round(x) (float)sk_double_round((double)(x))
|
58
39
|
|
59
|
-
|
60
|
-
|
40
|
+
template <typename T, std::enable_if_t<std::is_floating_point_v<T>, bool> = true>
|
41
|
+
static inline constexpr bool SkIsNaN(T x) {
|
42
|
+
return x != x;
|
61
43
|
}
|
62
44
|
|
63
|
-
|
64
|
-
|
45
|
+
// Subtracting a value from itself will result in zero, except for NAN or ±Inf, which make NAN.
|
46
|
+
// Multiplying a group of values against zero will result in zero for each product, except for
|
47
|
+
// NAN or ±Inf, which will result in NAN and continue resulting in NAN for the rest of the elements.
|
48
|
+
// This generates better code than `std::isfinite` when building with clang-cl (April 2024).
|
49
|
+
template <typename T, typename... Pack, std::enable_if_t<std::is_floating_point_v<T>, bool> = true>
|
50
|
+
static inline bool SkIsFinite(T x, Pack... values) {
|
51
|
+
T prod = x - x;
|
52
|
+
prod = (prod * ... * values);
|
53
|
+
// At this point, `prod` will either be NaN or 0.
|
54
|
+
return prod == prod;
|
65
55
|
}
|
66
56
|
|
67
|
-
|
68
|
-
|
69
|
-
|
57
|
+
template <typename T, std::enable_if_t<std::is_floating_point_v<T>, bool> = true>
|
58
|
+
static inline bool SkIsFinite(const T array[], int count) {
|
59
|
+
T x = array[0];
|
60
|
+
T prod = x - x;
|
61
|
+
for (int i = 1; i < count; ++i) {
|
70
62
|
prod *= array[i];
|
71
63
|
}
|
72
|
-
// At this point, prod will either be NaN or 0
|
73
|
-
return prod ==
|
74
|
-
}
|
75
|
-
|
76
|
-
static inline bool sk_float_isinf(float x) {
|
77
|
-
return SkFloatBits_IsInf(SkFloat2Bits(x));
|
64
|
+
// At this point, `prod` will either be NaN or 0.
|
65
|
+
return prod == prod;
|
78
66
|
}
|
79
67
|
|
80
|
-
static constexpr bool sk_float_isnan(float x) { return x != x; }
|
81
|
-
static constexpr bool sk_double_isnan(double x) { return x != x; }
|
82
|
-
|
83
68
|
inline constexpr int SK_MaxS32FitsInFloat = 2147483520;
|
84
69
|
inline constexpr int SK_MinS32FitsInFloat = -SK_MaxS32FitsInFloat;
|
85
70
|
|
@@ -87,10 +72,22 @@ inline constexpr int SK_MinS32FitsInFloat = -SK_MaxS32FitsInFloat;
|
|
87
72
|
inline constexpr int64_t SK_MaxS64FitsInFloat = SK_MaxS64 >> (63-24) << (63-24);
|
88
73
|
inline constexpr int64_t SK_MinS64FitsInFloat = -SK_MaxS64FitsInFloat;
|
89
74
|
|
75
|
+
// sk_[float|double]_saturate2int are written to return their maximum values when passed NaN.
|
76
|
+
// MSVC 19.38+ has a bug with this implementation, leading to incorrect results:
|
77
|
+
// https://developercommunity.visualstudio.com/t/Optimizer-incorrectly-handles-NaN-floati/10654403
|
78
|
+
//
|
79
|
+
// We inject an explicit NaN test on MSVC to work around the problem.
|
80
|
+
#if defined(_MSC_VER) && !defined(__clang__)
|
81
|
+
#define SK_CHECK_NAN(resultVal) if (SkIsNaN(x)) { return resultVal; }
|
82
|
+
#else
|
83
|
+
#define SK_CHECK_NAN(resultVal)
|
84
|
+
#endif
|
85
|
+
|
90
86
|
/**
|
91
87
|
* Return the closest int for the given float. Returns SK_MaxS32FitsInFloat for NaN.
|
92
88
|
*/
|
93
89
|
static constexpr int sk_float_saturate2int(float x) {
|
90
|
+
SK_CHECK_NAN(SK_MaxS32FitsInFloat)
|
94
91
|
x = x < SK_MaxS32FitsInFloat ? x : SK_MaxS32FitsInFloat;
|
95
92
|
x = x > SK_MinS32FitsInFloat ? x : SK_MinS32FitsInFloat;
|
96
93
|
return (int)x;
|
@@ -100,6 +97,7 @@ static constexpr int sk_float_saturate2int(float x) {
|
|
100
97
|
* Return the closest int for the given double. Returns SK_MaxS32 for NaN.
|
101
98
|
*/
|
102
99
|
static constexpr int sk_double_saturate2int(double x) {
|
100
|
+
SK_CHECK_NAN(SK_MaxS32)
|
103
101
|
x = x < SK_MaxS32 ? x : SK_MaxS32;
|
104
102
|
x = x > SK_MinS32 ? x : SK_MinS32;
|
105
103
|
return (int)x;
|
@@ -109,25 +107,26 @@ static constexpr int sk_double_saturate2int(double x) {
|
|
109
107
|
* Return the closest int64_t for the given float. Returns SK_MaxS64FitsInFloat for NaN.
|
110
108
|
*/
|
111
109
|
static constexpr int64_t sk_float_saturate2int64(float x) {
|
110
|
+
SK_CHECK_NAN(SK_MaxS64FitsInFloat)
|
112
111
|
x = x < SK_MaxS64FitsInFloat ? x : SK_MaxS64FitsInFloat;
|
113
112
|
x = x > SK_MinS64FitsInFloat ? x : SK_MinS64FitsInFloat;
|
114
113
|
return (int64_t)x;
|
115
114
|
}
|
116
115
|
|
117
|
-
#
|
116
|
+
#undef SK_CHECK_NAN
|
117
|
+
|
118
|
+
#define sk_float_floor2int(x) sk_float_saturate2int(std::floor(x))
|
118
119
|
#define sk_float_round2int(x) sk_float_saturate2int(sk_float_round(x))
|
119
|
-
#define sk_float_ceil2int(x) sk_float_saturate2int(
|
120
|
+
#define sk_float_ceil2int(x) sk_float_saturate2int(std::ceil(x))
|
120
121
|
|
121
|
-
#define sk_float_floor2int_no_saturate(x) (int)
|
122
|
-
#define sk_float_round2int_no_saturate(x) (int)sk_float_round(x)
|
123
|
-
#define sk_float_ceil2int_no_saturate(x) (int)
|
122
|
+
#define sk_float_floor2int_no_saturate(x) ((int)std::floor(x))
|
123
|
+
#define sk_float_round2int_no_saturate(x) ((int)sk_float_round(x))
|
124
|
+
#define sk_float_ceil2int_no_saturate(x) ((int)std::ceil(x))
|
124
125
|
|
125
|
-
#define
|
126
|
-
#define
|
127
|
-
#define
|
128
|
-
#define
|
129
|
-
#define sk_double_round2int(x) (int)sk_double_round(x)
|
130
|
-
#define sk_double_ceil2int(x) (int)sk_double_ceil(x)
|
126
|
+
#define sk_double_round(x) (std::floor((x) + 0.5))
|
127
|
+
#define sk_double_floor2int(x) ((int)std::floor(x))
|
128
|
+
#define sk_double_round2int(x) ((int)std::round(x))
|
129
|
+
#define sk_double_ceil2int(x) ((int)std::ceil(x))
|
131
130
|
|
132
131
|
// Cast double to float, ignoring any warning about too-large finite values being cast to float.
|
133
132
|
// Clang thinks this is undefined, but it's actually implementation defined to return either
|
@@ -149,23 +148,15 @@ static constexpr float sk_float_midpoint(float a, float b) {
|
|
149
148
|
return static_cast<float>(0.5 * (static_cast<double>(a) + b));
|
150
149
|
}
|
151
150
|
|
152
|
-
|
153
|
-
|
154
|
-
bool sk_floats_are_unit(const float array[], size_t count);
|
155
|
-
|
156
|
-
static inline float sk_float_rsqrt_portable(float x) { return 1.0f / sk_float_sqrt(x); }
|
157
|
-
static inline float sk_float_rsqrt (float x) { return 1.0f / sk_float_sqrt(x); }
|
158
|
-
|
159
|
-
// The number of significant digits to print.
|
160
|
-
inline constexpr int SK_FLT_DECIMAL_DIG = std::numeric_limits<float>::max_digits10;
|
151
|
+
static inline float sk_float_rsqrt_portable(float x) { return 1.0f / std::sqrt(x); }
|
152
|
+
static inline float sk_float_rsqrt (float x) { return 1.0f / std::sqrt(x); }
|
161
153
|
|
162
154
|
// IEEE defines how float divide behaves for non-finite values and zero-denoms, but C does not,
|
163
155
|
// so we have a helper that suppresses the possible undefined-behavior warnings.
|
164
156
|
#ifdef SK_BUILD_FOR_WIN
|
165
|
-
#pragma warning(
|
166
|
-
#pragma warning(
|
157
|
+
#pragma warning(push)
|
158
|
+
#pragma warning(disable : 4723)
|
167
159
|
#endif
|
168
|
-
// Your function
|
169
160
|
SK_NO_SANITIZE("float-divide-by-zero")
|
170
161
|
static constexpr float sk_ieee_float_divide(float numer, float denom) {
|
171
162
|
return numer / denom;
|
@@ -179,11 +170,6 @@ static constexpr double sk_ieee_double_divide(double numer, double denom) {
|
|
179
170
|
#pragma warning( pop )
|
180
171
|
#endif
|
181
172
|
|
182
|
-
// Return a*b + c.
|
183
|
-
static inline float sk_fmaf(float a, float b, float c) {
|
184
|
-
return std::fma(a, b, c);
|
185
|
-
}
|
186
|
-
|
187
173
|
// Returns true iff the provided number is within a small epsilon of 0.
|
188
174
|
bool sk_double_nearly_zero(double a);
|
189
175
|
|
@@ -193,6 +179,6 @@ bool sk_double_nearly_zero(double a);
|
|
193
179
|
// * infinity and any other number - returns false.
|
194
180
|
//
|
195
181
|
// ulp is an initialism for Units in the Last Place.
|
196
|
-
bool sk_doubles_nearly_equal_ulps(double a, double b, uint8_t maxUlpsDiff=16);
|
182
|
+
bool sk_doubles_nearly_equal_ulps(double a, double b, uint8_t maxUlpsDiff = 16);
|
197
183
|
|
198
184
|
#endif
|
@@ -7,6 +7,8 @@
|
|
7
7
|
#ifndef SkMacros_DEFINED
|
8
8
|
#define SkMacros_DEFINED
|
9
9
|
|
10
|
+
#include "include/private/base/SkTo.h" // IWYU pragma: keep
|
11
|
+
|
10
12
|
/*
|
11
13
|
* Usage: SK_MACRO_CONCAT(a, b) to construct the symbol ab
|
12
14
|
*
|
@@ -91,4 +93,69 @@ extern "C" {
|
|
91
93
|
friend X operator &(X a, X b); \
|
92
94
|
friend X& operator &=(X& a, X b);
|
93
95
|
|
96
|
+
/**
|
97
|
+
* Wraps a C++11 enum that we use as a bitfield, and enables a limited amount of
|
98
|
+
* masking with type safety. Instantiated with the ~ operator.
|
99
|
+
*/
|
100
|
+
template<typename TFlags> class SkTFlagsMask {
|
101
|
+
public:
|
102
|
+
constexpr explicit SkTFlagsMask(TFlags value) : SkTFlagsMask(static_cast<int>(value)) {}
|
103
|
+
constexpr explicit SkTFlagsMask(int value) : fValue(value) {}
|
104
|
+
constexpr int value() const { return fValue; }
|
105
|
+
private:
|
106
|
+
const int fValue;
|
107
|
+
};
|
108
|
+
|
109
|
+
/**
|
110
|
+
* Defines bitwise operators that make it possible to use an enum class as a
|
111
|
+
* basic bitfield.
|
112
|
+
*/
|
113
|
+
#define SK_MAKE_BITFIELD_CLASS_OPS(X) \
|
114
|
+
[[maybe_unused]] constexpr SkTFlagsMask<X> operator~(X a) { \
|
115
|
+
return SkTFlagsMask<X>(~static_cast<int>(a)); \
|
116
|
+
} \
|
117
|
+
[[maybe_unused]] constexpr X operator|(X a, X b) { \
|
118
|
+
return static_cast<X>(static_cast<int>(a) | static_cast<int>(b)); \
|
119
|
+
} \
|
120
|
+
[[maybe_unused]] inline X& operator|=(X& a, X b) { \
|
121
|
+
return (a = a | b); \
|
122
|
+
} \
|
123
|
+
[[maybe_unused]] constexpr bool operator&(X a, X b) { \
|
124
|
+
return SkToBool(static_cast<int>(a) & static_cast<int>(b)); \
|
125
|
+
} \
|
126
|
+
[[maybe_unused]] constexpr SkTFlagsMask<X> operator|(SkTFlagsMask<X> a, SkTFlagsMask<X> b) { \
|
127
|
+
return SkTFlagsMask<X>(a.value() | b.value()); \
|
128
|
+
} \
|
129
|
+
[[maybe_unused]] constexpr SkTFlagsMask<X> operator|(SkTFlagsMask<X> a, X b) { \
|
130
|
+
return SkTFlagsMask<X>(a.value() | static_cast<int>(b)); \
|
131
|
+
} \
|
132
|
+
[[maybe_unused]] constexpr SkTFlagsMask<X> operator|(X a, SkTFlagsMask<X> b) { \
|
133
|
+
return SkTFlagsMask<X>(static_cast<int>(a) | b.value()); \
|
134
|
+
} \
|
135
|
+
[[maybe_unused]] constexpr X operator&(SkTFlagsMask<X> a, SkTFlagsMask<X> b) { \
|
136
|
+
return static_cast<X>(a.value() & b.value()); \
|
137
|
+
} \
|
138
|
+
[[maybe_unused]] constexpr X operator&(SkTFlagsMask<X> a, X b) { \
|
139
|
+
return static_cast<X>(a.value() & static_cast<int>(b)); \
|
140
|
+
} \
|
141
|
+
[[maybe_unused]] constexpr X operator&(X a, SkTFlagsMask<X> b) { \
|
142
|
+
return static_cast<X>(static_cast<int>(a) & b.value()); \
|
143
|
+
} \
|
144
|
+
[[maybe_unused]] inline X& operator&=(X& a, SkTFlagsMask<X> b) { \
|
145
|
+
return (a = a & b); \
|
146
|
+
} \
|
147
|
+
|
148
|
+
#define SK_DECL_BITFIELD_CLASS_OPS_FRIENDS(X) \
|
149
|
+
friend constexpr SkTFlagsMask<X> operator ~(X); \
|
150
|
+
friend constexpr X operator |(X, X); \
|
151
|
+
friend X& operator |=(X&, X); \
|
152
|
+
friend constexpr bool operator &(X, X); \
|
153
|
+
friend constexpr SkTFlagsMask<X> operator|(SkTFlagsMask<X>, SkTFlagsMask<X>); \
|
154
|
+
friend constexpr SkTFlagsMask<X> operator|(SkTFlagsMask<X>, X); \
|
155
|
+
friend constexpr SkTFlagsMask<X> operator|(X, SkTFlagsMask<X>); \
|
156
|
+
friend constexpr X operator&(SkTFlagsMask<X>, SkTFlagsMask<X>); \
|
157
|
+
friend constexpr X operator&(SkTFlagsMask<X>, X); \
|
158
|
+
friend constexpr X operator&(X, SkTFlagsMask<X>); \
|
159
|
+
friend X& operator &=(X&, SkTFlagsMask<X>)
|
160
|
+
|
94
161
|
#endif // SkMacros_DEFINED
|
@@ -56,6 +56,14 @@ SK_API extern void* sk_malloc_flags(size_t size, unsigned flags);
|
|
56
56
|
*/
|
57
57
|
SK_API extern void* sk_realloc_throw(void* buffer, size_t size);
|
58
58
|
|
59
|
+
/**
|
60
|
+
* Return the size of the block of memory allocated in reality for a given pointer. The pointer
|
61
|
+
* passed must have been allocated using the sk_malloc_* or sk_realloc_* functions. The "size"
|
62
|
+
* parameter indicates the size originally requested when the memory block was allocated, and
|
63
|
+
* the value returned by this function must be bigger or equal to it.
|
64
|
+
*/
|
65
|
+
SK_API extern size_t sk_malloc_size(void* addr, size_t size);
|
66
|
+
|
59
67
|
static inline void* sk_malloc_throw(size_t size) {
|
60
68
|
return sk_malloc_flags(size, SK_MALLOC_THROW);
|
61
69
|
}
|
@@ -9,7 +9,7 @@
|
|
9
9
|
#define SkPoint_DEFINED
|
10
10
|
|
11
11
|
#include "include/private/base/SkAPI.h"
|
12
|
-
#include "include/private/base/
|
12
|
+
#include "include/private/base/SkFloatingPoint.h"
|
13
13
|
#include "include/private/base/SkSafe32.h"
|
14
14
|
|
15
15
|
#include <cmath>
|
@@ -410,16 +410,7 @@ struct SK_API SkPoint {
|
|
410
410
|
@return true for values other than infinities and NaN
|
411
411
|
*/
|
412
412
|
bool isFinite() const {
|
413
|
-
|
414
|
-
accum *= fX;
|
415
|
-
accum *= fY;
|
416
|
-
|
417
|
-
// accum is either NaN or it is finite (zero).
|
418
|
-
SkASSERT(0 == accum || std::isnan(accum));
|
419
|
-
|
420
|
-
// value==value will be true iff value is not NaN
|
421
|
-
// TODO: is it faster to say !accum or accum==accum?
|
422
|
-
return !std::isnan(accum);
|
413
|
+
return SkIsFinite(fX, fY);
|
423
414
|
}
|
424
415
|
|
425
416
|
/** Returns true if SkPoint is equivalent to SkPoint constructed from (x, y).
|