@shopify/react-native-skia 0.1.192 → 0.1.193
Sign up to get free protection for your applications and to get access to all the features.
- package/android/CMakeLists.txt +1 -1
- package/android/build.gradle +1 -0
- package/android/cpp/jni/JniPlatformContext.cpp +1 -1
- package/cpp/api/JsiSkImage.h +25 -4
- package/cpp/api/JsiSkImageFactory.h +2 -2
- package/cpp/api/JsiSkPath.h +8 -6
- package/cpp/rnskia/dom/base/Declaration.h +5 -7
- package/cpp/rnskia/dom/nodes/JsiBlurMaskNode.h +1 -0
- package/cpp/rnskia/dom/nodes/JsiPathNode.h +2 -2
- package/cpp/rnskia/dom/props/BoxShadowProps.h +2 -0
- package/cpp/skia/include/android/SkAndroidFrameworkUtils.h +2 -8
- package/cpp/skia/include/android/SkImageAndroid.h +101 -0
- package/cpp/skia/include/codec/SkAndroidCodec.h +26 -8
- package/cpp/skia/include/codec/SkCodec.h +31 -17
- package/cpp/skia/include/codec/SkEncodedImageFormat.h +36 -0
- package/cpp/skia/include/codec/SkPixmapUtils.h +31 -0
- package/cpp/skia/include/config/SkUserConfig.h +61 -29
- package/cpp/skia/include/core/SkBitmap.h +25 -25
- package/cpp/skia/include/core/SkBlurTypes.h +0 -2
- package/cpp/skia/include/core/SkCanvas.h +32 -15
- package/cpp/skia/include/core/SkCapabilities.h +2 -2
- package/cpp/skia/include/core/SkColor.h +2 -0
- package/cpp/skia/include/core/SkColorPriv.h +19 -4
- package/cpp/skia/include/core/SkColorSpace.h +14 -17
- package/cpp/skia/include/core/SkColorType.h +1 -0
- package/cpp/skia/include/core/SkContourMeasure.h +1 -1
- package/cpp/skia/include/core/SkCoverageMode.h +0 -2
- package/cpp/skia/include/core/SkCubicMap.h +2 -0
- package/cpp/skia/include/core/SkData.h +5 -2
- package/cpp/skia/include/core/SkDataTable.h +6 -2
- package/cpp/skia/include/core/SkDeferredDisplayList.h +11 -10
- package/cpp/skia/include/core/SkDeferredDisplayListRecorder.h +9 -8
- package/cpp/skia/include/core/SkDrawable.h +10 -2
- package/cpp/skia/include/core/SkEncodedImageFormat.h +3 -30
- package/cpp/skia/include/core/SkFlattenable.h +4 -2
- package/cpp/skia/include/core/SkFont.h +1 -0
- package/cpp/skia/include/core/SkFontMetrics.h +1 -0
- package/cpp/skia/include/core/SkFontMgr.h +20 -29
- package/cpp/skia/include/core/SkFontStyle.h +4 -1
- package/cpp/skia/include/core/SkGraphics.h +21 -18
- package/cpp/skia/include/core/SkICC.h +3 -13
- package/cpp/skia/include/core/SkImage.h +395 -717
- package/cpp/skia/include/core/SkImageGenerator.h +19 -74
- package/cpp/skia/include/core/SkImageInfo.h +7 -5
- package/cpp/skia/include/core/SkM44.h +11 -0
- package/cpp/skia/include/core/SkMaskFilter.h +6 -3
- package/cpp/skia/include/core/SkMatrix.h +14 -4
- package/cpp/skia/include/core/SkMesh.h +52 -18
- package/cpp/skia/include/core/SkMilestone.h +1 -1
- package/cpp/skia/include/core/SkPaint.h +11 -34
- package/cpp/skia/include/core/SkPath.h +23 -4
- package/cpp/skia/include/core/SkPathBuilder.h +13 -5
- package/cpp/skia/include/core/SkPathMeasure.h +1 -1
- package/cpp/skia/include/core/SkPathTypes.h +0 -2
- package/cpp/skia/include/core/SkPathUtils.h +42 -0
- package/cpp/skia/include/core/SkPicture.h +3 -2
- package/cpp/skia/include/core/SkPictureRecorder.h +2 -0
- package/cpp/skia/include/core/SkPixelRef.h +4 -8
- package/cpp/skia/include/core/SkPixmap.h +12 -20
- package/cpp/skia/include/core/SkPoint.h +4 -2
- package/cpp/skia/include/core/SkPromiseImageTexture.h +2 -2
- package/cpp/skia/include/core/SkRRect.h +5 -1
- package/cpp/skia/include/core/SkRect.h +6 -3
- package/cpp/skia/include/core/SkRefCnt.h +9 -14
- package/cpp/skia/include/core/SkRegion.h +1 -1
- package/cpp/skia/include/core/SkScalar.h +2 -4
- package/cpp/skia/include/core/SkSerialProcs.h +18 -10
- package/cpp/skia/include/core/SkShader.h +1 -64
- package/cpp/skia/include/core/SkSize.h +2 -0
- package/cpp/skia/include/core/SkSpan.h +4 -112
- package/cpp/skia/include/core/SkStream.h +11 -12
- package/cpp/skia/include/core/SkString.h +9 -25
- package/cpp/skia/include/core/SkStrokeRec.h +1 -1
- package/cpp/skia/include/core/SkSurface.h +83 -61
- package/cpp/skia/include/core/SkSurfaceCharacterization.h +3 -3
- package/cpp/skia/include/core/SkSurfaceProps.h +9 -1
- package/cpp/skia/include/core/SkTextBlob.h +2 -2
- package/cpp/skia/include/core/SkTextureCompressionType.h +30 -0
- package/cpp/skia/include/core/SkTime.h +1 -1
- package/cpp/skia/include/core/SkTypeface.h +9 -2
- package/cpp/skia/include/core/SkTypes.h +37 -466
- package/cpp/skia/include/core/SkVertices.h +2 -0
- package/cpp/skia/include/core/SkYUVAInfo.h +4 -0
- package/cpp/skia/include/core/SkYUVAPixmaps.h +7 -1
- package/cpp/skia/include/docs/SkPDFDocument.h +12 -1
- package/cpp/skia/include/effects/SkColorMatrix.h +2 -1
- package/cpp/skia/include/effects/SkGradientShader.h +65 -14
- package/cpp/skia/include/effects/SkImageFilters.h +0 -11
- package/cpp/skia/include/effects/SkRuntimeEffect.h +41 -11
- package/cpp/skia/include/encode/SkEncoder.h +7 -3
- package/cpp/skia/include/encode/SkICC.h +36 -0
- package/cpp/skia/include/encode/SkJpegEncoder.h +102 -71
- package/cpp/skia/include/encode/SkPngEncoder.h +89 -71
- package/cpp/skia/include/encode/SkWebpEncoder.h +65 -38
- package/cpp/skia/include/gpu/GpuTypes.h +23 -1
- package/cpp/skia/include/gpu/GrBackendSurface.h +9 -7
- package/cpp/skia/include/gpu/GrContextOptions.h +28 -9
- package/cpp/skia/include/gpu/GrContextThreadSafeProxy.h +6 -4
- package/cpp/skia/include/gpu/GrDirectContext.h +84 -63
- package/cpp/skia/include/gpu/GrDriverBugWorkarounds.h +2 -1
- package/cpp/skia/include/gpu/GrRecordingContext.h +9 -5
- package/cpp/skia/include/gpu/GrTypes.h +18 -18
- package/cpp/skia/include/gpu/d3d/GrD3DTypes.h +4 -4
- package/cpp/skia/include/gpu/dawn/GrDawnTypes.h +3 -3
- package/cpp/skia/include/gpu/ganesh/GrTextureGenerator.h +77 -0
- package/cpp/skia/include/gpu/ganesh/SkImageGanesh.h +385 -0
- package/cpp/skia/include/gpu/gl/GrGLExtensions.h +3 -3
- package/cpp/skia/include/gpu/gl/GrGLFunctions.h +1 -1
- package/cpp/skia/include/gpu/gl/GrGLInterface.h +0 -3
- package/cpp/skia/include/gpu/gl/GrGLTypes.h +2 -1
- package/cpp/skia/include/gpu/graphite/BackendTexture.h +72 -3
- package/cpp/skia/include/gpu/graphite/Context.h +85 -32
- package/cpp/skia/include/gpu/graphite/ContextOptions.h +15 -11
- package/cpp/skia/include/gpu/graphite/GraphiteTypes.h +55 -5
- package/cpp/skia/include/gpu/graphite/ImageProvider.h +6 -4
- package/cpp/skia/include/gpu/graphite/Recorder.h +41 -11
- package/cpp/skia/include/gpu/graphite/Recording.h +50 -3
- package/cpp/skia/include/gpu/graphite/TextureInfo.h +47 -8
- package/cpp/skia/include/gpu/graphite/YUVABackendTextures.h +139 -0
- package/cpp/skia/include/gpu/graphite/dawn/DawnTypes.h +40 -0
- package/cpp/skia/include/gpu/graphite/dawn/DawnUtils.h +28 -0
- package/cpp/skia/include/gpu/graphite/mtl/MtlBackendContext.h +1 -1
- package/cpp/skia/include/gpu/graphite/mtl/{MtlTypes.h → MtlGraphiteTypes.h} +7 -6
- package/cpp/skia/include/gpu/graphite/mtl/MtlGraphiteUtils.h +27 -0
- package/cpp/skia/include/gpu/graphite/vk/VulkanGraphiteTypes.h +4 -9
- package/cpp/skia/include/gpu/graphite/vk/VulkanGraphiteUtils.h +28 -0
- package/cpp/skia/include/gpu/mock/GrMockTypes.h +17 -13
- package/cpp/skia/include/gpu/mtl/GrMtlTypes.h +2 -2
- package/cpp/skia/include/gpu/vk/GrVkBackendContext.h +1 -1
- package/cpp/skia/include/gpu/vk/GrVkTypes.h +3 -3
- package/cpp/skia/include/gpu/vk/VulkanExtensions.h +3 -3
- package/cpp/skia/include/gpu/vk/VulkanMemoryAllocator.h +5 -7
- package/cpp/skia/include/pathops/SkPathOps.h +3 -3
- package/cpp/skia/include/ports/SkFontMgr_data.h +22 -0
- package/cpp/skia/include/ports/SkFontMgr_indirect.h +14 -14
- package/cpp/skia/include/ports/SkRemotableFontMgr.h +2 -2
- package/cpp/skia/include/ports/SkTypeface_win.h +2 -1
- package/cpp/skia/include/private/SkChecksum.h +32 -7
- package/cpp/skia/include/private/SkColorData.h +1 -26
- package/cpp/skia/include/private/SkGainmapInfo.h +97 -0
- package/cpp/skia/include/private/SkGainmapShader.h +53 -0
- package/cpp/skia/include/private/SkIDChangeListener.h +4 -3
- package/cpp/skia/include/private/SkJpegGainmapEncoder.h +71 -0
- package/cpp/skia/include/private/SkJpegMetadataDecoder.h +61 -0
- package/cpp/skia/include/private/SkOpts_spi.h +3 -1
- package/cpp/skia/include/private/SkPathRef.h +64 -47
- package/cpp/skia/include/private/SkSLDefines.h +5 -5
- package/cpp/skia/include/private/SkSLSampleUsage.h +0 -4
- package/cpp/skia/include/private/SkSpinlock.h +1 -1
- package/cpp/skia/include/private/SkWeakRefCnt.h +3 -0
- package/cpp/skia/include/private/{SingleOwner.h → base/SingleOwner.h} +8 -5
- package/cpp/skia/include/private/base/SkAPI.h +52 -0
- package/cpp/skia/include/private/base/SkAlign.h +39 -0
- package/cpp/skia/include/private/base/SkAlignedStorage.h +32 -0
- package/cpp/skia/include/private/base/SkAssert.h +92 -0
- package/cpp/skia/include/private/base/SkAttributes.h +102 -0
- package/cpp/skia/include/private/base/SkCPUTypes.h +25 -0
- package/cpp/skia/include/private/base/SkContainers.h +46 -0
- package/cpp/skia/include/private/base/SkDebug.h +27 -0
- package/cpp/skia/include/private/{SkDeque.h → base/SkDeque.h} +3 -1
- package/cpp/skia/include/private/base/SkFeatures.h +151 -0
- package/cpp/skia/include/private/{SkFixed.h → base/SkFixed.h} +9 -7
- package/cpp/skia/include/private/{SkFloatBits.h → base/SkFloatBits.h} +2 -3
- package/cpp/skia/include/private/{SkFloatingPoint.h → base/SkFloatingPoint.h} +18 -9
- package/cpp/skia/include/private/base/SkLoadUserConfig.h +63 -0
- package/cpp/skia/include/private/{SkMacros.h → base/SkMacros.h} +17 -2
- package/cpp/skia/include/private/{SkMalloc.h → base/SkMalloc.h} +4 -7
- package/cpp/skia/include/{core → private/base}/SkMath.h +25 -2
- package/cpp/skia/include/private/{SkMutex.h → base/SkMutex.h} +5 -5
- package/cpp/skia/include/private/{SkNoncopyable.h → base/SkNoncopyable.h} +2 -2
- package/cpp/skia/include/private/{SkOnce.h → base/SkOnce.h} +3 -1
- package/cpp/skia/include/private/base/SkPathEnums.h +25 -0
- package/cpp/skia/include/private/{SkSafe32.h → base/SkSafe32.h} +16 -1
- package/cpp/skia/include/private/{SkSemaphore.h → base/SkSemaphore.h} +4 -3
- package/cpp/skia/include/private/base/SkSpan_impl.h +129 -0
- package/cpp/skia/include/private/base/SkTArray.h +694 -0
- package/cpp/skia/include/private/{SkTDArray.h → base/SkTDArray.h} +17 -54
- package/cpp/skia/include/private/{SkTFitsIn.h → base/SkTFitsIn.h} +14 -8
- package/cpp/skia/include/private/{SkTLogic.h → base/SkTLogic.h} +1 -1
- package/cpp/skia/include/private/{SkTemplates.h → base/SkTemplates.h} +63 -88
- package/cpp/skia/include/private/{SkThreadID.h → base/SkThreadID.h} +5 -2
- package/cpp/skia/include/private/{SkTo.h → base/SkTo.h} +13 -2
- package/cpp/skia/include/private/base/SkTypeTraits.h +33 -0
- package/cpp/skia/include/private/chromium/GrVkSecondaryCBDrawContext.h +130 -0
- package/cpp/skia/include/private/chromium/SkChromeRemoteGlyphCache.h +5 -9
- package/cpp/skia/include/private/chromium/SkDiscardableMemory.h +70 -0
- package/cpp/skia/include/private/chromium/Slug.h +0 -9
- package/cpp/skia/include/private/gpu/ganesh/GrContext_Base.h +2 -1
- package/cpp/skia/include/private/gpu/ganesh/GrD3DTypesMinimal.h +1 -1
- package/cpp/skia/include/private/gpu/ganesh/GrDawnTypesPriv.h +1 -1
- package/cpp/skia/include/private/gpu/ganesh/GrGLTypesPriv.h +1 -1
- package/cpp/skia/include/private/gpu/ganesh/GrImageContext.h +1 -1
- package/cpp/skia/include/private/gpu/ganesh/GrMockTypesPriv.h +3 -2
- package/cpp/skia/include/private/gpu/ganesh/GrMtlTypesPriv.h +1 -1
- package/cpp/skia/include/private/gpu/ganesh/GrTypesPriv.h +17 -23
- package/cpp/skia/include/private/gpu/ganesh/GrVkTypesPriv.h +2 -2
- package/cpp/skia/include/private/gpu/graphite/DawnTypesPriv.h +38 -0
- package/cpp/skia/include/private/gpu/graphite/{MtlTypesPriv.h → MtlGraphiteTypesPriv.h} +5 -5
- package/cpp/skia/include/private/gpu/graphite/VulkanGraphiteTypesPriv.h +1 -9
- package/cpp/skia/include/private/gpu/vk/SkiaVulkan.h +4 -0
- package/cpp/skia/include/utils/SkCamera.h +1 -1
- package/cpp/skia/include/utils/SkCustomTypeface.h +7 -1
- package/cpp/skia/include/utils/SkNWayCanvas.h +6 -6
- package/cpp/skia/include/utils/SkOrderedFontMgr.h +7 -6
- package/cpp/skia/include/utils/SkPaintFilterCanvas.h +2 -2
- package/cpp/skia/include/utils/SkParsePath.h +1 -1
- package/cpp/skia/modules/skcms/skcms.h +14 -0
- package/cpp/skia/modules/skcms/src/Transform_inl.h +19 -0
- package/cpp/skia/modules/skparagraph/include/FontCollection.h +2 -2
- package/cpp/skia/modules/skparagraph/include/Paragraph.h +72 -2
- package/cpp/skia/modules/skparagraph/include/ParagraphCache.h +1 -11
- package/cpp/skia/modules/skparagraph/include/ParagraphPainter.h +63 -0
- package/cpp/skia/modules/skparagraph/include/TextStyle.h +27 -4
- package/cpp/skia/modules/skparagraph/include/TypefaceFontProvider.h +13 -13
- package/cpp/skia/modules/skresources/include/SkResources.h +18 -4
- package/cpp/skia/modules/svg/include/SkSVGAttribute.h +1 -1
- package/cpp/skia/modules/svg/include/SkSVGAttributeParser.h +2 -2
- package/cpp/skia/modules/svg/include/SkSVGContainer.h +2 -2
- package/cpp/skia/modules/svg/include/SkSVGDOM.h +1 -1
- package/cpp/skia/modules/svg/include/SkSVGFilterContext.h +2 -2
- package/cpp/skia/modules/svg/include/SkSVGGradient.h +2 -2
- package/cpp/skia/modules/svg/include/SkSVGIDMapper.h +2 -2
- package/cpp/skia/modules/svg/include/SkSVGRenderContext.h +3 -3
- package/cpp/skia/modules/svg/include/SkSVGSVG.h +1 -1
- package/cpp/skia/modules/svg/include/SkSVGTypes.h +22 -21
- package/cpp/skia/modules/svg/include/SkSVGValue.h +1 -1
- package/cpp/skia/{include/private → src/core}/SkTHash.h +41 -37
- package/ios/RNSkia-iOS/ViewScreenshotService.mm +1 -1
- package/libs/android/arm64-v8a/libskia.a +0 -0
- package/libs/android/arm64-v8a/libskottie.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/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/libsksg.a +0 -0
- package/libs/android/armeabi-v7a/libskshaper.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/libsksg.a +0 -0
- package/libs/android/x86/libskshaper.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/libsksg.a +0 -0
- package/libs/android/x86_64/libskshaper.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/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/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/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 +1 -1
- package/react-native-skia.podspec +1 -1
- package/scripts/install-npm.js +11 -1
- package/cpp/skia/include/core/SkImageEncoder.h +0 -71
- package/cpp/skia/include/gpu/GrConfig.h +0 -53
- package/cpp/skia/include/gpu/graphite/CombinationBuilder.h +0 -195
- package/cpp/skia/include/private/SkHalf.h +0 -38
- package/cpp/skia/include/private/SkImageInfoPriv.h +0 -199
- package/cpp/skia/include/private/SkSLIRNode.h +0 -64
- package/cpp/skia/include/private/SkSLLayout.h +0 -144
- package/cpp/skia/include/private/SkSLModifiers.h +0 -178
- package/cpp/skia/include/private/SkSLProgramElement.h +0 -77
- package/cpp/skia/include/private/SkSLProgramKind.h +0 -35
- package/cpp/skia/include/private/SkSLStatement.h +0 -86
- package/cpp/skia/include/private/SkSLString.h +0 -41
- package/cpp/skia/include/private/SkSLSymbol.h +0 -94
- package/cpp/skia/include/private/SkSafe_math.h +0 -52
- package/cpp/skia/include/private/SkStringView.h +0 -51
- package/cpp/skia/include/private/SkTArray.h +0 -655
- package/cpp/skia/include/private/SkUniquePaintParamsID.h +0 -35
- package/cpp/skia/include/private/SkVx.h +0 -1026
- package/cpp/skia/include/sksl/DSL.h +0 -37
- package/cpp/skia/include/sksl/DSLBlock.h +0 -58
- package/cpp/skia/include/sksl/DSLCase.h +0 -62
- package/cpp/skia/include/sksl/DSLCore.h +0 -492
- package/cpp/skia/include/sksl/DSLExpression.h +0 -241
- package/cpp/skia/include/sksl/DSLFunction.h +0 -113
- package/cpp/skia/include/sksl/DSLLayout.h +0 -92
- package/cpp/skia/include/sksl/DSLModifiers.h +0 -69
- package/cpp/skia/include/sksl/DSLStatement.h +0 -82
- package/cpp/skia/include/sksl/DSLSymbols.h +0 -61
- package/cpp/skia/include/sksl/DSLType.h +0 -271
- package/cpp/skia/include/sksl/DSLVar.h +0 -231
- package/cpp/skia/include/sksl/SkSLErrorReporter.h +0 -65
- package/cpp/skia/include/sksl/SkSLOperator.h +0 -154
- package/cpp/skia/include/sksl/SkSLPosition.h +0 -104
- package/cpp/skia/include/utils/SkRandom.h +0 -169
- package/cpp/skia/src/core/SkLRUCache.h +0 -126
- package/cpp/skia/src/core/SkTInternalLList.h +0 -302
- /package/cpp/skia/include/{core → codec}/SkPngChunkReader.h +0 -0
- /package/cpp/skia/include/private/{SkTPin.h → base/SkTPin.h} +0 -0
- /package/cpp/skia/include/private/{SkThreadAnnotations.h → base/SkThreadAnnotations.h} +0 -0
@@ -8,36 +8,25 @@
|
|
8
8
|
#ifndef SkPathRef_DEFINED
|
9
9
|
#define SkPathRef_DEFINED
|
10
10
|
|
11
|
-
#include "include/core/SkMatrix.h"
|
12
11
|
#include "include/core/SkPoint.h"
|
13
12
|
#include "include/core/SkRect.h"
|
14
13
|
#include "include/core/SkRefCnt.h"
|
14
|
+
#include "include/core/SkScalar.h"
|
15
|
+
#include "include/core/SkTypes.h"
|
15
16
|
#include "include/private/SkIDChangeListener.h"
|
16
|
-
#include "include/private/
|
17
|
-
#include "include/private/
|
18
|
-
#include "include/private/
|
19
|
-
#include "include/private/SkTo.h"
|
17
|
+
#include "include/private/base/SkDebug.h"
|
18
|
+
#include "include/private/base/SkTArray.h"
|
19
|
+
#include "include/private/base/SkTo.h"
|
20
20
|
|
21
21
|
#include <atomic>
|
22
|
-
#include <
|
22
|
+
#include <cstddef>
|
23
|
+
#include <cstdint>
|
23
24
|
#include <tuple>
|
25
|
+
#include <utility>
|
24
26
|
|
25
|
-
class
|
26
|
-
class SkWBuffer;
|
27
|
+
class SkMatrix;
|
27
28
|
class SkRRect;
|
28
29
|
|
29
|
-
enum class SkPathConvexity {
|
30
|
-
kConvex,
|
31
|
-
kConcave,
|
32
|
-
kUnknown,
|
33
|
-
};
|
34
|
-
|
35
|
-
enum class SkPathFirstDirection {
|
36
|
-
kCW, // == SkPathDirection::kCW
|
37
|
-
kCCW, // == SkPathDirection::kCCW
|
38
|
-
kUnknown,
|
39
|
-
};
|
40
|
-
|
41
30
|
// These are computed from a stream of verbs
|
42
31
|
struct SkPathVerbAnalysis {
|
43
32
|
bool valid;
|
@@ -64,7 +53,13 @@ SkPathVerbAnalysis sk_path_analyze_verbs(const uint8_t verbs[], int count);
|
|
64
53
|
|
65
54
|
class SK_API SkPathRef final : public SkNVRefCnt<SkPathRef> {
|
66
55
|
public:
|
67
|
-
|
56
|
+
// See https://bugs.chromium.org/p/skia/issues/detail?id=13817 for how these sizes were
|
57
|
+
// determined.
|
58
|
+
using PointsArray = skia_private::STArray<4, SkPoint>;
|
59
|
+
using VerbsArray = skia_private::STArray<4, uint8_t>;
|
60
|
+
using ConicWeightsArray = skia_private::STArray<2, SkScalar>;
|
61
|
+
|
62
|
+
SkPathRef(PointsArray points, VerbsArray verbs, ConicWeightsArray weights,
|
68
63
|
unsigned segmentMask)
|
69
64
|
: fPoints(std::move(points))
|
70
65
|
, fVerbs(std::move(verbs))
|
@@ -320,24 +315,15 @@ public:
|
|
320
315
|
|
321
316
|
bool operator== (const SkPathRef& ref) const;
|
322
317
|
|
323
|
-
/**
|
324
|
-
* Writes the path points and verbs to a buffer.
|
325
|
-
*/
|
326
|
-
void writeToBuffer(SkWBuffer* buffer) const;
|
327
|
-
|
328
|
-
/**
|
329
|
-
* Gets the number of bytes that would be written in writeBuffer()
|
330
|
-
*/
|
331
|
-
uint32_t writeSize() const;
|
332
|
-
|
333
318
|
void interpolate(const SkPathRef& ending, SkScalar weight, SkPathRef* out) const;
|
334
319
|
|
335
320
|
/**
|
336
321
|
* Gets an ID that uniquely identifies the contents of the path ref. If two path refs have the
|
337
322
|
* same ID then they have the same verbs and points. However, two path refs may have the same
|
338
323
|
* contents but different genIDs.
|
324
|
+
* skbug.com/1762 for background on why fillType is necessary (for now).
|
339
325
|
*/
|
340
|
-
uint32_t genID() const;
|
326
|
+
uint32_t genID(uint8_t fillType) const;
|
341
327
|
|
342
328
|
void addGenIDChangeListener(sk_sp<SkIDChangeListener>); // Threadsafe.
|
343
329
|
int genIDChangeListenerCount(); // Threadsafe
|
@@ -346,6 +332,15 @@ public:
|
|
346
332
|
bool isValid() const;
|
347
333
|
SkDEBUGCODE(void validate() const { SkASSERT(this->isValid()); } )
|
348
334
|
|
335
|
+
/**
|
336
|
+
* Resets this SkPathRef to a clean state.
|
337
|
+
*/
|
338
|
+
void reset();
|
339
|
+
|
340
|
+
bool isInitialEmptyPathRef() const {
|
341
|
+
return fGenerationID == kEmptyGenID;
|
342
|
+
}
|
343
|
+
|
349
344
|
private:
|
350
345
|
enum SerializationOffsets {
|
351
346
|
kLegacyRRectOrOvalStartIdx_SerializationShift = 28, // requires 3 bits, ignored.
|
@@ -356,7 +351,7 @@ private:
|
|
356
351
|
kSegmentMask_SerializationShift = 0 // requires 4 bits (deprecated)
|
357
352
|
};
|
358
353
|
|
359
|
-
SkPathRef() {
|
354
|
+
SkPathRef(int numVerbs = 0, int numPoints = 0) {
|
360
355
|
fBoundsIsDirty = true; // this also invalidates fIsFinite
|
361
356
|
fGenerationID = kEmptyGenID;
|
362
357
|
fSegmentMask = 0;
|
@@ -365,6 +360,10 @@ private:
|
|
365
360
|
// The next two values don't matter unless fIsOval or fIsRRect are true.
|
366
361
|
fRRectOrOvalIsCCW = false;
|
367
362
|
fRRectOrOvalStartIdx = 0xAC;
|
363
|
+
if (numPoints > 0)
|
364
|
+
fPoints.reserve_back(numPoints);
|
365
|
+
if (numVerbs > 0)
|
366
|
+
fVerbs.reserve_back(numVerbs);
|
368
367
|
SkDEBUGCODE(fEditorsAttached.store(0);)
|
369
368
|
SkDEBUGCODE(this->validate();)
|
370
369
|
}
|
@@ -397,15 +396,20 @@ private:
|
|
397
396
|
/** Makes additional room but does not change the counts or change the genID */
|
398
397
|
void incReserve(int additionalVerbs, int additionalPoints) {
|
399
398
|
SkDEBUGCODE(this->validate();)
|
400
|
-
|
401
|
-
|
399
|
+
// Use reserve() so that if there is not enough space, the array will grow with some
|
400
|
+
// additional space. This ensures repeated calls to grow won't always allocate.
|
401
|
+
if (additionalPoints > 0)
|
402
|
+
fPoints.reserve(fPoints.size() + additionalPoints);
|
403
|
+
if (additionalVerbs > 0)
|
404
|
+
fVerbs.reserve(fVerbs.size() + additionalVerbs);
|
402
405
|
SkDEBUGCODE(this->validate();)
|
403
406
|
}
|
404
407
|
|
405
|
-
/**
|
406
|
-
*
|
407
|
-
|
408
|
-
|
408
|
+
/**
|
409
|
+
* Resets all state except that of the verbs, points, and conic-weights.
|
410
|
+
* Intended to be called from other functions that reset state.
|
411
|
+
*/
|
412
|
+
void commonReset() {
|
409
413
|
SkDEBUGCODE(this->validate();)
|
410
414
|
this->callGenIDChangeListeners();
|
411
415
|
fBoundsIsDirty = true; // this also invalidates fIsFinite
|
@@ -414,12 +418,25 @@ private:
|
|
414
418
|
fSegmentMask = 0;
|
415
419
|
fIsOval = false;
|
416
420
|
fIsRRect = false;
|
421
|
+
}
|
417
422
|
|
418
|
-
|
419
|
-
|
420
|
-
|
421
|
-
|
422
|
-
|
423
|
+
/** Resets the path ref with verbCount verbs and pointCount points, all uninitialized. Also
|
424
|
+
* allocates space for reserveVerb additional verbs and reservePoints additional points.*/
|
425
|
+
void resetToSize(int verbCount, int pointCount, int conicCount,
|
426
|
+
int reserveVerbs = 0, int reservePoints = 0) {
|
427
|
+
commonReset();
|
428
|
+
// Use reserve_back() so the arrays are sized to exactly fit the data.
|
429
|
+
const int pointDelta = pointCount + reservePoints - fPoints.size();
|
430
|
+
if (pointDelta > 0) {
|
431
|
+
fPoints.reserve_back(pointDelta);
|
432
|
+
}
|
433
|
+
fPoints.resize_back(pointCount);
|
434
|
+
const int verbDelta = verbCount + reserveVerbs - fVerbs.size();
|
435
|
+
if (verbDelta > 0) {
|
436
|
+
fVerbs.reserve_back(verbDelta);
|
437
|
+
}
|
438
|
+
fVerbs.resize_back(verbCount);
|
439
|
+
fConicWeights.resize_back(conicCount);
|
423
440
|
SkDEBUGCODE(this->validate();)
|
424
441
|
}
|
425
442
|
|
@@ -489,9 +506,9 @@ private:
|
|
489
506
|
|
490
507
|
mutable SkRect fBounds;
|
491
508
|
|
492
|
-
|
493
|
-
|
494
|
-
|
509
|
+
PointsArray fPoints;
|
510
|
+
VerbsArray fVerbs;
|
511
|
+
ConicWeightsArray fConicWeights;
|
495
512
|
|
496
513
|
enum {
|
497
514
|
kEmptyGenID = 1, // GenID reserved for path ref with zero points and zero verbs.
|
@@ -11,7 +11,7 @@
|
|
11
11
|
#include <cstdint>
|
12
12
|
|
13
13
|
#include "include/core/SkTypes.h"
|
14
|
-
#include "include/private/SkTArray.h"
|
14
|
+
#include "include/private/base/SkTArray.h"
|
15
15
|
|
16
16
|
using SKSL_INT = int64_t;
|
17
17
|
using SKSL_FLOAT = float;
|
@@ -21,17 +21,17 @@ namespace SkSL {
|
|
21
21
|
class Expression;
|
22
22
|
class Statement;
|
23
23
|
|
24
|
-
using ComponentArray =
|
24
|
+
using ComponentArray = skia_private::STArray<4, int8_t>; // for Swizzles
|
25
25
|
|
26
|
-
class ExpressionArray : public
|
26
|
+
class ExpressionArray : public skia_private::STArray<2, std::unique_ptr<Expression>> {
|
27
27
|
public:
|
28
|
-
using
|
28
|
+
using STArray::STArray;
|
29
29
|
|
30
30
|
/** Returns a new ExpressionArray containing a clone of every element. */
|
31
31
|
ExpressionArray clone() const;
|
32
32
|
};
|
33
33
|
|
34
|
-
using StatementArray =
|
34
|
+
using StatementArray = skia_private::STArray<2, std::unique_ptr<Statement>>;
|
35
35
|
|
36
36
|
// Functions larger than this (measured in IR nodes) will not be inlined. This growth factor
|
37
37
|
// accounts for the number of calls being inlined--i.e., a function called five times (that is, with
|
@@ -10,8 +10,6 @@
|
|
10
10
|
|
11
11
|
#include "include/core/SkTypes.h"
|
12
12
|
|
13
|
-
#include <string>
|
14
|
-
|
15
13
|
namespace SkSL {
|
16
14
|
|
17
15
|
/**
|
@@ -77,8 +75,6 @@ public:
|
|
77
75
|
bool isUniformMatrix() const { return fKind == Kind::kUniformMatrix; }
|
78
76
|
bool isFragCoord() const { return fKind == Kind::kFragCoord; }
|
79
77
|
|
80
|
-
std::string constructor() const;
|
81
|
-
|
82
78
|
private:
|
83
79
|
Kind fKind = Kind::kNone;
|
84
80
|
bool fHasPerspective = false; // Only valid if fKind is kUniformMatrix
|
@@ -8,16 +8,19 @@
|
|
8
8
|
#ifndef skgpu_SingleOwner_DEFINED
|
9
9
|
#define skgpu_SingleOwner_DEFINED
|
10
10
|
|
11
|
-
#include "include/
|
11
|
+
#include "include/private/base/SkDebug.h" // IWYU pragma: keep
|
12
|
+
|
13
|
+
#if defined(SK_DEBUG)
|
14
|
+
#include "include/private/base/SkAssert.h"
|
15
|
+
#include "include/private/base/SkMutex.h"
|
16
|
+
#include "include/private/base/SkThreadAnnotations.h"
|
17
|
+
#include "include/private/base/SkThreadID.h"
|
12
18
|
|
13
|
-
#ifdef SK_DEBUG
|
14
|
-
#include "include/private/SkMutex.h"
|
15
|
-
#include "include/private/SkThreadID.h"
|
16
19
|
#endif
|
17
20
|
|
18
21
|
namespace skgpu {
|
19
22
|
|
20
|
-
#
|
23
|
+
#if defined(SK_DEBUG)
|
21
24
|
|
22
25
|
#define SKGPU_ASSERT_SINGLE_OWNER(obj) \
|
23
26
|
skgpu::SingleOwner::AutoEnforce debug_SingleOwner(obj, __FILE__, __LINE__);
|
@@ -0,0 +1,52 @@
|
|
1
|
+
/*
|
2
|
+
* Copyright 2022 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 SkAPI_DEFINED
|
9
|
+
#define SkAPI_DEFINED
|
10
|
+
|
11
|
+
#include "include/private/base/SkLoadUserConfig.h" // IWYU pragma: keep
|
12
|
+
|
13
|
+
// If SKIA_IMPLEMENTATION is defined as 1, that signals we are building Skia and should
|
14
|
+
// export our symbols. If it is not set (or set to 0), then Skia is being used by a client
|
15
|
+
// and we should not export our symbols.
|
16
|
+
#if !defined(SKIA_IMPLEMENTATION)
|
17
|
+
#define SKIA_IMPLEMENTATION 0
|
18
|
+
#endif
|
19
|
+
|
20
|
+
// If we are compiling Skia is being as a DLL, we need to be sure to export all of our public
|
21
|
+
// APIs to that DLL. If a client is using Skia which was compiled as a DLL, we need to instruct
|
22
|
+
// the linker to use the symbols from that DLL. This is the goal of the SK_API define.
|
23
|
+
#if !defined(SK_API)
|
24
|
+
#if defined(SKIA_DLL)
|
25
|
+
#if defined(_MSC_VER)
|
26
|
+
#if SKIA_IMPLEMENTATION
|
27
|
+
#define SK_API __declspec(dllexport)
|
28
|
+
#else
|
29
|
+
#define SK_API __declspec(dllimport)
|
30
|
+
#endif
|
31
|
+
#else
|
32
|
+
#define SK_API __attribute__((visibility("default")))
|
33
|
+
#endif
|
34
|
+
#else
|
35
|
+
#define SK_API
|
36
|
+
#endif
|
37
|
+
#endif
|
38
|
+
|
39
|
+
// SK_SPI is functionally identical to SK_API, but used within src to clarify that it's less stable
|
40
|
+
#if !defined(SK_SPI)
|
41
|
+
#define SK_SPI SK_API
|
42
|
+
#endif
|
43
|
+
|
44
|
+
// See https://clang.llvm.org/docs/AttributeReference.html#availability
|
45
|
+
// The API_AVAILABLE macro comes from <os/availability.h> on MacOS
|
46
|
+
#if defined(SK_ENABLE_API_AVAILABLE)
|
47
|
+
# define SK_API_AVAILABLE API_AVAILABLE
|
48
|
+
#else
|
49
|
+
# define SK_API_AVAILABLE(...)
|
50
|
+
#endif
|
51
|
+
|
52
|
+
#endif
|
@@ -0,0 +1,39 @@
|
|
1
|
+
/*
|
2
|
+
* Copyright 2022 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 SkAlign_DEFINED
|
9
|
+
#define SkAlign_DEFINED
|
10
|
+
|
11
|
+
#include "include/private/base/SkAssert.h"
|
12
|
+
|
13
|
+
#include <cstddef>
|
14
|
+
|
15
|
+
template <typename T> static constexpr T SkAlign2(T x) { return (x + 1) >> 1 << 1; }
|
16
|
+
template <typename T> static constexpr T SkAlign4(T x) { return (x + 3) >> 2 << 2; }
|
17
|
+
template <typename T> static constexpr T SkAlign8(T x) { return (x + 7) >> 3 << 3; }
|
18
|
+
|
19
|
+
template <typename T> static constexpr bool SkIsAlign2(T x) { return 0 == (x & 1); }
|
20
|
+
template <typename T> static constexpr bool SkIsAlign4(T x) { return 0 == (x & 3); }
|
21
|
+
template <typename T> static constexpr bool SkIsAlign8(T x) { return 0 == (x & 7); }
|
22
|
+
|
23
|
+
template <typename T> static constexpr T SkAlignPtr(T x) {
|
24
|
+
return sizeof(void*) == 8 ? SkAlign8(x) : SkAlign4(x);
|
25
|
+
}
|
26
|
+
template <typename T> static constexpr bool SkIsAlignPtr(T x) {
|
27
|
+
return sizeof(void*) == 8 ? SkIsAlign8(x) : SkIsAlign4(x);
|
28
|
+
}
|
29
|
+
|
30
|
+
/**
|
31
|
+
* align up to a power of 2
|
32
|
+
*/
|
33
|
+
static inline constexpr size_t SkAlignTo(size_t x, size_t alignment) {
|
34
|
+
// The same as alignment && SkIsPow2(value), w/o a dependency cycle.
|
35
|
+
SkASSERT(alignment && (alignment & (alignment - 1)) == 0);
|
36
|
+
return (x + alignment - 1) & ~(alignment - 1);
|
37
|
+
}
|
38
|
+
|
39
|
+
#endif
|
@@ -0,0 +1,32 @@
|
|
1
|
+
// Copyright 2022 Google LLC
|
2
|
+
// Use of this source code is governed by a BSD-style license that can be found in the LICENSE file.
|
3
|
+
|
4
|
+
#ifndef SkAlignedStorage_DEFINED
|
5
|
+
#define SkAlignedStorage_DEFINED
|
6
|
+
|
7
|
+
#include <cstddef>
|
8
|
+
#include <iterator>
|
9
|
+
|
10
|
+
template <int N, typename T> class SkAlignedSTStorage {
|
11
|
+
public:
|
12
|
+
SkAlignedSTStorage() {}
|
13
|
+
SkAlignedSTStorage(SkAlignedSTStorage&&) = delete;
|
14
|
+
SkAlignedSTStorage(const SkAlignedSTStorage&) = delete;
|
15
|
+
SkAlignedSTStorage& operator=(SkAlignedSTStorage&&) = delete;
|
16
|
+
SkAlignedSTStorage& operator=(const SkAlignedSTStorage&) = delete;
|
17
|
+
|
18
|
+
// Returns void* because this object does not initialize the
|
19
|
+
// memory. Use placement new for types that require a constructor.
|
20
|
+
void* get() { return fStorage; }
|
21
|
+
const void* get() const { return fStorage; }
|
22
|
+
|
23
|
+
// Act as a container of bytes because the storage is uninitialized.
|
24
|
+
std::byte* data() { return fStorage; }
|
25
|
+
const std::byte* data() const { return fStorage; }
|
26
|
+
size_t size() const { return std::size(fStorage); }
|
27
|
+
|
28
|
+
private:
|
29
|
+
alignas(T) std::byte fStorage[sizeof(T) * N];
|
30
|
+
};
|
31
|
+
|
32
|
+
#endif // SkAlignedStorage_DEFINED
|
@@ -0,0 +1,92 @@
|
|
1
|
+
/*
|
2
|
+
* Copyright 2022 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 SkAssert_DEFINED
|
9
|
+
#define SkAssert_DEFINED
|
10
|
+
|
11
|
+
#include "include/private/base/SkAPI.h"
|
12
|
+
#include "include/private/base/SkDebug.h" // IWYU pragma: keep
|
13
|
+
|
14
|
+
/** Called internally if we hit an unrecoverable error.
|
15
|
+
The platform implementation must not return, but should either throw
|
16
|
+
an exception or otherwise exit.
|
17
|
+
*/
|
18
|
+
[[noreturn]] SK_API extern void sk_abort_no_print(void);
|
19
|
+
|
20
|
+
#if defined(SK_BUILD_FOR_GOOGLE3)
|
21
|
+
void SkDebugfForDumpStackTrace(const char* data, void* unused);
|
22
|
+
namespace base {
|
23
|
+
void DumpStackTrace(int skip_count, void w(const char*, void*), void* arg);
|
24
|
+
}
|
25
|
+
# define SK_DUMP_GOOGLE3_STACK() ::base::DumpStackTrace(0, SkDebugfForDumpStackTrace, nullptr)
|
26
|
+
#else
|
27
|
+
# define SK_DUMP_GOOGLE3_STACK()
|
28
|
+
#endif
|
29
|
+
|
30
|
+
#if !defined(SK_ABORT)
|
31
|
+
# if defined(SK_BUILD_FOR_WIN)
|
32
|
+
// This style lets Visual Studio follow errors back to the source file.
|
33
|
+
# define SK_DUMP_LINE_FORMAT "%s(%d)"
|
34
|
+
# else
|
35
|
+
# define SK_DUMP_LINE_FORMAT "%s:%d"
|
36
|
+
# endif
|
37
|
+
# define SK_ABORT(message, ...) \
|
38
|
+
do { \
|
39
|
+
SkDebugf(SK_DUMP_LINE_FORMAT ": fatal error: \"" message "\"\n", \
|
40
|
+
__FILE__, __LINE__, ##__VA_ARGS__); \
|
41
|
+
SK_DUMP_GOOGLE3_STACK(); \
|
42
|
+
sk_abort_no_print(); \
|
43
|
+
} while (false)
|
44
|
+
#endif
|
45
|
+
|
46
|
+
// SkASSERT, SkASSERTF and SkASSERT_RELEASE can be used as stand alone assertion expressions, e.g.
|
47
|
+
// uint32_t foo(int x) {
|
48
|
+
// SkASSERT(x > 4);
|
49
|
+
// return x - 4;
|
50
|
+
// }
|
51
|
+
// and are also written to be compatible with constexpr functions:
|
52
|
+
// constexpr uint32_t foo(int x) {
|
53
|
+
// return SkASSERT(x > 4),
|
54
|
+
// x - 4;
|
55
|
+
// }
|
56
|
+
#define SkASSERT_RELEASE(cond) \
|
57
|
+
static_cast<void>( (cond) ? (void)0 : []{ SK_ABORT("assert(%s)", #cond); }() )
|
58
|
+
|
59
|
+
#if defined(SK_DEBUG)
|
60
|
+
#define SkASSERT(cond) SkASSERT_RELEASE(cond)
|
61
|
+
#define SkASSERTF(cond, fmt, ...) static_cast<void>( (cond) ? (void)0 : [&]{ \
|
62
|
+
SkDebugf(fmt"\n", ##__VA_ARGS__); \
|
63
|
+
SK_ABORT("assert(%s)", #cond); \
|
64
|
+
}() )
|
65
|
+
#define SkDEBUGFAIL(message) SK_ABORT("%s", message)
|
66
|
+
#define SkDEBUGFAILF(fmt, ...) SK_ABORT(fmt, ##__VA_ARGS__)
|
67
|
+
#define SkAssertResult(cond) SkASSERT(cond)
|
68
|
+
#else
|
69
|
+
#define SkASSERT(cond) static_cast<void>(0)
|
70
|
+
#define SkASSERTF(cond, fmt, ...) static_cast<void>(0)
|
71
|
+
#define SkDEBUGFAIL(message)
|
72
|
+
#define SkDEBUGFAILF(fmt, ...)
|
73
|
+
|
74
|
+
// unlike SkASSERT, this macro executes its condition in the non-debug build.
|
75
|
+
// The if is present so that this can be used with functions marked SK_WARN_UNUSED_RESULT.
|
76
|
+
#define SkAssertResult(cond) if (cond) {} do {} while(false)
|
77
|
+
#endif
|
78
|
+
|
79
|
+
#if !defined(SkUNREACHABLE)
|
80
|
+
# if defined(_MSC_VER) && !defined(__clang__)
|
81
|
+
# include <intrin.h>
|
82
|
+
# define FAST_FAIL_INVALID_ARG 5
|
83
|
+
// See https://developercommunity.visualstudio.com/content/problem/1128631/code-flow-doesnt-see-noreturn-with-extern-c.html
|
84
|
+
// for why this is wrapped. Hopefully removable after msvc++ 19.27 is no longer supported.
|
85
|
+
[[noreturn]] static inline void sk_fast_fail() { __fastfail(FAST_FAIL_INVALID_ARG); }
|
86
|
+
# define SkUNREACHABLE sk_fast_fail()
|
87
|
+
# else
|
88
|
+
# define SkUNREACHABLE __builtin_trap()
|
89
|
+
# endif
|
90
|
+
#endif
|
91
|
+
|
92
|
+
#endif
|
@@ -0,0 +1,102 @@
|
|
1
|
+
/*
|
2
|
+
* Copyright 2022 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 SkAttributes_DEFINED
|
9
|
+
#define SkAttributes_DEFINED
|
10
|
+
|
11
|
+
#include "include/private/base/SkFeatures.h" // IWYU pragma: keep
|
12
|
+
#include "include/private/base/SkLoadUserConfig.h" // IWYU pragma: keep
|
13
|
+
|
14
|
+
#if defined(__clang__) || defined(__GNUC__)
|
15
|
+
# define SK_ATTRIBUTE(attr) __attribute__((attr))
|
16
|
+
#else
|
17
|
+
# define SK_ATTRIBUTE(attr)
|
18
|
+
#endif
|
19
|
+
|
20
|
+
#if !defined(SK_UNUSED)
|
21
|
+
# if !defined(__clang__) && defined(_MSC_VER)
|
22
|
+
# define SK_UNUSED __pragma(warning(suppress:4189))
|
23
|
+
# else
|
24
|
+
# define SK_UNUSED SK_ATTRIBUTE(unused)
|
25
|
+
# endif
|
26
|
+
#endif
|
27
|
+
|
28
|
+
#if !defined(SK_WARN_UNUSED_RESULT)
|
29
|
+
#define SK_WARN_UNUSED_RESULT SK_ATTRIBUTE(warn_unused_result)
|
30
|
+
#endif
|
31
|
+
|
32
|
+
/**
|
33
|
+
* If your judgment is better than the compiler's (i.e. you've profiled it),
|
34
|
+
* you can use SK_ALWAYS_INLINE to force inlining. E.g.
|
35
|
+
* inline void someMethod() { ... } // may not be inlined
|
36
|
+
* SK_ALWAYS_INLINE void someMethod() { ... } // should always be inlined
|
37
|
+
*/
|
38
|
+
#if !defined(SK_ALWAYS_INLINE)
|
39
|
+
# if defined(SK_BUILD_FOR_WIN)
|
40
|
+
# define SK_ALWAYS_INLINE __forceinline
|
41
|
+
# else
|
42
|
+
# define SK_ALWAYS_INLINE SK_ATTRIBUTE(always_inline) inline
|
43
|
+
# endif
|
44
|
+
#endif
|
45
|
+
|
46
|
+
/**
|
47
|
+
* If your judgment is better than the compiler's (i.e. you've profiled it),
|
48
|
+
* you can use SK_NEVER_INLINE to prevent inlining.
|
49
|
+
*/
|
50
|
+
#if !defined(SK_NEVER_INLINE)
|
51
|
+
# if defined(SK_BUILD_FOR_WIN)
|
52
|
+
# define SK_NEVER_INLINE __declspec(noinline)
|
53
|
+
# else
|
54
|
+
# define SK_NEVER_INLINE SK_ATTRIBUTE(noinline)
|
55
|
+
# endif
|
56
|
+
#endif
|
57
|
+
|
58
|
+
/**
|
59
|
+
* Used to annotate a function as taking printf style arguments.
|
60
|
+
* `A` is the (1 based) index of the format string argument.
|
61
|
+
* `B` is the (1 based) index of the first argument used by the format string.
|
62
|
+
*/
|
63
|
+
#if !defined(SK_PRINTF_LIKE)
|
64
|
+
# define SK_PRINTF_LIKE(A, B) SK_ATTRIBUTE(format(printf, (A), (B)))
|
65
|
+
#endif
|
66
|
+
|
67
|
+
/**
|
68
|
+
* Used to ignore sanitizer warnings.
|
69
|
+
*/
|
70
|
+
#if !defined(SK_NO_SANITIZE)
|
71
|
+
# define SK_NO_SANITIZE(A) SK_ATTRIBUTE(no_sanitize(A))
|
72
|
+
#endif
|
73
|
+
|
74
|
+
/**
|
75
|
+
* Helper macro to define no_sanitize attributes only with clang.
|
76
|
+
*/
|
77
|
+
#if defined(__clang__) && defined(__has_attribute)
|
78
|
+
#if __has_attribute(no_sanitize)
|
79
|
+
#define SK_CLANG_NO_SANITIZE(A) SK_NO_SANITIZE(A)
|
80
|
+
#endif
|
81
|
+
#endif
|
82
|
+
|
83
|
+
#if !defined(SK_CLANG_NO_SANITIZE)
|
84
|
+
#define SK_CLANG_NO_SANITIZE(A)
|
85
|
+
#endif
|
86
|
+
|
87
|
+
/**
|
88
|
+
* Annotates a class' non-trivial special functions as trivial for the purposes of calls.
|
89
|
+
* Allows a class with a non-trivial destructor to be __is_trivially_relocatable.
|
90
|
+
* Use of this attribute on a public API breaks platform ABI.
|
91
|
+
* Annotated classes may not hold pointers derived from `this`.
|
92
|
+
* Annotated classes must implement move+delete as equivalent to memcpy+free.
|
93
|
+
* Use may require more complete types, as callee destroys.
|
94
|
+
*
|
95
|
+
* https://clang.llvm.org/docs/AttributeReference.html#trivial-abi
|
96
|
+
* https://libcxx.llvm.org/DesignDocs/UniquePtrTrivialAbi.html
|
97
|
+
*/
|
98
|
+
#if !defined(SK_TRIVIAL_ABI)
|
99
|
+
# define SK_TRIVIAL_ABI
|
100
|
+
#endif
|
101
|
+
|
102
|
+
#endif
|
@@ -0,0 +1,25 @@
|
|
1
|
+
/*
|
2
|
+
* Copyright 2023 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
|
+
#ifndef SkCPUTypes_DEFINED
|
8
|
+
#define SkCPUTypes_DEFINED
|
9
|
+
|
10
|
+
// TODO(bungeman,kjlubick) There are a lot of assumptions throughout the codebase that
|
11
|
+
// these types are 32 bits, when they could be more or less. Public APIs should stop
|
12
|
+
// using these. Internally, we could use uint_fast8_t and uint_fast16_t, but not in
|
13
|
+
// public APIs due to ABI incompatibilities.
|
14
|
+
|
15
|
+
/** Fast type for unsigned 8 bits. Use for parameter passing and local
|
16
|
+
variables, not for storage
|
17
|
+
*/
|
18
|
+
typedef unsigned U8CPU;
|
19
|
+
|
20
|
+
/** Fast type for unsigned 16 bits. Use for parameter passing and local
|
21
|
+
variables, not for storage
|
22
|
+
*/
|
23
|
+
typedef unsigned U16CPU;
|
24
|
+
|
25
|
+
#endif
|
@@ -0,0 +1,46 @@
|
|
1
|
+
// Copyright 2022 Google LLC.
|
2
|
+
// Use of this source code is governed by a BSD-style license that can be found in the LICENSE file.
|
3
|
+
|
4
|
+
#ifndef SkContainers_DEFINED
|
5
|
+
#define SkContainers_DEFINED
|
6
|
+
|
7
|
+
#include "include/private/base/SkAPI.h"
|
8
|
+
#include "include/private/base/SkSpan_impl.h"
|
9
|
+
|
10
|
+
#include <cstddef>
|
11
|
+
#include <cstdint>
|
12
|
+
|
13
|
+
class SK_SPI SkContainerAllocator {
|
14
|
+
public:
|
15
|
+
SkContainerAllocator(size_t sizeOfT, int maxCapacity)
|
16
|
+
: fSizeOfT{sizeOfT}
|
17
|
+
, fMaxCapacity{maxCapacity} {}
|
18
|
+
|
19
|
+
// allocate will abort on failure. Given a capacity of 0, it will return the empty span.
|
20
|
+
// The bytes allocated are freed using sk_free().
|
21
|
+
SkSpan<std::byte> allocate(int capacity, double growthFactor = 1.0);
|
22
|
+
|
23
|
+
private:
|
24
|
+
friend struct SkContainerAllocatorTestingPeer;
|
25
|
+
// All capacity counts will be rounded up to kCapacityMultiple.
|
26
|
+
// TODO: this is a constant from the original SkTArray code. This should be checked some how.
|
27
|
+
static constexpr int64_t kCapacityMultiple = 8;
|
28
|
+
|
29
|
+
// Rounds up capacity to next multiple of kCapacityMultiple and pin to fMaxCapacity.
|
30
|
+
size_t roundUpCapacity(int64_t capacity) const;
|
31
|
+
|
32
|
+
// Grows the capacity by growthFactor being sure to stay with in kMinBytes and fMaxCapacity.
|
33
|
+
size_t growthFactorCapacity(int capacity, double growthFactor) const;
|
34
|
+
|
35
|
+
const size_t fSizeOfT;
|
36
|
+
const int64_t fMaxCapacity;
|
37
|
+
};
|
38
|
+
|
39
|
+
// sk_allocate_canfail returns the empty span on failure. Parameter size must be > 0.
|
40
|
+
SkSpan<std::byte> sk_allocate_canfail(size_t size);
|
41
|
+
|
42
|
+
// Returns the empty span if size is 0. sk_allocate_throw aborts on failure.
|
43
|
+
SkSpan<std::byte> sk_allocate_throw(size_t size);
|
44
|
+
|
45
|
+
SK_SPI void sk_report_container_overflow_and_die();
|
46
|
+
#endif // SkContainers_DEFINED
|