@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,6 +9,7 @@ 
     | 
|
| 
       9 
9 
     | 
    
         
             
            #define SkPath_DEFINED
         
     | 
| 
       10 
10 
     | 
    
         | 
| 
       11 
11 
     | 
    
         
             
            #include "include/core/SkMatrix.h"
         
     | 
| 
      
 12 
     | 
    
         
            +
            #include "include/core/SkPathIter.h"
         
     | 
| 
       12 
13 
     | 
    
         
             
            #include "include/core/SkPathTypes.h"
         
     | 
| 
       13 
14 
     | 
    
         
             
            #include "include/core/SkPoint.h"
         
     | 
| 
       14 
15 
     | 
    
         
             
            #include "include/core/SkRect.h"
         
     | 
| 
         @@ -26,13 +27,12 @@ 
     | 
|
| 
       26 
27 
     | 
    
         
             
            #include <optional>
         
     | 
| 
       27 
28 
     | 
    
         
             
            #include <tuple>
         
     | 
| 
       28 
29 
     | 
    
         | 
| 
       29 
     | 
    
         
            -
            struct SkArc;
         
     | 
| 
       30 
30 
     | 
    
         
             
            class SkData;
         
     | 
| 
       31 
31 
     | 
    
         
             
            class SkPathRef;
         
     | 
| 
       32 
32 
     | 
    
         
             
            class SkRRect;
         
     | 
| 
       33 
33 
     | 
    
         
             
            class SkWStream;
         
     | 
| 
       34 
34 
     | 
    
         
             
            enum class SkPathConvexity;
         
     | 
| 
       35 
     | 
    
         
            -
             
     | 
| 
      
 35 
     | 
    
         
            +
            struct SkPathRaw;
         
     | 
| 
       36 
36 
     | 
    
         
             
            struct SkPathVerbAnalysis;
         
     | 
| 
       37 
37 
     | 
    
         | 
| 
       38 
38 
     | 
    
         
             
            // WIP -- define this locally, and fix call-sites to use SkPathBuilder (skbug.com/40040287)
         
     | 
| 
         @@ -59,7 +59,7 @@ struct SkPathVerbAnalysis; 
     | 
|
| 
       59 
59 
     | 
    
         
             
            class SK_API SkPath {
         
     | 
| 
       60 
60 
     | 
    
         
             
            public:
         
     | 
| 
       61 
61 
     | 
    
         
             
                /**
         
     | 
| 
       62 
     | 
    
         
            -
                 *  Create a new path with the specified  
     | 
| 
      
 62 
     | 
    
         
            +
                 *  Create a new path with the specified spans.
         
     | 
| 
       63 
63 
     | 
    
         
             
                 *
         
     | 
| 
       64 
64 
     | 
    
         
             
                 *  The points and weights arrays are read in order, based on the sequence of verbs.
         
     | 
| 
       65 
65 
     | 
    
         
             
                 *
         
     | 
| 
         @@ -77,30 +77,40 @@ public: 
     | 
|
| 
       77 
77 
     | 
    
         
             
                 *  with a Move verb, followed by 0 or more segments: Line, Quad, Conic, Cubic, followed
         
     | 
| 
       78 
78 
     | 
    
         
             
                 *  by an optional Close.
         
     | 
| 
       79 
79 
     | 
    
         
             
                 */
         
     | 
| 
       80 
     | 
    
         
            -
                static SkPath  
     | 
| 
       81 
     | 
    
         
            -
             
     | 
| 
       82 
     | 
    
         
            -
             
     | 
| 
       83 
     | 
    
         
            -
             
     | 
| 
      
 80 
     | 
    
         
            +
                static SkPath Raw(SkSpan<const SkPoint> pts,
         
     | 
| 
      
 81 
     | 
    
         
            +
                                  SkSpan<const SkPathVerb> verbs,
         
     | 
| 
      
 82 
     | 
    
         
            +
                                  SkSpan<const SkScalar> conics,
         
     | 
| 
      
 83 
     | 
    
         
            +
                                  SkPathFillType, bool isVolatile = false);
         
     | 
| 
       84 
84 
     | 
    
         | 
| 
       85 
     | 
    
         
            -
                static SkPath Rect(const SkRect&, SkPathDirection = SkPathDirection:: 
     | 
| 
      
 85 
     | 
    
         
            +
                static SkPath Rect(const SkRect&, SkPathDirection = SkPathDirection::kDefault,
         
     | 
| 
       86 
86 
     | 
    
         
             
                                   unsigned startIndex = 0);
         
     | 
| 
       87 
     | 
    
         
            -
                static SkPath Oval(const SkRect&, SkPathDirection = SkPathDirection:: 
     | 
| 
      
 87 
     | 
    
         
            +
                static SkPath Oval(const SkRect&, SkPathDirection = SkPathDirection::kDefault);
         
     | 
| 
       88 
88 
     | 
    
         
             
                static SkPath Oval(const SkRect&, SkPathDirection, unsigned startIndex);
         
     | 
| 
       89 
89 
     | 
    
         
             
                static SkPath Circle(SkScalar center_x, SkScalar center_y, SkScalar radius,
         
     | 
| 
       90 
90 
     | 
    
         
             
                                     SkPathDirection dir = SkPathDirection::kCW);
         
     | 
| 
       91 
     | 
    
         
            -
                static SkPath RRect(const SkRRect&, SkPathDirection dir = SkPathDirection:: 
     | 
| 
      
 91 
     | 
    
         
            +
                static SkPath RRect(const SkRRect&, SkPathDirection dir = SkPathDirection::kDefault);
         
     | 
| 
       92 
92 
     | 
    
         
             
                static SkPath RRect(const SkRRect&, SkPathDirection, unsigned startIndex);
         
     | 
| 
       93 
93 
     | 
    
         
             
                static SkPath RRect(const SkRect& bounds, SkScalar rx, SkScalar ry,
         
     | 
| 
       94 
     | 
    
         
            -
                                    SkPathDirection dir = SkPathDirection:: 
     | 
| 
      
 94 
     | 
    
         
            +
                                    SkPathDirection dir = SkPathDirection::kDefault);
         
     | 
| 
       95 
95 
     | 
    
         | 
| 
       96 
96 
     | 
    
         
             
                static SkPath Polygon(SkSpan<const SkPoint> pts, bool isClosed,
         
     | 
| 
       97 
     | 
    
         
            -
                                      SkPathFillType fillType = SkPathFillType:: 
     | 
| 
      
 97 
     | 
    
         
            +
                                      SkPathFillType fillType = SkPathFillType::kDefault,
         
     | 
| 
       98 
98 
     | 
    
         
             
                                      bool isVolatile = false);
         
     | 
| 
       99 
99 
     | 
    
         | 
| 
       100 
100 
     | 
    
         
             
                static SkPath Line(const SkPoint a, const SkPoint b) {
         
     | 
| 
       101 
101 
     | 
    
         
             
                    return Polygon({a, b}, false);
         
     | 
| 
       102 
102 
     | 
    
         
             
                }
         
     | 
| 
       103 
103 
     | 
    
         | 
| 
      
 104 
     | 
    
         
            +
                // Deprecated: use Raw()
         
     | 
| 
      
 105 
     | 
    
         
            +
                static SkPath Make(SkSpan<const SkPoint> pts,
         
     | 
| 
      
 106 
     | 
    
         
            +
                                   SkSpan<const uint8_t> verbs,
         
     | 
| 
      
 107 
     | 
    
         
            +
                                   SkSpan<const SkScalar> conics,
         
     | 
| 
      
 108 
     | 
    
         
            +
                                   SkPathFillType fillType,
         
     | 
| 
      
 109 
     | 
    
         
            +
                                   bool isVolatile = false) {
         
     | 
| 
      
 110 
     | 
    
         
            +
                    return Raw(pts, {reinterpret_cast<const SkPathVerb*>(verbs.data()), verbs.size()},
         
     | 
| 
      
 111 
     | 
    
         
            +
                               conics, fillType, isVolatile);
         
     | 
| 
      
 112 
     | 
    
         
            +
                }
         
     | 
| 
      
 113 
     | 
    
         
            +
             
     | 
| 
       104 
114 
     | 
    
         
             
                /** Constructs an empty SkPath. By default, SkPath has no verbs, no SkPoint, and no weights.
         
     | 
| 
       105 
115 
     | 
    
         
             
                    FillType is set to kWinding.
         
     | 
| 
       106 
116 
     | 
    
         | 
| 
         @@ -137,19 +147,6 @@ public: 
     | 
|
| 
       137 
147 
     | 
    
         
             
                    return *this;
         
     | 
| 
       138 
148 
     | 
    
         
             
                }
         
     | 
| 
       139 
149 
     | 
    
         | 
| 
       140 
     | 
    
         
            -
            #ifdef SK_HIDE_PATH_EDIT_METHODS
         
     | 
| 
       141 
     | 
    
         
            -
            private:
         
     | 
| 
       142 
     | 
    
         
            -
            #endif
         
     | 
| 
       143 
     | 
    
         
            -
                /** Returns a copy of this path in the current state, and resets the path to empty. */
         
     | 
| 
       144 
     | 
    
         
            -
                SkPath detach() {
         
     | 
| 
       145 
     | 
    
         
            -
                    SkPath result = *this;
         
     | 
| 
       146 
     | 
    
         
            -
                    this->reset();
         
     | 
| 
       147 
     | 
    
         
            -
                    return result;
         
     | 
| 
       148 
     | 
    
         
            -
                }
         
     | 
| 
       149 
     | 
    
         
            -
            #ifdef SK_HIDE_PATH_EDIT_METHODS
         
     | 
| 
       150 
     | 
    
         
            -
            public:
         
     | 
| 
       151 
     | 
    
         
            -
            #endif
         
     | 
| 
       152 
     | 
    
         
            -
             
     | 
| 
       153 
150 
     | 
    
         
             
                /** Constructs a copy of an existing path.
         
     | 
| 
       154 
151 
     | 
    
         
             
                    SkPath assignment makes two paths identical by value. Internally, assignment
         
     | 
| 
       155 
152 
     | 
    
         
             
                    shares pointer values. The underlying verb array, SkPoint array and weights
         
     | 
| 
         @@ -200,9 +197,6 @@ public: 
     | 
|
| 
       200 
197 
     | 
    
         
             
                */
         
     | 
| 
       201 
198 
     | 
    
         
             
                bool isInterpolatable(const SkPath& compare) const;
         
     | 
| 
       202 
199 
     | 
    
         | 
| 
       203 
     | 
    
         
            -
            #ifdef SK_HIDE_PATH_EDIT_METHODS
         
     | 
| 
       204 
     | 
    
         
            -
            private:
         
     | 
| 
       205 
     | 
    
         
            -
            #endif
         
     | 
| 
       206 
200 
     | 
    
         
             
                /** Interpolates between SkPath with SkPoint array of equal size.
         
     | 
| 
       207 
201 
     | 
    
         
             
                    Copy verb array and weights to out, and set out SkPoint array to a weighted
         
     | 
| 
       208 
202 
     | 
    
         
             
                    average of this SkPoint array and ending SkPoint array, using the formula:
         
     | 
| 
         @@ -212,22 +206,17 @@ private: 
     | 
|
| 
       212 
206 
     | 
    
         
             
                    one (this Point_Array); will work with values outside of this
         
     | 
| 
       213 
207 
     | 
    
         
             
                    range.
         
     | 
| 
       214 
208 
     | 
    
         | 
| 
       215 
     | 
    
         
            -
                    interpolate() returns  
     | 
| 
       216 
     | 
    
         
            -
                     
     | 
| 
       217 
     | 
    
         
            -
                     
     | 
| 
      
 209 
     | 
    
         
            +
                    interpolate() returns an empty SkPath if SkPoint array is not the same size
         
     | 
| 
      
 210 
     | 
    
         
            +
                    as ending SkPoint array. Call isInterpolatable() to check SkPath compatibility
         
     | 
| 
      
 211 
     | 
    
         
            +
                    prior to calling makeInterpolate().
         
     | 
| 
       218 
212 
     | 
    
         | 
| 
       219 
213 
     | 
    
         
             
                    @param ending  SkPoint array averaged with this SkPoint array
         
     | 
| 
       220 
214 
     | 
    
         
             
                    @param weight  contribution of this SkPoint array, and
         
     | 
| 
       221 
215 
     | 
    
         
             
                                   one minus contribution of ending SkPoint array
         
     | 
| 
       222 
     | 
    
         
            -
                    @ 
     | 
| 
       223 
     | 
    
         
            -
                    @return        true if SkPath contain same number of SkPoint
         
     | 
| 
      
 216 
     | 
    
         
            +
                    @return        SkPath replaced by interpolated averages
         
     | 
| 
       224 
217 
     | 
    
         | 
| 
       225 
218 
     | 
    
         
             
                    example: https://fiddle.skia.org/c/@Path_interpolate
         
     | 
| 
       226 
219 
     | 
    
         
             
                */
         
     | 
| 
       227 
     | 
    
         
            -
                bool interpolate(const SkPath& ending, SkScalar weight, SkPath* out) const;
         
     | 
| 
       228 
     | 
    
         
            -
            #ifdef SK_HIDE_PATH_EDIT_METHODS
         
     | 
| 
       229 
     | 
    
         
            -
            public:
         
     | 
| 
       230 
     | 
    
         
            -
            #endif
         
     | 
| 
       231 
220 
     | 
    
         
             
                SkPath makeInterpolate(const SkPath& ending, SkScalar weight) const;
         
     | 
| 
       232 
221 
     | 
    
         | 
| 
       233 
222 
     | 
    
         
             
                /** Returns SkPathFillType, the rule used to fill SkPath.
         
     | 
| 
         @@ -236,19 +225,6 @@ public: 
     | 
|
| 
       236 
225 
     | 
    
         
             
                */
         
     | 
| 
       237 
226 
     | 
    
         
             
                SkPathFillType getFillType() const { return (SkPathFillType)fFillType; }
         
     | 
| 
       238 
227 
     | 
    
         | 
| 
       239 
     | 
    
         
            -
            #ifdef SK_HIDE_PATH_EDIT_METHODS
         
     | 
| 
       240 
     | 
    
         
            -
            private:
         
     | 
| 
       241 
     | 
    
         
            -
            #endif
         
     | 
| 
       242 
     | 
    
         
            -
                /** Sets SkPathFillType, the rule used to fill SkPath. While there is no
         
     | 
| 
       243 
     | 
    
         
            -
                    check that ft is legal, values outside of SkPathFillType are not supported.
         
     | 
| 
       244 
     | 
    
         
            -
                */
         
     | 
| 
       245 
     | 
    
         
            -
                void setFillType(SkPathFillType ft) {
         
     | 
| 
       246 
     | 
    
         
            -
                    fFillType = SkToU8(ft);
         
     | 
| 
       247 
     | 
    
         
            -
                }
         
     | 
| 
       248 
     | 
    
         
            -
            #ifdef SK_HIDE_PATH_EDIT_METHODS
         
     | 
| 
       249 
     | 
    
         
            -
            public:
         
     | 
| 
       250 
     | 
    
         
            -
            #endif
         
     | 
| 
       251 
     | 
    
         
            -
             
     | 
| 
       252 
228 
     | 
    
         
             
                /** Creates an SkPath with the same properties and data, and with SkPathFillType
         
     | 
| 
       253 
229 
     | 
    
         
             
                    set to newFillType.
         
     | 
| 
       254 
230 
     | 
    
         
             
                */
         
     | 
| 
         @@ -261,19 +237,6 @@ public: 
     | 
|
| 
       261 
237 
     | 
    
         
             
                */
         
     | 
| 
       262 
238 
     | 
    
         
             
                bool isInverseFillType() const { return SkPathFillType_IsInverse(this->getFillType()); }
         
     | 
| 
       263 
239 
     | 
    
         | 
| 
       264 
     | 
    
         
            -
            #ifdef SK_HIDE_PATH_EDIT_METHODS
         
     | 
| 
       265 
     | 
    
         
            -
            private:
         
     | 
| 
       266 
     | 
    
         
            -
            #endif
         
     | 
| 
       267 
     | 
    
         
            -
                /** Replaces SkPathFillType with its inverse. The inverse of SkPathFillType describes the area
         
     | 
| 
       268 
     | 
    
         
            -
                    unmodified by the original SkPathFillType.
         
     | 
| 
       269 
     | 
    
         
            -
                */
         
     | 
| 
       270 
     | 
    
         
            -
                void toggleInverseFillType() {
         
     | 
| 
       271 
     | 
    
         
            -
                    fFillType ^= 2;
         
     | 
| 
       272 
     | 
    
         
            -
                }
         
     | 
| 
       273 
     | 
    
         
            -
            #ifdef SK_HIDE_PATH_EDIT_METHODS
         
     | 
| 
       274 
     | 
    
         
            -
            public:
         
     | 
| 
       275 
     | 
    
         
            -
            #endif
         
     | 
| 
       276 
     | 
    
         
            -
             
     | 
| 
       277 
240 
     | 
    
         
             
                /** Creates an SkPath with the same properties and data, and with SkPathFillType
         
     | 
| 
       278 
241 
     | 
    
         
             
                    replaced with its inverse.  The inverse of SkPathFillType describes the area unmodified
         
     | 
| 
       279 
242 
     | 
    
         
             
                    by the original FillType.
         
     | 
| 
         @@ -311,45 +274,6 @@ public: 
     | 
|
| 
       311 
274 
     | 
    
         
             
                */
         
     | 
| 
       312 
275 
     | 
    
         
             
                bool isRRect(SkRRect* rrect) const;
         
     | 
| 
       313 
276 
     | 
    
         | 
| 
       314 
     | 
    
         
            -
                /** Returns true if path is representable as an oval arc. In other words, could this
         
     | 
| 
       315 
     | 
    
         
            -
                    path be drawn using SkCanvas::drawArc.
         
     | 
| 
       316 
     | 
    
         
            -
             
     | 
| 
       317 
     | 
    
         
            -
                    arc  receives parameters of arc
         
     | 
| 
       318 
     | 
    
         
            -
             
     | 
| 
       319 
     | 
    
         
            -
                   @param arc  storage for arc; may be nullptr
         
     | 
| 
       320 
     | 
    
         
            -
                   @return     true if SkPath contains only a single arc from an oval
         
     | 
| 
       321 
     | 
    
         
            -
                */
         
     | 
| 
       322 
     | 
    
         
            -
                bool isArc(SkArc* arc) const;
         
     | 
| 
       323 
     | 
    
         
            -
             
     | 
| 
       324 
     | 
    
         
            -
            #ifdef SK_HIDE_PATH_EDIT_METHODS
         
     | 
| 
       325 
     | 
    
         
            -
            private:
         
     | 
| 
       326 
     | 
    
         
            -
            #endif
         
     | 
| 
       327 
     | 
    
         
            -
                /** Sets SkPath to its initial state.
         
     | 
| 
       328 
     | 
    
         
            -
                    Removes verb array, SkPoint array, and weights, and sets FillType to kWinding.
         
     | 
| 
       329 
     | 
    
         
            -
                    Internal storage associated with SkPath is released.
         
     | 
| 
       330 
     | 
    
         
            -
             
     | 
| 
       331 
     | 
    
         
            -
                    @return  reference to SkPath
         
     | 
| 
       332 
     | 
    
         
            -
             
     | 
| 
       333 
     | 
    
         
            -
                    example: https://fiddle.skia.org/c/@Path_reset
         
     | 
| 
       334 
     | 
    
         
            -
                */
         
     | 
| 
       335 
     | 
    
         
            -
                SkPath& reset();
         
     | 
| 
       336 
     | 
    
         
            -
             
     | 
| 
       337 
     | 
    
         
            -
                /** Sets SkPath to its initial state, preserving internal storage.
         
     | 
| 
       338 
     | 
    
         
            -
                    Removes verb array, SkPoint array, and weights, and sets FillType to kWinding.
         
     | 
| 
       339 
     | 
    
         
            -
                    Internal storage associated with SkPath is retained.
         
     | 
| 
       340 
     | 
    
         
            -
             
     | 
| 
       341 
     | 
    
         
            -
                    Use rewind() instead of reset() if SkPath storage will be reused and performance
         
     | 
| 
       342 
     | 
    
         
            -
                    is critical.
         
     | 
| 
       343 
     | 
    
         
            -
             
     | 
| 
       344 
     | 
    
         
            -
                    @return  reference to SkPath
         
     | 
| 
       345 
     | 
    
         
            -
             
     | 
| 
       346 
     | 
    
         
            -
                    example: https://fiddle.skia.org/c/@Path_rewind
         
     | 
| 
       347 
     | 
    
         
            -
                */
         
     | 
| 
       348 
     | 
    
         
            -
                SkPath& rewind();
         
     | 
| 
       349 
     | 
    
         
            -
            #ifdef SK_HIDE_PATH_EDIT_METHODS
         
     | 
| 
       350 
     | 
    
         
            -
            public:
         
     | 
| 
       351 
     | 
    
         
            -
            #endif
         
     | 
| 
       352 
     | 
    
         
            -
             
     | 
| 
       353 
277 
     | 
    
         
             
                /** Returns if SkPath is empty.
         
     | 
| 
       354 
278 
     | 
    
         
             
                    Empty SkPath may have FillType but has no SkPoint, SkPath::Verb, or conic weight.
         
     | 
| 
       355 
279 
     | 
    
         
             
                    SkPath() constructs empty SkPath; reset() and rewind() make SkPath empty.
         
     | 
| 
         @@ -387,12 +311,9 @@ public: 
     | 
|
| 
       387 
311 
     | 
    
         
             
                    return SkToBool(fIsVolatile);
         
     | 
| 
       388 
312 
     | 
    
         
             
                }
         
     | 
| 
       389 
313 
     | 
    
         | 
| 
       390 
     | 
    
         
            -
             
     | 
| 
       391 
     | 
    
         
            -
             
     | 
| 
       392 
     | 
    
         
            -
             
     | 
| 
       393 
     | 
    
         
            -
                /** Specifies whether SkPath is volatile; whether it will be altered or discarded
         
     | 
| 
       394 
     | 
    
         
            -
                    by the caller after it is drawn. SkPath by default have volatile set false, allowing
         
     | 
| 
       395 
     | 
    
         
            -
                    Skia to attach a cache of data which speeds repeated drawing.
         
     | 
| 
      
 314 
     | 
    
         
            +
                /** Return a copy of SkPath with isVolatile indicating whether it will be altered
         
     | 
| 
      
 315 
     | 
    
         
            +
                    or discarded by the caller after it is drawn. SkPath by default have volatile
         
     | 
| 
      
 316 
     | 
    
         
            +
                    set false, allowing Skia to attach a cache of data which speeds repeated drawing.
         
     | 
| 
       396 
317 
     | 
    
         | 
| 
       397 
318 
     | 
    
         
             
                    Mark temporary paths, discarded or modified after use, as volatile
         
     | 
| 
       398 
319 
     | 
    
         
             
                    to inform Skia that the path need not be cached.
         
     | 
| 
         @@ -404,15 +325,8 @@ private: 
     | 
|
| 
       404 
325 
     | 
    
         
             
                    GPU surface SkPath draws are affected by volatile for some shadows and concave geometries.
         
     | 
| 
       405 
326 
     | 
    
         | 
| 
       406 
327 
     | 
    
         
             
                    @param isVolatile  true if caller will alter SkPath after drawing
         
     | 
| 
       407 
     | 
    
         
            -
                    @return             
     | 
| 
      
 328 
     | 
    
         
            +
                    @return            SkPath
         
     | 
| 
       408 
329 
     | 
    
         
             
                */
         
     | 
| 
       409 
     | 
    
         
            -
                SkPath& setIsVolatile(bool isVolatile) {
         
     | 
| 
       410 
     | 
    
         
            -
                    fIsVolatile = isVolatile;
         
     | 
| 
       411 
     | 
    
         
            -
                    return *this;
         
     | 
| 
       412 
     | 
    
         
            -
                }
         
     | 
| 
       413 
     | 
    
         
            -
            #ifdef SK_HIDE_PATH_EDIT_METHODS
         
     | 
| 
       414 
     | 
    
         
            -
            public:
         
     | 
| 
       415 
     | 
    
         
            -
            #endif
         
     | 
| 
       416 
330 
     | 
    
         
             
                SkPath makeIsVolatile(bool isVolatile) const;
         
     | 
| 
       417 
331 
     | 
    
         | 
| 
       418 
332 
     | 
    
         
             
                /** Tests if line between SkPoint pair is degenerate.
         
     | 
| 
         @@ -528,26 +442,6 @@ public: 
     | 
|
| 
       528 
442 
     | 
    
         
             
                */
         
     | 
| 
       529 
443 
     | 
    
         
             
                size_t approximateBytesUsed() const;
         
     | 
| 
       530 
444 
     | 
    
         | 
| 
       531 
     | 
    
         
            -
            #ifdef SK_HIDE_PATH_EDIT_METHODS
         
     | 
| 
       532 
     | 
    
         
            -
            private:
         
     | 
| 
       533 
     | 
    
         
            -
            #endif
         
     | 
| 
       534 
     | 
    
         
            -
                /** Exchanges the verb array, SkPoint array, weights, and SkPath::FillType with other.
         
     | 
| 
       535 
     | 
    
         
            -
                    Cached state is also exchanged. swap() internally exchanges pointers, so
         
     | 
| 
       536 
     | 
    
         
            -
                    it is lightweight and does not allocate memory.
         
     | 
| 
       537 
     | 
    
         
            -
             
     | 
| 
       538 
     | 
    
         
            -
                    swap() usage has largely been replaced by operator=(const SkPath& path).
         
     | 
| 
       539 
     | 
    
         
            -
                    SkPath do not copy their content on assignment until they are written to,
         
     | 
| 
       540 
     | 
    
         
            -
                    making assignment as efficient as swap().
         
     | 
| 
       541 
     | 
    
         
            -
             
     | 
| 
       542 
     | 
    
         
            -
                    @param other  SkPath exchanged by value
         
     | 
| 
       543 
     | 
    
         
            -
             
     | 
| 
       544 
     | 
    
         
            -
                    example: https://fiddle.skia.org/c/@Path_swap
         
     | 
| 
       545 
     | 
    
         
            -
                */
         
     | 
| 
       546 
     | 
    
         
            -
                void swap(SkPath& other);
         
     | 
| 
       547 
     | 
    
         
            -
            #ifdef SK_HIDE_PATH_EDIT_METHODS
         
     | 
| 
       548 
     | 
    
         
            -
            public:
         
     | 
| 
       549 
     | 
    
         
            -
            #endif
         
     | 
| 
       550 
     | 
    
         
            -
             
     | 
| 
       551 
445 
     | 
    
         
             
                /** Returns minimum and maximum axes values of SkPoint array.
         
     | 
| 
       552 
446 
     | 
    
         
             
                    Returns (0, 0, 0, 0) if SkPath contains no points. Returned bounds width and height may
         
     | 
| 
       553 
447 
     | 
    
         
             
                    be larger or smaller than area affected when SkPath is drawn.
         
     | 
| 
         @@ -594,21 +488,290 @@ public: 
     | 
|
| 
       594 
488 
     | 
    
         
             
                /** Returns true if rect is contained by SkPath.
         
     | 
| 
       595 
489 
     | 
    
         
             
                    May return false when rect is contained by SkPath.
         
     | 
| 
       596 
490 
     | 
    
         | 
| 
       597 
     | 
    
         
            -
                    For now, only returns true if SkPath has one contour and is convex.
         
     | 
| 
       598 
     | 
    
         
            -
                    rect may share points and edges with SkPath and be contained.
         
     | 
| 
       599 
     | 
    
         
            -
                    Returns true if rect is empty, that is, it has zero width or height; and
         
     | 
| 
       600 
     | 
    
         
            -
                    the SkPoint or line described by rect is contained by SkPath.
         
     | 
| 
      
 491 
     | 
    
         
            +
                    For now, only returns true if SkPath has one contour and is convex.
         
     | 
| 
      
 492 
     | 
    
         
            +
                    rect may share points and edges with SkPath and be contained.
         
     | 
| 
      
 493 
     | 
    
         
            +
                    Returns true if rect is empty, that is, it has zero width or height; and
         
     | 
| 
      
 494 
     | 
    
         
            +
                    the SkPoint or line described by rect is contained by SkPath.
         
     | 
| 
      
 495 
     | 
    
         
            +
             
     | 
| 
      
 496 
     | 
    
         
            +
                    @param rect  SkRect, line, or SkPoint checked for containment
         
     | 
| 
      
 497 
     | 
    
         
            +
                    @return      true if rect is contained
         
     | 
| 
      
 498 
     | 
    
         
            +
             
     | 
| 
      
 499 
     | 
    
         
            +
                    example: https://fiddle.skia.org/c/@Path_conservativelyContainsRect
         
     | 
| 
      
 500 
     | 
    
         
            +
                */
         
     | 
| 
      
 501 
     | 
    
         
            +
                bool conservativelyContainsRect(const SkRect& rect) const;
         
     | 
| 
      
 502 
     | 
    
         
            +
             
     | 
| 
      
 503 
     | 
    
         
            +
                /** \enum SkPath::ArcSize
         
     | 
| 
      
 504 
     | 
    
         
            +
                    Four oval parts with radii (rx, ry) start at last SkPath SkPoint and ends at (x, y).
         
     | 
| 
      
 505 
     | 
    
         
            +
                    ArcSize and Direction select one of the four oval parts.
         
     | 
| 
      
 506 
     | 
    
         
            +
                */
         
     | 
| 
      
 507 
     | 
    
         
            +
                enum ArcSize {
         
     | 
| 
      
 508 
     | 
    
         
            +
                    kSmall_ArcSize, //!< smaller of arc pair
         
     | 
| 
      
 509 
     | 
    
         
            +
                    kLarge_ArcSize, //!< larger of arc pair
         
     | 
| 
      
 510 
     | 
    
         
            +
                };
         
     | 
| 
      
 511 
     | 
    
         
            +
             
     | 
| 
      
 512 
     | 
    
         
            +
                /** Approximates conic with quad array. Conic is constructed from start SkPoint p0,
         
     | 
| 
      
 513 
     | 
    
         
            +
                    control SkPoint p1, end SkPoint p2, and weight w.
         
     | 
| 
      
 514 
     | 
    
         
            +
                    Quad array is stored in pts; this storage is supplied by caller.
         
     | 
| 
      
 515 
     | 
    
         
            +
                    Maximum quad count is 2 to the pow2.
         
     | 
| 
      
 516 
     | 
    
         
            +
                    Every third point in array shares last SkPoint of previous quad and first SkPoint of
         
     | 
| 
      
 517 
     | 
    
         
            +
                    next quad. Maximum pts storage size is given by:
         
     | 
| 
      
 518 
     | 
    
         
            +
                    (1 + 2 * (1 << pow2)) * sizeof(SkPoint).
         
     | 
| 
      
 519 
     | 
    
         
            +
             
     | 
| 
      
 520 
     | 
    
         
            +
                    Returns quad count used the approximation, which may be smaller
         
     | 
| 
      
 521 
     | 
    
         
            +
                    than the number requested.
         
     | 
| 
      
 522 
     | 
    
         
            +
             
     | 
| 
      
 523 
     | 
    
         
            +
                    conic weight determines the amount of influence conic control point has on the curve.
         
     | 
| 
      
 524 
     | 
    
         
            +
                    w less than one represents an elliptical section. w greater than one represents
         
     | 
| 
      
 525 
     | 
    
         
            +
                    a hyperbolic section. w equal to one represents a parabolic section.
         
     | 
| 
      
 526 
     | 
    
         
            +
             
     | 
| 
      
 527 
     | 
    
         
            +
                    Two quad curves are sufficient to approximate an elliptical conic with a sweep
         
     | 
| 
      
 528 
     | 
    
         
            +
                    of up to 90 degrees; in this case, set pow2 to one.
         
     | 
| 
      
 529 
     | 
    
         
            +
             
     | 
| 
      
 530 
     | 
    
         
            +
                    @param p0    conic start SkPoint
         
     | 
| 
      
 531 
     | 
    
         
            +
                    @param p1    conic control SkPoint
         
     | 
| 
      
 532 
     | 
    
         
            +
                    @param p2    conic end SkPoint
         
     | 
| 
      
 533 
     | 
    
         
            +
                    @param w     conic weight
         
     | 
| 
      
 534 
     | 
    
         
            +
                    @param pts   storage for quad array
         
     | 
| 
      
 535 
     | 
    
         
            +
                    @param pow2  quad count, as power of two, normally 0 to 5 (1 to 32 quad curves)
         
     | 
| 
      
 536 
     | 
    
         
            +
                    @return      number of quad curves written to pts
         
     | 
| 
      
 537 
     | 
    
         
            +
                */
         
     | 
| 
      
 538 
     | 
    
         
            +
                static int ConvertConicToQuads(const SkPoint& p0, const SkPoint& p1, const SkPoint& p2,
         
     | 
| 
      
 539 
     | 
    
         
            +
                                               SkScalar w, SkPoint pts[], int pow2);
         
     | 
| 
      
 540 
     | 
    
         
            +
             
     | 
| 
      
 541 
     | 
    
         
            +
                /** Returns true if SkPath is equivalent to SkRect when filled.
         
     | 
| 
      
 542 
     | 
    
         
            +
                    If false: rect, isClosed, and direction are unchanged.
         
     | 
| 
      
 543 
     | 
    
         
            +
                    If true: rect, isClosed, and direction are written to if not nullptr.
         
     | 
| 
      
 544 
     | 
    
         
            +
             
     | 
| 
      
 545 
     | 
    
         
            +
                    rect may be smaller than the SkPath bounds. SkPath bounds may include kMove_Verb points
         
     | 
| 
      
 546 
     | 
    
         
            +
                    that do not alter the area drawn by the returned rect.
         
     | 
| 
      
 547 
     | 
    
         
            +
             
     | 
| 
      
 548 
     | 
    
         
            +
                    @param rect       storage for bounds of SkRect; may be nullptr
         
     | 
| 
      
 549 
     | 
    
         
            +
                    @param isClosed   storage set to true if SkPath is closed; may be nullptr
         
     | 
| 
      
 550 
     | 
    
         
            +
                    @param direction  storage set to SkRect direction; may be nullptr
         
     | 
| 
      
 551 
     | 
    
         
            +
                    @return           true if SkPath contains SkRect
         
     | 
| 
      
 552 
     | 
    
         
            +
             
     | 
| 
      
 553 
     | 
    
         
            +
                    example: https://fiddle.skia.org/c/@Path_isRect
         
     | 
| 
      
 554 
     | 
    
         
            +
                */
         
     | 
| 
      
 555 
     | 
    
         
            +
                bool isRect(SkRect* rect, bool* isClosed = nullptr, SkPathDirection* direction = nullptr) const;
         
     | 
| 
      
 556 
     | 
    
         
            +
             
     | 
| 
      
 557 
     | 
    
         
            +
                /** \enum SkPath::AddPathMode
         
     | 
| 
      
 558 
     | 
    
         
            +
                    AddPathMode chooses how addPath() appends. Adding one SkPath to another can extend
         
     | 
| 
      
 559 
     | 
    
         
            +
                    the last contour or start a new contour.
         
     | 
| 
      
 560 
     | 
    
         
            +
                */
         
     | 
| 
      
 561 
     | 
    
         
            +
                enum AddPathMode {
         
     | 
| 
      
 562 
     | 
    
         
            +
                    /** Contours are appended to the destination path as new contours.
         
     | 
| 
      
 563 
     | 
    
         
            +
                    */
         
     | 
| 
      
 564 
     | 
    
         
            +
                    kAppend_AddPathMode,
         
     | 
| 
      
 565 
     | 
    
         
            +
                    /** Extends the last contour of the destination path with the first countour
         
     | 
| 
      
 566 
     | 
    
         
            +
                        of the source path, connecting them with a line.  If the last contour is
         
     | 
| 
      
 567 
     | 
    
         
            +
                        closed, a new empty contour starting at its start point is extended instead.
         
     | 
| 
      
 568 
     | 
    
         
            +
                        If the destination path is empty, the result is the source path.
         
     | 
| 
      
 569 
     | 
    
         
            +
                        The last path of the result is closed only if the last path of the source is.
         
     | 
| 
      
 570 
     | 
    
         
            +
                    */
         
     | 
| 
      
 571 
     | 
    
         
            +
                    kExtend_AddPathMode,
         
     | 
| 
      
 572 
     | 
    
         
            +
                };
         
     | 
| 
      
 573 
     | 
    
         
            +
             
     | 
| 
      
 574 
     | 
    
         
            +
                /** Returns SkPath with SkPoint array offset by (dx, dy).
         
     | 
| 
      
 575 
     | 
    
         
            +
             
     | 
| 
      
 576 
     | 
    
         
            +
                    @param dx  offset added to SkPoint array x-axis coordinates
         
     | 
| 
      
 577 
     | 
    
         
            +
                    @param dy  offset added to SkPoint array y-axis coordinates
         
     | 
| 
      
 578 
     | 
    
         
            +
                */
         
     | 
| 
      
 579 
     | 
    
         
            +
                SkPath makeOffset(SkScalar dx, SkScalar dy) const {
         
     | 
| 
      
 580 
     | 
    
         
            +
                    SkPath dst;
         
     | 
| 
      
 581 
     | 
    
         
            +
                    this->offset(dx, dy, &dst);
         
     | 
| 
      
 582 
     | 
    
         
            +
                    return dst;
         
     | 
| 
      
 583 
     | 
    
         
            +
                }
         
     | 
| 
      
 584 
     | 
    
         
            +
             
     | 
| 
      
 585 
     | 
    
         
            +
                /** Return a copy of SkPath with verb array, SkPoint array, and weight transformed
         
     | 
| 
      
 586 
     | 
    
         
            +
                    by matrix. makeTransform may change verbs and increase their number.
         
     | 
| 
      
 587 
     | 
    
         
            +
             
     | 
| 
      
 588 
     | 
    
         
            +
                    @param matrix  SkMatrix to apply to SkPath
         
     | 
| 
      
 589 
     | 
    
         
            +
                    @param pc      whether to apply perspective clipping
         
     | 
| 
      
 590 
     | 
    
         
            +
                    @return        SkPath
         
     | 
| 
      
 591 
     | 
    
         
            +
                */
         
     | 
| 
      
 592 
     | 
    
         
            +
                SkPath makeTransform(const SkMatrix& matrix) const {
         
     | 
| 
      
 593 
     | 
    
         
            +
                    SkPath dst;
         
     | 
| 
      
 594 
     | 
    
         
            +
                    this->transform(matrix, &dst);
         
     | 
| 
      
 595 
     | 
    
         
            +
                    return dst;
         
     | 
| 
      
 596 
     | 
    
         
            +
                }
         
     | 
| 
      
 597 
     | 
    
         
            +
             
     | 
| 
      
 598 
     | 
    
         
            +
                SkPath makeScale(SkScalar sx, SkScalar sy) const {
         
     | 
| 
      
 599 
     | 
    
         
            +
                    return this->makeTransform(SkMatrix::Scale(sx, sy));
         
     | 
| 
      
 600 
     | 
    
         
            +
                }
         
     | 
| 
      
 601 
     | 
    
         
            +
             
     | 
| 
      
 602 
     | 
    
         
            +
            #ifdef SK_SUPPORT_LEGACY_APPLYPERSPECTIVECLIP
         
     | 
| 
      
 603 
     | 
    
         
            +
                void transform(const SkMatrix& matrix, SkPath* dst, SkApplyPerspectiveClip) const {
         
     | 
| 
      
 604 
     | 
    
         
            +
                    this->transform(matrix, dst);
         
     | 
| 
      
 605 
     | 
    
         
            +
                }
         
     | 
| 
      
 606 
     | 
    
         
            +
                void transform(const SkMatrix& matrix, SkApplyPerspectiveClip) {
         
     | 
| 
      
 607 
     | 
    
         
            +
                    this->transform(matrix);
         
     | 
| 
      
 608 
     | 
    
         
            +
                }
         
     | 
| 
      
 609 
     | 
    
         
            +
                SkPath makeTransform(const SkMatrix& m, SkApplyPerspectiveClip) const {
         
     | 
| 
      
 610 
     | 
    
         
            +
                    return this->makeTransform(m);
         
     | 
| 
      
 611 
     | 
    
         
            +
                }
         
     | 
| 
      
 612 
     | 
    
         
            +
            #endif
         
     | 
| 
      
 613 
     | 
    
         
            +
             
     | 
| 
      
 614 
     | 
    
         
            +
                /** Return the last point, or {}
         
     | 
| 
      
 615 
     | 
    
         
            +
             
     | 
| 
      
 616 
     | 
    
         
            +
                    @return The last if the path contains one or more SkPoint, else returns {}
         
     | 
| 
      
 617 
     | 
    
         
            +
             
     | 
| 
      
 618 
     | 
    
         
            +
                    example: https://fiddle.skia.org/c/@Path_getLastPt
         
     | 
| 
      
 619 
     | 
    
         
            +
                */
         
     | 
| 
      
 620 
     | 
    
         
            +
                std::optional<SkPoint> getLastPt() const;
         
     | 
| 
      
 621 
     | 
    
         
            +
             
     | 
| 
      
 622 
     | 
    
         
            +
                // DEPRECATED
         
     | 
| 
      
 623 
     | 
    
         
            +
                bool getLastPt(SkPoint* lastPt) const {
         
     | 
| 
      
 624 
     | 
    
         
            +
                    if (auto lp = this->getLastPt()) {
         
     | 
| 
      
 625 
     | 
    
         
            +
                        if (lastPt) {
         
     | 
| 
      
 626 
     | 
    
         
            +
                            *lastPt = *lp;
         
     | 
| 
      
 627 
     | 
    
         
            +
                        }
         
     | 
| 
      
 628 
     | 
    
         
            +
                        return true;
         
     | 
| 
      
 629 
     | 
    
         
            +
                    }
         
     | 
| 
      
 630 
     | 
    
         
            +
                    if (lastPt) {
         
     | 
| 
      
 631 
     | 
    
         
            +
                        *lastPt = {0, 0};
         
     | 
| 
      
 632 
     | 
    
         
            +
                    }
         
     | 
| 
      
 633 
     | 
    
         
            +
                    return false;
         
     | 
| 
      
 634 
     | 
    
         
            +
                }
         
     | 
| 
      
 635 
     | 
    
         
            +
             
     | 
| 
      
 636 
     | 
    
         
            +
                /** \enum SkPath::SegmentMask
         
     | 
| 
      
 637 
     | 
    
         
            +
                    SegmentMask constants correspond to each drawing Verb type in SkPath; for
         
     | 
| 
      
 638 
     | 
    
         
            +
                    instance, if SkPath only contains lines, only the kLine_SegmentMask bit is set.
         
     | 
| 
      
 639 
     | 
    
         
            +
                */
         
     | 
| 
      
 640 
     | 
    
         
            +
                enum SegmentMask {
         
     | 
| 
      
 641 
     | 
    
         
            +
                    kLine_SegmentMask  = kLine_SkPathSegmentMask,
         
     | 
| 
      
 642 
     | 
    
         
            +
                    kQuad_SegmentMask  = kQuad_SkPathSegmentMask,
         
     | 
| 
      
 643 
     | 
    
         
            +
                    kConic_SegmentMask = kConic_SkPathSegmentMask,
         
     | 
| 
      
 644 
     | 
    
         
            +
                    kCubic_SegmentMask = kCubic_SkPathSegmentMask,
         
     | 
| 
      
 645 
     | 
    
         
            +
                };
         
     | 
| 
      
 646 
     | 
    
         
            +
             
     | 
| 
      
 647 
     | 
    
         
            +
                /** Returns a mask, where each set bit corresponds to a SegmentMask constant
         
     | 
| 
      
 648 
     | 
    
         
            +
                    if SkPath contains one or more verbs of that type.
         
     | 
| 
      
 649 
     | 
    
         
            +
                    Returns zero if SkPath contains no lines, or curves: quads, conics, or cubics.
         
     | 
| 
      
 650 
     | 
    
         
            +
             
     | 
| 
      
 651 
     | 
    
         
            +
                    getSegmentMasks() returns a cached result; it is very fast.
         
     | 
| 
      
 652 
     | 
    
         
            +
             
     | 
| 
      
 653 
     | 
    
         
            +
                    @return  SegmentMask bits or zero
         
     | 
| 
      
 654 
     | 
    
         
            +
                */
         
     | 
| 
      
 655 
     | 
    
         
            +
                uint32_t getSegmentMasks() const;
         
     | 
| 
      
 656 
     | 
    
         
            +
             
     | 
| 
      
 657 
     | 
    
         
            +
                /** \enum SkPath::Verb
         
     | 
| 
      
 658 
     | 
    
         
            +
                    Verb instructs SkPath how to interpret one or more SkPoint and optional conic weight;
         
     | 
| 
      
 659 
     | 
    
         
            +
                    manage contour, and terminate SkPath.
         
     | 
| 
      
 660 
     | 
    
         
            +
                */
         
     | 
| 
      
 661 
     | 
    
         
            +
                enum Verb {
         
     | 
| 
      
 662 
     | 
    
         
            +
                    kMove_Verb  = static_cast<int>(SkPathVerb::kMove),
         
     | 
| 
      
 663 
     | 
    
         
            +
                    kLine_Verb  = static_cast<int>(SkPathVerb::kLine),
         
     | 
| 
      
 664 
     | 
    
         
            +
                    kQuad_Verb  = static_cast<int>(SkPathVerb::kQuad),
         
     | 
| 
      
 665 
     | 
    
         
            +
                    kConic_Verb = static_cast<int>(SkPathVerb::kConic),
         
     | 
| 
      
 666 
     | 
    
         
            +
                    kCubic_Verb = static_cast<int>(SkPathVerb::kCubic),
         
     | 
| 
      
 667 
     | 
    
         
            +
                    kClose_Verb = static_cast<int>(SkPathVerb::kClose),
         
     | 
| 
      
 668 
     | 
    
         
            +
                    kDone_Verb  = kClose_Verb + 1
         
     | 
| 
      
 669 
     | 
    
         
            +
                };
         
     | 
| 
      
 670 
     | 
    
         
            +
             
     | 
| 
      
 671 
     | 
    
         
            +
                /** Specifies whether SkPath is volatile; whether it will be altered or discarded
         
     | 
| 
      
 672 
     | 
    
         
            +
                    by the caller after it is drawn. SkPath by default have volatile set false, allowing
         
     | 
| 
      
 673 
     | 
    
         
            +
                    Skia to attach a cache of data which speeds repeated drawing.
         
     | 
| 
      
 674 
     | 
    
         
            +
             
     | 
| 
      
 675 
     | 
    
         
            +
                    Mark temporary paths, discarded or modified after use, as volatile
         
     | 
| 
      
 676 
     | 
    
         
            +
                    to inform Skia that the path need not be cached.
         
     | 
| 
      
 677 
     | 
    
         
            +
             
     | 
| 
      
 678 
     | 
    
         
            +
                    Mark animating SkPath volatile to improve performance.
         
     | 
| 
      
 679 
     | 
    
         
            +
                    Mark unchanging SkPath non-volatile to improve repeated rendering.
         
     | 
| 
      
 680 
     | 
    
         
            +
             
     | 
| 
      
 681 
     | 
    
         
            +
                    raster surface SkPath draws are affected by volatile for some shadows.
         
     | 
| 
      
 682 
     | 
    
         
            +
                    GPU surface SkPath draws are affected by volatile for some shadows and concave geometries.
         
     | 
| 
      
 683 
     | 
    
         
            +
             
     | 
| 
      
 684 
     | 
    
         
            +
                    @param isVolatile  true if caller will alter SkPath after drawing
         
     | 
| 
      
 685 
     | 
    
         
            +
                    @return            reference to SkPath
         
     | 
| 
      
 686 
     | 
    
         
            +
                */
         
     | 
| 
      
 687 
     | 
    
         
            +
                SkPath& setIsVolatile(bool isVolatile) {
         
     | 
| 
      
 688 
     | 
    
         
            +
                    fIsVolatile = isVolatile;
         
     | 
| 
      
 689 
     | 
    
         
            +
                    return *this;
         
     | 
| 
      
 690 
     | 
    
         
            +
                }
         
     | 
| 
      
 691 
     | 
    
         
            +
             
     | 
| 
      
 692 
     | 
    
         
            +
                /** Exchanges the verb array, SkPoint array, weights, and SkPath::FillType with other.
         
     | 
| 
      
 693 
     | 
    
         
            +
                    Cached state is also exchanged. swap() internally exchanges pointers, so
         
     | 
| 
      
 694 
     | 
    
         
            +
                    it is lightweight and does not allocate memory.
         
     | 
| 
      
 695 
     | 
    
         
            +
             
     | 
| 
      
 696 
     | 
    
         
            +
                    swap() usage has largely been replaced by operator=(const SkPath& path).
         
     | 
| 
      
 697 
     | 
    
         
            +
                    SkPath do not copy their content on assignment until they are written to,
         
     | 
| 
      
 698 
     | 
    
         
            +
                    making assignment as efficient as swap().
         
     | 
| 
      
 699 
     | 
    
         
            +
             
     | 
| 
      
 700 
     | 
    
         
            +
                    @param other  SkPath exchanged by value
         
     | 
| 
      
 701 
     | 
    
         
            +
             
     | 
| 
      
 702 
     | 
    
         
            +
                    example: https://fiddle.skia.org/c/@Path_swap
         
     | 
| 
      
 703 
     | 
    
         
            +
                */
         
     | 
| 
      
 704 
     | 
    
         
            +
                void swap(SkPath& other);
         
     | 
| 
      
 705 
     | 
    
         
            +
             
     | 
| 
      
 706 
     | 
    
         
            +
                /** Interpolates between SkPath with SkPoint array of equal size.
         
     | 
| 
      
 707 
     | 
    
         
            +
                    Copy verb array and weights to out, and set out SkPoint array to a weighted
         
     | 
| 
      
 708 
     | 
    
         
            +
                    average of this SkPoint array and ending SkPoint array, using the formula:
         
     | 
| 
      
 709 
     | 
    
         
            +
                    (Path Point * weight) + ending Point * (1 - weight).
         
     | 
| 
      
 710 
     | 
    
         
            +
             
     | 
| 
      
 711 
     | 
    
         
            +
                    weight is most useful when between zero (ending SkPoint array) and
         
     | 
| 
      
 712 
     | 
    
         
            +
                    one (this Point_Array); will work with values outside of this
         
     | 
| 
      
 713 
     | 
    
         
            +
                    range.
         
     | 
| 
      
 714 
     | 
    
         
            +
             
     | 
| 
      
 715 
     | 
    
         
            +
                    interpolate() returns false and leaves out unchanged if SkPoint array is not
         
     | 
| 
      
 716 
     | 
    
         
            +
                    the same size as ending SkPoint array. Call isInterpolatable() to check SkPath
         
     | 
| 
      
 717 
     | 
    
         
            +
                    compatibility prior to calling interpolate().
         
     | 
| 
      
 718 
     | 
    
         
            +
             
     | 
| 
      
 719 
     | 
    
         
            +
                    @param ending  SkPoint array averaged with this SkPoint array
         
     | 
| 
      
 720 
     | 
    
         
            +
                    @param weight  contribution of this SkPoint array, and
         
     | 
| 
      
 721 
     | 
    
         
            +
                                   one minus contribution of ending SkPoint array
         
     | 
| 
      
 722 
     | 
    
         
            +
                    @param out     SkPath replaced by interpolated averages
         
     | 
| 
      
 723 
     | 
    
         
            +
                    @return        true if SkPath contain same number of SkPoint
         
     | 
| 
      
 724 
     | 
    
         
            +
             
     | 
| 
      
 725 
     | 
    
         
            +
                    example: https://fiddle.skia.org/c/@Path_interpolate
         
     | 
| 
      
 726 
     | 
    
         
            +
                */
         
     | 
| 
      
 727 
     | 
    
         
            +
                bool interpolate(const SkPath& ending, SkScalar weight, SkPath* out) const;
         
     | 
| 
      
 728 
     | 
    
         
            +
             
     | 
| 
      
 729 
     | 
    
         
            +
                /** Sets SkPathFillType, the rule used to fill SkPath. While there is no
         
     | 
| 
      
 730 
     | 
    
         
            +
                    check that ft is legal, values outside of SkPathFillType are not supported.
         
     | 
| 
      
 731 
     | 
    
         
            +
                */
         
     | 
| 
      
 732 
     | 
    
         
            +
                void setFillType(SkPathFillType ft) {
         
     | 
| 
      
 733 
     | 
    
         
            +
                    fFillType = SkToU8(ft);
         
     | 
| 
      
 734 
     | 
    
         
            +
                }
         
     | 
| 
      
 735 
     | 
    
         
            +
             
     | 
| 
      
 736 
     | 
    
         
            +
                /** Replaces SkPathFillType with its inverse. The inverse of SkPathFillType describes the area
         
     | 
| 
      
 737 
     | 
    
         
            +
                    unmodified by the original SkPathFillType.
         
     | 
| 
      
 738 
     | 
    
         
            +
                */
         
     | 
| 
      
 739 
     | 
    
         
            +
                void toggleInverseFillType() {
         
     | 
| 
      
 740 
     | 
    
         
            +
                    fFillType ^= 2;
         
     | 
| 
      
 741 
     | 
    
         
            +
                }
         
     | 
| 
      
 742 
     | 
    
         
            +
             
     | 
| 
      
 743 
     | 
    
         
            +
            #ifdef SK_HIDE_PATH_EDIT_METHODS
         
     | 
| 
      
 744 
     | 
    
         
            +
            private:
         
     | 
| 
      
 745 
     | 
    
         
            +
            #endif
         
     | 
| 
      
 746 
     | 
    
         
            +
                /** Returns a copy of this path in the current state, and resets the path to empty. */
         
     | 
| 
      
 747 
     | 
    
         
            +
                SkPath detach() {
         
     | 
| 
      
 748 
     | 
    
         
            +
                    SkPath result = *this;
         
     | 
| 
      
 749 
     | 
    
         
            +
                    this->reset();
         
     | 
| 
      
 750 
     | 
    
         
            +
                    return result;
         
     | 
| 
      
 751 
     | 
    
         
            +
                }
         
     | 
| 
      
 752 
     | 
    
         
            +
             
     | 
| 
      
 753 
     | 
    
         
            +
                /** Sets SkPath to its initial state.
         
     | 
| 
      
 754 
     | 
    
         
            +
                    Removes verb array, SkPoint array, and weights, and sets FillType to kWinding.
         
     | 
| 
      
 755 
     | 
    
         
            +
                    Internal storage associated with SkPath is released.
         
     | 
| 
      
 756 
     | 
    
         
            +
             
     | 
| 
      
 757 
     | 
    
         
            +
                    @return  reference to SkPath
         
     | 
| 
      
 758 
     | 
    
         
            +
             
     | 
| 
      
 759 
     | 
    
         
            +
                    example: https://fiddle.skia.org/c/@Path_reset
         
     | 
| 
      
 760 
     | 
    
         
            +
                */
         
     | 
| 
      
 761 
     | 
    
         
            +
                SkPath& reset();
         
     | 
| 
      
 762 
     | 
    
         
            +
             
     | 
| 
      
 763 
     | 
    
         
            +
                /** Sets SkPath to its initial state, preserving internal storage.
         
     | 
| 
      
 764 
     | 
    
         
            +
                    Removes verb array, SkPoint array, and weights, and sets FillType to kWinding.
         
     | 
| 
      
 765 
     | 
    
         
            +
                    Internal storage associated with SkPath is retained.
         
     | 
| 
      
 766 
     | 
    
         
            +
             
     | 
| 
      
 767 
     | 
    
         
            +
                    Use rewind() instead of reset() if SkPath storage will be reused and performance
         
     | 
| 
      
 768 
     | 
    
         
            +
                    is critical.
         
     | 
| 
       601 
769 
     | 
    
         | 
| 
       602 
     | 
    
         
            -
                    @ 
     | 
| 
       603 
     | 
    
         
            -
                    @return      true if rect is contained
         
     | 
| 
      
 770 
     | 
    
         
            +
                    @return  reference to SkPath
         
     | 
| 
       604 
771 
     | 
    
         | 
| 
       605 
     | 
    
         
            -
                    example: https://fiddle.skia.org/c/@ 
     | 
| 
      
 772 
     | 
    
         
            +
                    example: https://fiddle.skia.org/c/@Path_rewind
         
     | 
| 
       606 
773 
     | 
    
         
             
                */
         
     | 
| 
       607 
     | 
    
         
            -
                 
     | 
| 
       608 
     | 
    
         
            -
             
     | 
| 
       609 
     | 
    
         
            -
            #ifdef SK_HIDE_PATH_EDIT_METHODS
         
     | 
| 
       610 
     | 
    
         
            -
            private:
         
     | 
| 
       611 
     | 
    
         
            -
            #endif
         
     | 
| 
      
 774 
     | 
    
         
            +
                SkPath& rewind();
         
     | 
| 
       612 
775 
     | 
    
         | 
| 
       613 
776 
     | 
    
         
             
                /** Grows SkPath verb array, SkPoint array, and conics to contain additional space.
         
     | 
| 
       614 
777 
     | 
    
         
             
                    May improve performance and use less memory by
         
     | 
| 
         @@ -622,24 +785,16 @@ private: 
     | 
|
| 
       622 
785 
     | 
    
         
             
                */
         
     | 
| 
       623 
786 
     | 
    
         
             
                void incReserve(int extraPtCount, int extraVerbCount = 0, int extraConicCount = 0);
         
     | 
| 
       624 
787 
     | 
    
         | 
| 
       625 
     | 
    
         
            -
                /**  
     | 
| 
       626 
     | 
    
         
            -
             
     | 
| 
       627 
     | 
    
         
            -
             
     | 
| 
       628 
     | 
    
         
            -
             
     | 
| 
       629 
     | 
    
         
            -
             
     | 
| 
       630 
     | 
    
         
            -
             
     | 
| 
       631 
     | 
    
         
            -
             
     | 
| 
       632 
     | 
    
         
            -
                */
         
     | 
| 
       633 
     | 
    
         
            -
                SkPath& moveTo(SkScalar x, SkScalar y);
         
     | 
| 
       634 
     | 
    
         
            -
             
     | 
| 
       635 
     | 
    
         
            -
                /** Adds beginning of contour at SkPoint p.
         
     | 
| 
       636 
     | 
    
         
            -
             
     | 
| 
       637 
     | 
    
         
            -
                    @param p  contour start
         
     | 
| 
       638 
     | 
    
         
            -
                    @return   reference to SkPath
         
     | 
| 
       639 
     | 
    
         
            -
                */
         
     | 
| 
       640 
     | 
    
         
            -
                SkPath& moveTo(const SkPoint& p) {
         
     | 
| 
      
 788 
     | 
    
         
            +
                /** Specifies the beginning of contour. If the previous verb was a "move" verb,
         
     | 
| 
      
 789 
     | 
    
         
            +
                 *  then this just replaces the point value of that move, otherwise it appends a new
         
     | 
| 
      
 790 
     | 
    
         
            +
                 *  "move" verb to the path using the point.
         
     | 
| 
      
 791 
     | 
    
         
            +
                 *
         
     | 
| 
      
 792 
     | 
    
         
            +
                 *  Thus, each contour can only have 1 move verb in it (the last one specified).
         
     | 
| 
      
 793 
     | 
    
         
            +
                 */
         
     | 
| 
      
 794 
     | 
    
         
            +
                SkPath& moveTo(SkPoint p) {
         
     | 
| 
       641 
795 
     | 
    
         
             
                    return this->moveTo(p.fX, p.fY);
         
     | 
| 
       642 
796 
     | 
    
         
             
                }
         
     | 
| 
      
 797 
     | 
    
         
            +
                SkPath& moveTo(SkScalar x, SkScalar y);
         
     | 
| 
       643 
798 
     | 
    
         | 
| 
       644 
799 
     | 
    
         
             
                /** Adds beginning of contour relative to last point.
         
     | 
| 
       645 
800 
     | 
    
         
             
                    If SkPath is empty, starts contour at (dx, dy).
         
     | 
| 
         @@ -962,15 +1117,6 @@ private: 
     | 
|
| 
       962 
1117 
     | 
    
         
             
                    return this->arcTo(p1.fX, p1.fY, p2.fX, p2.fY, radius);
         
     | 
| 
       963 
1118 
     | 
    
         
             
                }
         
     | 
| 
       964 
1119 
     | 
    
         | 
| 
       965 
     | 
    
         
            -
                /** \enum SkPath::ArcSize
         
     | 
| 
       966 
     | 
    
         
            -
                    Four oval parts with radii (rx, ry) start at last SkPath SkPoint and ends at (x, y).
         
     | 
| 
       967 
     | 
    
         
            -
                    ArcSize and Direction select one of the four oval parts.
         
     | 
| 
       968 
     | 
    
         
            -
                */
         
     | 
| 
       969 
     | 
    
         
            -
                enum ArcSize {
         
     | 
| 
       970 
     | 
    
         
            -
                    kSmall_ArcSize, //!< smaller of arc pair
         
     | 
| 
       971 
     | 
    
         
            -
                    kLarge_ArcSize, //!< larger of arc pair
         
     | 
| 
       972 
     | 
    
         
            -
                };
         
     | 
| 
       973 
     | 
    
         
            -
             
     | 
| 
       974 
1120 
     | 
    
         
             
                /** Appends arc to SkPath. Arc is implemented by one or more conics weighted to
         
     | 
| 
       975 
1121 
     | 
    
         
             
                    describe part of oval with radii (rx, ry) rotated by xAxisRotate degrees. Arc
         
     | 
| 
       976 
1122 
     | 
    
         
             
                    curves from last SkPath SkPoint to (x, y), choosing one of four possible routes:
         
     | 
| 
         @@ -1069,59 +1215,6 @@ private: 
     | 
|
| 
       1069 
1215 
     | 
    
         
             
                */
         
     | 
| 
       1070 
1216 
     | 
    
         
             
                SkPath& close();
         
     | 
| 
       1071 
1217 
     | 
    
         | 
| 
       1072 
     | 
    
         
            -
            #ifdef SK_HIDE_PATH_EDIT_METHODS
         
     | 
| 
       1073 
     | 
    
         
            -
            public:
         
     | 
| 
       1074 
     | 
    
         
            -
            #endif
         
     | 
| 
       1075 
     | 
    
         
            -
             
     | 
| 
       1076 
     | 
    
         
            -
                /** Approximates conic with quad array. Conic is constructed from start SkPoint p0,
         
     | 
| 
       1077 
     | 
    
         
            -
                    control SkPoint p1, end SkPoint p2, and weight w.
         
     | 
| 
       1078 
     | 
    
         
            -
                    Quad array is stored in pts; this storage is supplied by caller.
         
     | 
| 
       1079 
     | 
    
         
            -
                    Maximum quad count is 2 to the pow2.
         
     | 
| 
       1080 
     | 
    
         
            -
                    Every third point in array shares last SkPoint of previous quad and first SkPoint of
         
     | 
| 
       1081 
     | 
    
         
            -
                    next quad. Maximum pts storage size is given by:
         
     | 
| 
       1082 
     | 
    
         
            -
                    (1 + 2 * (1 << pow2)) * sizeof(SkPoint).
         
     | 
| 
       1083 
     | 
    
         
            -
             
     | 
| 
       1084 
     | 
    
         
            -
                    Returns quad count used the approximation, which may be smaller
         
     | 
| 
       1085 
     | 
    
         
            -
                    than the number requested.
         
     | 
| 
       1086 
     | 
    
         
            -
             
     | 
| 
       1087 
     | 
    
         
            -
                    conic weight determines the amount of influence conic control point has on the curve.
         
     | 
| 
       1088 
     | 
    
         
            -
                    w less than one represents an elliptical section. w greater than one represents
         
     | 
| 
       1089 
     | 
    
         
            -
                    a hyperbolic section. w equal to one represents a parabolic section.
         
     | 
| 
       1090 
     | 
    
         
            -
             
     | 
| 
       1091 
     | 
    
         
            -
                    Two quad curves are sufficient to approximate an elliptical conic with a sweep
         
     | 
| 
       1092 
     | 
    
         
            -
                    of up to 90 degrees; in this case, set pow2 to one.
         
     | 
| 
       1093 
     | 
    
         
            -
             
     | 
| 
       1094 
     | 
    
         
            -
                    @param p0    conic start SkPoint
         
     | 
| 
       1095 
     | 
    
         
            -
                    @param p1    conic control SkPoint
         
     | 
| 
       1096 
     | 
    
         
            -
                    @param p2    conic end SkPoint
         
     | 
| 
       1097 
     | 
    
         
            -
                    @param w     conic weight
         
     | 
| 
       1098 
     | 
    
         
            -
                    @param pts   storage for quad array
         
     | 
| 
       1099 
     | 
    
         
            -
                    @param pow2  quad count, as power of two, normally 0 to 5 (1 to 32 quad curves)
         
     | 
| 
       1100 
     | 
    
         
            -
                    @return      number of quad curves written to pts
         
     | 
| 
       1101 
     | 
    
         
            -
                */
         
     | 
| 
       1102 
     | 
    
         
            -
                static int ConvertConicToQuads(const SkPoint& p0, const SkPoint& p1, const SkPoint& p2,
         
     | 
| 
       1103 
     | 
    
         
            -
                                               SkScalar w, SkPoint pts[], int pow2);
         
     | 
| 
       1104 
     | 
    
         
            -
             
     | 
| 
       1105 
     | 
    
         
            -
                /** Returns true if SkPath is equivalent to SkRect when filled.
         
     | 
| 
       1106 
     | 
    
         
            -
                    If false: rect, isClosed, and direction are unchanged.
         
     | 
| 
       1107 
     | 
    
         
            -
                    If true: rect, isClosed, and direction are written to if not nullptr.
         
     | 
| 
       1108 
     | 
    
         
            -
             
     | 
| 
       1109 
     | 
    
         
            -
                    rect may be smaller than the SkPath bounds. SkPath bounds may include kMove_Verb points
         
     | 
| 
       1110 
     | 
    
         
            -
                    that do not alter the area drawn by the returned rect.
         
     | 
| 
       1111 
     | 
    
         
            -
             
     | 
| 
       1112 
     | 
    
         
            -
                    @param rect       storage for bounds of SkRect; may be nullptr
         
     | 
| 
       1113 
     | 
    
         
            -
                    @param isClosed   storage set to true if SkPath is closed; may be nullptr
         
     | 
| 
       1114 
     | 
    
         
            -
                    @param direction  storage set to SkRect direction; may be nullptr
         
     | 
| 
       1115 
     | 
    
         
            -
                    @return           true if SkPath contains SkRect
         
     | 
| 
       1116 
     | 
    
         
            -
             
     | 
| 
       1117 
     | 
    
         
            -
                    example: https://fiddle.skia.org/c/@Path_isRect
         
     | 
| 
       1118 
     | 
    
         
            -
                */
         
     | 
| 
       1119 
     | 
    
         
            -
                bool isRect(SkRect* rect, bool* isClosed = nullptr, SkPathDirection* direction = nullptr) const;
         
     | 
| 
       1120 
     | 
    
         
            -
             
     | 
| 
       1121 
     | 
    
         
            -
            #ifdef SK_HIDE_PATH_EDIT_METHODS
         
     | 
| 
       1122 
     | 
    
         
            -
            private:
         
     | 
| 
       1123 
     | 
    
         
            -
            #endif
         
     | 
| 
       1124 
     | 
    
         
            -
             
     | 
| 
       1125 
1218 
     | 
    
         
             
                /** Adds a new contour to the path, defined by the rect, and wound in the
         
     | 
| 
       1126 
1219 
     | 
    
         
             
                    specified direction. The verbs added to the path will be:
         
     | 
| 
       1127 
1220 
     | 
    
         | 
| 
         @@ -1296,23 +1389,6 @@ private: 
     | 
|
| 
       1296 
1389 
     | 
    
         
             
                */
         
     | 
| 
       1297 
1390 
     | 
    
         
             
                SkPath& addPoly(SkSpan<const SkPoint> pts, bool close);
         
     | 
| 
       1298 
1391 
     | 
    
         | 
| 
       1299 
     | 
    
         
            -
                /** \enum SkPath::AddPathMode
         
     | 
| 
       1300 
     | 
    
         
            -
                    AddPathMode chooses how addPath() appends. Adding one SkPath to another can extend
         
     | 
| 
       1301 
     | 
    
         
            -
                    the last contour or start a new contour.
         
     | 
| 
       1302 
     | 
    
         
            -
                */
         
     | 
| 
       1303 
     | 
    
         
            -
                enum AddPathMode {
         
     | 
| 
       1304 
     | 
    
         
            -
                    /** Contours are appended to the destination path as new contours.
         
     | 
| 
       1305 
     | 
    
         
            -
                    */
         
     | 
| 
       1306 
     | 
    
         
            -
                    kAppend_AddPathMode,
         
     | 
| 
       1307 
     | 
    
         
            -
                    /** Extends the last contour of the destination path with the first countour
         
     | 
| 
       1308 
     | 
    
         
            -
                        of the source path, connecting them with a line.  If the last contour is
         
     | 
| 
       1309 
     | 
    
         
            -
                        closed, a new empty contour starting at its start point is extended instead.
         
     | 
| 
       1310 
     | 
    
         
            -
                        If the destination path is empty, the result is the source path.
         
     | 
| 
       1311 
     | 
    
         
            -
                        The last path of the result is closed only if the last path of the source is.
         
     | 
| 
       1312 
     | 
    
         
            -
                    */
         
     | 
| 
       1313 
     | 
    
         
            -
                    kExtend_AddPathMode,
         
     | 
| 
       1314 
     | 
    
         
            -
                };
         
     | 
| 
       1315 
     | 
    
         
            -
             
     | 
| 
       1316 
1392 
     | 
    
         
             
                /** Appends src to SkPath, offset by (dx, dy).
         
     | 
| 
       1317 
1393 
     | 
    
         | 
| 
       1318 
1394 
     | 
    
         
             
                    If mode is kAppend_AddPathMode, src verb array, SkPoint array, and conic weights are
         
     | 
| 
         @@ -1369,17 +1445,6 @@ private: 
     | 
|
| 
       1369 
1445 
     | 
    
         
             
                */
         
     | 
| 
       1370 
1446 
     | 
    
         
             
                SkPath& reverseAddPath(const SkPath& src);
         
     | 
| 
       1371 
1447 
     | 
    
         | 
| 
       1372 
     | 
    
         
            -
            #ifdef SK_HIDE_PATH_EDIT_METHODS
         
     | 
| 
       1373 
     | 
    
         
            -
            public:
         
     | 
| 
       1374 
     | 
    
         
            -
            #endif
         
     | 
| 
       1375 
     | 
    
         
            -
                SkPath makeOffset(SkScalar dx, SkScalar dy) const {
         
     | 
| 
       1376 
     | 
    
         
            -
                    SkPath dst;
         
     | 
| 
       1377 
     | 
    
         
            -
                    this->offset(dx, dy, &dst);
         
     | 
| 
       1378 
     | 
    
         
            -
                    return dst;
         
     | 
| 
       1379 
     | 
    
         
            -
                }
         
     | 
| 
       1380 
     | 
    
         
            -
            #ifdef SK_HIDE_PATH_EDIT_METHODS
         
     | 
| 
       1381 
     | 
    
         
            -
            private:
         
     | 
| 
       1382 
     | 
    
         
            -
            #endif
         
     | 
| 
       1383 
1448 
     | 
    
         
             
                /** Offsets SkPoint array by (dx, dy). Offset SkPath replaces dst.
         
     | 
| 
       1384 
1449 
     | 
    
         
             
                    If dst is nullptr, SkPath is replaced by offset data.
         
     | 
| 
       1385 
1450 
     | 
    
         | 
| 
         @@ -1412,8 +1477,7 @@ private: 
     | 
|
| 
       1412 
1477 
     | 
    
         | 
| 
       1413 
1478 
     | 
    
         
             
                    example: https://fiddle.skia.org/c/@Path_transform
         
     | 
| 
       1414 
1479 
     | 
    
         
             
                */
         
     | 
| 
       1415 
     | 
    
         
            -
                void transform(const SkMatrix& matrix, SkPath* dst 
     | 
| 
       1416 
     | 
    
         
            -
                               SkApplyPerspectiveClip pc = SkApplyPerspectiveClip::kYes) const;
         
     | 
| 
      
 1480 
     | 
    
         
            +
                void transform(const SkMatrix& matrix, SkPath* dst) const;
         
     | 
| 
       1417 
1481 
     | 
    
         | 
| 
       1418 
1482 
     | 
    
         
             
                /** Transforms verb array, SkPoint array, and weight by matrix.
         
     | 
| 
       1419 
1483 
     | 
    
         
             
                    transform may change verbs and increase their number.
         
     | 
| 
         @@ -1422,39 +1486,11 @@ private: 
     | 
|
| 
       1422 
1486 
     | 
    
         
             
                    @param matrix  SkMatrix to apply to SkPath
         
     | 
| 
       1423 
1487 
     | 
    
         
             
                    @param pc      whether to apply perspective clipping
         
     | 
| 
       1424 
1488 
     | 
    
         
             
                */
         
     | 
| 
       1425 
     | 
    
         
            -
                SkPath& transform(const SkMatrix& matrix 
     | 
| 
       1426 
     | 
    
         
            -
             
     | 
| 
       1427 
     | 
    
         
            -
                    this->transform(matrix, this, pc);
         
     | 
| 
      
 1489 
     | 
    
         
            +
                SkPath& transform(const SkMatrix& matrix) {
         
     | 
| 
      
 1490 
     | 
    
         
            +
                    this->transform(matrix, this);
         
     | 
| 
       1428 
1491 
     | 
    
         
             
                    return *this;
         
     | 
| 
       1429 
1492 
     | 
    
         
             
                }
         
     | 
| 
       1430 
     | 
    
         
            -
            #ifdef SK_HIDE_PATH_EDIT_METHODS
         
     | 
| 
       1431 
     | 
    
         
            -
            public:
         
     | 
| 
       1432 
     | 
    
         
            -
            #endif
         
     | 
| 
       1433 
     | 
    
         
            -
             
     | 
| 
       1434 
     | 
    
         
            -
                SkPath makeTransform(const SkMatrix& m,
         
     | 
| 
       1435 
     | 
    
         
            -
                                     SkApplyPerspectiveClip pc = SkApplyPerspectiveClip::kYes) const {
         
     | 
| 
       1436 
     | 
    
         
            -
                    SkPath dst;
         
     | 
| 
       1437 
     | 
    
         
            -
                    this->transform(m, &dst, pc);
         
     | 
| 
       1438 
     | 
    
         
            -
                    return dst;
         
     | 
| 
       1439 
     | 
    
         
            -
                }
         
     | 
| 
       1440 
     | 
    
         
            -
             
     | 
| 
       1441 
     | 
    
         
            -
                SkPath makeScale(SkScalar sx, SkScalar sy) const {
         
     | 
| 
       1442 
     | 
    
         
            -
                    return this->makeTransform(SkMatrix::Scale(sx, sy), SkApplyPerspectiveClip::kNo);
         
     | 
| 
       1443 
     | 
    
         
            -
                }
         
     | 
| 
       1444 
     | 
    
         
            -
             
     | 
| 
       1445 
     | 
    
         
            -
                /** Returns last point on SkPath in lastPt. Returns false if SkPoint array is empty,
         
     | 
| 
       1446 
     | 
    
         
            -
                    storing (0, 0) if lastPt is not nullptr.
         
     | 
| 
       1447 
     | 
    
         
            -
             
     | 
| 
       1448 
     | 
    
         
            -
                    @param lastPt  storage for final SkPoint in SkPoint array; may be nullptr
         
     | 
| 
       1449 
     | 
    
         
            -
                    @return        true if SkPoint array contains one or more SkPoint
         
     | 
| 
       1450 
     | 
    
         
            -
             
     | 
| 
       1451 
     | 
    
         
            -
                    example: https://fiddle.skia.org/c/@Path_getLastPt
         
     | 
| 
       1452 
     | 
    
         
            -
                */
         
     | 
| 
       1453 
     | 
    
         
            -
                bool getLastPt(SkPoint* lastPt) const;
         
     | 
| 
       1454 
1493 
     | 
    
         | 
| 
       1455 
     | 
    
         
            -
            #ifdef SK_HIDE_PATH_EDIT_METHODS
         
     | 
| 
       1456 
     | 
    
         
            -
            private:
         
     | 
| 
       1457 
     | 
    
         
            -
            #endif
         
     | 
| 
       1458 
1494 
     | 
    
         
             
                /** Sets last point to (x, y). If SkPoint array is empty, append kMove_Verb to
         
     | 
| 
       1459 
1495 
     | 
    
         
             
                    verb array and append (x, y) to SkPoint array.
         
     | 
| 
       1460 
1496 
     | 
    
         | 
| 
         @@ -1473,44 +1509,51 @@ private: 
     | 
|
| 
       1473 
1509 
     | 
    
         
             
                void setLastPt(const SkPoint& p) {
         
     | 
| 
       1474 
1510 
     | 
    
         
             
                    this->setLastPt(p.fX, p.fY);
         
     | 
| 
       1475 
1511 
     | 
    
         
             
                }
         
     | 
| 
      
 1512 
     | 
    
         
            +
             
     | 
| 
       1476 
1513 
     | 
    
         
             
            #ifdef SK_HIDE_PATH_EDIT_METHODS
         
     | 
| 
       1477 
1514 
     | 
    
         
             
            public:
         
     | 
| 
      
 1515 
     | 
    
         
            +
            #endif
         
     | 
| 
      
 1516 
     | 
    
         
            +
            #ifdef SK_SUPPORT_UNSPANNED_APIS
         
     | 
| 
      
 1517 
     | 
    
         
            +
                static SkPath Make(const SkPoint points[], int pointCount,
         
     | 
| 
      
 1518 
     | 
    
         
            +
                                   const uint8_t verbs[], int verbCount,
         
     | 
| 
      
 1519 
     | 
    
         
            +
                                   const SkScalar conics[], int conicWeightCount,
         
     | 
| 
      
 1520 
     | 
    
         
            +
                                   SkPathFillType fillType, bool isVolatile = false) {
         
     | 
| 
      
 1521 
     | 
    
         
            +
                    return Make({points, pointCount},
         
     | 
| 
      
 1522 
     | 
    
         
            +
                                {verbs, verbCount},
         
     | 
| 
      
 1523 
     | 
    
         
            +
                                {conics, conicWeightCount},
         
     | 
| 
      
 1524 
     | 
    
         
            +
                                fillType, isVolatile);
         
     | 
| 
      
 1525 
     | 
    
         
            +
                }
         
     | 
| 
      
 1526 
     | 
    
         
            +
                static SkPath Polygon(const SkPoint pts[], int count, bool isClosed,
         
     | 
| 
      
 1527 
     | 
    
         
            +
                                      SkPathFillType fillType = SkPathFillType::kWinding,
         
     | 
| 
      
 1528 
     | 
    
         
            +
                                      bool isVolatile = false) {
         
     | 
| 
      
 1529 
     | 
    
         
            +
                    return Polygon({pts, count}, isClosed, fillType, isVolatile);
         
     | 
| 
      
 1530 
     | 
    
         
            +
                }
         
     | 
| 
      
 1531 
     | 
    
         
            +
                int getPoints(SkPoint points[], int max) const {
         
     | 
| 
      
 1532 
     | 
    
         
            +
                    return (int)this->getPoints({points, max});
         
     | 
| 
      
 1533 
     | 
    
         
            +
                }
         
     | 
| 
      
 1534 
     | 
    
         
            +
                int getVerbs(uint8_t verbs[], int max) const {
         
     | 
| 
      
 1535 
     | 
    
         
            +
                    return (int)this->getVerbs({verbs, max});
         
     | 
| 
      
 1536 
     | 
    
         
            +
                }
         
     | 
| 
      
 1537 
     | 
    
         
            +
                SkPath& addRoundRect(const SkRect& rect, const SkScalar radii[],
         
     | 
| 
      
 1538 
     | 
    
         
            +
                                     SkPathDirection dir = SkPathDirection::kCW) {
         
     | 
| 
      
 1539 
     | 
    
         
            +
                    return this->addRoundRect(rect, {radii, radii ? 8 : 0}, dir);
         
     | 
| 
      
 1540 
     | 
    
         
            +
                }
         
     | 
| 
      
 1541 
     | 
    
         
            +
                SkPath& addPoly(const SkPoint pts[], int count, bool close) {
         
     | 
| 
      
 1542 
     | 
    
         
            +
                    return this->addPoly({pts, count}, close);
         
     | 
| 
      
 1543 
     | 
    
         
            +
                }
         
     | 
| 
       1478 
1544 
     | 
    
         
             
            #endif
         
     | 
| 
       1479 
1545 
     | 
    
         | 
| 
      
 1546 
     | 
    
         
            +
                SkPathIter iter() const;
         
     | 
| 
       1480 
1547 
     | 
    
         | 
| 
       1481 
     | 
    
         
            -
                 
     | 
| 
       1482 
     | 
    
         
            -
                     
     | 
| 
       1483 
     | 
    
         
            -
                     
     | 
| 
       1484 
     | 
    
         
            -
             
     | 
| 
       1485 
     | 
    
         
            -
                enum SegmentMask {
         
     | 
| 
       1486 
     | 
    
         
            -
                    kLine_SegmentMask  = kLine_SkPathSegmentMask,
         
     | 
| 
       1487 
     | 
    
         
            -
                    kQuad_SegmentMask  = kQuad_SkPathSegmentMask,
         
     | 
| 
       1488 
     | 
    
         
            -
                    kConic_SegmentMask = kConic_SkPathSegmentMask,
         
     | 
| 
       1489 
     | 
    
         
            -
                    kCubic_SegmentMask = kCubic_SkPathSegmentMask,
         
     | 
| 
       1490 
     | 
    
         
            -
                };
         
     | 
| 
       1491 
     | 
    
         
            -
             
     | 
| 
       1492 
     | 
    
         
            -
                /** Returns a mask, where each set bit corresponds to a SegmentMask constant
         
     | 
| 
       1493 
     | 
    
         
            -
                    if SkPath contains one or more verbs of that type.
         
     | 
| 
       1494 
     | 
    
         
            -
                    Returns zero if SkPath contains no lines, or curves: quads, conics, or cubics.
         
     | 
| 
       1495 
     | 
    
         
            -
             
     | 
| 
       1496 
     | 
    
         
            -
                    getSegmentMasks() returns a cached result; it is very fast.
         
     | 
| 
       1497 
     | 
    
         
            -
             
     | 
| 
       1498 
     | 
    
         
            -
                    @return  SegmentMask bits or zero
         
     | 
| 
       1499 
     | 
    
         
            -
                */
         
     | 
| 
       1500 
     | 
    
         
            -
                uint32_t getSegmentMasks() const;
         
     | 
| 
      
 1548 
     | 
    
         
            +
                struct IterRec {
         
     | 
| 
      
 1549 
     | 
    
         
            +
                    SkPathVerb            fVerb;
         
     | 
| 
      
 1550 
     | 
    
         
            +
                    SkSpan<const SkPoint> fPoints;
         
     | 
| 
      
 1551 
     | 
    
         
            +
                    float                 fConicWeight;
         
     | 
| 
       1501 
1552 
     | 
    
         | 
| 
       1502 
     | 
    
         
            -
             
     | 
| 
       1503 
     | 
    
         
            -
             
     | 
| 
       1504 
     | 
    
         
            -
             
     | 
| 
       1505 
     | 
    
         
            -
             
     | 
| 
       1506 
     | 
    
         
            -
                enum Verb {
         
     | 
| 
       1507 
     | 
    
         
            -
                    kMove_Verb  = static_cast<int>(SkPathVerb::kMove),
         
     | 
| 
       1508 
     | 
    
         
            -
                    kLine_Verb  = static_cast<int>(SkPathVerb::kLine),
         
     | 
| 
       1509 
     | 
    
         
            -
                    kQuad_Verb  = static_cast<int>(SkPathVerb::kQuad),
         
     | 
| 
       1510 
     | 
    
         
            -
                    kConic_Verb = static_cast<int>(SkPathVerb::kConic),
         
     | 
| 
       1511 
     | 
    
         
            -
                    kCubic_Verb = static_cast<int>(SkPathVerb::kCubic),
         
     | 
| 
       1512 
     | 
    
         
            -
                    kClose_Verb = static_cast<int>(SkPathVerb::kClose),
         
     | 
| 
       1513 
     | 
    
         
            -
                    kDone_Verb  = kClose_Verb + 1
         
     | 
| 
      
 1553 
     | 
    
         
            +
                    float conicWeight() const {
         
     | 
| 
      
 1554 
     | 
    
         
            +
                        SkASSERT(fVerb == SkPathVerb::kConic);
         
     | 
| 
      
 1555 
     | 
    
         
            +
                        return fConicWeight;
         
     | 
| 
      
 1556 
     | 
    
         
            +
                    }
         
     | 
| 
       1514 
1557 
     | 
    
         
             
                };
         
     | 
| 
       1515 
1558 
     | 
    
         | 
| 
       1516 
1559 
     | 
    
         
             
                /** \class SkPath::Iter
         
     | 
| 
         @@ -1566,6 +1609,8 @@ public: 
     | 
|
| 
       1566 
1609 
     | 
    
         
             
                    */
         
     | 
| 
       1567 
1610 
     | 
    
         
             
                    Verb next(SkPoint pts[4]);
         
     | 
| 
       1568 
1611 
     | 
    
         | 
| 
      
 1612 
     | 
    
         
            +
                    std::optional<IterRec> next();
         
     | 
| 
      
 1613 
     | 
    
         
            +
             
     | 
| 
       1569 
1614 
     | 
    
         
             
                    /** Returns conic weight if next() returned kConic_Verb.
         
     | 
| 
       1570 
1615 
     | 
    
         | 
| 
       1571 
1616 
     | 
    
         
             
                        If next() has not been called, or next() did not return kConic_Verb,
         
     | 
| 
         @@ -1597,49 +1642,20 @@ public: 
     | 
|
| 
       1597 
1642 
     | 
    
         
             
                    bool isClosedContour() const;
         
     | 
| 
       1598 
1643 
     | 
    
         | 
| 
       1599 
1644 
     | 
    
         
             
                private:
         
     | 
| 
       1600 
     | 
    
         
            -
                    const SkPoint* 
     | 
| 
       1601 
     | 
    
         
            -
                    const  
     | 
| 
       1602 
     | 
    
         
            -
                    const  
     | 
| 
       1603 
     | 
    
         
            -
                    const SkScalar* 
     | 
| 
       1604 
     | 
    
         
            -
                    SkPoint 
     | 
| 
       1605 
     | 
    
         
            -
                    SkPoint 
     | 
| 
       1606 
     | 
    
         
            -
                     
     | 
| 
       1607 
     | 
    
         
            -
                    bool 
     | 
| 
       1608 
     | 
    
         
            -
                    bool 
     | 
| 
       1609 
     | 
    
         
            -
             
     | 
| 
       1610 
     | 
    
         
            -
             
     | 
| 
      
 1645 
     | 
    
         
            +
                    const SkPoint*          fPts;
         
     | 
| 
      
 1646 
     | 
    
         
            +
                    const SkPathVerb*       fVerbs;
         
     | 
| 
      
 1647 
     | 
    
         
            +
                    const SkPathVerb*       fVerbStop;
         
     | 
| 
      
 1648 
     | 
    
         
            +
                    const SkScalar*         fConicWeights;
         
     | 
| 
      
 1649 
     | 
    
         
            +
                    SkPoint                 fMoveTo;
         
     | 
| 
      
 1650 
     | 
    
         
            +
                    SkPoint                 fLastPt;
         
     | 
| 
      
 1651 
     | 
    
         
            +
                    std::array<SkPoint, 4>  fStorage;
         
     | 
| 
      
 1652 
     | 
    
         
            +
                    bool                    fForceClose;
         
     | 
| 
      
 1653 
     | 
    
         
            +
                    bool                    fNeedClose;
         
     | 
| 
      
 1654 
     | 
    
         
            +
                    bool                    fCloseLine;
         
     | 
| 
      
 1655 
     | 
    
         
            +
             
     | 
| 
      
 1656 
     | 
    
         
            +
                    SkPathVerb autoClose(SkPoint pts[2]);
         
     | 
| 
       1611 
1657 
     | 
    
         
             
                };
         
     | 
| 
       1612 
1658 
     | 
    
         | 
| 
       1613 
     | 
    
         
            -
            #ifdef SK_SUPPORT_UNSPANNED_APIS
         
     | 
| 
       1614 
     | 
    
         
            -
                static SkPath Make(const SkPoint points[], int pointCount,
         
     | 
| 
       1615 
     | 
    
         
            -
                                   const uint8_t verbs[], int verbCount,
         
     | 
| 
       1616 
     | 
    
         
            -
                                   const SkScalar conics[], int conicWeightCount,
         
     | 
| 
       1617 
     | 
    
         
            -
                                   SkPathFillType fillType, bool isVolatile = false) {
         
     | 
| 
       1618 
     | 
    
         
            -
                    return Make({points, pointCount},
         
     | 
| 
       1619 
     | 
    
         
            -
                                {verbs, verbCount},
         
     | 
| 
       1620 
     | 
    
         
            -
                                {conics, conicWeightCount},
         
     | 
| 
       1621 
     | 
    
         
            -
                                fillType, isVolatile);
         
     | 
| 
       1622 
     | 
    
         
            -
                }
         
     | 
| 
       1623 
     | 
    
         
            -
                static SkPath Polygon(const SkPoint pts[], int count, bool isClosed,
         
     | 
| 
       1624 
     | 
    
         
            -
                                      SkPathFillType fillType = SkPathFillType::kWinding,
         
     | 
| 
       1625 
     | 
    
         
            -
                                      bool isVolatile = false) {
         
     | 
| 
       1626 
     | 
    
         
            -
                    return Polygon({pts, count}, isClosed, fillType, isVolatile);
         
     | 
| 
       1627 
     | 
    
         
            -
                }
         
     | 
| 
       1628 
     | 
    
         
            -
                int getPoints(SkPoint points[], int max) const {
         
     | 
| 
       1629 
     | 
    
         
            -
                    return (int)this->getPoints({points, max});
         
     | 
| 
       1630 
     | 
    
         
            -
                }
         
     | 
| 
       1631 
     | 
    
         
            -
                int getVerbs(uint8_t verbs[], int max) const {
         
     | 
| 
       1632 
     | 
    
         
            -
                    return (int)this->getVerbs({verbs, max});
         
     | 
| 
       1633 
     | 
    
         
            -
                }
         
     | 
| 
       1634 
     | 
    
         
            -
                SkPath& addRoundRect(const SkRect& rect, const SkScalar radii[],
         
     | 
| 
       1635 
     | 
    
         
            -
                                     SkPathDirection dir = SkPathDirection::kCW) {
         
     | 
| 
       1636 
     | 
    
         
            -
                    return this->addRoundRect(rect, {radii, radii ? 8 : 0}, dir);
         
     | 
| 
       1637 
     | 
    
         
            -
                }
         
     | 
| 
       1638 
     | 
    
         
            -
                SkPath& addPoly(const SkPoint pts[], int count, bool close) {
         
     | 
| 
       1639 
     | 
    
         
            -
                    return this->addPoly({pts, count}, close);
         
     | 
| 
       1640 
     | 
    
         
            -
                }
         
     | 
| 
       1641 
     | 
    
         
            -
            #endif
         
     | 
| 
       1642 
     | 
    
         
            -
             
     | 
| 
       1643 
1659 
     | 
    
         
             
            private:
         
     | 
| 
       1644 
1660 
     | 
    
         
             
                /** \class SkPath::RangeIter
         
     | 
| 
       1645 
1661 
     | 
    
         
             
                    Iterates through a raw range of path verbs, points, and conics. All values are returned
         
     | 
| 
         @@ -1650,7 +1666,7 @@ private: 
     | 
|
| 
       1650 
1666 
     | 
    
         
             
                class RangeIter {
         
     | 
| 
       1651 
1667 
     | 
    
         
             
                public:
         
     | 
| 
       1652 
1668 
     | 
    
         
             
                    RangeIter() = default;
         
     | 
| 
       1653 
     | 
    
         
            -
                    RangeIter(const  
     | 
| 
      
 1669 
     | 
    
         
            +
                    RangeIter(const SkPathVerb* verbs, const SkPoint* points, const SkScalar* weights)
         
     | 
| 
       1654 
1670 
     | 
    
         
             
                            : fVerb(verbs), fPoints(points), fWeights(weights) {
         
     | 
| 
       1655 
1671 
     | 
    
         
             
                        SkDEBUGCODE(fInitialPoints = fPoints;)
         
     | 
| 
       1656 
1672 
     | 
    
         
             
                    }
         
     | 
| 
         @@ -1661,7 +1677,7 @@ private: 
     | 
|
| 
       1661 
1677 
     | 
    
         
             
                        return fVerb == that.fVerb;
         
     | 
| 
       1662 
1678 
     | 
    
         
             
                    }
         
     | 
| 
       1663 
1679 
     | 
    
         
             
                    RangeIter& operator++() {
         
     | 
| 
       1664 
     | 
    
         
            -
                        auto verb =  
     | 
| 
      
 1680 
     | 
    
         
            +
                        auto verb = *fVerb++;
         
     | 
| 
       1665 
1681 
     | 
    
         
             
                        fPoints += pts_advance_after_verb(verb);
         
     | 
| 
       1666 
1682 
     | 
    
         
             
                        if (verb == SkPathVerb::kConic) {
         
     | 
| 
       1667 
1683 
     | 
    
         
             
                            ++fWeights;
         
     | 
| 
         @@ -1674,7 +1690,7 @@ private: 
     | 
|
| 
       1674 
1690 
     | 
    
         
             
                        return copy;
         
     | 
| 
       1675 
1691 
     | 
    
         
             
                    }
         
     | 
| 
       1676 
1692 
     | 
    
         
             
                    SkPathVerb peekVerb() const {
         
     | 
| 
       1677 
     | 
    
         
            -
                        return  
     | 
| 
      
 1693 
     | 
    
         
            +
                        return *fVerb;
         
     | 
| 
       1678 
1694 
     | 
    
         
             
                    }
         
     | 
| 
       1679 
1695 
     | 
    
         
             
                    std::tuple<SkPathVerb, const SkPoint*, const SkScalar*> operator*() const {
         
     | 
| 
       1680 
1696 
     | 
    
         
             
                        SkPathVerb verb = this->peekVerb();
         
     | 
| 
         @@ -1708,7 +1724,7 @@ private: 
     | 
|
| 
       1708 
1724 
     | 
    
         
             
                        }
         
     | 
| 
       1709 
1725 
     | 
    
         
             
                        SkUNREACHABLE;
         
     | 
| 
       1710 
1726 
     | 
    
         
             
                    }
         
     | 
| 
       1711 
     | 
    
         
            -
                    const  
     | 
| 
      
 1727 
     | 
    
         
            +
                    const SkPathVerb* fVerb = nullptr;
         
     | 
| 
       1712 
1728 
     | 
    
         
             
                    const SkPoint* fPoints = nullptr;
         
     | 
| 
       1713 
1729 
     | 
    
         
             
                    const SkScalar* fWeights = nullptr;
         
     | 
| 
       1714 
1730 
     | 
    
         
             
                    SkDEBUGCODE(const SkPoint* fInitialPoints = nullptr;)
         
     | 
| 
         @@ -1753,6 +1769,8 @@ public: 
     | 
|
| 
       1753 
1769 
     | 
    
         
             
                    */
         
     | 
| 
       1754 
1770 
     | 
    
         
             
                    Verb next(SkPoint[4]);
         
     | 
| 
       1755 
1771 
     | 
    
         | 
| 
      
 1772 
     | 
    
         
            +
                    std::optional<IterRec> next();
         
     | 
| 
      
 1773 
     | 
    
         
            +
             
     | 
| 
       1756 
1774 
     | 
    
         
             
                    /** Returns next SkPath::Verb, but does not advance RawIter.
         
     | 
| 
       1757 
1775 
     | 
    
         | 
| 
       1758 
1776 
     | 
    
         
             
                        @return  next SkPath::Verb from verb array
         
     | 
| 
         @@ -1839,29 +1857,7 @@ public: 
     | 
|
| 
       1839 
1857 
     | 
    
         
             
                */
         
     | 
| 
       1840 
1858 
     | 
    
         
             
                sk_sp<SkData> serialize() const;
         
     | 
| 
       1841 
1859 
     | 
    
         | 
| 
       1842 
     | 
    
         
            -
             
     | 
| 
       1843 
     | 
    
         
            -
            private:
         
     | 
| 
       1844 
     | 
    
         
            -
            #endif
         
     | 
| 
       1845 
     | 
    
         
            -
                /** Initializes SkPath from buffer of size length. Returns zero if the buffer is
         
     | 
| 
       1846 
     | 
    
         
            -
                    data is inconsistent, or the length is too small.
         
     | 
| 
       1847 
     | 
    
         
            -
             
     | 
| 
       1848 
     | 
    
         
            -
                    Reads SkPath::FillType, verb array, SkPoint array, conic weight, and
         
     | 
| 
       1849 
     | 
    
         
            -
                    additionally reads computed information like SkPath::Convexity and bounds.
         
     | 
| 
       1850 
     | 
    
         
            -
             
     | 
| 
       1851 
     | 
    
         
            -
                    Used only in concert with writeToMemory();
         
     | 
| 
       1852 
     | 
    
         
            -
                    the format used for SkPath in memory is not guaranteed.
         
     | 
| 
       1853 
     | 
    
         
            -
             
     | 
| 
       1854 
     | 
    
         
            -
                    @param buffer  storage for SkPath
         
     | 
| 
       1855 
     | 
    
         
            -
                    @param length  buffer size in bytes; must be multiple of 4
         
     | 
| 
       1856 
     | 
    
         
            -
                    @return        number of bytes read, or zero on failure
         
     | 
| 
       1857 
     | 
    
         
            -
             
     | 
| 
       1858 
     | 
    
         
            -
                    example: https://fiddle.skia.org/c/@Path_readFromMemory
         
     | 
| 
       1859 
     | 
    
         
            -
                */
         
     | 
| 
       1860 
     | 
    
         
            -
                size_t readFromMemory(const void* buffer, size_t length);
         
     | 
| 
       1861 
     | 
    
         
            -
            #ifdef SK_HIDE_PATH_EDIT_METHODS
         
     | 
| 
       1862 
     | 
    
         
            -
            public:
         
     | 
| 
       1863 
     | 
    
         
            -
            #endif
         
     | 
| 
       1864 
     | 
    
         
            -
                /** Initializes SkPath from buffer of size length. If the buffer data is inconsistent, or the
         
     | 
| 
      
 1860 
     | 
    
         
            +
                /** Returns a SkPath from buffer of size length. If the buffer data is inconsistent, or the
         
     | 
| 
       1865 
1861 
     | 
    
         
             
                    length is too small, returns a nullopt.
         
     | 
| 
       1866 
1862 
     | 
    
         | 
| 
       1867 
1863 
     | 
    
         
             
                    Reads SkPath::FillType, verb array, SkPoint array, conic weight, and
         
     | 
| 
         @@ -1880,6 +1876,10 @@ public: 
     | 
|
| 
       1880 
1876 
     | 
    
         
             
                static std::optional<SkPath> ReadFromMemory(const void* buffer, size_t length,
         
     | 
| 
       1881 
1877 
     | 
    
         
             
                                                            size_t* bytesRead = nullptr);
         
     | 
| 
       1882 
1878 
     | 
    
         | 
| 
      
 1879 
     | 
    
         
            +
            #ifndef SK_HIDE_PATH_EDIT_METHODS
         
     | 
| 
      
 1880 
     | 
    
         
            +
                size_t readFromMemory(const void* buffer, size_t length);
         
     | 
| 
      
 1881 
     | 
    
         
            +
            #endif
         
     | 
| 
      
 1882 
     | 
    
         
            +
             
     | 
| 
       1883 
1883 
     | 
    
         
             
                /** (See skbug.com/40032862)
         
     | 
| 
       1884 
1884 
     | 
    
         
             
                    Returns a non-zero, globally unique value. A different value is returned
         
     | 
| 
       1885 
1885 
     | 
    
         
             
                    if verb array, SkPoint array, or conic weight changes.
         
     | 
| 
         @@ -1906,13 +1906,11 @@ public: 
     | 
|
| 
       1906 
1906 
     | 
    
         
             
                using sk_is_trivially_relocatable = std::true_type;
         
     | 
| 
       1907 
1907 
     | 
    
         | 
| 
       1908 
1908 
     | 
    
         
             
            private:
         
     | 
| 
       1909 
     | 
    
         
            -
                SkPath(sk_sp<SkPathRef>, SkPathFillType, bool isVolatile, SkPathConvexity 
     | 
| 
       1910 
     | 
    
         
            -
                       SkPathFirstDirection firstDirection);
         
     | 
| 
      
 1909 
     | 
    
         
            +
                SkPath(sk_sp<SkPathRef>, SkPathFillType, bool isVolatile, SkPathConvexity);
         
     | 
| 
       1911 
1910 
     | 
    
         | 
| 
       1912 
1911 
     | 
    
         
             
                sk_sp<SkPathRef>               fPathRef;
         
     | 
| 
       1913 
1912 
     | 
    
         
             
                int                            fLastMoveToIndex;
         
     | 
| 
       1914 
1913 
     | 
    
         
             
                mutable std::atomic<uint8_t>   fConvexity;      // SkPathConvexity
         
     | 
| 
       1915 
     | 
    
         
            -
                mutable std::atomic<uint8_t>   fFirstDirection; // SkPathFirstDirection
         
     | 
| 
       1916 
1914 
     | 
    
         
             
                uint8_t                        fFillType    : 2;
         
     | 
| 
       1917 
1915 
     | 
    
         
             
                uint8_t                        fIsVolatile  : 1;
         
     | 
| 
       1918 
1916 
     | 
    
         | 
| 
         @@ -1982,8 +1980,7 @@ private: 
     | 
|
| 
       1982 
1980 
     | 
    
         
             
                // Notice the setters are const... these are mutable atomic fields.
         
     | 
| 
       1983 
1981 
     | 
    
         
             
                void setConvexity(SkPathConvexity) const;
         
     | 
| 
       1984 
1982 
     | 
    
         | 
| 
       1985 
     | 
    
         
            -
                void  
     | 
| 
       1986 
     | 
    
         
            -
                SkPathFirstDirection getFirstDirection() const;
         
     | 
| 
      
 1983 
     | 
    
         
            +
                void addRaw(const SkPathRaw&);
         
     | 
| 
       1987 
1984 
     | 
    
         | 
| 
       1988 
1985 
     | 
    
         
             
                /** Returns the comvexity type, computing if needed. Never returns kUnknown.
         
     | 
| 
       1989 
1986 
     | 
    
         
             
                    @return  path's convexity type (convex or concave)
         
     | 
| 
         @@ -2015,15 +2012,13 @@ private: 
     | 
|
| 
       2015 
2012 
     | 
    
         
             
                // SkPathPriv::AnalyzeVerbs().
         
     | 
| 
       2016 
2013 
     | 
    
         
             
                static SkPath MakeInternal(const SkPathVerbAnalysis& analsis,
         
     | 
| 
       2017 
2014 
     | 
    
         
             
                                           const SkPoint points[],
         
     | 
| 
       2018 
     | 
    
         
            -
                                           const  
     | 
| 
       2019 
     | 
    
         
            -
                                           int verbCount,
         
     | 
| 
      
 2015 
     | 
    
         
            +
                                           SkSpan<const SkPathVerb> verbs,
         
     | 
| 
       2020 
2016 
     | 
    
         
             
                                           const SkScalar conics[],
         
     | 
| 
       2021 
2017 
     | 
    
         
             
                                           SkPathFillType fillType,
         
     | 
| 
       2022 
2018 
     | 
    
         
             
                                           bool isVolatile);
         
     | 
| 
       2023 
2019 
     | 
    
         | 
| 
       2024 
     | 
    
         
            -
                friend class  
     | 
| 
      
 2020 
     | 
    
         
            +
                friend class SkAutoAddSimpleShape;
         
     | 
| 
       2025 
2021 
     | 
    
         
             
                friend class SkAutoDisableOvalCheck;
         
     | 
| 
       2026 
     | 
    
         
            -
                friend class SkAutoDisableDirectionCheck;
         
     | 
| 
       2027 
2022 
     | 
    
         
             
                friend class SkPathBuilder;
         
     | 
| 
       2028 
2023 
     | 
    
         
             
                friend class SkPathEdgeIter;
         
     | 
| 
       2029 
2024 
     | 
    
         
             
                friend class SkPathWriter;
         
     |