@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
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
#define SkHalf_DEFINED
|
|
10
10
|
|
|
11
11
|
#include "include/core/SkTypes.h"
|
|
12
|
-
#include "include/private/
|
|
12
|
+
#include "include/private/SkVx.h"
|
|
13
13
|
|
|
14
14
|
// 16-bit floating point value
|
|
15
15
|
// format is 1 bit sign, 5 bits exponent, 10 bits mantissa
|
|
@@ -28,58 +28,11 @@ SkHalf SkFloatToHalf(float f);
|
|
|
28
28
|
// Convert between half and single precision floating point,
|
|
29
29
|
// assuming inputs and outputs are both finite, and may
|
|
30
30
|
// flush values which would be denormal half floats to zero.
|
|
31
|
-
static inline
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
// ~~~~~~~~~~~ impl ~~~~~~~~~~~~~~ //
|
|
35
|
-
|
|
36
|
-
// Like the serial versions in SkHalf.cpp, these are based on
|
|
37
|
-
// https://fgiesen.wordpress.com/2012/03/28/half-to-float-done-quic/
|
|
38
|
-
|
|
39
|
-
// GCC 4.9 lacks the intrinsics to use ARMv8 f16<->f32 instructions, so we use inline assembly.
|
|
40
|
-
|
|
41
|
-
static inline Sk4f SkHalfToFloat_finite_ftz(uint64_t rgba) {
|
|
42
|
-
Sk4h hs = Sk4h::Load(&rgba);
|
|
43
|
-
#if !defined(SKNX_NO_SIMD) && defined(SK_CPU_ARM64)
|
|
44
|
-
float32x4_t fs;
|
|
45
|
-
asm ("fcvtl %[fs].4s, %[hs].4h \n" // vcvt_f32_f16(...)
|
|
46
|
-
: [fs] "=w" (fs) // =w: write-only NEON register
|
|
47
|
-
: [hs] "w" (hs.fVec)); // w: read-only NEON register
|
|
48
|
-
return fs;
|
|
49
|
-
#else
|
|
50
|
-
Sk4i bits = SkNx_cast<int>(hs), // Expand to 32 bit.
|
|
51
|
-
sign = bits & 0x00008000, // Save the sign bit for later...
|
|
52
|
-
positive = bits ^ sign, // ...but strip it off for now.
|
|
53
|
-
is_norm = 0x03ff < positive; // Exponent > 0?
|
|
54
|
-
|
|
55
|
-
// For normal half floats, extend the mantissa by 13 zero bits,
|
|
56
|
-
// then adjust the exponent from 15 bias to 127 bias.
|
|
57
|
-
Sk4i norm = (positive << 13) + ((127 - 15) << 23);
|
|
58
|
-
|
|
59
|
-
Sk4i merged = (sign << 16) | (norm & is_norm);
|
|
60
|
-
return Sk4f::Load(&merged);
|
|
61
|
-
#endif
|
|
31
|
+
static inline skvx::float4 SkHalfToFloat_finite_ftz(uint64_t rgba) {
|
|
32
|
+
return skvx::from_half(skvx::half4::Load(&rgba));
|
|
62
33
|
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
#if !defined(SKNX_NO_SIMD) && defined(SK_CPU_ARM64)
|
|
66
|
-
float32x4_t vec = fs.fVec;
|
|
67
|
-
asm ("fcvtn %[vec].4h, %[vec].4s \n" // vcvt_f16_f32(vec)
|
|
68
|
-
: [vec] "+w" (vec)); // +w: read-write NEON register
|
|
69
|
-
return vreinterpret_u16_f32(vget_low_f32(vec));
|
|
70
|
-
#else
|
|
71
|
-
Sk4i bits = Sk4i::Load(&fs),
|
|
72
|
-
sign = bits & 0x80000000, // Save the sign bit for later...
|
|
73
|
-
positive = bits ^ sign, // ...but strip it off for now.
|
|
74
|
-
will_be_norm = 0x387fdfff < positive; // greater than largest denorm half?
|
|
75
|
-
|
|
76
|
-
// For normal half floats, adjust the exponent from 127 bias to 15 bias,
|
|
77
|
-
// then drop the bottom 13 mantissa bits.
|
|
78
|
-
Sk4i norm = (positive - ((127 - 15) << 23)) >> 13;
|
|
79
|
-
|
|
80
|
-
Sk4i merged = (sign >> 16) | (will_be_norm & norm);
|
|
81
|
-
return SkNx_cast<uint16_t>(merged);
|
|
82
|
-
#endif
|
|
34
|
+
static inline skvx::half4 SkFloatToHalf_finite_ftz(const skvx::float4& c) {
|
|
35
|
+
return skvx::to_half(c);
|
|
83
36
|
}
|
|
84
37
|
|
|
85
38
|
#endif
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
|
|
31
31
|
////////////////////////////////////////////////////////////////////////////////
|
|
32
32
|
|
|
33
|
-
// Can be used to bracket data types that must be dense, e.g. hash keys.
|
|
33
|
+
// Can be used to bracket data types that must be dense/packed, e.g. hash keys.
|
|
34
34
|
#if defined(__clang__) // This should work on GCC too, but GCC diagnostic pop didn't seem to work!
|
|
35
35
|
#define SK_BEGIN_REQUIRE_DENSE _Pragma("GCC diagnostic push") \
|
|
36
36
|
_Pragma("GCC diagnostic error \"-Wpadded\"")
|
|
@@ -78,6 +78,10 @@ SK_API extern void* sk_calloc_throw(size_t count, size_t elemSize);
|
|
|
78
78
|
SK_API extern void* sk_malloc_throw(size_t count, size_t elemSize);
|
|
79
79
|
SK_API extern void* sk_realloc_throw(void* buffer, size_t count, size_t elemSize);
|
|
80
80
|
|
|
81
|
+
// Returns the true usable size provided by the underlying allocator, or 0 if
|
|
82
|
+
// querying the allocation size is not supported.
|
|
83
|
+
SK_API extern size_t sk_malloc_usable_size(void* buffer);
|
|
84
|
+
|
|
81
85
|
/**
|
|
82
86
|
* These variants return nullptr on failure
|
|
83
87
|
*/
|
|
@@ -283,9 +283,9 @@ public:
|
|
|
283
283
|
static void Rewind(sk_sp<SkPathRef>* pathRef);
|
|
284
284
|
|
|
285
285
|
~SkPathRef();
|
|
286
|
-
int countPoints() const { return fPoints.
|
|
287
|
-
int countVerbs() const { return fVerbs.
|
|
288
|
-
int countWeights() const { return fConicWeights.
|
|
286
|
+
int countPoints() const { return fPoints.size(); }
|
|
287
|
+
int countVerbs() const { return fVerbs.size(); }
|
|
288
|
+
int countWeights() const { return fConicWeights.size(); }
|
|
289
289
|
|
|
290
290
|
size_t approximateBytesUsed() const;
|
|
291
291
|
|
|
@@ -397,8 +397,8 @@ private:
|
|
|
397
397
|
/** Makes additional room but does not change the counts or change the genID */
|
|
398
398
|
void incReserve(int additionalVerbs, int additionalPoints) {
|
|
399
399
|
SkDEBUGCODE(this->validate();)
|
|
400
|
-
fPoints.
|
|
401
|
-
fVerbs.
|
|
400
|
+
fPoints.reserve(fPoints.size() + additionalPoints);
|
|
401
|
+
fVerbs.reserve(fVerbs.size() + additionalVerbs);
|
|
402
402
|
SkDEBUGCODE(this->validate();)
|
|
403
403
|
}
|
|
404
404
|
|
|
@@ -415,11 +415,11 @@ private:
|
|
|
415
415
|
fIsOval = false;
|
|
416
416
|
fIsRRect = false;
|
|
417
417
|
|
|
418
|
-
fPoints.
|
|
419
|
-
fPoints.
|
|
420
|
-
fVerbs.
|
|
421
|
-
fVerbs.
|
|
422
|
-
fConicWeights.
|
|
418
|
+
fPoints.reserve(pointCount + reservePoints);
|
|
419
|
+
fPoints.resize(pointCount);
|
|
420
|
+
fVerbs.reserve(verbCount + reserveVerbs);
|
|
421
|
+
fVerbs.resize(verbCount);
|
|
422
|
+
fConicWeights.resize(conicCount);
|
|
423
423
|
SkDEBUGCODE(this->validate();)
|
|
424
424
|
}
|
|
425
425
|
|
|
@@ -9,13 +9,15 @@
|
|
|
9
9
|
#define SKSL_MODIFIERS
|
|
10
10
|
|
|
11
11
|
#include "include/private/SkSLLayout.h"
|
|
12
|
-
#include "include/sksl/SkSLPosition.h"
|
|
13
12
|
|
|
14
|
-
#include <
|
|
13
|
+
#include <cstddef>
|
|
14
|
+
#include <memory>
|
|
15
|
+
#include <string>
|
|
15
16
|
|
|
16
17
|
namespace SkSL {
|
|
17
18
|
|
|
18
19
|
class Context;
|
|
20
|
+
class Position;
|
|
19
21
|
|
|
20
22
|
/**
|
|
21
23
|
* A set of modifier keywords (in, out, uniform, etc.) appearing before a declaration.
|
|
@@ -44,11 +46,17 @@ struct Modifiers {
|
|
|
44
46
|
kHighp_Flag = 1 << 6,
|
|
45
47
|
kMediump_Flag = 1 << 7,
|
|
46
48
|
kLowp_Flag = 1 << 8,
|
|
49
|
+
kReadOnly_Flag = 1 << 9,
|
|
50
|
+
kWriteOnly_Flag = 1 << 10,
|
|
51
|
+
kBuffer_Flag = 1 << 11,
|
|
52
|
+
// We use the Metal name for this one (corresponds to the GLSL 'shared' modifier)
|
|
53
|
+
kThreadgroup_Flag = 1 << 12,
|
|
47
54
|
// SkSL extensions, not present in GLSL
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
55
|
+
kExport_Flag = 1 << 13,
|
|
56
|
+
kES3_Flag = 1 << 14,
|
|
57
|
+
kPure_Flag = 1 << 15,
|
|
58
|
+
kInline_Flag = 1 << 16,
|
|
59
|
+
kNoInline_Flag = 1 << 17,
|
|
52
60
|
};
|
|
53
61
|
|
|
54
62
|
Modifiers()
|
|
@@ -60,49 +68,75 @@ struct Modifiers {
|
|
|
60
68
|
, fFlags(flags) {}
|
|
61
69
|
|
|
62
70
|
std::string description() const {
|
|
63
|
-
|
|
71
|
+
return fLayout.description() + DescribeFlags(fFlags) + " ";
|
|
72
|
+
}
|
|
64
73
|
|
|
74
|
+
static std::string DescribeFlags(int flags) {
|
|
65
75
|
// SkSL extensions
|
|
66
|
-
|
|
76
|
+
std::string result;
|
|
77
|
+
if (flags & kExport_Flag) {
|
|
78
|
+
result += "$export ";
|
|
79
|
+
}
|
|
80
|
+
if (flags & kES3_Flag) {
|
|
67
81
|
result += "$es3 ";
|
|
68
82
|
}
|
|
69
|
-
if (
|
|
70
|
-
result += "
|
|
83
|
+
if (flags & kPure_Flag) {
|
|
84
|
+
result += "$pure ";
|
|
85
|
+
}
|
|
86
|
+
if (flags & kInline_Flag) {
|
|
87
|
+
result += "inline ";
|
|
71
88
|
}
|
|
72
|
-
if (
|
|
89
|
+
if (flags & kNoInline_Flag) {
|
|
73
90
|
result += "noinline ";
|
|
74
91
|
}
|
|
75
92
|
|
|
76
93
|
// Real GLSL qualifiers (must be specified in order in GLSL 4.1 and below)
|
|
77
|
-
if (
|
|
94
|
+
if (flags & kFlat_Flag) {
|
|
78
95
|
result += "flat ";
|
|
79
96
|
}
|
|
80
|
-
if (
|
|
97
|
+
if (flags & kNoPerspective_Flag) {
|
|
81
98
|
result += "noperspective ";
|
|
82
99
|
}
|
|
83
|
-
if (
|
|
100
|
+
if (flags & kConst_Flag) {
|
|
84
101
|
result += "const ";
|
|
85
102
|
}
|
|
86
|
-
if (
|
|
103
|
+
if (flags & kUniform_Flag) {
|
|
87
104
|
result += "uniform ";
|
|
88
105
|
}
|
|
89
|
-
if ((
|
|
106
|
+
if ((flags & kIn_Flag) && (flags & kOut_Flag)) {
|
|
90
107
|
result += "inout ";
|
|
91
|
-
} else if (
|
|
108
|
+
} else if (flags & kIn_Flag) {
|
|
92
109
|
result += "in ";
|
|
93
|
-
} else if (
|
|
110
|
+
} else if (flags & kOut_Flag) {
|
|
94
111
|
result += "out ";
|
|
95
112
|
}
|
|
96
|
-
if (
|
|
113
|
+
if (flags & kHighp_Flag) {
|
|
97
114
|
result += "highp ";
|
|
98
115
|
}
|
|
99
|
-
if (
|
|
116
|
+
if (flags & kMediump_Flag) {
|
|
100
117
|
result += "mediump ";
|
|
101
118
|
}
|
|
102
|
-
if (
|
|
119
|
+
if (flags & kLowp_Flag) {
|
|
103
120
|
result += "lowp ";
|
|
104
121
|
}
|
|
122
|
+
if (flags & kReadOnly_Flag) {
|
|
123
|
+
result += "readonly ";
|
|
124
|
+
}
|
|
125
|
+
if (flags & kWriteOnly_Flag) {
|
|
126
|
+
result += "writeonly ";
|
|
127
|
+
}
|
|
128
|
+
if (flags & kBuffer_Flag) {
|
|
129
|
+
result += "buffer ";
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
// We're using a non-GLSL name for this one; the GLSL equivalent is "shared"
|
|
133
|
+
if (flags & kThreadgroup_Flag) {
|
|
134
|
+
result += "threadgroup ";
|
|
135
|
+
}
|
|
105
136
|
|
|
137
|
+
if (!result.empty()) {
|
|
138
|
+
result.pop_back();
|
|
139
|
+
}
|
|
106
140
|
return result;
|
|
107
141
|
}
|
|
108
142
|
|
|
@@ -118,8 +152,10 @@ struct Modifiers {
|
|
|
118
152
|
* Verifies that only permitted modifiers and layout flags are included. Reports errors and
|
|
119
153
|
* returns false in the event of a violation.
|
|
120
154
|
*/
|
|
121
|
-
bool checkPermitted(const Context& context,
|
|
122
|
-
|
|
155
|
+
bool checkPermitted(const Context& context,
|
|
156
|
+
Position pos,
|
|
157
|
+
int permittedModifierFlags,
|
|
158
|
+
int permittedLayoutFlags) const;
|
|
123
159
|
|
|
124
160
|
Layout fLayout;
|
|
125
161
|
int fFlags;
|
|
@@ -23,7 +23,6 @@ public:
|
|
|
23
23
|
kField,
|
|
24
24
|
kFunctionDeclaration,
|
|
25
25
|
kType,
|
|
26
|
-
kUnresolvedFunction,
|
|
27
26
|
kVariable,
|
|
28
27
|
|
|
29
28
|
kFirst = kExternal,
|
|
@@ -52,6 +51,13 @@ public:
|
|
|
52
51
|
return fName;
|
|
53
52
|
}
|
|
54
53
|
|
|
54
|
+
/**
|
|
55
|
+
* Don't call this directly--use SymbolTable::renameSymbol instead!
|
|
56
|
+
*/
|
|
57
|
+
void setName(std::string_view newName) {
|
|
58
|
+
fName = newName;
|
|
59
|
+
}
|
|
60
|
+
|
|
55
61
|
/**
|
|
56
62
|
* Use is<T> to check the type of a symbol.
|
|
57
63
|
* e.g. replace `sym.kind() == Symbol::Kind::kVariable` with `sym.is<Variable>()`.
|
|
@@ -81,8 +87,6 @@ private:
|
|
|
81
87
|
const Type* fType;
|
|
82
88
|
|
|
83
89
|
using INHERITED = IRNode;
|
|
84
|
-
|
|
85
|
-
friend class Type;
|
|
86
90
|
};
|
|
87
91
|
|
|
88
92
|
} // namespace SkSL
|
|
@@ -42,6 +42,10 @@ inline constexpr bool contains(std::string_view str, std::string_view needle) {
|
|
|
42
42
|
return str.find(needle) != std::string_view::npos;
|
|
43
43
|
}
|
|
44
44
|
|
|
45
|
+
inline constexpr bool contains(std::string_view str, std::string_view::value_type c) {
|
|
46
|
+
return str.find(c) != std::string_view::npos;
|
|
47
|
+
}
|
|
48
|
+
|
|
45
49
|
} // namespace skstd
|
|
46
50
|
|
|
47
51
|
#endif
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
Modern implementations of std::vector<T> will generally provide similar performance
|
|
34
34
|
characteristics when used with appropriate care. Consider using std::vector<T> in new code.
|
|
35
35
|
*/
|
|
36
|
-
template <typename T, bool MEM_MOVE =
|
|
36
|
+
template <typename T, bool MEM_MOVE = sk_is_trivially_relocatable<T>::value> class SkTArray {
|
|
37
37
|
private:
|
|
38
38
|
enum ReallocType { kExactFit, kGrowing, kShrinking };
|
|
39
39
|
|
|
@@ -461,6 +461,18 @@ protected:
|
|
|
461
461
|
}
|
|
462
462
|
|
|
463
463
|
private:
|
|
464
|
+
// We disable Control-Flow Integrity sanitization (go/cfi) when casting item-array buffers.
|
|
465
|
+
// CFI flags this code as dangerous because we are casting `buffer` to a T* while the buffer's
|
|
466
|
+
// contents might still be uninitialized memory. When T has a vtable, this is especially risky
|
|
467
|
+
// because we could hypothetically access a virtual method on fItemArray and jump to an
|
|
468
|
+
// unpredictable location in memory. Of course, SkTArray won't actually use fItemArray in this
|
|
469
|
+
// way, and we don't want to construct a T before the user requests one. There's no real risk
|
|
470
|
+
// here, so disable CFI when doing these casts.
|
|
471
|
+
SK_ATTRIBUTE(no_sanitize("cfi"))
|
|
472
|
+
static T* TCast(void* buffer) {
|
|
473
|
+
return (T*)buffer;
|
|
474
|
+
}
|
|
475
|
+
|
|
464
476
|
void init(int count) {
|
|
465
477
|
fCount = SkToU32(count);
|
|
466
478
|
if (!count) {
|
|
@@ -468,7 +480,7 @@ private:
|
|
|
468
480
|
fItemArray = nullptr;
|
|
469
481
|
} else {
|
|
470
482
|
fAllocCount = SkToU32(std::max(count, kMinHeapAllocCount));
|
|
471
|
-
fItemArray = (
|
|
483
|
+
fItemArray = TCast(sk_malloc_throw((size_t)fAllocCount, sizeof(T)));
|
|
472
484
|
}
|
|
473
485
|
fOwnMemory = true;
|
|
474
486
|
fReserved = false;
|
|
@@ -483,11 +495,11 @@ private:
|
|
|
483
495
|
fReserved = false;
|
|
484
496
|
if (count > preallocCount) {
|
|
485
497
|
fAllocCount = SkToU32(std::max(count, kMinHeapAllocCount));
|
|
486
|
-
fItemArray = (
|
|
498
|
+
fItemArray = TCast(sk_malloc_throw(fAllocCount, sizeof(T)));
|
|
487
499
|
fOwnMemory = true;
|
|
488
500
|
} else {
|
|
489
501
|
fAllocCount = SkToU32(preallocCount);
|
|
490
|
-
fItemArray = (
|
|
502
|
+
fItemArray = TCast(preallocStorage);
|
|
491
503
|
fOwnMemory = false;
|
|
492
504
|
}
|
|
493
505
|
}
|
|
@@ -506,7 +518,9 @@ private:
|
|
|
506
518
|
}
|
|
507
519
|
|
|
508
520
|
template <bool E = MEM_MOVE> std::enable_if_t<E, void> move(int dst, int src) {
|
|
509
|
-
memcpy(&fItemArray[dst],
|
|
521
|
+
memcpy(static_cast<void*>(&fItemArray[dst]),
|
|
522
|
+
static_cast<void*>(&fItemArray[src]),
|
|
523
|
+
sizeof(T));
|
|
510
524
|
}
|
|
511
525
|
template <bool E = MEM_MOVE> std::enable_if_t<E, void> move(void* dst) {
|
|
512
526
|
sk_careful_memcpy(dst, fItemArray, fCount * sizeof(T));
|
|
@@ -567,7 +581,7 @@ private:
|
|
|
567
581
|
|
|
568
582
|
fAllocCount = SkToU32(Sk64_pin_to_s32(newAllocCount));
|
|
569
583
|
SkASSERT(fAllocCount >= newCount);
|
|
570
|
-
T* newItemArray = (
|
|
584
|
+
T* newItemArray = TCast(sk_malloc_throw((size_t)fAllocCount, sizeof(T)));
|
|
571
585
|
this->move(newItemArray);
|
|
572
586
|
if (fOwnMemory) {
|
|
573
587
|
sk_free(fItemArray);
|
|
@@ -593,7 +607,7 @@ template<typename T, bool MEM_MOVE> constexpr int SkTArray<T, MEM_MOVE>::kMinHea
|
|
|
593
607
|
/**
|
|
594
608
|
* Subclass of SkTArray that contains a preallocated memory block for the array.
|
|
595
609
|
*/
|
|
596
|
-
template <int N, typename T, bool MEM_MOVE =
|
|
610
|
+
template <int N, typename T, bool MEM_MOVE = sk_is_trivially_relocatable<T>::value>
|
|
597
611
|
class SkSTArray : private SkAlignedSTStorage<N,T>, public SkTArray<T, MEM_MOVE> {
|
|
598
612
|
private:
|
|
599
613
|
using STORAGE = SkAlignedSTStorage<N,T>;
|