@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.
- 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).
|