@shopify/react-native-skia 0.1.158 → 0.1.159
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 +35 -11
- package/android/build.gradle +21 -25
- package/android/cpp/jni/JniLoad.cpp +2 -0
- package/android/cpp/jni/include/JniSkiaDomView.h +89 -0
- package/android/cpp/rnskia-android/SkiaOpenGLRenderer.cpp +4 -3
- package/android/cpp/rnskia-android/SkiaOpenGLRenderer.h +4 -3
- package/android/src/main/java/com/shopify/reactnative/skia/RNSkiaPackage.java +2 -1
- package/android/src/main/java/com/shopify/reactnative/skia/SkiaDomView.java +45 -0
- package/android/src/main/java/com/shopify/reactnative/skia/SkiaDomViewManager.java +64 -0
- package/cpp/api/JsiSkHostObjects.h +6 -0
- package/cpp/api/JsiSkImageFilterFactory.h +1 -1
- package/cpp/api/JsiSkPaint.h +9 -2
- package/cpp/api/JsiSkPath.h +1 -0
- package/cpp/api/JsiSkRuntimeEffect.h +36 -36
- package/cpp/jsi/JsiHostObject.cpp +16 -28
- package/cpp/jsi/JsiHostObject.h +127 -7
- package/cpp/jsi/JsiValue.cpp +346 -0
- package/cpp/jsi/JsiValue.h +222 -0
- package/cpp/jsi/JsiValueWrapper.h +33 -5
- package/cpp/rnskia/RNSkDomView.cpp +220 -0
- package/cpp/rnskia/RNSkDomView.h +140 -0
- package/cpp/rnskia/RNSkJsView.cpp +0 -4
- package/cpp/rnskia/RNSkJsView.h +6 -4
- package/cpp/rnskia/RNSkManager.cpp +7 -0
- package/cpp/rnskia/RNSkPictureView.h +5 -8
- package/cpp/rnskia/RNSkView.h +113 -5
- package/cpp/rnskia/dom/JsiDomApi.h +167 -0
- package/cpp/rnskia/dom/base/BaseNodeProp.h +72 -0
- package/cpp/rnskia/dom/base/DerivedNodeProp.h +187 -0
- package/cpp/rnskia/dom/base/DrawingContext.cpp +227 -0
- package/cpp/rnskia/dom/base/DrawingContext.h +136 -0
- package/cpp/rnskia/dom/base/JsiDependencyManager.h +294 -0
- package/cpp/rnskia/dom/base/JsiDomDeclarationNode.h +176 -0
- package/cpp/rnskia/dom/base/JsiDomDrawingNode.h +50 -0
- package/cpp/rnskia/dom/base/JsiDomNode.h +361 -0
- package/cpp/rnskia/dom/base/JsiDomRenderNode.h +267 -0
- package/cpp/rnskia/dom/base/NodeProp.h +130 -0
- package/cpp/rnskia/dom/base/NodePropsContainer.h +119 -0
- package/cpp/rnskia/dom/nodes/JsiBackdropFilterNode.h +38 -0
- package/cpp/rnskia/dom/nodes/JsiBlendNode.h +112 -0
- package/cpp/rnskia/dom/nodes/JsiBlurMaskNode.h +78 -0
- package/cpp/rnskia/dom/nodes/JsiBoxNode.h +104 -0
- package/cpp/rnskia/dom/nodes/JsiBoxShadowNode.h +33 -0
- package/cpp/rnskia/dom/nodes/JsiCircleNode.h +38 -0
- package/cpp/rnskia/dom/nodes/JsiColorFilterNodes.h +192 -0
- package/cpp/rnskia/dom/nodes/JsiCustomDrawingNode.h +123 -0
- package/cpp/rnskia/dom/nodes/JsiDiffRectNode.h +42 -0
- package/cpp/rnskia/dom/nodes/JsiFillNode.h +22 -0
- package/cpp/rnskia/dom/nodes/JsiGlyphsNode.h +56 -0
- package/cpp/rnskia/dom/nodes/JsiGroupNode.h +26 -0
- package/cpp/rnskia/dom/nodes/JsiImageFilterNodes.h +415 -0
- package/cpp/rnskia/dom/nodes/JsiImageNode.h +34 -0
- package/cpp/rnskia/dom/nodes/JsiImageSvgNode.h +44 -0
- package/cpp/rnskia/dom/nodes/JsiLayerNode.h +64 -0
- package/cpp/rnskia/dom/nodes/JsiLineNode.h +43 -0
- package/cpp/rnskia/dom/nodes/JsiOvalNode.h +34 -0
- package/cpp/rnskia/dom/nodes/JsiPaintNode.h +77 -0
- package/cpp/rnskia/dom/nodes/JsiPatchNode.h +54 -0
- package/cpp/rnskia/dom/nodes/JsiPathEffectNodes.h +315 -0
- package/cpp/rnskia/dom/nodes/JsiPathNode.h +181 -0
- package/cpp/rnskia/dom/nodes/JsiPictureNode.h +32 -0
- package/cpp/rnskia/dom/nodes/JsiPointsNode.h +51 -0
- package/cpp/rnskia/dom/nodes/JsiRRectNode.h +34 -0
- package/cpp/rnskia/dom/nodes/JsiRectNode.h +34 -0
- package/cpp/rnskia/dom/nodes/JsiShaderNodes.h +517 -0
- package/cpp/rnskia/dom/nodes/JsiTextBlobNode.h +47 -0
- package/cpp/rnskia/dom/nodes/JsiTextNode.h +54 -0
- package/cpp/rnskia/dom/nodes/JsiTextPathNode.h +32 -0
- package/cpp/rnskia/dom/nodes/JsiVerticesNode.h +43 -0
- package/cpp/rnskia/dom/props/BezierProps.h +63 -0
- package/cpp/rnskia/dom/props/BlendModeProp.h +101 -0
- package/cpp/rnskia/dom/props/BoxShadowProps.h +61 -0
- package/cpp/rnskia/dom/props/CircleProp.h +46 -0
- package/cpp/rnskia/dom/props/ClipProp.h +62 -0
- package/cpp/rnskia/dom/props/ColorProp.h +80 -0
- package/cpp/rnskia/dom/props/DrawingProp.h +33 -0
- package/cpp/rnskia/dom/props/FontProp.h +34 -0
- package/cpp/rnskia/dom/props/GlyphsProp.h +53 -0
- package/cpp/rnskia/dom/props/ImageProps.h +173 -0
- package/cpp/rnskia/dom/props/LayerProp.h +50 -0
- package/cpp/rnskia/dom/props/MatrixProp.h +33 -0
- package/cpp/rnskia/dom/props/NumbersProp.h +63 -0
- package/cpp/rnskia/dom/props/PaintProps.h +172 -0
- package/cpp/rnskia/dom/props/PathProp.h +55 -0
- package/cpp/rnskia/dom/props/PictureProp.h +38 -0
- package/cpp/rnskia/dom/props/PointProp.h +72 -0
- package/cpp/rnskia/dom/props/PointsProp.h +83 -0
- package/cpp/rnskia/dom/props/RRectProp.h +134 -0
- package/cpp/rnskia/dom/props/RadiusProp.h +43 -0
- package/cpp/rnskia/dom/props/RectProp.h +118 -0
- package/cpp/rnskia/dom/props/StrokeProps.h +75 -0
- package/cpp/rnskia/dom/props/SvgProp.h +37 -0
- package/cpp/rnskia/dom/props/TextBlobProp.h +128 -0
- package/cpp/rnskia/dom/props/TileModeProp.h +50 -0
- package/cpp/rnskia/dom/props/TransformProp.h +80 -0
- package/cpp/rnskia/dom/props/TransformsProps.h +68 -0
- package/cpp/rnskia/dom/props/UniformsProp.h +194 -0
- package/cpp/rnskia/dom/props/VertexModeProp.h +47 -0
- package/cpp/rnskia/dom/props/VerticesProps.h +67 -0
- package/cpp/rnskia/values/RNSkReadonlyValue.h +13 -4
- package/cpp/skia/include/android/SkAndroidFrameworkUtils.h +35 -1
- package/cpp/skia/include/codec/SkAndroidCodec.h +17 -1
- package/cpp/skia/include/codec/SkCodec.h +8 -5
- package/cpp/skia/include/core/SkAnnotation.h +2 -0
- package/cpp/skia/include/core/SkBitmap.h +52 -1
- package/cpp/skia/include/core/SkBlendMode.h +2 -0
- package/cpp/skia/include/core/SkCanvas.h +52 -31
- package/cpp/skia/include/core/SkCapabilities.h +44 -0
- package/cpp/skia/include/core/SkColor.h +7 -0
- package/cpp/skia/include/core/SkColorFilter.h +37 -0
- package/cpp/skia/include/core/SkColorSpace.h +1 -1
- package/cpp/skia/include/core/SkFont.h +4 -0
- package/cpp/skia/include/core/SkFontMgr.h +3 -0
- package/cpp/skia/include/core/SkGraphics.h +9 -0
- package/cpp/skia/include/core/SkImage.h +77 -17
- package/cpp/skia/include/core/SkImageEncoder.h +5 -3
- package/cpp/skia/include/core/SkImageGenerator.h +27 -17
- package/cpp/skia/include/core/SkM44.h +1 -0
- package/cpp/skia/include/core/SkMesh.h +120 -34
- package/cpp/skia/include/core/SkMilestone.h +1 -1
- package/cpp/skia/include/core/SkOverdrawCanvas.h +2 -1
- package/cpp/skia/include/core/SkPaint.h +15 -2
- package/cpp/skia/include/core/SkPath.h +4 -0
- package/cpp/skia/include/core/SkPathBuilder.h +1 -1
- package/cpp/skia/include/core/SkPicture.h +0 -3
- package/cpp/skia/include/core/SkPictureRecorder.h +0 -2
- package/cpp/skia/include/core/SkPixmap.h +19 -0
- package/cpp/skia/include/core/SkRasterHandleAllocator.h +3 -1
- package/cpp/skia/include/core/SkRect.h +11 -4
- package/cpp/skia/include/core/SkRefCnt.h +13 -1
- package/cpp/skia/include/core/SkRegion.h +6 -0
- package/cpp/skia/include/core/SkSamplingOptions.h +8 -6
- package/cpp/skia/include/core/SkScalar.h +6 -25
- package/cpp/skia/include/core/SkShader.h +20 -12
- package/cpp/skia/include/core/SkSpan.h +51 -19
- package/cpp/skia/include/core/SkStream.h +2 -2
- package/cpp/skia/include/core/SkString.h +11 -3
- package/cpp/skia/include/core/SkSurface.h +85 -8
- package/cpp/skia/include/core/SkTextBlob.h +5 -2
- package/cpp/skia/include/core/SkTypes.h +11 -10
- package/cpp/skia/include/docs/SkPDFDocument.h +0 -5
- package/cpp/skia/include/effects/Sk1DPathEffect.h +6 -1
- package/cpp/skia/include/effects/Sk2DPathEffect.h +4 -1
- package/cpp/skia/include/effects/SkColorMatrix.h +1 -0
- package/cpp/skia/include/effects/SkColorMatrixFilter.h +5 -8
- package/cpp/skia/include/effects/SkCornerPathEffect.h +5 -1
- package/cpp/skia/include/effects/SkDashPathEffect.h +5 -1
- package/cpp/skia/include/effects/SkGradientShader.h +68 -38
- package/cpp/skia/include/effects/SkHighContrastFilter.h +5 -1
- package/cpp/skia/include/effects/SkImageFilters.h +5 -4
- package/cpp/skia/include/effects/SkLumaColorFilter.h +4 -1
- package/cpp/skia/include/effects/SkOpPathEffect.h +6 -2
- package/cpp/skia/include/effects/SkOverdrawColorFilter.h +5 -2
- package/cpp/skia/include/effects/SkRuntimeEffect.h +54 -62
- package/cpp/skia/include/effects/SkShaderMaskFilter.h +3 -1
- package/cpp/skia/include/effects/SkTableColorFilter.h +8 -21
- package/cpp/skia/include/effects/SkTableMaskFilter.h +5 -1
- package/cpp/skia/include/effects/SkTrimPathEffect.h +5 -1
- package/cpp/skia/include/encode/SkEncoder.h +17 -0
- package/cpp/skia/include/encode/SkWebpEncoder.h +17 -0
- package/cpp/skia/include/gpu/GpuTypes.h +18 -0
- package/cpp/skia/include/gpu/GrBackendSurface.h +38 -17
- package/cpp/skia/include/gpu/GrBackendSurfaceMutableState.h +6 -71
- package/cpp/skia/include/gpu/GrContextOptions.h +1 -1
- package/cpp/skia/include/gpu/GrContextThreadSafeProxy.h +10 -9
- package/cpp/skia/include/gpu/GrDirectContext.h +42 -22
- package/cpp/skia/include/gpu/GrRecordingContext.h +6 -3
- package/cpp/skia/include/gpu/GrTypes.h +11 -11
- package/cpp/skia/include/gpu/MutableTextureState.h +122 -0
- package/cpp/skia/include/gpu/gl/GrGLFunctions.h +1 -0
- package/cpp/skia/include/gpu/gl/GrGLInterface.h +1 -0
- package/cpp/skia/include/gpu/graphite/BackendTexture.h +7 -0
- package/cpp/skia/include/gpu/graphite/CombinationBuilder.h +195 -0
- package/cpp/skia/include/gpu/graphite/Context.h +47 -55
- package/cpp/skia/include/gpu/graphite/ContextOptions.h +85 -0
- package/cpp/skia/include/gpu/graphite/GraphiteTypes.h +1 -17
- package/cpp/skia/include/gpu/graphite/ImageProvider.h +61 -0
- package/cpp/skia/include/gpu/graphite/Recorder.h +87 -8
- package/cpp/skia/include/gpu/graphite/Recording.h +19 -9
- package/cpp/skia/include/gpu/graphite/TextureInfo.h +40 -8
- package/cpp/skia/include/gpu/graphite/dawn/DawnBackendContext.h +25 -0
- package/cpp/skia/include/gpu/graphite/mtl/MtlBackendContext.h +3 -2
- package/cpp/skia/include/gpu/graphite/vk/VulkanGraphiteTypes.h +69 -0
- package/cpp/skia/include/gpu/mtl/MtlMemoryAllocator.h +39 -0
- package/cpp/skia/include/gpu/vk/GrVkBackendContext.h +21 -19
- package/cpp/skia/include/gpu/vk/GrVkExtensions.h +2 -50
- package/cpp/skia/include/gpu/vk/GrVkMemoryAllocator.h +2 -127
- package/cpp/skia/include/gpu/vk/GrVkTypes.h +5 -43
- package/cpp/skia/include/gpu/vk/VulkanBackendContext.h +46 -0
- package/cpp/skia/include/gpu/vk/VulkanExtensions.h +67 -0
- package/cpp/skia/include/gpu/vk/VulkanMemoryAllocator.h +116 -0
- package/cpp/skia/include/gpu/vk/VulkanTypes.h +59 -0
- package/cpp/skia/include/pathops/SkPathOps.h +1 -1
- package/cpp/skia/include/private/SkColorData.h +10 -40
- package/cpp/skia/include/private/SkEncodedInfo.h +9 -3
- package/cpp/skia/include/private/SkFloatingPoint.h +9 -6
- package/cpp/skia/include/private/SkHalf.h +5 -52
- package/cpp/skia/include/private/SkMacros.h +1 -1
- package/cpp/skia/include/private/SkMalloc.h +4 -0
- package/cpp/skia/include/private/SkPathRef.h +10 -10
- package/cpp/skia/include/private/SkSLModifiers.h +59 -23
- package/cpp/skia/include/private/SkSLProgramKind.h +1 -0
- package/cpp/skia/include/private/SkSLSymbol.h +7 -3
- package/cpp/skia/include/private/SkStringView.h +4 -0
- package/cpp/skia/include/private/SkTArray.h +21 -7
- package/cpp/skia/include/private/SkTDArray.h +173 -285
- package/cpp/skia/include/private/SkTHash.h +33 -32
- package/cpp/skia/include/private/SkTemplates.h +24 -26
- package/cpp/skia/include/private/SkVx.h +218 -135
- package/cpp/skia/include/private/chromium/GrSlug.h +3 -65
- package/cpp/skia/include/private/chromium/SkChromeRemoteGlyphCache.h +6 -3
- package/cpp/skia/include/private/chromium/Slug.h +76 -0
- package/cpp/skia/include/private/gpu/ganesh/GrTypesPriv.h +6 -1
- package/cpp/skia/include/private/gpu/ganesh/GrVkTypesPriv.h +5 -39
- package/cpp/skia/include/private/gpu/graphite/VulkanGraphiteTypesPriv.h +63 -0
- package/cpp/skia/include/{gpu/vk/GrVkVulkan.h → private/gpu/vk/SkiaVulkan.h} +2 -2
- package/cpp/skia/include/private/gpu/vk/VulkanTypesPriv.h +57 -0
- package/cpp/skia/include/sksl/DSL.h +0 -1
- package/cpp/skia/include/sksl/DSLBlock.h +4 -18
- package/cpp/skia/include/sksl/DSLCase.h +2 -8
- package/cpp/skia/include/sksl/DSLCore.h +8 -15
- package/cpp/skia/include/sksl/DSLExpression.h +51 -142
- package/cpp/skia/include/sksl/DSLFunction.h +7 -15
- package/cpp/skia/include/sksl/DSLModifiers.h +5 -2
- package/cpp/skia/include/sksl/DSLStatement.h +4 -39
- package/cpp/skia/include/sksl/DSLSymbols.h +1 -11
- package/cpp/skia/include/sksl/DSLType.h +20 -12
- package/cpp/skia/include/sksl/DSLVar.h +56 -146
- package/cpp/skia/include/sksl/SkSLErrorReporter.h +2 -15
- package/cpp/skia/include/sksl/SkSLOperator.h +62 -59
- package/cpp/skia/include/sksl/SkSLPosition.h +2 -0
- package/cpp/skia/include/sksl/SkSLVersion.h +27 -0
- package/cpp/skia/include/svg/SkSVGCanvas.h +1 -0
- package/cpp/skia/include/utils/SkAnimCodecPlayer.h +1 -1
- package/cpp/skia/include/utils/SkBase64.h +2 -0
- package/cpp/skia/include/utils/SkCustomTypeface.h +24 -11
- package/cpp/skia/include/utils/SkEventTracer.h +12 -1
- package/cpp/skia/include/utils/SkNWayCanvas.h +11 -4
- package/cpp/skia/include/utils/SkPaintFilterCanvas.h +9 -4
- package/cpp/skia/include/utils/SkParse.h +3 -0
- package/cpp/skia/include/utils/SkShadowUtils.h +2 -0
- package/cpp/skia/include/utils/SkTextUtils.h +2 -1
- package/cpp/skia/{include/third_party → modules}/skcms/skcms.h +10 -0
- package/cpp/skia/modules/skcms/skcms_internal.h +56 -0
- package/cpp/skia/modules/skcms/src/Transform_inl.h +1609 -0
- package/cpp/skia/modules/skparagraph/include/DartTypes.h +153 -0
- package/cpp/skia/modules/skparagraph/include/FontArguments.h +46 -0
- package/cpp/skia/modules/skparagraph/include/FontCollection.h +84 -0
- package/cpp/skia/modules/skparagraph/include/Metrics.h +98 -0
- package/cpp/skia/modules/skparagraph/include/Paragraph.h +111 -0
- package/cpp/skia/modules/skparagraph/include/ParagraphBuilder.h +69 -0
- package/cpp/skia/modules/skparagraph/include/ParagraphCache.h +77 -0
- package/cpp/skia/modules/skparagraph/include/ParagraphStyle.h +143 -0
- package/cpp/skia/modules/skparagraph/include/TextShadow.h +30 -0
- package/cpp/skia/modules/skparagraph/include/TextStyle.h +352 -0
- package/cpp/skia/modules/skparagraph/include/TypefaceFontProvider.h +81 -0
- package/cpp/skia/modules/svg/include/SkSVGAttributeParser.h +1 -1
- package/cpp/skia/modules/svg/include/SkSVGTypes.h +3 -3
- package/cpp/skia/src/core/SkLRUCache.h +126 -0
- package/cpp/skia/src/core/SkTInternalLList.h +302 -0
- package/cpp/utils/RNSkTimingInfo.h +1 -0
- package/ios/RNSkia-iOS/RNSkMetalCanvasProvider.h +15 -4
- package/ios/RNSkia-iOS/RNSkMetalCanvasProvider.mm +40 -54
- package/ios/RNSkia-iOS/SkiaDomViewManager.h +8 -0
- package/ios/RNSkia-iOS/SkiaDomViewManager.mm +51 -0
- package/lib/commonjs/dom/nodes/JsiSkDOM.js +56 -56
- package/lib/commonjs/dom/nodes/JsiSkDOM.js.map +1 -1
- package/lib/commonjs/dom/nodes/RenderNode.js +1 -1
- package/lib/commonjs/dom/nodes/RenderNode.js.map +1 -1
- package/lib/commonjs/renderer/Canvas.js +19 -63
- package/lib/commonjs/renderer/Canvas.js.map +1 -1
- package/lib/commonjs/renderer/DependencyManager.js +0 -5
- package/lib/commonjs/renderer/DependencyManager.js.map +1 -1
- package/lib/commonjs/renderer/HostComponents.js.map +1 -1
- package/lib/commonjs/renderer/useCanvas.js +4 -18
- package/lib/commonjs/renderer/useCanvas.js.map +1 -1
- package/lib/commonjs/views/SkiaBaseWebView.js +7 -0
- package/lib/commonjs/views/SkiaBaseWebView.js.map +1 -1
- package/lib/commonjs/views/SkiaDomView.js +152 -0
- package/lib/commonjs/views/SkiaDomView.js.map +1 -0
- package/lib/commonjs/views/SkiaDomView.web.js +55 -0
- package/lib/commonjs/views/SkiaDomView.web.js.map +1 -0
- package/lib/commonjs/views/SkiaPictureView.js +16 -2
- package/lib/commonjs/views/SkiaPictureView.js.map +1 -1
- package/lib/commonjs/views/SkiaView.js +17 -2
- package/lib/commonjs/views/SkiaView.js.map +1 -1
- package/lib/commonjs/views/index.js +13 -0
- package/lib/commonjs/views/index.js.map +1 -1
- package/lib/commonjs/views/types.js.map +1 -1
- package/lib/module/dom/nodes/JsiSkDOM.js +56 -56
- package/lib/module/dom/nodes/JsiSkDOM.js.map +1 -1
- package/lib/module/dom/nodes/RenderNode.js +1 -1
- package/lib/module/dom/nodes/RenderNode.js.map +1 -1
- package/lib/module/renderer/Canvas.js +20 -64
- package/lib/module/renderer/Canvas.js.map +1 -1
- package/lib/module/renderer/DependencyManager.js +0 -5
- package/lib/module/renderer/DependencyManager.js.map +1 -1
- package/lib/module/renderer/HostComponents.js.map +1 -1
- package/lib/module/renderer/useCanvas.js +2 -13
- package/lib/module/renderer/useCanvas.js.map +1 -1
- package/lib/module/views/SkiaBaseWebView.js +7 -0
- package/lib/module/views/SkiaBaseWebView.js.map +1 -1
- package/lib/module/views/SkiaDomView.js +128 -0
- package/lib/module/views/SkiaDomView.js.map +1 -0
- package/lib/module/views/SkiaDomView.web.js +41 -0
- package/lib/module/views/SkiaDomView.web.js.map +1 -0
- package/lib/module/views/SkiaPictureView.js +14 -2
- package/lib/module/views/SkiaPictureView.js.map +1 -1
- package/lib/module/views/SkiaView.js +15 -2
- package/lib/module/views/SkiaView.js.map +1 -1
- package/lib/module/views/index.js +1 -0
- package/lib/module/views/index.js.map +1 -1
- package/lib/module/views/types.js.map +1 -1
- package/lib/typescript/src/dom/nodes/JsiSkDOM.d.ts +57 -64
- package/lib/typescript/src/renderer/Canvas.d.ts +5 -8
- package/lib/typescript/src/renderer/DependencyManager.d.ts +0 -2
- package/lib/typescript/src/renderer/HostComponents.d.ts +66 -3
- package/lib/typescript/src/renderer/useCanvas.d.ts +0 -6
- package/lib/typescript/src/views/SkiaBaseWebView.d.ts +4 -0
- package/lib/typescript/src/views/SkiaDomView.d.ts +31 -0
- package/lib/typescript/src/views/SkiaDomView.web.d.ts +7 -0
- package/lib/typescript/src/views/index.d.ts +1 -0
- package/lib/typescript/src/views/types.d.ts +12 -2
- 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.a +0 -0
- package/libs/android/arm64-v8a/libsvg.a +0 -0
- package/libs/android/armeabi-v7a/libskia.a +0 -0
- package/libs/android/armeabi-v7a/libskottie.a +0 -0
- package/libs/android/armeabi-v7a/libskparagraph.a +0 -0
- package/libs/android/armeabi-v7a/libsksg.a +0 -0
- package/libs/android/armeabi-v7a/libskshaper.a +0 -0
- package/libs/android/armeabi-v7a/libskunicode.a +0 -0
- package/libs/android/armeabi-v7a/libsvg.a +0 -0
- package/libs/android/x86/libskia.a +0 -0
- package/libs/android/x86/libskottie.a +0 -0
- package/libs/android/x86/libskparagraph.a +0 -0
- package/libs/android/x86/libsksg.a +0 -0
- package/libs/android/x86/libskshaper.a +0 -0
- package/libs/android/x86/libskunicode.a +0 -0
- package/libs/android/x86/libsvg.a +0 -0
- package/libs/android/x86_64/libskia.a +0 -0
- package/libs/android/x86_64/libskottie.a +0 -0
- package/libs/android/x86_64/libskparagraph.a +0 -0
- package/libs/android/x86_64/libsksg.a +0 -0
- package/libs/android/x86_64/libskshaper.a +0 -0
- package/libs/android/x86_64/libskunicode.a +0 -0
- package/libs/android/x86_64/libsvg.a +0 -0
- package/libs/ios/libskia.xcframework/ios-arm64_arm64e/libskia.a +0 -0
- package/libs/ios/libskia.xcframework/ios-arm64_arm64e_x86_64-simulator/libskia.a +0 -0
- package/libs/ios/libskottie.xcframework/ios-arm64_arm64e/libskottie.a +0 -0
- package/libs/ios/libskottie.xcframework/ios-arm64_arm64e_x86_64-simulator/libskottie.a +0 -0
- package/libs/ios/libskparagraph.xcframework/Info.plist +42 -0
- package/libs/ios/libskparagraph.xcframework/ios-arm64_arm64e/libskparagraph.a +0 -0
- package/libs/ios/libskparagraph.xcframework/ios-arm64_arm64e_x86_64-simulator/libskparagraph.a +0 -0
- package/libs/ios/libsksg.xcframework/Info.plist +5 -5
- package/libs/ios/libsksg.xcframework/ios-arm64_arm64e/libsksg.a +0 -0
- package/libs/ios/libsksg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsksg.a +0 -0
- package/libs/ios/libskshaper.xcframework/ios-arm64_arm64e/libskshaper.a +0 -0
- package/libs/ios/libskshaper.xcframework/ios-arm64_arm64e_x86_64-simulator/libskshaper.a +0 -0
- package/libs/ios/libskunicode.xcframework/Info.plist +42 -0
- package/libs/ios/libskunicode.xcframework/ios-arm64_arm64e/libskunicode.a +0 -0
- package/libs/ios/libskunicode.xcframework/ios-arm64_arm64e_x86_64-simulator/libskunicode.a +0 -0
- package/libs/ios/libsvg.xcframework/ios-arm64_arm64e/libsvg.a +0 -0
- package/libs/ios/libsvg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsvg.a +0 -0
- package/package.json +5 -3
- package/react-native-skia.podspec +3 -1
- package/src/dom/nodes/JsiSkDOM.ts +170 -56
- package/src/dom/nodes/RenderNode.ts +1 -1
- package/src/renderer/Canvas.tsx +32 -56
- package/src/renderer/DependencyManager.tsx +0 -5
- package/src/renderer/HostComponents.ts +152 -1
- package/src/renderer/useCanvas.ts +1 -15
- package/src/views/SkiaBaseWebView.tsx +4 -0
- package/src/views/SkiaDomView.tsx +120 -0
- package/src/views/SkiaDomView.web.tsx +37 -0
- package/src/views/SkiaPictureView.tsx +10 -2
- package/src/views/SkiaView.tsx +11 -3
- package/src/views/index.ts +1 -0
- package/src/views/types.ts +19 -2
- package/cpp/jsi/JsiSimpleValueWrapper.h +0 -99
- package/cpp/skia/include/c/sk_canvas.h +0 -159
- package/cpp/skia/include/c/sk_colorspace.h +0 -25
- package/cpp/skia/include/c/sk_data.h +0 -65
- package/cpp/skia/include/c/sk_image.h +0 -71
- package/cpp/skia/include/c/sk_imageinfo.h +0 -62
- package/cpp/skia/include/c/sk_maskfilter.h +0 -47
- package/cpp/skia/include/c/sk_matrix.h +0 -49
- package/cpp/skia/include/c/sk_paint.h +0 -145
- package/cpp/skia/include/c/sk_path.h +0 -102
- package/cpp/skia/include/c/sk_picture.h +0 -70
- package/cpp/skia/include/c/sk_shader.h +0 -143
- package/cpp/skia/include/c/sk_surface.h +0 -73
- package/cpp/skia/include/c/sk_types.h +0 -278
- package/cpp/skia/include/gpu/graphite/SkStuff.h +0 -47
- package/cpp/skia/include/private/SkNx.h +0 -430
- package/cpp/skia/include/private/SkNx_neon.h +0 -713
- package/cpp/skia/include/private/SkNx_sse.h +0 -823
- package/cpp/skia/include/sksl/DSLRuntimeEffects.h +0 -32
- package/cpp/skia/include/sksl/DSLWrapper.h +0 -77
|
@@ -5,7 +5,6 @@
|
|
|
5
5
|
* found in the LICENSE file.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
|
|
9
8
|
#ifndef SkTDArray_DEFINED
|
|
10
9
|
#define SkTDArray_DEFINED
|
|
11
10
|
|
|
@@ -14,372 +13,261 @@
|
|
|
14
13
|
#include "include/private/SkTo.h"
|
|
15
14
|
|
|
16
15
|
#include <algorithm>
|
|
16
|
+
#include <cstddef>
|
|
17
|
+
#include <climits>
|
|
17
18
|
#include <initializer_list>
|
|
19
|
+
#include <tuple>
|
|
18
20
|
#include <utility>
|
|
19
21
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
22
|
+
class SK_SPI SkTDStorage {
|
|
23
|
+
public:
|
|
24
|
+
explicit SkTDStorage(int sizeOfT);
|
|
25
|
+
SkTDStorage(const void* src, int count, int sizeOfT);
|
|
26
|
+
|
|
27
|
+
// Copy
|
|
28
|
+
SkTDStorage(const SkTDStorage& that);
|
|
29
|
+
SkTDStorage& operator= (const SkTDStorage& that);
|
|
30
|
+
|
|
31
|
+
// Move
|
|
32
|
+
SkTDStorage(SkTDStorage&& that);
|
|
33
|
+
SkTDStorage& operator= (SkTDStorage&& that);
|
|
34
|
+
|
|
35
|
+
~SkTDStorage();
|
|
36
|
+
|
|
37
|
+
void reset();
|
|
38
|
+
void swap(SkTDStorage& that);
|
|
39
|
+
|
|
40
|
+
// Size routines
|
|
41
|
+
bool empty() const { return fCount == 0; }
|
|
42
|
+
void clear() { fCount = 0; }
|
|
43
|
+
int size() const { return fCount; }
|
|
44
|
+
void resize(int newCount);
|
|
45
|
+
size_t size_bytes() const { return this->bytes(fCount); }
|
|
46
|
+
|
|
47
|
+
// Capacity routines
|
|
48
|
+
int capacity() const { return fReserve; }
|
|
49
|
+
void reserve(int newReserve);
|
|
50
|
+
void shrink_to_fit();
|
|
51
|
+
|
|
52
|
+
void* data() { return fStorage; }
|
|
53
|
+
const void* data() const { return fStorage; }
|
|
54
|
+
|
|
55
|
+
// Deletion routines
|
|
56
|
+
void erase(int index, int count);
|
|
57
|
+
// Removes the entry at 'index' and replaces it with the last array element
|
|
58
|
+
void removeShuffle(int index);
|
|
59
|
+
|
|
60
|
+
// Insertion routines
|
|
61
|
+
void* prepend();
|
|
62
|
+
|
|
63
|
+
void append();
|
|
64
|
+
void append(int count);
|
|
65
|
+
void* append(const void* src, int count);
|
|
66
|
+
|
|
67
|
+
void* insert(int index);
|
|
68
|
+
void* insert(int index, int count, const void* src);
|
|
69
|
+
|
|
70
|
+
void pop_back() {
|
|
71
|
+
SkASSERT(fCount > 0);
|
|
72
|
+
fCount--;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
friend bool operator==(const SkTDStorage& a, const SkTDStorage& b);
|
|
76
|
+
friend bool operator!=(const SkTDStorage& a, const SkTDStorage& b) {
|
|
77
|
+
return !(a == b);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
private:
|
|
81
|
+
size_t bytes(int n) const { return SkToSizeT(n * fSizeOfT); }
|
|
82
|
+
void* address(int n) { return fStorage + this->bytes(n); }
|
|
83
|
+
|
|
84
|
+
// Adds delta to fCount. Crash if outside [0, INT_MAX]
|
|
85
|
+
int calculateSizeOrDie(int delta);
|
|
86
|
+
|
|
87
|
+
// Move the tail of the array defined by the indexes tailStart and tailEnd to dstIndex. The
|
|
88
|
+
// elements at dstIndex are overwritten by the tail.
|
|
89
|
+
void moveTail(int dstIndex, int tailStart, int tailEnd);
|
|
23
90
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
91
|
+
// Copy src into the array at dstIndex.
|
|
92
|
+
void copySrc(int dstIndex, const void* src, int count);
|
|
93
|
+
|
|
94
|
+
const int fSizeOfT;
|
|
95
|
+
std::byte* fStorage{nullptr};
|
|
96
|
+
int fReserve{0}; // size of the allocation in fArray (#elements)
|
|
97
|
+
int fCount{0}; // logical number of elements (fCount <= fReserve)
|
|
98
|
+
};
|
|
99
|
+
|
|
100
|
+
static inline void swap(SkTDStorage& a, SkTDStorage& b) {
|
|
101
|
+
a.swap(b);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
// SkTDArray<T> implements a std::vector-like array for raw data-only objects that do not require
|
|
105
|
+
// construction or destruction. The constructor and destructor for T will not be called; T objects
|
|
106
|
+
// will always be moved via raw memcpy. Newly created T objects will contain uninitialized memory.
|
|
27
107
|
template <typename T> class SkTDArray {
|
|
28
108
|
public:
|
|
29
|
-
SkTDArray() :
|
|
30
|
-
SkTDArray(const T src[], int count) {
|
|
31
|
-
SkASSERT(src || count == 0);
|
|
32
|
-
|
|
33
|
-
fReserve = fCount = 0;
|
|
34
|
-
fArray = nullptr;
|
|
35
|
-
if (count) {
|
|
36
|
-
fArray = (T*)sk_malloc_throw(SkToSizeT(count) * sizeof(T));
|
|
37
|
-
memcpy(fArray, src, sizeof(T) * SkToSizeT(count));
|
|
38
|
-
fReserve = fCount = count;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
109
|
+
SkTDArray() : fStorage{sizeof(T)} {}
|
|
110
|
+
SkTDArray(const T src[], int count) : fStorage{src, count, sizeof(T)} { }
|
|
41
111
|
SkTDArray(const std::initializer_list<T>& list) : SkTDArray(list.begin(), list.size()) {}
|
|
42
|
-
SkTDArray(const SkTDArray<T>& src) : fArray(nullptr), fReserve(0), fCount(0) {
|
|
43
|
-
SkTDArray<T> tmp(src.fArray, src.fCount);
|
|
44
|
-
this->swap(tmp);
|
|
45
|
-
}
|
|
46
|
-
SkTDArray(SkTDArray<T>&& src) : fArray(nullptr), fReserve(0), fCount(0) {
|
|
47
|
-
this->swap(src);
|
|
48
|
-
}
|
|
49
|
-
~SkTDArray() {
|
|
50
|
-
sk_free(fArray);
|
|
51
|
-
}
|
|
52
112
|
|
|
113
|
+
// Copy
|
|
114
|
+
SkTDArray(const SkTDArray<T>& src) : SkTDArray(src.data(), src.size()) {}
|
|
53
115
|
SkTDArray<T>& operator=(const SkTDArray<T>& src) {
|
|
54
|
-
|
|
55
|
-
if (src.fCount > fReserve) {
|
|
56
|
-
SkTDArray<T> tmp(src.fArray, src.fCount);
|
|
57
|
-
this->swap(tmp);
|
|
58
|
-
} else {
|
|
59
|
-
sk_careful_memcpy(fArray, src.fArray, sizeof(T) * SkToSizeT(src.fCount));
|
|
60
|
-
fCount = src.fCount;
|
|
61
|
-
}
|
|
62
|
-
}
|
|
116
|
+
fStorage = src.fStorage;
|
|
63
117
|
return *this;
|
|
64
118
|
}
|
|
119
|
+
|
|
120
|
+
// Move
|
|
121
|
+
SkTDArray(SkTDArray<T>&& src) : fStorage{std::move(src.fStorage)} {}
|
|
65
122
|
SkTDArray<T>& operator=(SkTDArray<T>&& src) {
|
|
66
|
-
|
|
67
|
-
this->swap(src);
|
|
68
|
-
src.reset();
|
|
69
|
-
}
|
|
123
|
+
fStorage = std::move(src.fStorage);
|
|
70
124
|
return *this;
|
|
71
125
|
}
|
|
72
126
|
|
|
73
127
|
friend bool operator==(const SkTDArray<T>& a, const SkTDArray<T>& b) {
|
|
74
|
-
return
|
|
75
|
-
(a.fCount == 0 ||
|
|
76
|
-
!memcmp(a.fArray, b.fArray, SkToSizeT(a.fCount) * sizeof(T)));
|
|
77
|
-
}
|
|
78
|
-
friend bool operator!=(const SkTDArray<T>& a, const SkTDArray<T>& b) {
|
|
79
|
-
return !(a == b);
|
|
128
|
+
return a.fStorage == b.fStorage;
|
|
80
129
|
}
|
|
130
|
+
friend bool operator!=(const SkTDArray<T>& a, const SkTDArray<T>& b) { return !(a == b); }
|
|
81
131
|
|
|
82
132
|
void swap(SkTDArray<T>& that) {
|
|
83
133
|
using std::swap;
|
|
84
|
-
swap(
|
|
85
|
-
swap(fReserve, that.fReserve);
|
|
86
|
-
swap(fCount, that.fCount);
|
|
134
|
+
swap(fStorage, that.fStorage);
|
|
87
135
|
}
|
|
88
136
|
|
|
89
|
-
bool
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
T* end() { return fArray ? fArray + fCount : nullptr; }
|
|
113
|
-
const T* end() const { return fArray ? fArray + fCount : nullptr; }
|
|
114
|
-
|
|
115
|
-
T& operator[](int index) {
|
|
116
|
-
SkASSERT(index < fCount);
|
|
117
|
-
return fArray[index];
|
|
137
|
+
bool empty() const { return fStorage.empty(); }
|
|
138
|
+
|
|
139
|
+
// Return the number of elements in the array
|
|
140
|
+
int size() const { return fStorage.size(); }
|
|
141
|
+
|
|
142
|
+
// Return the total number of elements allocated.
|
|
143
|
+
// Note: capacity() - size() gives you the number of elements you can add without causing an
|
|
144
|
+
// allocation.
|
|
145
|
+
int capacity() const { return fStorage.capacity(); }
|
|
146
|
+
|
|
147
|
+
// return the number of bytes in the array: count * sizeof(T)
|
|
148
|
+
size_t size_bytes() const { return fStorage.size_bytes(); }
|
|
149
|
+
|
|
150
|
+
T* data() { return static_cast<T*>(fStorage.data()); }
|
|
151
|
+
const T* data() const { return static_cast<const T*>(fStorage.data()); }
|
|
152
|
+
T* begin() { return this->data(); }
|
|
153
|
+
const T* begin() const { return this->data(); }
|
|
154
|
+
T* end() { return this->data() + this->size(); }
|
|
155
|
+
const T* end() const { return this->data() + this->size(); }
|
|
156
|
+
|
|
157
|
+
T& operator[](int index) {
|
|
158
|
+
SkASSERT(index < this->size());
|
|
159
|
+
return this->data()[index];
|
|
118
160
|
}
|
|
119
|
-
const T&
|
|
120
|
-
SkASSERT(index <
|
|
121
|
-
return
|
|
161
|
+
const T& operator[](int index) const {
|
|
162
|
+
SkASSERT(index < this->size());
|
|
163
|
+
return this->data()[index];
|
|
122
164
|
}
|
|
123
165
|
|
|
124
|
-
T&
|
|
125
|
-
|
|
166
|
+
const T& back() const {
|
|
167
|
+
SkASSERT(this->size() > 0);
|
|
168
|
+
return this->data()[this->size() - 1];
|
|
169
|
+
}
|
|
170
|
+
T& back() {
|
|
171
|
+
SkASSERT(this->size() > 0);
|
|
172
|
+
return this->data()[this->size() - 1];
|
|
126
173
|
}
|
|
127
|
-
|
|
128
|
-
const T& back() const { SkASSERT(fCount > 0); return fArray[fCount-1]; }
|
|
129
|
-
T& back() { SkASSERT(fCount > 0); return fArray[fCount-1]; }
|
|
130
174
|
|
|
131
175
|
void reset() {
|
|
132
|
-
|
|
133
|
-
sk_free(fArray);
|
|
134
|
-
fArray = nullptr;
|
|
135
|
-
fReserve = fCount = 0;
|
|
136
|
-
} else {
|
|
137
|
-
SkASSERT(fReserve == 0 && fCount == 0);
|
|
138
|
-
}
|
|
176
|
+
fStorage.reset();
|
|
139
177
|
}
|
|
140
178
|
|
|
141
|
-
void
|
|
142
|
-
|
|
143
|
-
fCount = 0;
|
|
179
|
+
void clear() {
|
|
180
|
+
fStorage.clear();
|
|
144
181
|
}
|
|
145
182
|
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
void setCount(int count) {
|
|
153
|
-
SkASSERT(count >= 0);
|
|
154
|
-
if (count > fReserve) {
|
|
155
|
-
this->resizeStorageToAtLeast(count);
|
|
156
|
-
}
|
|
157
|
-
fCount = count;
|
|
183
|
+
// Sets the number of elements in the array.
|
|
184
|
+
// If the array does not have space for count elements, it will increase
|
|
185
|
+
// the storage allocated to some amount greater than that required.
|
|
186
|
+
// It will never shrink the storage.
|
|
187
|
+
void resize(int count) {
|
|
188
|
+
fStorage.resize(count);
|
|
158
189
|
}
|
|
159
190
|
|
|
160
|
-
void setReserve(int reserve) {
|
|
161
|
-
SkASSERT(reserve >= 0);
|
|
162
|
-
if (reserve > fReserve) {
|
|
163
|
-
this->resizeStorageToAtLeast(reserve);
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
191
|
void reserve(size_t n) {
|
|
167
|
-
|
|
168
|
-
this->setReserve(SkToInt(n));
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
T* prepend() {
|
|
172
|
-
this->adjustCount(1);
|
|
173
|
-
memmove(fArray + 1, fArray, (fCount - 1) * sizeof(T));
|
|
174
|
-
return fArray;
|
|
192
|
+
fStorage.reserve(n);
|
|
175
193
|
}
|
|
176
194
|
|
|
177
195
|
T* append() {
|
|
178
|
-
|
|
196
|
+
fStorage.append();
|
|
197
|
+
return this->end() - 1;
|
|
179
198
|
}
|
|
180
|
-
T* append(int count
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
this->adjustCount(count);
|
|
187
|
-
if (src) {
|
|
188
|
-
memcpy(fArray + oldCount, src, sizeof(T) * count);
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
return fArray + oldCount;
|
|
199
|
+
T* append(int count) {
|
|
200
|
+
fStorage.append(count);
|
|
201
|
+
return this->end() - count;
|
|
202
|
+
}
|
|
203
|
+
T* append(int count, const T* src) {
|
|
204
|
+
return static_cast<T*>(fStorage.append(src, count));
|
|
192
205
|
}
|
|
193
206
|
|
|
194
207
|
T* insert(int index) {
|
|
195
|
-
return
|
|
208
|
+
return static_cast<T*>(fStorage.insert(index));
|
|
196
209
|
}
|
|
197
210
|
T* insert(int index, int count, const T* src = nullptr) {
|
|
198
|
-
|
|
199
|
-
SkASSERT(index <= fCount);
|
|
200
|
-
size_t oldCount = fCount;
|
|
201
|
-
this->adjustCount(count);
|
|
202
|
-
T* dst = fArray + index;
|
|
203
|
-
memmove(dst + count, dst, sizeof(T) * (oldCount - index));
|
|
204
|
-
if (src) {
|
|
205
|
-
memcpy(dst, src, sizeof(T) * count);
|
|
206
|
-
}
|
|
207
|
-
return dst;
|
|
211
|
+
return static_cast<T*>(fStorage.insert(index, count, src));
|
|
208
212
|
}
|
|
209
213
|
|
|
210
214
|
void remove(int index, int count = 1) {
|
|
211
|
-
|
|
212
|
-
fCount = fCount - count;
|
|
213
|
-
memmove(fArray + index, fArray + index + count, sizeof(T) * (fCount - index));
|
|
215
|
+
fStorage.erase(index, count);
|
|
214
216
|
}
|
|
215
217
|
|
|
216
218
|
void removeShuffle(int index) {
|
|
217
|
-
|
|
218
|
-
int newCount = fCount - 1;
|
|
219
|
-
fCount = newCount;
|
|
220
|
-
if (index != newCount) {
|
|
221
|
-
memcpy(fArray + index, fArray + newCount, sizeof(T));
|
|
222
|
-
}
|
|
219
|
+
fStorage.removeShuffle(index);
|
|
223
220
|
}
|
|
224
221
|
|
|
225
222
|
int find(const T& elem) const {
|
|
226
|
-
const T* iter =
|
|
227
|
-
const T* stop =
|
|
223
|
+
const T* iter = this->begin();
|
|
224
|
+
const T* stop = this->end();
|
|
228
225
|
|
|
229
226
|
for (; iter < stop; iter++) {
|
|
230
227
|
if (*iter == elem) {
|
|
231
|
-
return SkToInt(iter -
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
|
-
return -1;
|
|
235
|
-
}
|
|
236
|
-
|
|
237
|
-
int rfind(const T& elem) const {
|
|
238
|
-
const T* iter = fArray + fCount;
|
|
239
|
-
const T* stop = fArray;
|
|
240
|
-
|
|
241
|
-
while (iter > stop) {
|
|
242
|
-
if (*--iter == elem) {
|
|
243
|
-
return SkToInt(iter - stop);
|
|
228
|
+
return SkToInt(iter - this->begin());
|
|
244
229
|
}
|
|
245
230
|
}
|
|
246
231
|
return -1;
|
|
247
232
|
}
|
|
248
233
|
|
|
249
|
-
/**
|
|
250
|
-
* Returns true iff the array contains this element.
|
|
251
|
-
*/
|
|
252
|
-
bool contains(const T& elem) const {
|
|
253
|
-
return (this->find(elem) >= 0);
|
|
254
|
-
}
|
|
255
|
-
|
|
256
|
-
/**
|
|
257
|
-
* Copies up to max elements into dst. The number of items copied is
|
|
258
|
-
* capped by count - index. The actual number copied is returned.
|
|
259
|
-
*/
|
|
260
|
-
int copyRange(T* dst, int index, int max) const {
|
|
261
|
-
SkASSERT(max >= 0);
|
|
262
|
-
SkASSERT(!max || dst);
|
|
263
|
-
if (index >= fCount) {
|
|
264
|
-
return 0;
|
|
265
|
-
}
|
|
266
|
-
int count = std::min(max, fCount - index);
|
|
267
|
-
memcpy(dst, fArray + index, sizeof(T) * count);
|
|
268
|
-
return count;
|
|
269
|
-
}
|
|
270
|
-
|
|
271
|
-
void copy(T* dst) const {
|
|
272
|
-
this->copyRange(dst, 0, fCount);
|
|
273
|
-
}
|
|
274
|
-
|
|
275
234
|
// routines to treat the array like a stack
|
|
276
|
-
void push_back(const T& v) {
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
void
|
|
281
|
-
void pop() { SkASSERT(fCount > 0); --fCount; }
|
|
235
|
+
void push_back(const T& v) {
|
|
236
|
+
this->append();
|
|
237
|
+
this->back() = v;
|
|
238
|
+
}
|
|
239
|
+
void pop_back() { fStorage.pop_back(); }
|
|
282
240
|
|
|
283
241
|
void deleteAll() {
|
|
284
|
-
T*
|
|
285
|
-
|
|
286
|
-
while (iter < stop) {
|
|
287
|
-
delete *iter;
|
|
288
|
-
iter += 1;
|
|
242
|
+
for (T p : *this) {
|
|
243
|
+
delete p;
|
|
289
244
|
}
|
|
290
245
|
this->reset();
|
|
291
246
|
}
|
|
292
247
|
|
|
293
248
|
void freeAll() {
|
|
294
|
-
T*
|
|
295
|
-
|
|
296
|
-
while (iter < stop) {
|
|
297
|
-
sk_free(*iter);
|
|
298
|
-
iter += 1;
|
|
249
|
+
for (T p : *this) {
|
|
250
|
+
sk_free(p);
|
|
299
251
|
}
|
|
300
|
-
this->reset();
|
|
301
|
-
}
|
|
302
252
|
|
|
303
|
-
void unrefAll() {
|
|
304
|
-
T* iter = fArray;
|
|
305
|
-
T* stop = fArray + fCount;
|
|
306
|
-
while (iter < stop) {
|
|
307
|
-
(*iter)->unref();
|
|
308
|
-
iter += 1;
|
|
309
|
-
}
|
|
310
253
|
this->reset();
|
|
311
254
|
}
|
|
312
255
|
|
|
313
|
-
void
|
|
314
|
-
T*
|
|
315
|
-
|
|
316
|
-
while (iter < stop) {
|
|
317
|
-
SkSafeUnref(*iter);
|
|
318
|
-
iter += 1;
|
|
256
|
+
void unrefAll() {
|
|
257
|
+
for (T p : *this) {
|
|
258
|
+
p->unref();
|
|
319
259
|
}
|
|
320
260
|
this->reset();
|
|
321
261
|
}
|
|
322
262
|
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
SkASSERT((fReserve == 0 && fArray == nullptr) ||
|
|
326
|
-
(fReserve > 0 && fArray != nullptr));
|
|
327
|
-
SkASSERT(fCount <= fReserve);
|
|
328
|
-
}
|
|
329
|
-
#endif
|
|
330
|
-
|
|
331
|
-
void shrinkToFit() {
|
|
332
|
-
if (fReserve != fCount) {
|
|
333
|
-
SkASSERT(fReserve > fCount);
|
|
334
|
-
fReserve = fCount;
|
|
335
|
-
fArray = (T*)sk_realloc_throw(fArray, fReserve * sizeof(T));
|
|
336
|
-
}
|
|
263
|
+
void shrink_to_fit() {
|
|
264
|
+
fStorage.shrink_to_fit();
|
|
337
265
|
}
|
|
338
266
|
|
|
339
267
|
private:
|
|
340
|
-
|
|
341
|
-
int fReserve; // size of the allocation in fArray (#elements)
|
|
342
|
-
int fCount; // logical number of elements (fCount <= fReserve)
|
|
343
|
-
|
|
344
|
-
/**
|
|
345
|
-
* Adjusts the number of elements in the array.
|
|
346
|
-
* This is the same as calling setCount(count() + delta).
|
|
347
|
-
*/
|
|
348
|
-
void adjustCount(int delta) {
|
|
349
|
-
SkASSERT(delta > 0);
|
|
350
|
-
|
|
351
|
-
// We take care to avoid overflow here.
|
|
352
|
-
// The sum of fCount and delta is at most 4294967294, which fits fine in uint32_t.
|
|
353
|
-
uint32_t count = (uint32_t)fCount + (uint32_t)delta;
|
|
354
|
-
SkASSERT_RELEASE( SkTFitsIn<int>(count) );
|
|
355
|
-
|
|
356
|
-
this->setCount(SkTo<int>(count));
|
|
357
|
-
}
|
|
358
|
-
|
|
359
|
-
/**
|
|
360
|
-
* Increase the storage allocation such that it can hold (fCount + extra)
|
|
361
|
-
* elements.
|
|
362
|
-
* It never shrinks the allocation, and it may increase the allocation by
|
|
363
|
-
* more than is strictly required, based on a private growth heuristic.
|
|
364
|
-
*
|
|
365
|
-
* note: does NOT modify fCount
|
|
366
|
-
*/
|
|
367
|
-
void resizeStorageToAtLeast(int count) {
|
|
368
|
-
SkASSERT(count > fReserve);
|
|
369
|
-
|
|
370
|
-
// We take care to avoid overflow here.
|
|
371
|
-
// The maximum value we can get for reserve here is 2684354563, which fits in uint32_t.
|
|
372
|
-
uint32_t reserve = (uint32_t)count + 4;
|
|
373
|
-
reserve += reserve / 4;
|
|
374
|
-
SkASSERT_RELEASE( SkTFitsIn<int>(reserve) );
|
|
375
|
-
|
|
376
|
-
fReserve = SkTo<int>(reserve);
|
|
377
|
-
fArray = (T*)sk_realloc_throw(fArray, (size_t)fReserve * sizeof(T));
|
|
378
|
-
}
|
|
268
|
+
SkTDStorage fStorage;
|
|
379
269
|
};
|
|
380
270
|
|
|
381
|
-
template <typename T> static inline void swap(SkTDArray<T>& a, SkTDArray<T>& b) {
|
|
382
|
-
a.swap(b);
|
|
383
|
-
}
|
|
271
|
+
template <typename T> static inline void swap(SkTDArray<T>& a, SkTDArray<T>& b) { a.swap(b); }
|
|
384
272
|
|
|
385
273
|
#endif
|