@shopify/react-native-skia 2.3.0 → 2.3.4
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 +0 -3
 - package/android/cpp/rnskia-android/RNSkAndroidPlatformContext.h +4 -1
 - package/apple/RNSkApplePlatformContext.mm +21 -12
 - package/apple/SkiaCVPixelBufferUtils.mm +8 -4
 - package/cpp/api/JsiSkCanvas.h +0 -21
 - package/cpp/api/JsiSkImage.h +1 -5
 - package/cpp/api/JsiSkPath.h +1 -1
 - package/cpp/api/JsiSkPathFactory.h +1 -1
 - package/cpp/skia/include/android/AHardwareBufferUtils.h +3 -0
 - package/cpp/skia/include/android/GrAHardwareBufferUtils.h +0 -4
 - package/cpp/skia/include/android/SkAndroidFrameworkUtils.h +0 -4
 - package/cpp/skia/include/android/SkImageAndroid.h +1 -0
 - package/cpp/skia/include/codec/SkCodec.h +23 -2
 - package/cpp/skia/include/codec/SkPngRustDecoder.h +30 -0
 - package/cpp/skia/include/core/SkBitmap.h +1 -1
 - package/cpp/skia/include/core/SkCPURecorder.h +5 -0
 - package/cpp/skia/include/core/SkCanvas.h +2 -0
 - package/cpp/skia/include/core/SkColorSpace.h +11 -12
 - package/cpp/skia/include/core/SkContourMeasure.h +6 -2
 - package/cpp/skia/include/core/SkExecutor.h +18 -0
 - package/cpp/skia/include/core/SkFont.h +26 -19
 - package/cpp/skia/include/core/SkImage.h +4 -66
 - package/cpp/skia/include/core/SkImageGenerator.h +0 -5
 - package/cpp/skia/include/core/SkMatrix.h +84 -120
 - package/cpp/skia/include/core/SkMilestone.h +1 -1
 - package/cpp/skia/include/core/SkPath.h +390 -395
 - package/cpp/skia/include/core/SkPathBuilder.h +64 -34
 - package/cpp/skia/include/core/SkPathEffect.h +12 -5
 - package/cpp/skia/include/core/SkPathIter.h +90 -0
 - package/cpp/skia/include/core/SkPathMeasure.h +5 -1
 - package/cpp/skia/include/core/SkPathTypes.h +7 -3
 - package/cpp/skia/include/core/SkPathUtils.h +20 -13
 - package/cpp/skia/include/core/SkRRect.h +7 -11
 - package/cpp/skia/include/core/SkRecorder.h +12 -0
 - package/cpp/skia/include/core/SkRect.h +33 -8
 - package/cpp/skia/include/core/SkRegion.h +14 -3
 - package/cpp/skia/include/core/SkScalar.h +0 -12
 - package/cpp/skia/include/core/SkShader.h +20 -7
 - package/cpp/skia/include/core/SkStrokeRec.h +2 -1
 - package/cpp/skia/include/core/SkTypeface.h +8 -10
 - package/cpp/skia/include/core/SkTypes.h +4 -0
 - package/cpp/skia/include/encode/SkJpegEncoder.h +5 -10
 - package/cpp/skia/include/encode/SkPngEncoder.h +8 -7
 - package/cpp/skia/include/encode/SkPngRustEncoder.h +88 -0
 - package/cpp/skia/include/encode/SkWebpEncoder.h +5 -10
 - package/cpp/skia/include/gpu/graphite/BackendSemaphore.h +5 -2
 - package/cpp/skia/include/gpu/graphite/BackendTexture.h +5 -2
 - package/cpp/skia/include/gpu/graphite/Context.h +15 -2
 - package/cpp/skia/include/gpu/graphite/ContextOptions.h +26 -0
 - package/cpp/skia/include/gpu/graphite/GraphiteTypes.h +75 -0
 - package/cpp/skia/include/gpu/graphite/Recorder.h +15 -6
 - package/cpp/skia/include/gpu/graphite/Recording.h +0 -3
 - package/cpp/skia/include/gpu/graphite/mtl/MtlBackendContext.h +2 -0
 - package/cpp/skia/include/gpu/graphite/precompile/PaintOptions.h +3 -7
 - package/cpp/skia/include/gpu/graphite/precompile/PrecompileBase.h +2 -10
 - package/cpp/skia/include/gpu/graphite/precompile/PrecompileImageFilter.h +1 -6
 - package/cpp/skia/include/gpu/graphite/precompile/PrecompileMaskFilter.h +1 -5
 - package/cpp/skia/include/gpu/graphite/precompile/PrecompileShader.h +16 -3
 - package/cpp/skia/include/gpu/vk/VulkanPreferredFeatures.h +3 -0
 - package/cpp/skia/{modules/pathops/include → include/pathops}/SkPathOps.h +49 -20
 - package/cpp/skia/include/ports/SkFontMgr_FontConfigInterface.h +2 -1
 - package/cpp/skia/include/ports/SkFontMgr_android.h +0 -4
 - package/cpp/skia/include/ports/SkFontMgr_android_ndk.h +4 -2
 - package/cpp/skia/include/ports/SkFontMgr_fontconfig.h +0 -3
 - package/cpp/skia/include/private/SkEncodedInfo.h +73 -54
 - package/cpp/skia/include/private/SkHdrMetadata.h +173 -0
 - package/cpp/skia/include/private/SkPathRef.h +117 -146
 - package/cpp/skia/include/private/base/SkTemplates.h +74 -32
 - package/cpp/skia/include/utils/SkParsePath.h +9 -1
 - package/cpp/skia/modules/skcms/src/Transform_inl.h +53 -7
 - package/cpp/skia/modules/skcms/src/skcms_Transform.h +2 -0
 - package/cpp/skia/modules/skcms/src/skcms_internals.h +8 -0
 - package/cpp/skia/modules/skottie/include/TextShaper.h +4 -0
 - package/cpp/skia/modules/skparagraph/include/FontCollection.h +1 -1
 - package/cpp/skia/modules/skparagraph/include/ParagraphStyle.h +7 -1
 - package/cpp/skia/modules/skparagraph/include/TextStyle.h +12 -0
 - package/cpp/skia/modules/sksg/include/SkSGGeometryEffect.h +26 -0
 - package/cpp/skia/modules/sksg/include/SkSGPath.h +1 -1
 - package/cpp/skia/modules/skunicode/include/SkUnicode.h +11 -1
 - package/cpp/skia/modules/svg/include/SkSVGAttributeParser.h +7 -11
 - package/cpp/skia/modules/svg/include/SkSVGCircle.h +1 -1
 - package/cpp/skia/modules/svg/include/SkSVGEllipse.h +1 -2
 - package/cpp/skia/modules/svg/include/SkSVGFe.h +0 -1
 - package/cpp/skia/modules/svg/include/SkSVGFeLightSource.h +0 -1
 - package/cpp/skia/modules/svg/include/SkSVGFeLighting.h +0 -1
 - package/cpp/skia/modules/svg/include/SkSVGLine.h +1 -1
 - package/cpp/skia/modules/svg/include/SkSVGNode.h +11 -10
 - package/cpp/skia/modules/svg/include/SkSVGPath.h +1 -1
 - package/cpp/skia/modules/svg/include/SkSVGPattern.h +4 -3
 - package/cpp/skia/modules/svg/include/SkSVGPoly.h +1 -1
 - package/cpp/skia/modules/svg/include/SkSVGRadialGradient.h +0 -1
 - package/cpp/skia/modules/svg/include/SkSVGRect.h +1 -2
 - package/cpp/skia/modules/svg/include/SkSVGRenderContext.h +5 -5
 - package/cpp/skia/modules/svg/include/SkSVGSVG.h +0 -1
 - package/cpp/skia/modules/svg/include/SkSVGShape.h +1 -1
 - package/cpp/skia/modules/svg/include/SkSVGTransformableNode.h +2 -2
 - package/cpp/skia/src/base/SkTLazy.h +8 -0
 - package/cpp/skia/src/core/SkLRUCache.h +17 -13
 - package/package.json +9 -8
 - package/react-native-skia.podspec +1 -2
 - package/scripts/install-skia.mjs +360 -0
 - package/cpp/skia/include/android/SkHeifDecoder.h +0 -50
 - package/lib/commonjs/__tests__/globalSetup.d.ts +0 -9
 - package/lib/commonjs/__tests__/globalTeardown.d.ts +0 -2
 - package/lib/commonjs/__tests__/setup.d.ts +0 -36
 - package/lib/commonjs/mock/__tests__/mock.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/Data.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/Drawings.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/FitBox.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/Glyphs.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/Image.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/Paths.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/Picture.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/Simple.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/Surfaces.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/Text.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/Transform.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/documentation/Group.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/documentation/getting-started/HelloWorld.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/documentation/paint/Overview.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/documentation/shapes/Box.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/AdvancedImageFilters.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/AnimatedImages.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/Atlas.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/BackdropFilters.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/Blending.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/Blur.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/Box.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/Camera.spec.d.ts +0 -21
 - package/lib/commonjs/renderer/__tests__/e2e/ColorFilters.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/Composition/ColorFilterComposition.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/CoonPatch.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/DataEncoding.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/Drawings.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/FontMgr.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/Gradient.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/Group.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/Image.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/ImageEncoding.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/ImageFilter.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/ImageFilters.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/LightingImageFilters.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/Mask.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/Matrix4.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/NativeBuffer.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/Offscreen.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/Opacity.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/Paint.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/ParagraphMethods.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/ParagraphPaint.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/Paragraphs.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/PathEffects.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/Paths.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/Picture.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/Point.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/Rect.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/RuntimeShader.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/SDF.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/SVG.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/Shader.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/Skottie.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/Snapshot.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/Surfaces.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/Text.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/TextPath.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/Transforms.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/Vertices.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/Video.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/e2e/setup/Paragraph.d.ts +0 -20
 - package/lib/commonjs/renderer/__tests__/e2e/setup/SVG.d.ts +0 -13
 - package/lib/commonjs/renderer/__tests__/e2e/setup/SkiaObject.d.ts +0 -11
 - package/lib/commonjs/renderer/__tests__/e2e/setup/index.d.ts +0 -3
 - package/lib/commonjs/renderer/__tests__/examples/BlendModes.spec.d.ts +0 -1
 - package/lib/commonjs/renderer/__tests__/setup.d.ts +0 -71
 - package/lib/commonjs/skia/__tests__/ColorFilter.spec.d.ts +0 -1
 - package/lib/commonjs/skia/__tests__/Data.spec.d.ts +0 -1
 - package/lib/commonjs/skia/__tests__/Drawings.spec.d.ts +0 -1
 - package/lib/commonjs/skia/__tests__/Enums.spec.d.ts +0 -1
 - package/lib/commonjs/skia/__tests__/Geometry.spec.d.ts +0 -1
 - package/lib/commonjs/skia/__tests__/ImageFilter.spec.d.ts +0 -1
 - package/lib/commonjs/skia/__tests__/Mock.spec.d.ts +0 -0
 - package/lib/commonjs/skia/__tests__/Paint.spec.d.ts +0 -1
 - package/lib/commonjs/skia/__tests__/Path.spec.d.ts +0 -1
 - package/lib/commonjs/skia/__tests__/RuntimeEffect.spec.d.ts +0 -1
 - package/lib/commonjs/skia/__tests__/Shader.spec.d.ts +0 -1
 - package/lib/commonjs/skia/__tests__/Text.spec.d.ts +0 -1
 - package/lib/commonjs/skia/__tests__/Transform.spec.d.ts +0 -1
 - package/lib/commonjs/skia/__tests__/Vertices.spec.d.ts +0 -1
 - package/lib/commonjs/skia/__tests__/setup.d.ts +0 -16
 - package/lib/commonjs/sksg/__tests__/Simple.spec.d.ts +0 -1
 - package/lib/module/__tests__/globalSetup.d.ts +0 -9
 - package/lib/module/__tests__/globalTeardown.d.ts +0 -2
 - package/lib/module/__tests__/setup.d.ts +0 -36
 - package/lib/module/mock/__tests__/mock.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/Data.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/Drawings.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/FitBox.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/Glyphs.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/Image.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/Paths.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/Picture.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/Simple.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/Surfaces.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/Text.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/Transform.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/documentation/Group.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/documentation/getting-started/HelloWorld.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/documentation/paint/Overview.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/documentation/shapes/Box.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/AdvancedImageFilters.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/AnimatedImages.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/Atlas.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/BackdropFilters.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/Blending.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/Blur.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/Box.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/Camera.spec.d.ts +0 -21
 - package/lib/module/renderer/__tests__/e2e/ColorFilters.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/Composition/ColorFilterComposition.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/CoonPatch.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/DataEncoding.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/Drawings.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/FontMgr.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/Gradient.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/Group.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/Image.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/ImageEncoding.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/ImageFilter.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/ImageFilters.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/LightingImageFilters.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/Mask.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/Matrix4.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/NativeBuffer.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/Offscreen.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/Opacity.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/Paint.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/ParagraphMethods.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/ParagraphPaint.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/Paragraphs.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/PathEffects.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/Paths.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/Picture.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/Point.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/Rect.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/RuntimeShader.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/SDF.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/SVG.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/Shader.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/Skottie.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/Snapshot.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/Surfaces.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/Text.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/TextPath.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/Transforms.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/Vertices.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/Video.d.ts +0 -1
 - package/lib/module/renderer/__tests__/e2e/setup/Paragraph.d.ts +0 -20
 - package/lib/module/renderer/__tests__/e2e/setup/SVG.d.ts +0 -13
 - package/lib/module/renderer/__tests__/e2e/setup/SkiaObject.d.ts +0 -11
 - package/lib/module/renderer/__tests__/e2e/setup/index.d.ts +0 -3
 - package/lib/module/renderer/__tests__/examples/BlendModes.spec.d.ts +0 -1
 - package/lib/module/renderer/__tests__/setup.d.ts +0 -71
 - package/lib/module/skia/__tests__/ColorFilter.spec.d.ts +0 -1
 - package/lib/module/skia/__tests__/Data.spec.d.ts +0 -1
 - package/lib/module/skia/__tests__/Drawings.spec.d.ts +0 -1
 - package/lib/module/skia/__tests__/Enums.spec.d.ts +0 -1
 - package/lib/module/skia/__tests__/Geometry.spec.d.ts +0 -1
 - package/lib/module/skia/__tests__/ImageFilter.spec.d.ts +0 -1
 - package/lib/module/skia/__tests__/Mock.spec.d.ts +0 -0
 - package/lib/module/skia/__tests__/Paint.spec.d.ts +0 -1
 - package/lib/module/skia/__tests__/Path.spec.d.ts +0 -1
 - package/lib/module/skia/__tests__/RuntimeEffect.spec.d.ts +0 -1
 - package/lib/module/skia/__tests__/Shader.spec.d.ts +0 -1
 - package/lib/module/skia/__tests__/Text.spec.d.ts +0 -1
 - package/lib/module/skia/__tests__/Transform.spec.d.ts +0 -1
 - package/lib/module/skia/__tests__/Vertices.spec.d.ts +0 -1
 - package/lib/module/skia/__tests__/setup.d.ts +0 -16
 - package/lib/module/sksg/__tests__/Simple.spec.d.ts +0 -1
 - package/lib/typescript/src/__tests__/globalSetup.d.ts +0 -9
 - package/lib/typescript/src/__tests__/globalTeardown.d.ts +0 -2
 - package/lib/typescript/src/__tests__/setup.d.ts +0 -36
 - package/lib/typescript/src/mock/__tests__/mock.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/Data.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/Drawings.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/FitBox.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/Glyphs.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/Image.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/Paths.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/Picture.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/Simple.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/Surfaces.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/Text.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/Transform.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/documentation/Group.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/documentation/getting-started/HelloWorld.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/documentation/paint/Overview.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/documentation/shapes/Box.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/AdvancedImageFilters.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/AnimatedImages.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/Atlas.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/BackdropFilters.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/Blending.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/Blur.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/Box.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/Camera.spec.d.ts +0 -21
 - package/lib/typescript/src/renderer/__tests__/e2e/ColorFilters.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/Composition/ColorFilterComposition.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/CoonPatch.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/DataEncoding.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/Drawings.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/FontMgr.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/Gradient.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/Group.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/Image.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/ImageEncoding.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/ImageFilter.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/ImageFilters.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/LightingImageFilters.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/Mask.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/Matrix4.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/NativeBuffer.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/Offscreen.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/Opacity.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/Paint.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/ParagraphMethods.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/ParagraphPaint.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/Paragraphs.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/PathEffects.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/Paths.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/Picture.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/Point.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/Rect.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/RuntimeShader.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/SDF.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/SVG.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/Shader.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/Skottie.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/Snapshot.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/Surfaces.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/Text.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/TextPath.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/Transforms.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/Vertices.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/Video.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/e2e/setup/Paragraph.d.ts +0 -20
 - package/lib/typescript/src/renderer/__tests__/e2e/setup/SVG.d.ts +0 -13
 - package/lib/typescript/src/renderer/__tests__/e2e/setup/SkiaObject.d.ts +0 -11
 - package/lib/typescript/src/renderer/__tests__/e2e/setup/index.d.ts +0 -3
 - package/lib/typescript/src/renderer/__tests__/examples/BlendModes.spec.d.ts +0 -1
 - package/lib/typescript/src/renderer/__tests__/setup.d.ts +0 -71
 - package/lib/typescript/src/skia/__tests__/ColorFilter.spec.d.ts +0 -1
 - package/lib/typescript/src/skia/__tests__/Data.spec.d.ts +0 -1
 - package/lib/typescript/src/skia/__tests__/Drawings.spec.d.ts +0 -1
 - package/lib/typescript/src/skia/__tests__/Enums.spec.d.ts +0 -1
 - package/lib/typescript/src/skia/__tests__/Geometry.spec.d.ts +0 -1
 - package/lib/typescript/src/skia/__tests__/ImageFilter.spec.d.ts +0 -1
 - package/lib/typescript/src/skia/__tests__/Mock.spec.d.ts +0 -0
 - package/lib/typescript/src/skia/__tests__/Paint.spec.d.ts +0 -1
 - package/lib/typescript/src/skia/__tests__/Path.spec.d.ts +0 -1
 - package/lib/typescript/src/skia/__tests__/RuntimeEffect.spec.d.ts +0 -1
 - package/lib/typescript/src/skia/__tests__/Shader.spec.d.ts +0 -1
 - package/lib/typescript/src/skia/__tests__/Text.spec.d.ts +0 -1
 - package/lib/typescript/src/skia/__tests__/Transform.spec.d.ts +0 -1
 - package/lib/typescript/src/skia/__tests__/Vertices.spec.d.ts +0 -1
 - package/lib/typescript/src/skia/__tests__/setup.d.ts +0 -16
 - package/lib/typescript/src/sksg/__tests__/Simple.spec.d.ts +0 -1
 - package/libs/android/arm64-v8a/libjsonreader.a +0 -0
 - package/libs/android/arm64-v8a/libpathops.a +0 -0
 - 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/libjsonreader.a +0 -0
 - package/libs/android/armeabi-v7a/libpathops.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/libjsonreader.a +0 -0
 - package/libs/android/x86/libpathops.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/libjsonreader.a +0 -0
 - package/libs/android/x86_64/libpathops.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/apple/libpathops.xcframework/Info.plist +0 -111
 - package/libs/apple/libpathops.xcframework/ios-arm64_arm64e/libpathops.a +0 -0
 - package/libs/apple/libpathops.xcframework/ios-arm64_arm64e_x86_64-simulator/libpathops.a +0 -0
 - package/libs/apple/libpathops.xcframework/ios-arm64_x86_64-maccatalyst/libpathops.a +0 -0
 - package/libs/apple/libpathops.xcframework/macos-arm64_x86_64/libpathops.a +0 -0
 - package/libs/apple/libpathops.xcframework/tvos-arm64_arm64e/libpathops.a +0 -0
 - package/libs/apple/libpathops.xcframework/tvos-arm64_arm64e_x86_64-simulator/libpathops.a +0 -0
 - package/libs/apple/libskia.xcframework/Info.plist +0 -111
 - package/libs/apple/libskia.xcframework/ios-arm64_arm64e/libskia.a +0 -0
 - package/libs/apple/libskia.xcframework/ios-arm64_arm64e_x86_64-simulator/libskia.a +0 -0
 - package/libs/apple/libskia.xcframework/ios-arm64_x86_64-maccatalyst/libskia.a +0 -0
 - package/libs/apple/libskia.xcframework/macos-arm64_x86_64/libskia.a +0 -0
 - package/libs/apple/libskia.xcframework/tvos-arm64_arm64e/libskia.a +0 -0
 - package/libs/apple/libskia.xcframework/tvos-arm64_arm64e_x86_64-simulator/libskia.a +0 -0
 - package/libs/apple/libskottie.xcframework/Info.plist +0 -111
 - package/libs/apple/libskottie.xcframework/ios-arm64_arm64e/libskottie.a +0 -0
 - package/libs/apple/libskottie.xcframework/ios-arm64_arm64e_x86_64-simulator/libskottie.a +0 -0
 - package/libs/apple/libskottie.xcframework/ios-arm64_x86_64-maccatalyst/libskottie.a +0 -0
 - package/libs/apple/libskottie.xcframework/macos-arm64_x86_64/libskottie.a +0 -0
 - package/libs/apple/libskottie.xcframework/tvos-arm64_arm64e/libskottie.a +0 -0
 - package/libs/apple/libskottie.xcframework/tvos-arm64_arm64e_x86_64-simulator/libskottie.a +0 -0
 - package/libs/apple/libskparagraph.xcframework/Info.plist +0 -111
 - package/libs/apple/libskparagraph.xcframework/ios-arm64_arm64e/libskparagraph.a +0 -0
 - package/libs/apple/libskparagraph.xcframework/ios-arm64_arm64e_x86_64-simulator/libskparagraph.a +0 -0
 - package/libs/apple/libskparagraph.xcframework/ios-arm64_x86_64-maccatalyst/libskparagraph.a +0 -0
 - package/libs/apple/libskparagraph.xcframework/macos-arm64_x86_64/libskparagraph.a +0 -0
 - package/libs/apple/libskparagraph.xcframework/tvos-arm64_arm64e/libskparagraph.a +0 -0
 - package/libs/apple/libskparagraph.xcframework/tvos-arm64_arm64e_x86_64-simulator/libskparagraph.a +0 -0
 - package/libs/apple/libsksg.xcframework/Info.plist +0 -111
 - package/libs/apple/libsksg.xcframework/ios-arm64_arm64e/libsksg.a +0 -0
 - package/libs/apple/libsksg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsksg.a +0 -0
 - package/libs/apple/libsksg.xcframework/ios-arm64_x86_64-maccatalyst/libsksg.a +0 -0
 - package/libs/apple/libsksg.xcframework/macos-arm64_x86_64/libsksg.a +0 -0
 - package/libs/apple/libsksg.xcframework/tvos-arm64_arm64e/libsksg.a +0 -0
 - package/libs/apple/libsksg.xcframework/tvos-arm64_arm64e_x86_64-simulator/libsksg.a +0 -0
 - package/libs/apple/libskshaper.xcframework/Info.plist +0 -111
 - package/libs/apple/libskshaper.xcframework/ios-arm64_arm64e/libskshaper.a +0 -0
 - package/libs/apple/libskshaper.xcframework/ios-arm64_arm64e_x86_64-simulator/libskshaper.a +0 -0
 - package/libs/apple/libskshaper.xcframework/ios-arm64_x86_64-maccatalyst/libskshaper.a +0 -0
 - package/libs/apple/libskshaper.xcframework/macos-arm64_x86_64/libskshaper.a +0 -0
 - package/libs/apple/libskshaper.xcframework/tvos-arm64_arm64e/libskshaper.a +0 -0
 - package/libs/apple/libskshaper.xcframework/tvos-arm64_arm64e_x86_64-simulator/libskshaper.a +0 -0
 - package/libs/apple/libskunicode_core.xcframework/Info.plist +0 -111
 - package/libs/apple/libskunicode_core.xcframework/ios-arm64_arm64e/libskunicode_core.a +0 -0
 - package/libs/apple/libskunicode_core.xcframework/ios-arm64_arm64e_x86_64-simulator/libskunicode_core.a +0 -0
 - package/libs/apple/libskunicode_core.xcframework/ios-arm64_x86_64-maccatalyst/libskunicode_core.a +0 -0
 - package/libs/apple/libskunicode_core.xcframework/macos-arm64_x86_64/libskunicode_core.a +0 -0
 - package/libs/apple/libskunicode_core.xcframework/tvos-arm64_arm64e/libskunicode_core.a +0 -0
 - package/libs/apple/libskunicode_core.xcframework/tvos-arm64_arm64e_x86_64-simulator/libskunicode_core.a +0 -0
 - package/libs/apple/libskunicode_libgrapheme.xcframework/Info.plist +0 -111
 - package/libs/apple/libskunicode_libgrapheme.xcframework/ios-arm64_arm64e/libskunicode_libgrapheme.a +0 -0
 - package/libs/apple/libskunicode_libgrapheme.xcframework/ios-arm64_arm64e_x86_64-simulator/libskunicode_libgrapheme.a +0 -0
 - package/libs/apple/libskunicode_libgrapheme.xcframework/ios-arm64_x86_64-maccatalyst/libskunicode_libgrapheme.a +0 -0
 - package/libs/apple/libskunicode_libgrapheme.xcframework/macos-arm64_x86_64/libskunicode_libgrapheme.a +0 -0
 - package/libs/apple/libskunicode_libgrapheme.xcframework/tvos-arm64_arm64e/libskunicode_libgrapheme.a +0 -0
 - package/libs/apple/libskunicode_libgrapheme.xcframework/tvos-arm64_arm64e_x86_64-simulator/libskunicode_libgrapheme.a +0 -0
 - package/libs/apple/libsvg.xcframework/Info.plist +0 -111
 - package/libs/apple/libsvg.xcframework/ios-arm64_arm64e/libsvg.a +0 -0
 - package/libs/apple/libsvg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsvg.a +0 -0
 - package/libs/apple/libsvg.xcframework/ios-arm64_x86_64-maccatalyst/libsvg.a +0 -0
 - package/libs/apple/libsvg.xcframework/macos-arm64_x86_64/libsvg.a +0 -0
 - package/libs/apple/libsvg.xcframework/tvos-arm64_arm64e/libsvg.a +0 -0
 - package/libs/apple/libsvg.xcframework/tvos-arm64_arm64e_x86_64-simulator/libsvg.a +0 -0
 - package/src/__tests__/globalSetup.ts +0 -53
 - package/src/__tests__/globalTeardown.ts +0 -11
 - package/src/__tests__/setup.ts +0 -192
 - package/src/__tests__/snapshots/animated-images/bird.png +0 -0
 - package/src/__tests__/snapshots/animations/green.png +0 -0
 - package/src/__tests__/snapshots/animations/lightblue.png +0 -0
 - package/src/__tests__/snapshots/animations/quarter-lightblue.png +0 -0
 - package/src/__tests__/snapshots/animations/red.png +0 -0
 - package/src/__tests__/snapshots/atlas/identity.png +0 -0
 - package/src/__tests__/snapshots/atlas/rsxform.png +0 -0
 - package/src/__tests__/snapshots/atlas/rsxform1.png +0 -0
 - package/src/__tests__/snapshots/atlas/simple.png +0 -0
 - package/src/__tests__/snapshots/atlas/simple2.png +0 -0
 - package/src/__tests__/snapshots/box/box-shadow-opacity.png +0 -0
 - package/src/__tests__/snapshots/box/box-shadow.png +0 -0
 - package/src/__tests__/snapshots/box/box-shadow2.png +0 -0
 - package/src/__tests__/snapshots/box/box-shadow3.png +0 -0
 - package/src/__tests__/snapshots/box/box-stroke.png +0 -0
 - package/src/__tests__/snapshots/color-filter/color-filter-composition.png +0 -0
 - package/src/__tests__/snapshots/color-filter/matrix1.png +0 -0
 - package/src/__tests__/snapshots/color-filter/matrix3.png +0 -0
 - package/src/__tests__/snapshots/color-filter/zurich-sepia.png +0 -0
 - package/src/__tests__/snapshots/coons-patch/patch-with-opacity.png +0 -0
 - package/src/__tests__/snapshots/coons-patch/simple.png +0 -0
 - package/src/__tests__/snapshots/cyan-buffer.png +0 -0
 - package/src/__tests__/snapshots/data/oslo.png +0 -0
 - package/src/__tests__/snapshots/data/red.png +0 -0
 - package/src/__tests__/snapshots/data/zurich.png +0 -0
 - package/src/__tests__/snapshots/demos/apple-breathe.png +0 -0
 - package/src/__tests__/snapshots/demos/apple-breathe1.png +0 -0
 - package/src/__tests__/snapshots/demos/breathe.png +0 -0
 - package/src/__tests__/snapshots/demos/breathe2.png +0 -0
 - package/src/__tests__/snapshots/demos/product.png +0 -0
 - package/src/__tests__/snapshots/demos/product2.png +0 -0
 - package/src/__tests__/snapshots/demos/skia-neon.png +0 -0
 - package/src/__tests__/snapshots/demos/skia-neon1.png +0 -0
 - package/src/__tests__/snapshots/drawings/arc.png +0 -0
 - package/src/__tests__/snapshots/drawings/blend-mode-multiply.png +0 -0
 - package/src/__tests__/snapshots/drawings/blend-modes.png +0 -0
 - package/src/__tests__/snapshots/drawings/blur-node.png +0 -0
 - package/src/__tests__/snapshots/drawings/blur.png +0 -0
 - package/src/__tests__/snapshots/drawings/blur2.png +0 -0
 - package/src/__tests__/snapshots/drawings/custom-drawing.png +0 -0
 - package/src/__tests__/snapshots/drawings/cyan-circle.png +0 -0
 - package/src/__tests__/snapshots/drawings/cyan.png +0 -0
 - package/src/__tests__/snapshots/drawings/default-props.png +0 -0
 - package/src/__tests__/snapshots/drawings/hello-world.png +0 -0
 - package/src/__tests__/snapshots/drawings/image-default-props.png +0 -0
 - package/src/__tests__/snapshots/drawings/lightblue-quarter-circle.png +0 -0
 - package/src/__tests__/snapshots/drawings/lightblue-rect.png +0 -0
 - package/src/__tests__/snapshots/drawings/line.png +0 -0
 - package/src/__tests__/snapshots/drawings/multiple-paints.png +0 -0
 - package/src/__tests__/snapshots/drawings/nested-shader.png +0 -0
 - package/src/__tests__/snapshots/drawings/nested-shader2.png +0 -0
 - package/src/__tests__/snapshots/drawings/opacity-image.png +0 -0
 - package/src/__tests__/snapshots/drawings/opacity-multiplication.png +0 -0
 - package/src/__tests__/snapshots/drawings/opacity-multiplication2.png +0 -0
 - package/src/__tests__/snapshots/drawings/points.png +0 -0
 - package/src/__tests__/snapshots/drawings/purple.png +0 -0
 - package/src/__tests__/snapshots/drawings/rotated-image.png +0 -0
 - package/src/__tests__/snapshots/drawings/rotated-scaled-image.png +0 -0
 - package/src/__tests__/snapshots/drawings/rrect-aa.png +0 -0
 - package/src/__tests__/snapshots/drawings/rrect-no-aa.png +0 -0
 - package/src/__tests__/snapshots/drawings/scaled-image.png +0 -0
 - package/src/__tests__/snapshots/drawings/scaled-image2.png +0 -0
 - package/src/__tests__/snapshots/drawings/semi-transparent-layer.png +0 -0
 - package/src/__tests__/snapshots/drawings/shader-opacity-reference.png +0 -0
 - package/src/__tests__/snapshots/drawings/skew-transform.png +0 -0
 - package/src/__tests__/snapshots/drawings/skew-transform2.png +0 -0
 - package/src/__tests__/snapshots/drawings/small-lightblue-rect.png +0 -0
 - package/src/__tests__/snapshots/drawings/stroke.png +0 -0
 - package/src/__tests__/snapshots/drawings/transform-origin.png +0 -0
 - package/src/__tests__/snapshots/drawings/transparent-layer.png +0 -0
 - package/src/__tests__/snapshots/drawings/transparent.png +0 -0
 - package/src/__tests__/snapshots/drawings/violet.png +0 -0
 - package/src/__tests__/snapshots/font/green.png +0 -0
 - package/src/__tests__/snapshots/font/red.png +0 -0
 - package/src/__tests__/snapshots/glyphs/simple.png +0 -0
 - package/src/__tests__/snapshots/gradient/linear-with-opacity.png +0 -0
 - package/src/__tests__/snapshots/gradient/linear.png +0 -0
 - package/src/__tests__/snapshots/green.png +0 -0
 - package/src/__tests__/snapshots/image-filter/blur.png +0 -0
 - package/src/__tests__/snapshots/image-filter/test-shadow.png +0 -0
 - package/src/__tests__/snapshots/images/bundle-android.png +0 -0
 - package/src/__tests__/snapshots/images/bundle-ios.png +0 -0
 - package/src/__tests__/snapshots/images/bundle-node.png +0 -0
 - package/src/__tests__/snapshots/images/bundle.png +0 -0
 - package/src/__tests__/snapshots/images/filter.png +0 -0
 - package/src/__tests__/snapshots/leak.png +0 -0
 - package/src/__tests__/snapshots/matrix4/camera-corner.png +0 -0
 - package/src/__tests__/snapshots/matrix4/camera-offset.png +0 -0
 - package/src/__tests__/snapshots/matrix4/camera-top-left-center.png +0 -0
 - package/src/__tests__/snapshots/matrix4/camera-zoom-out.png +0 -0
 - package/src/__tests__/snapshots/matrix4/full-rect.png +0 -0
 - package/src/__tests__/snapshots/matrix4/perspective.png +0 -0
 - package/src/__tests__/snapshots/matrix4/rect.png +0 -0
 - package/src/__tests__/snapshots/matrix4/scaled-rect.png +0 -0
 - package/src/__tests__/snapshots/matrix4/test-perspective.png +0 -0
 - package/src/__tests__/snapshots/matrix4/test-perspective2.png +0 -0
 - package/src/__tests__/snapshots/paint/blend-mode.png +0 -0
 - package/src/__tests__/snapshots/paint/circle.png +0 -0
 - package/src/__tests__/snapshots/paint/colors.png +0 -0
 - package/src/__tests__/snapshots/paint/dither.png +0 -0
 - package/src/__tests__/snapshots/paint/path-paint.png +0 -0
 - package/src/__tests__/snapshots/paint/without-dither.png +0 -0
 - package/src/__tests__/snapshots/paragraph/paragraph-auto-linebreaks-android.png +0 -0
 - package/src/__tests__/snapshots/paragraph/paragraph-auto-linebreaks-ios.png +0 -0
 - package/src/__tests__/snapshots/paragraph/paragraph-bounding-box-android.png +0 -0
 - package/src/__tests__/snapshots/paragraph/paragraph-bounding-box-ios.png +0 -0
 - package/src/__tests__/snapshots/paragraph/paragraph-bounding-box-node.png +0 -0
 - package/src/__tests__/snapshots/paragraph/paragraph-ellipse-android.png +0 -0
 - package/src/__tests__/snapshots/paragraph/paragraph-ellipse-ios.png +0 -0
 - package/src/__tests__/snapshots/paragraph/paragraph-linebreaks-android.png +0 -0
 - package/src/__tests__/snapshots/paragraph/paragraph-linebreaks-ios.png +0 -0
 - package/src/__tests__/snapshots/paragraph/paragraph-text-align-center-android.png +0 -0
 - package/src/__tests__/snapshots/paragraph/paragraph-text-align-center-ios.png +0 -0
 - package/src/__tests__/snapshots/paragraph/paragraph-text-align-justify-android.png +0 -0
 - package/src/__tests__/snapshots/paragraph/paragraph-text-align-justify-ios.png +0 -0
 - package/src/__tests__/snapshots/paragraph/paragraph-text-align-left-android.png +0 -0
 - package/src/__tests__/snapshots/paragraph/paragraph-text-align-left-ios.png +0 -0
 - package/src/__tests__/snapshots/paragraph/paragraph-text-align-right-android.png +0 -0
 - package/src/__tests__/snapshots/paragraph/paragraph-text-align-right-ios.png +0 -0
 - package/src/__tests__/snapshots/paragraph/paragraph-text-align-rtl-android.png +0 -0
 - package/src/__tests__/snapshots/paragraph/paragraph-text-align-rtl-ios.png +0 -0
 - package/src/__tests__/snapshots/paragraph/paragraph-text-style-colors-android.png +0 -0
 - package/src/__tests__/snapshots/paragraph/paragraph-text-style-colors-ios.png +0 -0
 - package/src/__tests__/snapshots/paragraph/paragraph-text-style-decoration-android.png +0 -0
 - package/src/__tests__/snapshots/paragraph/paragraph-text-style-decoration-ios.png +0 -0
 - package/src/__tests__/snapshots/paragraph/paragraph-text-style-font-shadow-android.png +0 -0
 - package/src/__tests__/snapshots/paragraph/paragraph-text-style-font-shadow-ios.png +0 -0
 - package/src/__tests__/snapshots/paragraph/paragraph-text-style-font-style-android-box.png +0 -0
 - package/src/__tests__/snapshots/paragraph/paragraph-text-style-font-style-android.png +0 -0
 - package/src/__tests__/snapshots/paragraph/paragraph-text-style-font-style-ios-box.png +0 -0
 - package/src/__tests__/snapshots/paragraph/paragraph-text-style-font-style-ios.png +0 -0
 - package/src/__tests__/snapshots/paragraph/paragraph-text-style-in-paragraph-style-android.png +0 -0
 - package/src/__tests__/snapshots/paragraph/paragraph-text-style-in-paragraph-style-ios.png +0 -0
 - package/src/__tests__/snapshots/paragraph/simple-paragraph-android.png +0 -0
 - package/src/__tests__/snapshots/paragraph/simple-paragraph-ios.png +0 -0
 - package/src/__tests__/snapshots/paragraph/simple-paragraph-with-provider-android.png +0 -0
 - package/src/__tests__/snapshots/paragraph/simple-paragraph-with-provider-ios.png +0 -0
 - package/src/__tests__/snapshots/paragraph/simple-paragraph-with-provider-node.png +0 -0
 - package/src/__tests__/snapshots/path/interpolate.png +0 -0
 - package/src/__tests__/snapshots/path/logo.png +0 -0
 - package/src/__tests__/snapshots/path-effects/discrete.png +0 -0
 - package/src/__tests__/snapshots/path-effects/sum.png +0 -0
 - package/src/__tests__/snapshots/path-effects/sum2.png +0 -0
 - package/src/__tests__/snapshots/paths/arc.png +0 -0
 - package/src/__tests__/snapshots/paths/emptyPath.png +0 -0
 - package/src/__tests__/snapshots/paths/interpolation1.png +0 -0
 - package/src/__tests__/snapshots/paths/oval.png +0 -0
 - package/src/__tests__/snapshots/paths/pattern.png +0 -0
 - package/src/__tests__/snapshots/paths/poly.png +0 -0
 - package/src/__tests__/snapshots/paths/rrect.png +0 -0
 - package/src/__tests__/snapshots/paths/skia-trimmed.png +0 -0
 - package/src/__tests__/snapshots/paths/skia.png +0 -0
 - package/src/__tests__/snapshots/pictures/create-picture.png +0 -0
 - package/src/__tests__/snapshots/pictures/green.png +0 -0
 - package/src/__tests__/snapshots/pictures/hello-world.png +0 -0
 - package/src/__tests__/snapshots/pictures/red.png +0 -0
 - package/src/__tests__/snapshots/pictures/simple-picture.png +0 -0
 - package/src/__tests__/snapshots/platform-buffer-bgra.png +0 -0
 - package/src/__tests__/snapshots/platform-buffer.png +0 -0
 - package/src/__tests__/snapshots/points/points.png +0 -0
 - package/src/__tests__/snapshots/points/points2.png +0 -0
 - package/src/__tests__/snapshots/render-nodes/simple.png +0 -0
 - package/src/__tests__/snapshots/render-nodes/simple2.png +0 -0
 - package/src/__tests__/snapshots/runtime-effects/blend-color-burn.png +0 -0
 - package/src/__tests__/snapshots/runtime-effects/blend-color-burn2.png +0 -0
 - package/src/__tests__/snapshots/runtime-effects/blend-color-burn3.png +0 -0
 - package/src/__tests__/snapshots/runtime-effects/blend-color-dodge.png +0 -0
 - package/src/__tests__/snapshots/runtime-effects/blend-multiply.png +0 -0
 - package/src/__tests__/snapshots/runtime-effects/int-uniform.png +0 -0
 - package/src/__tests__/snapshots/runtime-effects/linear-gradient.png +0 -0
 - package/src/__tests__/snapshots/runtime-effects/linear-gradient2.png +0 -0
 - package/src/__tests__/snapshots/runtime-effects/small-spiral.png +0 -0
 - package/src/__tests__/snapshots/runtime-effects/spiral.png +0 -0
 - package/src/__tests__/snapshots/runtime-shader/scaled-circle.png +0 -0
 - package/src/__tests__/snapshots/runtime-shader/scaled-circle2.png +0 -0
 - package/src/__tests__/snapshots/runtime-shader/simple.png +0 -0
 - package/src/__tests__/snapshots/runtime-shader/spiral.png +0 -0
 - package/src/__tests__/snapshots/runtime-shader/unscaled-image.png +0 -0
 - package/src/__tests__/snapshots/screens/snapshot1-android-ci.png +0 -0
 - package/src/__tests__/snapshots/screens/snapshot1-android.png +0 -0
 - package/src/__tests__/snapshots/screens/snapshot1-ios.png +0 -0
 - package/src/__tests__/snapshots/screens/snapshot2-android-ci.png +0 -0
 - package/src/__tests__/snapshots/screens/snapshot2-android.png +0 -0
 - package/src/__tests__/snapshots/screens/snapshot2-ios.png +0 -0
 - package/src/__tests__/snapshots/screens/snapshot3-android-ci.png +0 -0
 - package/src/__tests__/snapshots/screens/snapshot3-android.png +0 -0
 - package/src/__tests__/snapshots/screens/snapshot3-ios.png +0 -0
 - package/src/__tests__/snapshots/screens/snapshot4-android-ci.png +0 -0
 - package/src/__tests__/snapshots/screens/snapshot4-android.png +0 -0
 - package/src/__tests__/snapshots/screens/snapshot4-ios.png +0 -0
 - package/src/__tests__/snapshots/screens/snapshot5-android.png +0 -0
 - package/src/__tests__/snapshots/screens/snapshot5-ios.png +0 -0
 - package/src/__tests__/snapshots/sdf/circle.png +0 -0
 - package/src/__tests__/snapshots/sdf/heart.png +0 -0
 - package/src/__tests__/snapshots/sdf/line.png +0 -0
 - package/src/__tests__/snapshots/sdf/rectangle.png +0 -0
 - package/src/__tests__/snapshots/shader/bilinear-interpolation.png +0 -0
 - package/src/__tests__/snapshots/shader/hue.png +0 -0
 - package/src/__tests__/snapshots/shader/hue2.png +0 -0
 - package/src/__tests__/snapshots/shader/shader1.png +0 -0
 - package/src/__tests__/snapshots/shader/shader2.png +0 -0
 - package/src/__tests__/snapshots/shader/sweep-gradient.png +0 -0
 - package/src/__tests__/snapshots/sksg/breathe-0.png +0 -0
 - package/src/__tests__/snapshots/sksg/breathe.png +0 -0
 - package/src/__tests__/snapshots/sksg/simple.png +0 -0
 - package/src/__tests__/snapshots/sksg/simple2.png +0 -0
 - package/src/__tests__/snapshots/text/text-bounds-android.png +0 -0
 - package/src/__tests__/snapshots/text/text-bounds-ios.png +0 -0
 - package/src/__tests__/snapshots/text/text-default-font-android.png +0 -0
 - package/src/__tests__/snapshots/text/text-default-font-ios.png +0 -0
 - package/src/__tests__/snapshots/text/text-path-bug-android.png +0 -0
 - package/src/__tests__/snapshots/text/text-path-bug-ios.png +0 -0
 - package/src/__tests__/snapshots/text/text-path-bug-node.png +0 -0
 - package/src/__tests__/snapshots/text/text-path1-android.png +0 -0
 - package/src/__tests__/snapshots/text/text-path1-ios.png +0 -0
 - package/src/__tests__/snapshots/text/text-path1-node.png +0 -0
 - package/src/__tests__/snapshots/text/text-path2-android.png +0 -0
 - package/src/__tests__/snapshots/text/text-path2-ios.png +0 -0
 - package/src/__tests__/snapshots/text/text-path2-node.png +0 -0
 - package/src/__tests__/snapshots/transform/rectangles.png +0 -0
 - package/src/__tests__/snapshots/transform/rotate-radiants.png +0 -0
 - package/src/__tests__/snapshots/transform/rotate.png +0 -0
 - package/src/__tests__/snapshots/transform/scale-origin.png +0 -0
 - package/src/__tests__/snapshots/transform/scale.png +0 -0
 - package/src/__tests__/snapshots/transform/skew.png +0 -0
 - package/src/__tests__/snapshots/transparent.png +0 -0
 - package/src/__tests__/snapshots/vertices/billinear-gradient.png +0 -0
 - package/src/__tests__/snapshots/vertices/strip.png +0 -0
 - package/src/__tests__/snapshots/vertices/vertices.png +0 -0
 - package/src/mock/__tests__/mock.spec.ts +0 -47
 - package/src/renderer/__tests__/Data.spec.tsx +0 -66
 - package/src/renderer/__tests__/Drawings.spec.tsx +0 -96
 - package/src/renderer/__tests__/FitBox.spec.tsx +0 -677
 - package/src/renderer/__tests__/Glyphs.spec.tsx +0 -46
 - package/src/renderer/__tests__/Image.spec.tsx +0 -45
 - package/src/renderer/__tests__/Paths.spec.tsx +0 -75
 - package/src/renderer/__tests__/Picture.spec.tsx +0 -83
 - package/src/renderer/__tests__/Simple.spec.tsx +0 -81
 - package/src/renderer/__tests__/Surfaces.spec.tsx +0 -68
 - package/src/renderer/__tests__/Text.spec.tsx +0 -134
 - package/src/renderer/__tests__/Transform.spec.tsx +0 -72
 - package/src/renderer/__tests__/documentation/Group.spec.tsx +0 -170
 - package/src/renderer/__tests__/documentation/getting-started/HelloWorld.spec.tsx +0 -51
 - package/src/renderer/__tests__/documentation/paint/Overview.spec.tsx +0 -84
 - package/src/renderer/__tests__/documentation/shapes/Box.spec.tsx +0 -46
 - package/src/renderer/__tests__/e2e/AdvancedImageFilters.spec.tsx +0 -492
 - package/src/renderer/__tests__/e2e/AnimatedImages.spec.tsx +0 -87
 - package/src/renderer/__tests__/e2e/Atlas.spec.tsx +0 -358
 - package/src/renderer/__tests__/e2e/BackdropFilters.spec.tsx +0 -164
 - package/src/renderer/__tests__/e2e/Blending.spec.tsx +0 -115
 - package/src/renderer/__tests__/e2e/Blur.spec.tsx +0 -56
 - package/src/renderer/__tests__/e2e/Box.spec.tsx +0 -105
 - package/src/renderer/__tests__/e2e/Camera.spec.tsx +0 -475
 - package/src/renderer/__tests__/e2e/ColorFilters.spec.tsx +0 -227
 - package/src/renderer/__tests__/e2e/Composition/ColorFilterComposition.spec.tsx +0 -102
 - package/src/renderer/__tests__/e2e/CoonPatch.spec.tsx +0 -74
 - package/src/renderer/__tests__/e2e/DataEncoding.spec.tsx +0 -79
 - package/src/renderer/__tests__/e2e/Drawings.spec.tsx +0 -254
 - package/src/renderer/__tests__/e2e/FontMgr.spec.tsx +0 -150
 - package/src/renderer/__tests__/e2e/Gradient.spec.tsx +0 -40
 - package/src/renderer/__tests__/e2e/Group.spec.tsx +0 -128
 - package/src/renderer/__tests__/e2e/Image.spec.tsx +0 -77
 - package/src/renderer/__tests__/e2e/ImageEncoding.spec.tsx +0 -255
 - package/src/renderer/__tests__/e2e/ImageFilter.spec.tsx +0 -99
 - package/src/renderer/__tests__/e2e/ImageFilters.spec.tsx +0 -320
 - package/src/renderer/__tests__/e2e/LightingImageFilters.spec.tsx +0 -1478
 - package/src/renderer/__tests__/e2e/Mask.spec.tsx +0 -85
 - package/src/renderer/__tests__/e2e/Matrix4.spec.tsx +0 -367
 - package/src/renderer/__tests__/e2e/NativeBuffer.spec.tsx +0 -158
 - package/src/renderer/__tests__/e2e/Offscreen.spec.tsx +0 -109
 - package/src/renderer/__tests__/e2e/Opacity.spec.tsx +0 -301
 - package/src/renderer/__tests__/e2e/Paint.spec.tsx +0 -230
 - package/src/renderer/__tests__/e2e/ParagraphMethods.spec.tsx +0 -388
 - package/src/renderer/__tests__/e2e/ParagraphPaint.spec.tsx +0 -262
 - package/src/renderer/__tests__/e2e/Paragraphs.spec.tsx +0 -615
 - package/src/renderer/__tests__/e2e/PathEffects.spec.tsx +0 -73
 - package/src/renderer/__tests__/e2e/Paths.spec.tsx +0 -394
 - package/src/renderer/__tests__/e2e/Picture.spec.tsx +0 -134
 - package/src/renderer/__tests__/e2e/Point.spec.tsx +0 -35
 - package/src/renderer/__tests__/e2e/Rect.spec.tsx +0 -139
 - package/src/renderer/__tests__/e2e/RuntimeShader.spec.tsx +0 -323
 - package/src/renderer/__tests__/e2e/SDF.spec.tsx +0 -148
 - package/src/renderer/__tests__/e2e/SVG.spec.tsx +0 -192
 - package/src/renderer/__tests__/e2e/Shader.spec.tsx +0 -353
 - package/src/renderer/__tests__/e2e/Skottie.spec.tsx +0 -463
 - package/src/renderer/__tests__/e2e/Snapshot.spec.tsx +0 -29
 - package/src/renderer/__tests__/e2e/Surfaces.spec.tsx +0 -17
 - package/src/renderer/__tests__/e2e/Text.spec.tsx +0 -109
 - package/src/renderer/__tests__/e2e/TextPath.spec.tsx +0 -43
 - package/src/renderer/__tests__/e2e/Transforms.spec.tsx +0 -63
 - package/src/renderer/__tests__/e2e/Vertices.spec.tsx +0 -30
 - package/src/renderer/__tests__/e2e/Video.ts +0 -68
 - package/src/renderer/__tests__/e2e/setup/Paragraph.ts +0 -60
 - package/src/renderer/__tests__/e2e/setup/SVG.ts +0 -31
 - package/src/renderer/__tests__/e2e/setup/SkiaObject.ts +0 -31
 - package/src/renderer/__tests__/e2e/setup/index.ts +0 -3
 - package/src/renderer/__tests__/e2e/setup/skottie/basic_slots.json +0 -1118
 - package/src/renderer/__tests__/e2e/setup/skottie/color-props.json +0 -1
 - package/src/renderer/__tests__/e2e/setup/skottie/confetti.json +0 -5899
 - package/src/renderer/__tests__/e2e/setup/skottie/drinks.json +0 -43857
 - package/src/renderer/__tests__/e2e/setup/skottie/fingerprint.json +0 -1
 - package/src/renderer/__tests__/e2e/setup/skottie/lego_loader.json +0 -29540
 - package/src/renderer/__tests__/e2e/setup/skottie/new-drop.json +0 -1
 - package/src/renderer/__tests__/e2e/setup/skottie/onboarding.json +0 -1
 - package/src/renderer/__tests__/e2e/setup/skottie/text-layer.json +0 -1
 - package/src/renderer/__tests__/examples/BlendModes.spec.tsx +0 -123
 - package/src/renderer/__tests__/setup.tsx +0 -525
 - package/src/skia/__tests__/ColorFilter.spec.ts +0 -67
 - package/src/skia/__tests__/Data.spec.ts +0 -29
 - package/src/skia/__tests__/Drawings.spec.ts +0 -119
 - package/src/skia/__tests__/Enums.spec.ts +0 -136
 - package/src/skia/__tests__/Geometry.spec.ts +0 -39
 - package/src/skia/__tests__/ImageFilter.spec.ts +0 -19
 - package/src/skia/__tests__/Mock.spec.ts +0 -7
 - package/src/skia/__tests__/Paint.spec.ts +0 -25
 - package/src/skia/__tests__/Path.spec.ts +0 -384
 - package/src/skia/__tests__/RuntimeEffect.spec.ts +0 -66
 - package/src/skia/__tests__/Shader.spec.ts +0 -96
 - package/src/skia/__tests__/Text.spec.ts +0 -32
 - package/src/skia/__tests__/Transform.spec.ts +0 -89
 - package/src/skia/__tests__/Vertices.spec.ts +0 -40
 - package/src/skia/__tests__/assets/Avenir-Heavy.ttf +0 -0
 - package/src/skia/__tests__/assets/DIN-Medium.ttf +0 -0
 - package/src/skia/__tests__/assets/NotoColorEmoji.ttf +0 -0
 - package/src/skia/__tests__/assets/NotoSansSC-Regular.otf +0 -0
 - package/src/skia/__tests__/assets/Pacifico-Regular.ttf +0 -0
 - package/src/skia/__tests__/assets/Roboto-BlackItalic.ttf +0 -0
 - package/src/skia/__tests__/assets/Roboto-Bold.ttf +0 -0
 - package/src/skia/__tests__/assets/Roboto-Italic.ttf +0 -0
 - package/src/skia/__tests__/assets/Roboto-Medium.ttf +0 -0
 - package/src/skia/__tests__/assets/Roboto-Regular.ttf +0 -0
 - package/src/skia/__tests__/assets/UberMove-Medium_mono.ttf +0 -0
 - package/src/skia/__tests__/assets/bird.gif +0 -0
 - package/src/skia/__tests__/assets/box.png +0 -0
 - package/src/skia/__tests__/assets/box2.png +0 -0
 - package/src/skia/__tests__/assets/card.png +0 -0
 - package/src/skia/__tests__/assets/mask.png +0 -0
 - package/src/skia/__tests__/assets/oslo-mini.jpg +0 -0
 - package/src/skia/__tests__/assets/oslo.jpg +0 -0
 - package/src/skia/__tests__/assets/product.png +0 -0
 - package/src/skia/__tests__/assets/skia_logo.png +0 -0
 - package/src/skia/__tests__/assets/skia_logo_jpeg.jpg +0 -0
 - package/src/skia/__tests__/assets/tiger.svg +0 -724
 - package/src/skia/__tests__/assets/zurich.jpg +0 -0
 - package/src/skia/__tests__/setup.ts +0 -27
 - package/src/sksg/__tests__/Simple.spec.tsx +0 -148
 
| 
         @@ -9,8 +9,10 @@ 
     | 
|
| 
       9 
9 
     | 
    
         
             
            #define SkPathRef_DEFINED
         
     | 
| 
       10 
10 
     | 
    
         | 
| 
       11 
11 
     | 
    
         
             
            #include "include/core/SkArc.h"
         
     | 
| 
      
 12 
     | 
    
         
            +
            #include "include/core/SkMatrix.h"
         
     | 
| 
       12 
13 
     | 
    
         
             
            #include "include/core/SkPathTypes.h" // IWYU pragma: keep
         
     | 
| 
       13 
14 
     | 
    
         
             
            #include "include/core/SkPoint.h"
         
     | 
| 
      
 15 
     | 
    
         
            +
            #include "include/core/SkRRect.h"
         
     | 
| 
       14 
16 
     | 
    
         
             
            #include "include/core/SkRect.h"
         
     | 
| 
       15 
17 
     | 
    
         
             
            #include "include/core/SkRefCnt.h"
         
     | 
| 
       16 
18 
     | 
    
         
             
            #include "include/core/SkScalar.h"
         
     | 
| 
         @@ -27,7 +29,63 @@ 
     | 
|
| 
       27 
29 
     | 
    
         
             
            #include <tuple>
         
     | 
| 
       28 
30 
     | 
    
         | 
| 
       29 
31 
     | 
    
         
             
            class SkMatrix;
         
     | 
| 
       30 
     | 
    
         
            -
             
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
            /*
         
     | 
| 
      
 34 
     | 
    
         
            +
             *  These "info" structs are used to return identifying information, when a path
         
     | 
| 
      
 35 
     | 
    
         
            +
             *  is queried if it is a special "shape". (e.g. isOval(), isRRect())
         
     | 
| 
      
 36 
     | 
    
         
            +
             */
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
            struct SkPathRectInfo {
         
     | 
| 
      
 39 
     | 
    
         
            +
                SkRect          fRect;
         
     | 
| 
      
 40 
     | 
    
         
            +
                SkPathDirection fDirection;
         
     | 
| 
      
 41 
     | 
    
         
            +
                uint8_t         fStartIndex;
         
     | 
| 
      
 42 
     | 
    
         
            +
            };
         
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
      
 44 
     | 
    
         
            +
            struct SkPathOvalInfo {
         
     | 
| 
      
 45 
     | 
    
         
            +
                SkRect          fBounds;
         
     | 
| 
      
 46 
     | 
    
         
            +
                SkPathDirection fDirection;
         
     | 
| 
      
 47 
     | 
    
         
            +
                uint8_t         fStartIndex;
         
     | 
| 
      
 48 
     | 
    
         
            +
            };
         
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
      
 50 
     | 
    
         
            +
            struct SkPathRRectInfo {
         
     | 
| 
      
 51 
     | 
    
         
            +
                SkRRect         fRRect;
         
     | 
| 
      
 52 
     | 
    
         
            +
                SkPathDirection fDirection;
         
     | 
| 
      
 53 
     | 
    
         
            +
                uint8_t         fStartIndex;
         
     | 
| 
      
 54 
     | 
    
         
            +
            };
         
     | 
| 
      
 55 
     | 
    
         
            +
             
     | 
| 
      
 56 
     | 
    
         
            +
            /*
         
     | 
| 
      
 57 
     | 
    
         
            +
             *  Paths can be tagged with a "Type" -- the IsAType
         
     | 
| 
      
 58 
     | 
    
         
            +
             *  This signals that it was built from a high-level shape: oval, rrect, arc, wedge.
         
     | 
| 
      
 59 
     | 
    
         
            +
             *  We try to retain this tag, but still build the explicitly line/quad/conic/cubic
         
     | 
| 
      
 60 
     | 
    
         
            +
             *  structure need to represent that shape. Thus a user of path can always just look
         
     | 
| 
      
 61 
     | 
    
         
            +
             *  at the points and verbs, and draw it correctly.
         
     | 
| 
      
 62 
     | 
    
         
            +
             *
         
     | 
| 
      
 63 
     | 
    
         
            +
             *  The GPU backend sometimes will sniff the path for this tag/type, and may have a
         
     | 
| 
      
 64 
     | 
    
         
            +
             *  more optimal way to draw the shape if they know its "really" an oval or whatever.
         
     | 
| 
      
 65 
     | 
    
         
            +
             *
         
     | 
| 
      
 66 
     | 
    
         
            +
             *  Path's can also identify as a "rect" -- but we don't store any special tag for this.
         
     | 
| 
      
 67 
     | 
    
         
            +
             *
         
     | 
| 
      
 68 
     | 
    
         
            +
             *  Here are the special "types" we have APIs for (e.g. isRRect()) and what we store:
         
     | 
| 
      
 69 
     | 
    
         
            +
             *
         
     | 
| 
      
 70 
     | 
    
         
            +
             *      kGeneral  : no identifying shape, no extra data
         
     | 
| 
      
 71 
     | 
    
         
            +
             *      (Rect)    : no tag, but isRect() will examing the points/verbs, and try to
         
     | 
| 
      
 72 
     | 
    
         
            +
             *                  deduce that it represents a rect.
         
     | 
| 
      
 73 
     | 
    
         
            +
             *      kOval     : the path bounds is also the oval's bounds -- we store the direction
         
     | 
| 
      
 74 
     | 
    
         
            +
             *                  and start_index (important for dashing). see SkPathMakers.h
         
     | 
| 
      
 75 
     | 
    
         
            +
             *      kRRect    : same as kOval for implicit bounds, direction and start_index.
         
     | 
| 
      
 76 
     | 
    
         
            +
             *                  Note: we don't store its radii -- we deduce those when isRRect() is
         
     | 
| 
      
 77 
     | 
    
         
            +
             *                        called, by examining the points/verbs.
         
     | 
| 
      
 78 
     | 
    
         
            +
             */
         
     | 
| 
      
 79 
     | 
    
         
            +
            enum class SkPathIsAType : uint8_t {
         
     | 
| 
      
 80 
     | 
    
         
            +
                kGeneral,
         
     | 
| 
      
 81 
     | 
    
         
            +
                kOval,
         
     | 
| 
      
 82 
     | 
    
         
            +
                kRRect,
         
     | 
| 
      
 83 
     | 
    
         
            +
            };
         
     | 
| 
      
 84 
     | 
    
         
            +
             
     | 
| 
      
 85 
     | 
    
         
            +
            struct SkPathIsAData {
         
     | 
| 
      
 86 
     | 
    
         
            +
                uint8_t         fStartIndex;
         
     | 
| 
      
 87 
     | 
    
         
            +
                SkPathDirection fDirection;
         
     | 
| 
      
 88 
     | 
    
         
            +
            };
         
     | 
| 
       31 
89 
     | 
    
         | 
| 
       32 
90 
     | 
    
         
             
            /**
         
     | 
| 
       33 
91 
     | 
    
         
             
             * Holds the path verbs and points. It is versioned by a generation ID. None of its public methods
         
     | 
| 
         @@ -49,18 +107,11 @@ public: 
     | 
|
| 
       49 
107 
     | 
    
         
             
                // See https://bugs.chromium.org/p/skia/issues/detail?id=13817 for how these sizes were
         
     | 
| 
       50 
108 
     | 
    
         
             
                // determined.
         
     | 
| 
       51 
109 
     | 
    
         
             
                using PointsArray = skia_private::STArray<4, SkPoint>;
         
     | 
| 
       52 
     | 
    
         
            -
                using VerbsArray = skia_private::STArray<4,  
     | 
| 
       53 
     | 
    
         
            -
                using ConicWeightsArray = skia_private::STArray<2,  
     | 
| 
       54 
     | 
    
         
            -
             
     | 
| 
       55 
     | 
    
         
            -
                enum class PathType : uint8_t {
         
     | 
| 
       56 
     | 
    
         
            -
                    kGeneral,
         
     | 
| 
       57 
     | 
    
         
            -
                    kOval,
         
     | 
| 
       58 
     | 
    
         
            -
                    kRRect,
         
     | 
| 
       59 
     | 
    
         
            -
                    kArc,
         
     | 
| 
       60 
     | 
    
         
            -
                };
         
     | 
| 
      
 110 
     | 
    
         
            +
                using VerbsArray = skia_private::STArray<4, SkPathVerb>;
         
     | 
| 
      
 111 
     | 
    
         
            +
                using ConicWeightsArray = skia_private::STArray<2, float>;
         
     | 
| 
       61 
112 
     | 
    
         | 
| 
       62 
     | 
    
         
            -
                SkPathRef(SkSpan<const SkPoint> points, SkSpan<const  
     | 
| 
       63 
     | 
    
         
            -
                          SkSpan<const SkScalar> weights, unsigned segmentMask)
         
     | 
| 
      
 113 
     | 
    
         
            +
                SkPathRef(SkSpan<const SkPoint> points, SkSpan<const SkPathVerb> verbs,
         
     | 
| 
      
 114 
     | 
    
         
            +
                          SkSpan<const SkScalar> weights, unsigned segmentMask, const SkMatrix* mx)
         
     | 
| 
       64 
115 
     | 
    
         
             
                    : fPoints(points)
         
     | 
| 
       65 
116 
     | 
    
         
             
                    , fVerbs(verbs)
         
     | 
| 
       66 
117 
     | 
    
         
             
                    , fConicWeights(weights)
         
     | 
| 
         @@ -68,15 +119,11 @@ public: 
     | 
|
| 
       68 
119 
     | 
    
         
             
                    fBoundsIsDirty = true;    // this also invalidates fIsFinite
         
     | 
| 
       69 
120 
     | 
    
         
             
                    fGenerationID = 0;        // recompute
         
     | 
| 
       70 
121 
     | 
    
         
             
                    fSegmentMask = segmentMask;
         
     | 
| 
       71 
     | 
    
         
            -
                    fType =  
     | 
| 
       72 
     | 
    
         
            -
                    // The next two values don't matter unless fType is kOval or kRRect
         
     | 
| 
       73 
     | 
    
         
            -
                    fRRectOrOvalIsCCW = false;
         
     | 
| 
       74 
     | 
    
         
            -
                    fRRectOrOvalStartIdx = 0xAC;
         
     | 
| 
       75 
     | 
    
         
            -
                    fArcOval.setEmpty();
         
     | 
| 
       76 
     | 
    
         
            -
                    fArcStartAngle = fArcSweepAngle = 0.0f;
         
     | 
| 
       77 
     | 
    
         
            -
                    fArcType = SkArc::Type::kArc;
         
     | 
| 
      
 122 
     | 
    
         
            +
                    fType = SkPathIsAType::kGeneral;
         
     | 
| 
       78 
123 
     | 
    
         
             
                    SkDEBUGCODE(fEditorsAttached.store(0);)
         
     | 
| 
       79 
     | 
    
         
            -
             
     | 
| 
      
 124 
     | 
    
         
            +
                    if (mx && !mx->isIdentity()) {
         
     | 
| 
      
 125 
     | 
    
         
            +
                        mx->mapPoints(fPoints);
         
     | 
| 
      
 126 
     | 
    
         
            +
                    }
         
     | 
| 
       80 
127 
     | 
    
         
             
                    this->computeBounds();  // do this now, before we worry about multiple owners/threads
         
     | 
| 
       81 
128 
     | 
    
         
             
                    SkDEBUGCODE(this->validate();)
         
     | 
| 
       82 
129 
     | 
    
         
             
                }
         
     | 
| 
         @@ -107,7 +154,7 @@ public: 
     | 
|
| 
       107 
154 
     | 
    
         
             
                     * return value is a pointer to where the points for the verb should be written.
         
     | 
| 
       108 
155 
     | 
    
         
             
                     * 'weight' is only used if 'verb' is kConic_Verb
         
     | 
| 
       109 
156 
     | 
    
         
             
                     */
         
     | 
| 
       110 
     | 
    
         
            -
                    SkPoint* growForVerb( 
     | 
| 
      
 157 
     | 
    
         
            +
                    SkPoint* growForVerb(SkPathVerb verb, SkScalar weight = 0) {
         
     | 
| 
       111 
158 
     | 
    
         
             
                        SkDEBUGCODE(fPathRef->validate();)
         
     | 
| 
       112 
159 
     | 
    
         
             
                        return fPathRef->growForVerb(verb, weight);
         
     | 
| 
       113 
160 
     | 
    
         
             
                    }
         
     | 
| 
         @@ -119,7 +166,7 @@ public: 
     | 
|
| 
       119 
166 
     | 
    
         
             
                     * If 'verb' is kConic_Verb, 'weights' will return a pointer to the
         
     | 
| 
       120 
167 
     | 
    
         
             
                     * space for the conic weights (indexed normally).
         
     | 
| 
       121 
168 
     | 
    
         
             
                     */
         
     | 
| 
       122 
     | 
    
         
            -
                    SkPoint* growForRepeatedVerb( 
     | 
| 
      
 169 
     | 
    
         
            +
                    SkPoint* growForRepeatedVerb(SkPathVerb verb,
         
     | 
| 
       123 
170 
     | 
    
         
             
                                                 int numVbs,
         
     | 
| 
       124 
171 
     | 
    
         
             
                                                 SkScalar** weights = nullptr) {
         
     | 
| 
       125 
172 
     | 
    
         
             
                        return fPathRef->growForRepeatedVerb(verb, numVbs, weights);
         
     | 
| 
         @@ -149,16 +196,12 @@ public: 
     | 
|
| 
       149 
196 
     | 
    
         
             
                     */
         
     | 
| 
       150 
197 
     | 
    
         
             
                    SkPathRef* pathRef() { return fPathRef; }
         
     | 
| 
       151 
198 
     | 
    
         | 
| 
       152 
     | 
    
         
            -
                    void setIsOval( 
     | 
| 
       153 
     | 
    
         
            -
                        fPathRef->setIsOval( 
     | 
| 
       154 
     | 
    
         
            -
                    }
         
     | 
| 
       155 
     | 
    
         
            -
             
     | 
| 
       156 
     | 
    
         
            -
                    void setIsRRect(bool isCCW, unsigned start) {
         
     | 
| 
       157 
     | 
    
         
            -
                        fPathRef->setIsRRect(isCCW, start);
         
     | 
| 
      
 199 
     | 
    
         
            +
                    void setIsOval(SkPathDirection dir, unsigned start) {
         
     | 
| 
      
 200 
     | 
    
         
            +
                        fPathRef->setIsOval(dir, start);
         
     | 
| 
       158 
201 
     | 
    
         
             
                    }
         
     | 
| 
       159 
202 
     | 
    
         | 
| 
       160 
     | 
    
         
            -
                    void  
     | 
| 
       161 
     | 
    
         
            -
                        fPathRef-> 
     | 
| 
      
 203 
     | 
    
         
            +
                    void setIsRRect(SkPathDirection dir, unsigned start) {
         
     | 
| 
      
 204 
     | 
    
         
            +
                        fPathRef->setIsRRect(dir, start);
         
     | 
| 
       162 
205 
     | 
    
         
             
                    }
         
     | 
| 
       163 
206 
     | 
    
         | 
| 
       164 
207 
     | 
    
         
             
                    void setBounds(const SkRect& rect) { fPathRef->setBounds(rect); }
         
     | 
| 
         @@ -167,34 +210,6 @@ public: 
     | 
|
| 
       167 
210 
     | 
    
         
             
                    SkPathRef* fPathRef;
         
     | 
| 
       168 
211 
     | 
    
         
             
                };
         
     | 
| 
       169 
212 
     | 
    
         | 
| 
       170 
     | 
    
         
            -
                class SK_API Iter {
         
     | 
| 
       171 
     | 
    
         
            -
                public:
         
     | 
| 
       172 
     | 
    
         
            -
                    Iter();
         
     | 
| 
       173 
     | 
    
         
            -
                    Iter(const SkPathRef&);
         
     | 
| 
       174 
     | 
    
         
            -
             
     | 
| 
       175 
     | 
    
         
            -
                    void setPathRef(const SkPathRef&);
         
     | 
| 
       176 
     | 
    
         
            -
             
     | 
| 
       177 
     | 
    
         
            -
                    /** Return the next verb in this iteration of the path. When all
         
     | 
| 
       178 
     | 
    
         
            -
                        segments have been visited, return kDone_Verb.
         
     | 
| 
       179 
     | 
    
         
            -
             
     | 
| 
       180 
     | 
    
         
            -
                        If any point in the path is non-finite, return kDone_Verb immediately.
         
     | 
| 
       181 
     | 
    
         
            -
             
     | 
| 
       182 
     | 
    
         
            -
                        @param  pts The points representing the current verb and/or segment
         
     | 
| 
       183 
     | 
    
         
            -
                                    This must not be NULL.
         
     | 
| 
       184 
     | 
    
         
            -
                        @return The verb for the current segment
         
     | 
| 
       185 
     | 
    
         
            -
                    */
         
     | 
| 
       186 
     | 
    
         
            -
                    uint8_t next(SkPoint pts[4]);
         
     | 
| 
       187 
     | 
    
         
            -
                    uint8_t peek() const;
         
     | 
| 
       188 
     | 
    
         
            -
             
     | 
| 
       189 
     | 
    
         
            -
                    SkScalar conicWeight() const { return *fConicWeights; }
         
     | 
| 
       190 
     | 
    
         
            -
             
     | 
| 
       191 
     | 
    
         
            -
                private:
         
     | 
| 
       192 
     | 
    
         
            -
                    const SkPoint*  fPts;
         
     | 
| 
       193 
     | 
    
         
            -
                    const uint8_t*  fVerbs;
         
     | 
| 
       194 
     | 
    
         
            -
                    const uint8_t*  fVerbStop;
         
     | 
| 
       195 
     | 
    
         
            -
                    const SkScalar* fConicWeights;
         
     | 
| 
       196 
     | 
    
         
            -
                };
         
     | 
| 
       197 
     | 
    
         
            -
             
     | 
| 
       198 
213 
     | 
    
         
             
            public:
         
     | 
| 
       199 
214 
     | 
    
         
             
                /**
         
     | 
| 
       200 
215 
     | 
    
         
             
                 * Gets a path ref with no verbs or points.
         
     | 
| 
         @@ -219,46 +234,23 @@ public: 
     | 
|
| 
       219 
234 
     | 
    
         
             
                 */
         
     | 
| 
       220 
235 
     | 
    
         
             
                uint32_t getSegmentMasks() const { return fSegmentMask; }
         
     | 
| 
       221 
236 
     | 
    
         | 
| 
       222 
     | 
    
         
            -
                /** Returns  
     | 
| 
       223 
     | 
    
         
            -
                 *
         
     | 
| 
       224 
     | 
    
         
            -
                 *  
     | 
| 
       225 
     | 
    
         
            -
                 * 
     | 
| 
       226 
     | 
    
         
            -
                 * @param isCCW     is the oval CCW (or CW if false).
         
     | 
| 
       227 
     | 
    
         
            -
                 * @param start     indicates where the contour starts on the oval (see
         
     | 
| 
       228 
     | 
    
         
            -
                 *                  SkPath::addOval for intepretation of the index).
         
     | 
| 
       229 
     | 
    
         
            -
                 *
         
     | 
| 
       230 
     | 
    
         
            -
                 * @return true if this path is an oval.
         
     | 
| 
       231 
     | 
    
         
            -
                 *              Tracking whether a path is an oval is considered an
         
     | 
| 
       232 
     | 
    
         
            -
                 *              optimization for performance and so some paths that are in
         
     | 
| 
       233 
     | 
    
         
            -
                 *              fact ovals can report false.
         
     | 
| 
      
 237 
     | 
    
         
            +
                /** Returns Info struct if the path is an oval, else return {}.
         
     | 
| 
      
 238 
     | 
    
         
            +
                 *  Tracking whether a path is an oval is considered an
         
     | 
| 
      
 239 
     | 
    
         
            +
                 *  optimization for performance and so some paths that are in
         
     | 
| 
      
 240 
     | 
    
         
            +
                 *  fact ovals can report {}.
         
     | 
| 
       234 
241 
     | 
    
         
             
                 */
         
     | 
| 
       235 
     | 
    
         
            -
                 
     | 
| 
       236 
     | 
    
         
            -
                    if (fType ==  
     | 
| 
       237 
     | 
    
         
            -
                         
     | 
| 
       238 
     | 
    
         
            -
                             
     | 
| 
       239 
     | 
    
         
            -
             
     | 
| 
       240 
     | 
    
         
            -
             
     | 
| 
       241 
     | 
    
         
            -
             
     | 
| 
       242 
     | 
    
         
            -
                        }
         
     | 
| 
       243 
     | 
    
         
            -
                        if (start) {
         
     | 
| 
       244 
     | 
    
         
            -
                            *start = fRRectOrOvalStartIdx;
         
     | 
| 
       245 
     | 
    
         
            -
                        }
         
     | 
| 
      
 242 
     | 
    
         
            +
                std::optional<SkPathOvalInfo> isOval() const {
         
     | 
| 
      
 243 
     | 
    
         
            +
                    if (fType == SkPathIsAType::kOval) {
         
     | 
| 
      
 244 
     | 
    
         
            +
                        return {{
         
     | 
| 
      
 245 
     | 
    
         
            +
                            this->getBounds(),
         
     | 
| 
      
 246 
     | 
    
         
            +
                            fIsA.fDirection,
         
     | 
| 
      
 247 
     | 
    
         
            +
                            fIsA.fStartIndex,
         
     | 
| 
      
 248 
     | 
    
         
            +
                        }};
         
     | 
| 
       246 
249 
     | 
    
         
             
                    }
         
     | 
| 
       247 
     | 
    
         
            -
             
     | 
| 
       248 
     | 
    
         
            -
                    return fType == PathType::kOval;
         
     | 
| 
      
 250 
     | 
    
         
            +
                    return {};
         
     | 
| 
       249 
251 
     | 
    
         
             
                }
         
     | 
| 
       250 
252 
     | 
    
         | 
| 
       251 
     | 
    
         
            -
                 
     | 
| 
       252 
     | 
    
         
            -
             
     | 
| 
       253 
     | 
    
         
            -
                bool isArc(SkArc* arc) const {
         
     | 
| 
       254 
     | 
    
         
            -
                    if (fType == PathType::kArc) {
         
     | 
| 
       255 
     | 
    
         
            -
                        if (arc) {
         
     | 
| 
       256 
     | 
    
         
            -
                            *arc = SkArc::Make(fArcOval, fArcStartAngle, fArcSweepAngle, fArcType);
         
     | 
| 
       257 
     | 
    
         
            -
                        }
         
     | 
| 
       258 
     | 
    
         
            -
                    }
         
     | 
| 
       259 
     | 
    
         
            -
             
     | 
| 
       260 
     | 
    
         
            -
                    return fType == PathType::kArc;
         
     | 
| 
       261 
     | 
    
         
            -
                }
         
     | 
| 
      
 253 
     | 
    
         
            +
                std::optional<SkPathRRectInfo> isRRect() const;
         
     | 
| 
       262 
254 
     | 
    
         | 
| 
       263 
255 
     | 
    
         
             
                bool hasComputedBounds() const {
         
     | 
| 
       264 
256 
     | 
    
         
             
                    return !fBoundsIsDirty;
         
     | 
| 
         @@ -304,16 +296,15 @@ public: 
     | 
|
| 
       304 
296 
     | 
    
         
             
                /**
         
     | 
| 
       305 
297 
     | 
    
         
             
                 * Returns a pointer one beyond the first logical verb (last verb in memory order).
         
     | 
| 
       306 
298 
     | 
    
         
             
                 */
         
     | 
| 
       307 
     | 
    
         
            -
                const  
     | 
| 
      
 299 
     | 
    
         
            +
                const SkPathVerb* verbsBegin() const { return fVerbs.begin(); }
         
     | 
| 
       308 
300 
     | 
    
         | 
| 
       309 
301 
     | 
    
         
             
                /**
         
     | 
| 
       310 
302 
     | 
    
         
             
                 * Returns a const pointer to the first verb in memory (which is the last logical verb).
         
     | 
| 
       311 
303 
     | 
    
         
             
                 */
         
     | 
| 
       312 
     | 
    
         
            -
                const  
     | 
| 
      
 304 
     | 
    
         
            +
                const SkPathVerb* verbsEnd() const { return fVerbs.end(); }
         
     | 
| 
      
 305 
     | 
    
         
            +
             
     | 
| 
      
 306 
     | 
    
         
            +
                SkSpan<const SkPathVerb> verbs() const { return fVerbs; }
         
     | 
| 
       313 
307 
     | 
    
         | 
| 
       314 
     | 
    
         
            -
                SkSpan<const SkPathVerb> verbs() const {
         
     | 
| 
       315 
     | 
    
         
            -
                    return {reinterpret_cast<const SkPathVerb*>(fVerbs.begin()), fVerbs.size()};
         
     | 
| 
       316 
     | 
    
         
            -
                }
         
     | 
| 
       317 
308 
     | 
    
         
             
                /**
         
     | 
| 
       318 
309 
     | 
    
         
             
                 * Returns a const pointer to the first point.
         
     | 
| 
       319 
310 
     | 
    
         
             
                 */
         
     | 
| 
         @@ -324,14 +315,18 @@ public: 
     | 
|
| 
       324 
315 
     | 
    
         
             
                 */
         
     | 
| 
       325 
316 
     | 
    
         
             
                const SkPoint* pointsEnd() const { return this->points() + this->countPoints(); }
         
     | 
| 
       326 
317 
     | 
    
         | 
| 
      
 318 
     | 
    
         
            +
                SkSpan<const SkPoint> pointSpan() const { return fPoints; }
         
     | 
| 
      
 319 
     | 
    
         
            +
                SkSpan<const float> conicSpan() const { return fConicWeights; }
         
     | 
| 
      
 320 
     | 
    
         
            +
             
     | 
| 
       327 
321 
     | 
    
         
             
                const SkScalar* conicWeights() const { return fConicWeights.begin(); }
         
     | 
| 
       328 
322 
     | 
    
         
             
                const SkScalar* conicWeightsEnd() const { return fConicWeights.end(); }
         
     | 
| 
       329 
323 
     | 
    
         | 
| 
      
 324 
     | 
    
         
            +
             
     | 
| 
       330 
325 
     | 
    
         
             
                /**
         
     | 
| 
       331 
326 
     | 
    
         
             
                 * Convenience methods for getting to a verb or point by index.
         
     | 
| 
       332 
327 
     | 
    
         
             
                 */
         
     | 
| 
       333 
     | 
    
         
            -
                 
     | 
| 
       334 
     | 
    
         
            -
                 
     | 
| 
      
 328 
     | 
    
         
            +
                SkPathVerb atVerb(int index) const { return fVerbs[index]; }
         
     | 
| 
      
 329 
     | 
    
         
            +
                SkPoint atPoint(int index) const { return fPoints[index]; }
         
     | 
| 
       335 
330 
     | 
    
         | 
| 
       336 
331 
     | 
    
         
             
                bool operator== (const SkPathRef& ref) const;
         
     | 
| 
       337 
332 
     | 
    
         | 
| 
         @@ -375,13 +370,8 @@ private: 
     | 
|
| 
       375 
370 
     | 
    
         
             
                    fBoundsIsDirty = true;    // this also invalidates fIsFinite
         
     | 
| 
       376 
371 
     | 
    
         
             
                    fGenerationID = kEmptyGenID;
         
     | 
| 
       377 
372 
     | 
    
         
             
                    fSegmentMask = 0;
         
     | 
| 
       378 
     | 
    
         
            -
                    fType =  
     | 
| 
       379 
     | 
    
         
            -
             
     | 
| 
       380 
     | 
    
         
            -
                    fRRectOrOvalIsCCW = false;
         
     | 
| 
       381 
     | 
    
         
            -
                    fRRectOrOvalStartIdx = 0xAC;
         
     | 
| 
       382 
     | 
    
         
            -
                    fArcOval.setEmpty();
         
     | 
| 
       383 
     | 
    
         
            -
                    fArcStartAngle = fArcSweepAngle = 0.0f;
         
     | 
| 
       384 
     | 
    
         
            -
                    fArcType = SkArc::Type::kArc;
         
     | 
| 
      
 373 
     | 
    
         
            +
                    fType = SkPathIsAType::kGeneral;
         
     | 
| 
      
 374 
     | 
    
         
            +
             
     | 
| 
       385 
375 
     | 
    
         
             
                    if (numPoints > 0) {
         
     | 
| 
       386 
376 
     | 
    
         
             
                        fPoints.reserve_exact(numPoints);
         
     | 
| 
       387 
377 
     | 
    
         
             
                    }
         
     | 
| 
         @@ -448,7 +438,7 @@ private: 
     | 
|
| 
       448 
438 
     | 
    
         
             
                    fGenerationID = 0;
         
     | 
| 
       449 
439 
     | 
    
         | 
| 
       450 
440 
     | 
    
         
             
                    fSegmentMask = 0;
         
     | 
| 
       451 
     | 
    
         
            -
                    fType =  
     | 
| 
      
 441 
     | 
    
         
            +
                    fType = SkPathIsAType::kGeneral;
         
     | 
| 
       452 
442 
     | 
    
         
             
                }
         
     | 
| 
       453 
443 
     | 
    
         | 
| 
       454 
444 
     | 
    
         
             
                /** Resets the path ref with verbCount verbs and pointCount points, all uninitialized. Also
         
     | 
| 
         @@ -475,14 +465,14 @@ private: 
     | 
|
| 
       475 
465 
     | 
    
         
             
                 * verb. If 'verb' is kConic_Verb, 'weights' will return a pointer to the
         
     | 
| 
       476 
466 
     | 
    
         
             
                 * uninitialized conic weights.
         
     | 
| 
       477 
467 
     | 
    
         
             
                 */
         
     | 
| 
       478 
     | 
    
         
            -
                SkPoint* growForRepeatedVerb( 
     | 
| 
      
 468 
     | 
    
         
            +
                SkPoint* growForRepeatedVerb(SkPathVerb, int numVbs, SkScalar** weights);
         
     | 
| 
       479 
469 
     | 
    
         | 
| 
       480 
470 
     | 
    
         
             
                /**
         
     | 
| 
       481 
471 
     | 
    
         
             
                 * Increases the verb count 1, records the new verb, and creates room for the requisite number
         
     | 
| 
       482 
472 
     | 
    
         
             
                 * of additional points. A pointer to the first point is returned. Any new points are
         
     | 
| 
       483 
473 
     | 
    
         
             
                 * uninitialized.
         
     | 
| 
       484 
474 
     | 
    
         
             
                 */
         
     | 
| 
       485 
     | 
    
         
            -
                SkPoint* growForVerb( 
     | 
| 
      
 475 
     | 
    
         
            +
                SkPoint* growForVerb(SkPathVerb, SkScalar weight);
         
     | 
| 
       486 
476 
     | 
    
         | 
| 
       487 
477 
     | 
    
         
             
                /**
         
     | 
| 
       488 
478 
     | 
    
         
             
                 * Concatenates all verbs from 'path' onto our own verbs array. Increases the point count by the
         
     | 
| 
         @@ -495,37 +485,29 @@ private: 
     | 
|
| 
       495 
485 
     | 
    
         
             
                /**
         
     | 
| 
       496 
486 
     | 
    
         
             
                 * Private, non-const-ptr version of the public function verbsMemBegin().
         
     | 
| 
       497 
487 
     | 
    
         
             
                 */
         
     | 
| 
       498 
     | 
    
         
            -
                uint8_t* verbsBeginWritable() { return fVerbs.begin(); }
         
     | 
| 
      
 488 
     | 
    
         
            +
                uint8_t* verbsBeginWritable() { return (uint8_t*)fVerbs.begin(); }
         
     | 
| 
       499 
489 
     | 
    
         | 
| 
       500 
490 
     | 
    
         
             
                /**
         
     | 
| 
       501 
491 
     | 
    
         
             
                 * Called the first time someone calls CreateEmpty to actually create the singleton.
         
     | 
| 
       502 
492 
     | 
    
         
             
                 */
         
     | 
| 
       503 
493 
     | 
    
         
             
                friend SkPathRef* sk_create_empty_pathref();
         
     | 
| 
       504 
494 
     | 
    
         | 
| 
       505 
     | 
    
         
            -
                void setIsOval( 
     | 
| 
       506 
     | 
    
         
            -
                    fType =  
     | 
| 
       507 
     | 
    
         
            -
                     
     | 
| 
       508 
     | 
    
         
            -
                     
     | 
| 
       509 
     | 
    
         
            -
                }
         
     | 
| 
       510 
     | 
    
         
            -
             
     | 
| 
       511 
     | 
    
         
            -
                void setIsRRect(bool isCCW, unsigned start) {
         
     | 
| 
       512 
     | 
    
         
            -
                    fType = PathType::kRRect;
         
     | 
| 
       513 
     | 
    
         
            -
                    fRRectOrOvalIsCCW = isCCW;
         
     | 
| 
       514 
     | 
    
         
            -
                    fRRectOrOvalStartIdx = SkToU8(start);
         
     | 
| 
      
 495 
     | 
    
         
            +
                void setIsOval(SkPathDirection dir, unsigned start) {
         
     | 
| 
      
 496 
     | 
    
         
            +
                    fType = SkPathIsAType::kOval;
         
     | 
| 
      
 497 
     | 
    
         
            +
                    fIsA.fDirection  = dir;
         
     | 
| 
      
 498 
     | 
    
         
            +
                    fIsA.fStartIndex = SkToU8(start);
         
     | 
| 
       515 
499 
     | 
    
         
             
                }
         
     | 
| 
       516 
500 
     | 
    
         | 
| 
       517 
     | 
    
         
            -
                void  
     | 
| 
       518 
     | 
    
         
            -
                    fType =  
     | 
| 
       519 
     | 
    
         
            -
                     
     | 
| 
       520 
     | 
    
         
            -
                     
     | 
| 
       521 
     | 
    
         
            -
                    fArcSweepAngle = arc.fSweepAngle;
         
     | 
| 
       522 
     | 
    
         
            -
                    fArcType = arc.fType;
         
     | 
| 
      
 501 
     | 
    
         
            +
                void setIsRRect(SkPathDirection dir, unsigned start) {
         
     | 
| 
      
 502 
     | 
    
         
            +
                    fType = SkPathIsAType::kRRect;
         
     | 
| 
      
 503 
     | 
    
         
            +
                    fIsA.fDirection  = dir;
         
     | 
| 
      
 504 
     | 
    
         
            +
                    fIsA.fStartIndex = SkToU8(start);
         
     | 
| 
       523 
505 
     | 
    
         
             
                }
         
     | 
| 
       524 
506 
     | 
    
         | 
| 
       525 
507 
     | 
    
         
             
                // called only by the editor. Note that this is not a const function.
         
     | 
| 
       526 
508 
     | 
    
         
             
                SkPoint* getWritablePoints() {
         
     | 
| 
       527 
509 
     | 
    
         
             
                    SkDEBUGCODE(this->validate();)
         
     | 
| 
       528 
     | 
    
         
            -
                    fType =  
     | 
| 
      
 510 
     | 
    
         
            +
                    fType = SkPathIsAType::kGeneral;
         
     | 
| 
       529 
511 
     | 
    
         
             
                    return fPoints.begin();
         
     | 
| 
       530 
512 
     | 
    
         
             
                }
         
     | 
| 
       531 
513 
     | 
    
         | 
| 
         @@ -541,7 +523,6 @@ private: 
     | 
|
| 
       541 
523 
     | 
    
         
             
                ConicWeightsArray fConicWeights;
         
     | 
| 
       542 
524 
     | 
    
         | 
| 
       543 
525 
     | 
    
         
             
                mutable SkRect   fBounds;
         
     | 
| 
       544 
     | 
    
         
            -
                SkRect           fArcOval;
         
     | 
| 
       545 
526 
     | 
    
         | 
| 
       546 
527 
     | 
    
         
             
                enum {
         
     | 
| 
       547 
528 
     | 
    
         
             
                    kEmptyGenID = 1, // GenID reserved for path ref with zero points and zero verbs.
         
     | 
| 
         @@ -551,23 +532,13 @@ private: 
     | 
|
| 
       551 
532 
     | 
    
         | 
| 
       552 
533 
     | 
    
         
             
                SkDEBUGCODE(std::atomic<int> fEditorsAttached;) // assert only one editor in use at any time.
         
     | 
| 
       553 
534 
     | 
    
         | 
| 
       554 
     | 
    
         
            -
                 
     | 
| 
       555 
     | 
    
         
            -
                 
     | 
| 
       556 
     | 
    
         
            -
             
     | 
| 
       557 
     | 
    
         
            -
                PathType fType;
         
     | 
| 
       558 
     | 
    
         
            -
             
     | 
| 
       559 
     | 
    
         
            -
                mutable uint8_t  fBoundsIsDirty;
         
     | 
| 
       560 
     | 
    
         
            -
             
     | 
| 
       561 
     | 
    
         
            -
                uint8_t  fRRectOrOvalStartIdx;
         
     | 
| 
       562 
     | 
    
         
            -
                uint8_t  fSegmentMask;
         
     | 
| 
       563 
     | 
    
         
            -
                // If the path is an arc, these four variables store that information.
         
     | 
| 
       564 
     | 
    
         
            -
                // We should just store an SkArc, but alignment would cost us 8 more bytes.
         
     | 
| 
       565 
     | 
    
         
            -
                SkArc::Type fArcType;
         
     | 
| 
      
 535 
     | 
    
         
            +
                // based on fType
         
     | 
| 
      
 536 
     | 
    
         
            +
                SkPathIsAData fIsA {};
         
     | 
| 
       566 
537 
     | 
    
         | 
| 
       567 
     | 
    
         
            -
                 
     | 
| 
       568 
     | 
    
         
            -
                 
     | 
| 
       569 
     | 
    
         
            -
                 
     | 
| 
       570 
     | 
    
         
            -
                bool 
     | 
| 
      
 538 
     | 
    
         
            +
                SkPathIsAType   fType;
         
     | 
| 
      
 539 
     | 
    
         
            +
                uint8_t         fSegmentMask;
         
     | 
| 
      
 540 
     | 
    
         
            +
                mutable bool    fBoundsIsDirty;
         
     | 
| 
      
 541 
     | 
    
         
            +
                mutable bool    fIsFinite;    // only meaningful if bounds are valid
         
     | 
| 
       571 
542 
     | 
    
         | 
| 
       572 
543 
     | 
    
         
             
                friend class PathRefTest_Private;
         
     | 
| 
       573 
544 
     | 
    
         
             
                friend class ForceIsRRect_Private; // unit test isRRect
         
     | 
| 
         @@ -102,17 +102,17 @@ template <typename T> class AutoTArray  { 
     | 
|
| 
       102 
102 
     | 
    
         
             
            public:
         
     | 
| 
       103 
103 
     | 
    
         
             
                AutoTArray() {}
         
     | 
| 
       104 
104 
     | 
    
         
             
                // Allocate size number of T elements
         
     | 
| 
       105 
     | 
    
         
            -
                explicit AutoTArray(size_t size) 
     | 
| 
       106 
     | 
    
         
            -
                     
     | 
| 
       107 
     | 
    
         
            -
                     
     | 
| 
       108 
     | 
    
         
            -
                }
         
     | 
| 
      
 105 
     | 
    
         
            +
                explicit AutoTArray(size_t size)
         
     | 
| 
      
 106 
     | 
    
         
            +
                    : fData(size > 0 ? new T[check_size_bytes_too_big<T>(size)] : nullptr)
         
     | 
| 
      
 107 
     | 
    
         
            +
                    , fSize(size) {}
         
     | 
| 
       109 
108 
     | 
    
         | 
| 
       110 
109 
     | 
    
         
             
                // TODO: remove when all uses are gone.
         
     | 
| 
       111 
110 
     | 
    
         
             
                explicit AutoTArray(int size) : AutoTArray(SkToSizeT(size)) {}
         
     | 
| 
       112 
111 
     | 
    
         | 
| 
       113 
     | 
    
         
            -
                AutoTArray(AutoTArray&& other) 
     | 
| 
       114 
     | 
    
         
            -
                     
     | 
| 
       115 
     | 
    
         
            -
             
     | 
| 
      
 112 
     | 
    
         
            +
                AutoTArray(AutoTArray&& other)
         
     | 
| 
      
 113 
     | 
    
         
            +
                    : fData(std::move(other.fData))
         
     | 
| 
      
 114 
     | 
    
         
            +
                    , fSize(std::exchange(other.fSize, 0)) {}
         
     | 
| 
      
 115 
     | 
    
         
            +
             
     | 
| 
       116 
116 
     | 
    
         
             
                AutoTArray& operator=(AutoTArray&& other) {
         
     | 
| 
       117 
117 
     | 
    
         
             
                    if (this != &other) {
         
     | 
| 
       118 
118 
     | 
    
         
             
                        fData = std::move(other.fData);
         
     | 
| 
         @@ -122,6 +122,7 @@ public: 
     | 
|
| 
       122 
122 
     | 
    
         
             
                }
         
     | 
| 
       123 
123 
     | 
    
         | 
| 
       124 
124 
     | 
    
         
             
                // Reallocates given a new count. Reallocation occurs even if new count equals old count.
         
     | 
| 
      
 125 
     | 
    
         
            +
                [[clang::reinitializes]]
         
     | 
| 
       125 
126 
     | 
    
         
             
                void reset(size_t count = 0) {
         
     | 
| 
       126 
127 
     | 
    
         
             
                    *this = AutoTArray(count);
         
     | 
| 
       127 
128 
     | 
    
         
             
                }
         
     | 
| 
         @@ -166,26 +167,38 @@ private: 
     | 
|
| 
       166 
167 
     | 
    
         
             
                size_t fSize = 0;
         
     | 
| 
       167 
168 
     | 
    
         
             
            };
         
     | 
| 
       168 
169 
     | 
    
         | 
| 
       169 
     | 
    
         
            -
            /** Like AutoTArray with  
     | 
| 
       170 
     | 
    
         
            -
             *   
     | 
| 
       171 
     | 
    
         
            -
             *  will  
     | 
| 
       172 
     | 
    
         
            -
             *   
     | 
| 
      
 170 
     | 
    
         
            +
            /** Like AutoTArray with storage for some number of elements "nested within". The requested number
         
     | 
| 
      
 171 
     | 
    
         
            +
             *  of elements to fit in the storage is specified by kCountRequested. kCount is the actual number
         
     | 
| 
      
 172 
     | 
    
         
            +
             *  of elements that will fit in the storage. If the runtime number of elements exceeds the space of
         
     | 
| 
      
 173 
     | 
    
         
            +
             *  the storage, the elements will live on the heap.
         
     | 
| 
       173 
174 
     | 
    
         
             
             */
         
     | 
| 
       174 
175 
     | 
    
         
             
            template <int kCountRequested, typename T> class AutoSTArray {
         
     | 
| 
       175 
176 
     | 
    
         
             
            public:
         
     | 
| 
       176 
     | 
    
         
            -
                AutoSTArray(AutoSTArray&&) = delete;
         
     | 
| 
       177 
177 
     | 
    
         
             
                AutoSTArray(const AutoSTArray&) = delete;
         
     | 
| 
       178 
     | 
    
         
            -
                AutoSTArray& operator=(AutoSTArray&&) = delete;
         
     | 
| 
       179 
178 
     | 
    
         
             
                AutoSTArray& operator=(const AutoSTArray&) = delete;
         
     | 
| 
       180 
179 
     | 
    
         | 
| 
      
 180 
     | 
    
         
            +
                AutoSTArray(AutoSTArray&& that) {
         
     | 
| 
      
 181 
     | 
    
         
            +
                    if (that.fArray == nullptr) {
         
     | 
| 
      
 182 
     | 
    
         
            +
                        fArray = nullptr;
         
     | 
| 
      
 183 
     | 
    
         
            +
                        fCount = 0;
         
     | 
| 
      
 184 
     | 
    
         
            +
                    } else if (that.fArray == (T*) that.fStorage) {
         
     | 
| 
      
 185 
     | 
    
         
            +
                        fArray = (T*) fStorage;
         
     | 
| 
      
 186 
     | 
    
         
            +
                        fCount = that.fCount;
         
     | 
| 
      
 187 
     | 
    
         
            +
                        std::uninitialized_move(that.fArray, that.fArray + that.fCount, fArray);
         
     | 
| 
      
 188 
     | 
    
         
            +
                    } else {
         
     | 
| 
      
 189 
     | 
    
         
            +
                        fArray = std::exchange(that.fArray, nullptr);
         
     | 
| 
      
 190 
     | 
    
         
            +
                        fCount = std::exchange(that.fCount, 0);
         
     | 
| 
      
 191 
     | 
    
         
            +
                    }
         
     | 
| 
      
 192 
     | 
    
         
            +
                }
         
     | 
| 
      
 193 
     | 
    
         
            +
                AutoSTArray& operator=(AutoSTArray&&) = delete;
         
     | 
| 
      
 194 
     | 
    
         
            +
             
     | 
| 
       181 
195 
     | 
    
         
             
                /** Initialize with no objects */
         
     | 
| 
       182 
196 
     | 
    
         
             
                AutoSTArray() {
         
     | 
| 
       183 
197 
     | 
    
         
             
                    fArray = nullptr;
         
     | 
| 
       184 
198 
     | 
    
         
             
                    fCount = 0;
         
     | 
| 
       185 
199 
     | 
    
         
             
                }
         
     | 
| 
       186 
200 
     | 
    
         | 
| 
       187 
     | 
    
         
            -
                /** Allocate count number of T elements
         
     | 
| 
       188 
     | 
    
         
            -
                 */
         
     | 
| 
      
 201 
     | 
    
         
            +
                /** Allocate count number of T elements */
         
     | 
| 
       189 
202 
     | 
    
         
             
                AutoSTArray(int count) {
         
     | 
| 
       190 
203 
     | 
    
         
             
                    fArray = nullptr;
         
     | 
| 
       191 
204 
     | 
    
         
             
                    fCount = 0;
         
     | 
| 
         @@ -197,18 +210,17 @@ public: 
     | 
|
| 
       197 
210 
     | 
    
         
             
                }
         
     | 
| 
       198 
211 
     | 
    
         | 
| 
       199 
212 
     | 
    
         
             
                /** Destroys previous objects in the array and default constructs count number of objects */
         
     | 
| 
      
 213 
     | 
    
         
            +
                [[clang::reinitializes]]
         
     | 
| 
       200 
214 
     | 
    
         
             
                void reset(int count) {
         
     | 
| 
       201 
     | 
    
         
            -
                    T* start =  
     | 
| 
       202 
     | 
    
         
            -
                    T* iter =  
     | 
| 
      
 215 
     | 
    
         
            +
                    T* start = begin();
         
     | 
| 
      
 216 
     | 
    
         
            +
                    T* iter = end();
         
     | 
| 
       203 
217 
     | 
    
         
             
                    while (iter > start) {
         
     | 
| 
       204 
218 
     | 
    
         
             
                        (--iter)->~T();
         
     | 
| 
       205 
219 
     | 
    
         
             
                    }
         
     | 
| 
       206 
220 
     | 
    
         | 
| 
       207 
221 
     | 
    
         
             
                    SkASSERT(count >= 0);
         
     | 
| 
       208 
222 
     | 
    
         
             
                    if (fCount != count) {
         
     | 
| 
       209 
     | 
    
         
            -
                        if ( 
     | 
| 
       210 
     | 
    
         
            -
                            // 'fArray' was allocated last time so free it now
         
     | 
| 
       211 
     | 
    
         
            -
                            SkASSERT((T*) fStorage != fArray);
         
     | 
| 
      
 223 
     | 
    
         
            +
                        if (fArray != (T*) fStorage) {
         
     | 
| 
       212 
224 
     | 
    
         
             
                            sk_free(fArray);
         
     | 
| 
       213 
225 
     | 
    
         
             
                        }
         
     | 
| 
       214 
226 
     | 
    
         | 
| 
         @@ -223,19 +235,31 @@ public: 
     | 
|
| 
       223 
235 
     | 
    
         
             
                        fCount = count;
         
     | 
| 
       224 
236 
     | 
    
         
             
                    }
         
     | 
| 
       225 
237 
     | 
    
         | 
| 
       226 
     | 
    
         
            -
                    iter =  
     | 
| 
       227 
     | 
    
         
            -
                    T* stop =  
     | 
| 
      
 238 
     | 
    
         
            +
                    iter = begin();
         
     | 
| 
      
 239 
     | 
    
         
            +
                    T* stop = end();
         
     | 
| 
       228 
240 
     | 
    
         
             
                    while (iter < stop) {
         
     | 
| 
       229 
241 
     | 
    
         
             
                        new (iter++) T;
         
     | 
| 
       230 
242 
     | 
    
         
             
                    }
         
     | 
| 
       231 
243 
     | 
    
         
             
                }
         
     | 
| 
       232 
244 
     | 
    
         | 
| 
       233 
     | 
    
         
            -
                 
     | 
| 
       234 
     | 
    
         
            -
             
     | 
| 
      
 245 
     | 
    
         
            +
                /* Removes elements with index >= count */
         
     | 
| 
      
 246 
     | 
    
         
            +
                void trimTo(int count) {
         
     | 
| 
      
 247 
     | 
    
         
            +
                    SkASSERT(count >= 0);
         
     | 
| 
      
 248 
     | 
    
         
            +
                    if (count >= fCount) {
         
     | 
| 
      
 249 
     | 
    
         
            +
                        return;
         
     | 
| 
      
 250 
     | 
    
         
            +
                    }
         
     | 
| 
      
 251 
     | 
    
         
            +
                    T* start = begin() + count;
         
     | 
| 
      
 252 
     | 
    
         
            +
                    T* iter = end();
         
     | 
| 
      
 253 
     | 
    
         
            +
                    while (iter > start) {
         
     | 
| 
      
 254 
     | 
    
         
            +
                        (--iter)->~T();
         
     | 
| 
      
 255 
     | 
    
         
            +
                    }
         
     | 
| 
      
 256 
     | 
    
         
            +
                    fCount = count;
         
     | 
| 
      
 257 
     | 
    
         
            +
                }
         
     | 
| 
      
 258 
     | 
    
         
            +
             
     | 
| 
      
 259 
     | 
    
         
            +
                /** Return the number of T elements in the array */
         
     | 
| 
       235 
260 
     | 
    
         
             
                int count() const { return fCount; }
         
     | 
| 
       236 
261 
     | 
    
         | 
| 
       237 
     | 
    
         
            -
                /** Return the array of T elements. Will be  
     | 
| 
       238 
     | 
    
         
            -
                 */
         
     | 
| 
      
 262 
     | 
    
         
            +
                /** Return the array of T elements. Will be nullptr if count == 0 */
         
     | 
| 
       239 
263 
     | 
    
         
             
                T* get() const { return fArray; }
         
     | 
| 
       240 
264 
     | 
    
         | 
| 
       241 
265 
     | 
    
         
             
                T* begin() { return fArray; }
         
     | 
| 
         @@ -246,8 +270,7 @@ public: 
     | 
|
| 
       246 
270 
     | 
    
         | 
| 
       247 
271 
     | 
    
         
             
                const T* end() const { return fArray + fCount; }
         
     | 
| 
       248 
272 
     | 
    
         | 
| 
       249 
     | 
    
         
            -
                /** Return the nth element in the array
         
     | 
| 
       250 
     | 
    
         
            -
                 */
         
     | 
| 
      
 273 
     | 
    
         
            +
                /** Return the nth element in the array */
         
     | 
| 
       251 
274 
     | 
    
         
             
                T&  operator[](int index) const {
         
     | 
| 
       252 
275 
     | 
    
         
             
                    return fArray[sk_collection_check_bounds(index, fCount)];
         
     | 
| 
       253 
276 
     | 
    
         
             
                }
         
     | 
| 
         @@ -274,9 +297,11 @@ private: 
     | 
|
| 
       274 
297 
     | 
    
         
             
                // Thus, we can expand how many elements are stored on the stack to make use of this
         
     | 
| 
       275 
298 
     | 
    
         
             
                // (e.g. 1 extra element for 4 byte T if kCountRequested was even).
         
     | 
| 
       276 
299 
     | 
    
         
             
                static_assert(alignof(int) <= alignof(T*) || alignof(int) <= alignof(T));
         
     | 
| 
      
 300 
     | 
    
         
            +
            public:
         
     | 
| 
       277 
301 
     | 
    
         
             
                static constexpr int kCount =
         
     | 
| 
       278 
302 
     | 
    
         
             
                        SkAlignTo(kMinCount*sizeof(T) + sizeof(int), std::max(alignof(T*), alignof(T))) / sizeof(T);
         
     | 
| 
       279 
303 
     | 
    
         | 
| 
      
 304 
     | 
    
         
            +
            private:
         
     | 
| 
       280 
305 
     | 
    
         
             
                T* fArray;
         
     | 
| 
       281 
306 
     | 
    
         
             
                alignas(T) std::byte fStorage[kCount * sizeof(T)];
         
     | 
| 
       282 
307 
     | 
    
         
             
                int fCount;
         
     | 
| 
         @@ -306,6 +331,7 @@ public: 
     | 
|
| 
       306 
331 
     | 
    
         
             
                }
         
     | 
| 
       307 
332 
     | 
    
         | 
| 
       308 
333 
     | 
    
         
             
                /** Resize the memory area pointed to by the current ptr without preserving contents. */
         
     | 
| 
      
 334 
     | 
    
         
            +
                [[clang::reinitializes]]
         
     | 
| 
       309 
335 
     | 
    
         
             
                T* reset(size_t count = 0) {
         
     | 
| 
       310 
336 
     | 
    
         
             
                    fPtr.reset(count ? (T*)sk_malloc_throw(count, sizeof(T)) : nullptr);
         
     | 
| 
       311 
337 
     | 
    
         
             
                    return this->get();
         
     | 
| 
         @@ -354,11 +380,21 @@ public: 
     | 
|
| 
       354 
380 
     | 
    
         
             
                    }
         
     | 
| 
       355 
381 
     | 
    
         
             
                }
         
     | 
| 
       356 
382 
     | 
    
         | 
| 
       357 
     | 
    
         
            -
                AutoSTMalloc(AutoSTMalloc&&) = delete;
         
     | 
| 
       358 
383 
     | 
    
         
             
                AutoSTMalloc(const AutoSTMalloc&) = delete;
         
     | 
| 
       359 
     | 
    
         
            -
                AutoSTMalloc& operator=(AutoSTMalloc&&) = delete;
         
     | 
| 
       360 
384 
     | 
    
         
             
                AutoSTMalloc& operator=(const AutoSTMalloc&) = delete;
         
     | 
| 
       361 
385 
     | 
    
         | 
| 
      
 386 
     | 
    
         
            +
                AutoSTMalloc(AutoSTMalloc&& that) {
         
     | 
| 
      
 387 
     | 
    
         
            +
                    if (that.fPtr == nullptr) {
         
     | 
| 
      
 388 
     | 
    
         
            +
                        fPtr = nullptr;
         
     | 
| 
      
 389 
     | 
    
         
            +
                    } else if (that.fPtr == that.fTStorage) {
         
     | 
| 
      
 390 
     | 
    
         
            +
                        fPtr = fTStorage;
         
     | 
| 
      
 391 
     | 
    
         
            +
                        memcpy(fPtr, that.fPtr, kCount * sizeof(T));
         
     | 
| 
      
 392 
     | 
    
         
            +
                    } else {
         
     | 
| 
      
 393 
     | 
    
         
            +
                        fPtr = std::exchange(that.fPtr, nullptr);
         
     | 
| 
      
 394 
     | 
    
         
            +
                    }
         
     | 
| 
      
 395 
     | 
    
         
            +
                }
         
     | 
| 
      
 396 
     | 
    
         
            +
                AutoSTMalloc& operator=(AutoSTMalloc&&) = delete;
         
     | 
| 
      
 397 
     | 
    
         
            +
             
     | 
| 
       362 
398 
     | 
    
         
             
                ~AutoSTMalloc() {
         
     | 
| 
       363 
399 
     | 
    
         
             
                    if (fPtr != fTStorage) {
         
     | 
| 
       364 
400 
     | 
    
         
             
                        sk_free(fPtr);
         
     | 
| 
         @@ -366,6 +402,7 @@ public: 
     | 
|
| 
       366 
402 
     | 
    
         
             
                }
         
     | 
| 
       367 
403 
     | 
    
         | 
| 
       368 
404 
     | 
    
         
             
                // doesn't preserve contents
         
     | 
| 
      
 405 
     | 
    
         
            +
                [[clang::reinitializes]]
         
     | 
| 
       369 
406 
     | 
    
         
             
                T* reset(size_t count) {
         
     | 
| 
       370 
407 
     | 
    
         
             
                    if (fPtr != fTStorage) {
         
     | 
| 
       371 
408 
     | 
    
         
             
                        sk_free(fPtr);
         
     | 
| 
         @@ -427,13 +464,18 @@ private: 
     | 
|
| 
       427 
464 
     | 
    
         
             
                // Stack frame size is limited for SK_BUILD_FOR_GOOGLE3. 4k is less than the actual max, but some functions
         
     | 
| 
       428 
465 
     | 
    
         
             
                // have multiple large stack allocations.
         
     | 
| 
       429 
466 
     | 
    
         
             
                static constexpr size_t kMaxBytes = 4 * 1024;
         
     | 
| 
       430 
     | 
    
         
            -
                static constexpr size_t  
     | 
| 
      
 467 
     | 
    
         
            +
                static constexpr size_t kMinCount = kCountRequested * sizeof(T) > kMaxBytes
         
     | 
| 
       431 
468 
     | 
    
         
             
                    ? kMaxBytes / sizeof(T)
         
     | 
| 
       432 
469 
     | 
    
         
             
                    : kCountWithPadding;
         
     | 
| 
       433 
470 
     | 
    
         
             
            #else
         
     | 
| 
       434 
     | 
    
         
            -
                static constexpr size_t  
     | 
| 
      
 471 
     | 
    
         
            +
                static constexpr size_t kMinCount = kCountWithPadding;
         
     | 
| 
       435 
472 
     | 
    
         
             
            #endif
         
     | 
| 
       436 
473 
     | 
    
         | 
| 
      
 474 
     | 
    
         
            +
            public:
         
     | 
| 
      
 475 
     | 
    
         
            +
                static constexpr size_t kCount = kMinCount;
         
     | 
| 
      
 476 
     | 
    
         
            +
             
     | 
| 
      
 477 
     | 
    
         
            +
            private:
         
     | 
| 
      
 478 
     | 
    
         
            +
             
     | 
| 
       437 
479 
     | 
    
         
             
                T*          fPtr;
         
     | 
| 
       438 
480 
     | 
    
         
             
                union {
         
     | 
| 
       439 
481 
     | 
    
         
             
                    uint32_t    fStorage32[SkAlign4(kCount*sizeof(T)) >> 2];
         
     | 
| 
         @@ -16,7 +16,15 @@ class SkString; 
     | 
|
| 
       16 
16 
     | 
    
         | 
| 
       17 
17 
     | 
    
         
             
            class SK_API SkParsePath {
         
     | 
| 
       18 
18 
     | 
    
         
             
            public:
         
     | 
| 
       19 
     | 
    
         
            -
                static  
     | 
| 
      
 19 
     | 
    
         
            +
                static std::optional<SkPath> FromSVGString(const char str[]);
         
     | 
| 
      
 20 
     | 
    
         
            +
                // Deprecated
         
     | 
| 
      
 21 
     | 
    
         
            +
                static bool FromSVGString(const char str[], SkPath* outPath) {
         
     | 
| 
      
 22 
     | 
    
         
            +
                    if (auto result = FromSVGString(str)) {
         
     | 
| 
      
 23 
     | 
    
         
            +
                        *outPath = *result;
         
     | 
| 
      
 24 
     | 
    
         
            +
                        return true;
         
     | 
| 
      
 25 
     | 
    
         
            +
                    }
         
     | 
| 
      
 26 
     | 
    
         
            +
                    return false;
         
     | 
| 
      
 27 
     | 
    
         
            +
                }
         
     | 
| 
       20 
28 
     | 
    
         | 
| 
       21 
29 
     | 
    
         
             
                enum class PathEncoding { Absolute, Relative };
         
     | 
| 
       22 
30 
     | 
    
         
             
                static SkString ToSVGString(const SkPath&, PathEncoding = PathEncoding::Absolute);
         
     |