@shopify/react-native-skia 0.1.158 → 0.1.160
Sign up to get free protection for your applications and to get access to all the features.
- 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 +222 -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 +293 -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 +384 -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 +79 -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 +62 -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 +171 -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 +41 -55
- 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 +24 -66
- 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 +15 -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 +25 -66
- 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 +15 -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 +5 -2
- package/src/dom/nodes/JsiSkDOM.ts +170 -56
- package/src/dom/nodes/RenderNode.ts +1 -1
- package/src/renderer/Canvas.tsx +37 -57
- 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 +9 -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
@@ -19,6 +19,7 @@ enum class SkFilterMode {
|
|
19
19
|
|
20
20
|
kLast = kLinear,
|
21
21
|
};
|
22
|
+
static constexpr int kSkFilterModeCount = static_cast<int>(SkFilterMode::kLast) + 1;
|
22
23
|
|
23
24
|
enum class SkMipmapMode {
|
24
25
|
kNone, // ignore mipmap levels, sample from the "base"
|
@@ -27,6 +28,7 @@ enum class SkMipmapMode {
|
|
27
28
|
|
28
29
|
kLast = kLinear,
|
29
30
|
};
|
31
|
+
static constexpr int kSkMipmapModeCount = static_cast<int>(SkMipmapMode::kLast) + 1;
|
30
32
|
|
31
33
|
/*
|
32
34
|
* Specify B and C (each between 0...1) to create a shader that applies the corresponding
|
@@ -60,7 +62,7 @@ struct SK_API SkSamplingOptions {
|
|
60
62
|
const SkFilterMode filter = SkFilterMode::kNearest;
|
61
63
|
const SkMipmapMode mipmap = SkMipmapMode::kNone;
|
62
64
|
|
63
|
-
SkSamplingOptions() = default;
|
65
|
+
constexpr SkSamplingOptions() = default;
|
64
66
|
SkSamplingOptions(const SkSamplingOptions&) = default;
|
65
67
|
SkSamplingOptions& operator=(const SkSamplingOptions& that) {
|
66
68
|
this->~SkSamplingOptions(); // A pedantic no-op.
|
@@ -68,19 +70,19 @@ struct SK_API SkSamplingOptions {
|
|
68
70
|
return *this;
|
69
71
|
}
|
70
72
|
|
71
|
-
SkSamplingOptions(SkFilterMode fm, SkMipmapMode mm)
|
73
|
+
constexpr SkSamplingOptions(SkFilterMode fm, SkMipmapMode mm)
|
72
74
|
: filter(fm)
|
73
75
|
, mipmap(mm) {}
|
74
76
|
|
75
|
-
explicit SkSamplingOptions(SkFilterMode fm)
|
77
|
+
explicit constexpr SkSamplingOptions(SkFilterMode fm)
|
76
78
|
: filter(fm)
|
77
79
|
, mipmap(SkMipmapMode::kNone) {}
|
78
80
|
|
79
|
-
explicit SkSamplingOptions(const SkCubicResampler& c)
|
81
|
+
explicit constexpr SkSamplingOptions(const SkCubicResampler& c)
|
80
82
|
: useCubic(true)
|
81
83
|
, cubic(c) {}
|
82
84
|
|
83
|
-
static SkSamplingOptions Aniso(int maxAniso) {
|
85
|
+
static constexpr SkSamplingOptions Aniso(int maxAniso) {
|
84
86
|
return SkSamplingOptions{std::max(maxAniso, 1)};
|
85
87
|
}
|
86
88
|
|
@@ -97,7 +99,7 @@ struct SK_API SkSamplingOptions {
|
|
97
99
|
bool isAniso() const { return maxAniso != 0; }
|
98
100
|
|
99
101
|
private:
|
100
|
-
SkSamplingOptions(int maxAniso) : maxAniso(maxAniso) {}
|
102
|
+
constexpr SkSamplingOptions(int maxAniso) : maxAniso(maxAniso) {}
|
101
103
|
};
|
102
104
|
|
103
105
|
#endif
|
@@ -22,13 +22,14 @@ typedef float SkScalar;
|
|
22
22
|
#define SK_ScalarTanPIOver8 0.414213562f
|
23
23
|
#define SK_ScalarRoot2Over2 0.707106781f
|
24
24
|
#define SK_ScalarMax 3.402823466e+38f
|
25
|
+
#define SK_ScalarMin (-SK_ScalarMax)
|
25
26
|
#define SK_ScalarInfinity SK_FloatInfinity
|
26
27
|
#define SK_ScalarNegativeInfinity SK_FloatNegativeInfinity
|
27
28
|
#define SK_ScalarNaN SK_FloatNaN
|
28
29
|
|
29
30
|
#define SkScalarFloorToScalar(x) sk_float_floor(x)
|
30
31
|
#define SkScalarCeilToScalar(x) sk_float_ceil(x)
|
31
|
-
#define SkScalarRoundToScalar(x)
|
32
|
+
#define SkScalarRoundToScalar(x) sk_float_round(x)
|
32
33
|
#define SkScalarTruncToScalar(x) sk_float_trunc(x)
|
33
34
|
|
34
35
|
#define SkScalarFloorToInt(x) sk_float_floor2int(x)
|
@@ -62,8 +63,6 @@ typedef float SkScalar;
|
|
62
63
|
#define SkScalarToDouble(x) static_cast<double>(x)
|
63
64
|
#define SkDoubleToScalar(x) sk_double_to_float(x)
|
64
65
|
|
65
|
-
#define SK_ScalarMin (-SK_ScalarMax)
|
66
|
-
|
67
66
|
static inline bool SkScalarIsNaN(SkScalar x) { return x != x; }
|
68
67
|
|
69
68
|
/** Returns true if x is not NaN and not infinite
|
@@ -78,26 +77,6 @@ static inline bool SkScalarsAreFinite(const SkScalar array[], int count) {
|
|
78
77
|
return sk_floats_are_finite(array, count);
|
79
78
|
}
|
80
79
|
|
81
|
-
/**
|
82
|
-
* Variant of SkScalarRoundToInt, that performs the rounding step (adding 0.5) explicitly using
|
83
|
-
* double, to avoid possibly losing the low bit(s) of the answer before calling floor().
|
84
|
-
*
|
85
|
-
* This routine will likely be slower than SkScalarRoundToInt(), and should only be used when the
|
86
|
-
* extra precision is known to be valuable.
|
87
|
-
*
|
88
|
-
* In particular, this catches the following case:
|
89
|
-
* SkScalar x = 0.49999997;
|
90
|
-
* int ix = SkScalarRoundToInt(x);
|
91
|
-
* SkASSERT(0 == ix); // <--- fails
|
92
|
-
* ix = SkDScalarRoundToInt(x);
|
93
|
-
* SkASSERT(0 == ix); // <--- succeeds
|
94
|
-
*/
|
95
|
-
static inline int SkDScalarRoundToInt(SkScalar x) {
|
96
|
-
double xx = x;
|
97
|
-
xx += 0.5;
|
98
|
-
return (int)floor(xx);
|
99
|
-
}
|
100
|
-
|
101
80
|
/** Returns the fractional part of the scalar. */
|
102
81
|
static inline SkScalar SkScalarFraction(SkScalar x) {
|
103
82
|
return x - SkScalarTruncToScalar(x);
|
@@ -145,14 +124,16 @@ static inline bool SkScalarNearlyEqual(SkScalar x, SkScalar y,
|
|
145
124
|
return SkScalarAbs(x-y) <= tolerance;
|
146
125
|
}
|
147
126
|
|
127
|
+
#define SK_ScalarSinCosNearlyZero (SK_Scalar1 / (1 << 16))
|
128
|
+
|
148
129
|
static inline float SkScalarSinSnapToZero(SkScalar radians) {
|
149
130
|
float v = SkScalarSin(radians);
|
150
|
-
return SkScalarNearlyZero(v) ? 0.0f : v;
|
131
|
+
return SkScalarNearlyZero(v, SK_ScalarSinCosNearlyZero) ? 0.0f : v;
|
151
132
|
}
|
152
133
|
|
153
134
|
static inline float SkScalarCosSnapToZero(SkScalar radians) {
|
154
135
|
float v = SkScalarCos(radians);
|
155
|
-
return SkScalarNearlyZero(v) ? 0.0f : v;
|
136
|
+
return SkScalarNearlyZero(v, SK_ScalarSinCosNearlyZero) ? 0.0f : v;
|
156
137
|
}
|
157
138
|
|
158
139
|
/** Linearly interpolate between A and B, based on t.
|
@@ -56,6 +56,12 @@ public:
|
|
56
56
|
return this->isAImage(nullptr, (SkTileMode*)nullptr) != nullptr;
|
57
57
|
}
|
58
58
|
|
59
|
+
// TODO(skbug.com/8941): Have Android use SkAndroidFrameworkUtils, move types to SkShaderBase,
|
60
|
+
// and delete asAGradient().
|
61
|
+
#ifndef SK_BUILD_FOR_ANDROID_FRAMEWORK
|
62
|
+
private:
|
63
|
+
#endif
|
64
|
+
|
59
65
|
/**
|
60
66
|
* If the shader subclass can be represented as a gradient, asAGradient
|
61
67
|
* returns the matching GradientType enum (or kNone_GradientType if it
|
@@ -92,24 +98,26 @@ public:
|
|
92
98
|
kRadial_GradientType,
|
93
99
|
kSweep_GradientType,
|
94
100
|
kConical_GradientType,
|
95
|
-
kLast_GradientType = kConical_GradientType,
|
96
101
|
};
|
97
102
|
|
98
103
|
struct GradientInfo {
|
99
|
-
int fColorCount;
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
SkColor* fColors;
|
104
|
-
SkScalar* fColorOffsets; //!< The unit offset for color transitions.
|
105
|
-
SkPoint fPoint[2];
|
106
|
-
SkScalar fRadius[2];
|
104
|
+
int fColorCount = 0; //!< In-out parameter, specifies passed size
|
105
|
+
// of fColors/fColorOffsets on input, and
|
106
|
+
// actual number of colors/offsets on
|
107
|
+
// output.
|
108
|
+
SkColor* fColors = nullptr; //!< The colors in the gradient.
|
109
|
+
SkScalar* fColorOffsets = nullptr; //!< The unit offset for color transitions.
|
110
|
+
SkPoint fPoint[2]; //!< Type specific, see above.
|
111
|
+
SkScalar fRadius[2]; //!< Type specific, see above.
|
107
112
|
SkTileMode fTileMode;
|
108
|
-
uint32_t fGradientFlags;
|
113
|
+
uint32_t fGradientFlags = 0; //!< see SkGradientShader::Flags
|
109
114
|
};
|
110
115
|
|
111
|
-
|
112
|
-
|
116
|
+
GradientType asAGradient(GradientInfo* info) const;
|
117
|
+
|
118
|
+
#ifndef SK_BUILD_FOR_ANDROID_FRAMEWORK
|
119
|
+
public:
|
120
|
+
#endif
|
113
121
|
|
114
122
|
//////////////////////////////////////////////////////////////////////////
|
115
123
|
// Methods to create combinations or variants of shaders
|
@@ -9,29 +9,67 @@
|
|
9
9
|
#define SkSpan_DEFINED
|
10
10
|
|
11
11
|
#include <cstddef>
|
12
|
+
#include <initializer_list>
|
12
13
|
#include <iterator>
|
13
14
|
#include <type_traits>
|
14
15
|
#include <utility>
|
15
16
|
#include "include/private/SkTLogic.h"
|
16
17
|
|
18
|
+
// Add macro to check the lifetime of initializer_list arguments. initializer_list has a very
|
19
|
+
// short life span, and can only be used as a parameter, and not as a variable.
|
20
|
+
#if defined(__clang__) && defined(__has_cpp_attribute) && __has_cpp_attribute(clang::lifetimebound)
|
21
|
+
#define SK_CHECK_IL_LIFETIME [[clang::lifetimebound]]
|
22
|
+
#else
|
23
|
+
#define SK_CHECK_IL_LIFETIME
|
24
|
+
#endif
|
25
|
+
|
17
26
|
/**
|
18
|
-
*
|
19
|
-
*
|
20
|
-
*
|
27
|
+
* SkSpan holds a reference to contiguous data of type T along with a count. SkSpan does not own
|
28
|
+
* the data itself but is merely a reference, therefore you must take care with the lifetime of
|
29
|
+
* the underlying data.
|
30
|
+
*
|
31
|
+
* SkSpan is a count and a pointer into existing array or data type that stores its data in
|
32
|
+
* contiguous memory like std::vector. Any container that works with std::size() and std::data()
|
33
|
+
* can be used.
|
34
|
+
*
|
35
|
+
* SkSpan makes a convenient parameter for a routine to accept array like things. This allows you to
|
36
|
+
* write the routine without overloads for all different container types.
|
37
|
+
*
|
38
|
+
* Example:
|
39
|
+
* void routine(SkSpan<const int> a) { ... }
|
40
|
+
*
|
41
|
+
* std::vector v = {1, 2, 3, 4, 5};
|
42
|
+
*
|
43
|
+
* routine(a);
|
44
|
+
*
|
45
|
+
* A word of caution when working with initializer_list, initializer_lists have a lifetime that is
|
46
|
+
* limited to the current statement. The following is correct and safe:
|
21
47
|
*
|
22
|
-
*
|
23
|
-
*
|
48
|
+
* Example:
|
49
|
+
* routine({1,2,3,4,5});
|
50
|
+
*
|
51
|
+
* The following is undefined, and will result in erratic execution:
|
52
|
+
*
|
53
|
+
* Bad Example:
|
54
|
+
* initializer_list l = {1, 2, 3, 4, 5}; // The data behind l dies at the ;.
|
55
|
+
* routine(l);
|
24
56
|
*/
|
25
57
|
template <typename T>
|
26
58
|
class SkSpan {
|
27
59
|
public:
|
28
60
|
constexpr SkSpan() : fPtr{nullptr}, fSize{0} {}
|
29
61
|
constexpr SkSpan(T* ptr, size_t size) : fPtr{ptr}, fSize{size} {
|
62
|
+
SkASSERT(ptr || size == 0); // disallow nullptr + a nonzero size
|
30
63
|
SkASSERT(size < kMaxSize);
|
31
64
|
}
|
32
65
|
template <typename U, typename = typename std::enable_if<std::is_same<const U, T>::value>::type>
|
33
|
-
constexpr SkSpan(const SkSpan<U>& that) : fPtr(
|
66
|
+
constexpr SkSpan(const SkSpan<U>& that) : fPtr(std::data(that)), fSize{std::size(that)} {}
|
34
67
|
constexpr SkSpan(const SkSpan& o) = default;
|
68
|
+
template<size_t N> constexpr SkSpan(T(&a)[N]) : SkSpan(a, N) { }
|
69
|
+
template<typename Container>
|
70
|
+
constexpr SkSpan(Container& c) : SkSpan{std::data(c), std::size(c)} { }
|
71
|
+
SkSpan(std::initializer_list<T> il SK_CHECK_IL_LIFETIME)
|
72
|
+
: SkSpan(std::data(il), std::size(il)) {}
|
35
73
|
|
36
74
|
constexpr SkSpan& operator=(const SkSpan& that) = default;
|
37
75
|
|
@@ -67,23 +105,17 @@ public:
|
|
67
105
|
}
|
68
106
|
|
69
107
|
private:
|
70
|
-
static constexpr size_t kMaxSize = std::numeric_limits<size_t>::max() / sizeof(T);
|
108
|
+
static const constexpr size_t kMaxSize = std::numeric_limits<size_t>::max() / sizeof(T);
|
71
109
|
T* fPtr;
|
72
110
|
size_t fSize;
|
73
111
|
};
|
74
112
|
|
75
|
-
template <typename T, typename S> inline constexpr SkSpan<T> SkMakeSpan(T* p, S s) {
|
76
|
-
return SkSpan<T>{p, SkTo<size_t>(s)};
|
77
|
-
}
|
78
|
-
|
79
|
-
template <size_t N, typename T> inline constexpr SkSpan<T> SkMakeSpan(T (&a)[N]) {
|
80
|
-
return SkSpan<T>{a, N};
|
81
|
-
}
|
82
|
-
|
83
113
|
template <typename Container>
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
114
|
+
SkSpan(Container&) ->
|
115
|
+
SkSpan<std::remove_pointer_t<decltype(std::data(std::declval<Container&>()))>>;
|
116
|
+
|
117
|
+
template <typename T>
|
118
|
+
SkSpan(std::initializer_list<T>) ->
|
119
|
+
SkSpan<std::remove_pointer_t<decltype(std::data(std::declval<std::initializer_list<T>>()))>>;
|
88
120
|
|
89
121
|
#endif // SkSpan_DEFINED
|
@@ -122,7 +122,7 @@ public:
|
|
122
122
|
}
|
123
123
|
|
124
124
|
//SkStreamSeekable
|
125
|
-
/** Returns true if this stream can report
|
125
|
+
/** Returns true if this stream can report its current position. */
|
126
126
|
virtual bool hasPosition() const { return false; }
|
127
127
|
/** Returns the current position in the stream. If this cannot be done, returns 0. */
|
128
128
|
virtual size_t getPosition() const { return 0; }
|
@@ -140,7 +140,7 @@ public:
|
|
140
140
|
virtual bool move(long /*offset*/) { return false; }
|
141
141
|
|
142
142
|
//SkStreamAsset
|
143
|
-
/** Returns true if this stream can report
|
143
|
+
/** Returns true if this stream can report its total length. */
|
144
144
|
virtual bool hasLength() const { return false; }
|
145
145
|
/** Returns the total length of the stream. If this cannot be done, returns 0. */
|
146
146
|
virtual size_t getLength() const { return 0; }
|
@@ -184,10 +184,12 @@ public:
|
|
184
184
|
void set(const SkString& src) { *this = src; }
|
185
185
|
void set(const char text[]);
|
186
186
|
void set(const char text[], size_t len);
|
187
|
+
void set(std::string_view str) { this->set(str.data(), str.size()); }
|
187
188
|
|
188
|
-
void insert(size_t offset, const SkString& src) { this->insert(offset, src.c_str(), src.size()); }
|
189
189
|
void insert(size_t offset, const char text[]);
|
190
190
|
void insert(size_t offset, const char text[], size_t len);
|
191
|
+
void insert(size_t offset, const SkString& str) { this->insert(offset, str.c_str(), str.size()); }
|
192
|
+
void insert(size_t offset, std::string_view str) { this->insert(offset, str.data(), str.size()); }
|
191
193
|
void insertUnichar(size_t offset, SkUnichar);
|
192
194
|
void insertS32(size_t offset, int32_t value);
|
193
195
|
void insertS64(size_t offset, int64_t value, int minDigits = 0);
|
@@ -196,9 +198,10 @@ public:
|
|
196
198
|
void insertHex(size_t offset, uint32_t value, int minDigits = 0);
|
197
199
|
void insertScalar(size_t offset, SkScalar);
|
198
200
|
|
199
|
-
void append(const SkString& str) { this->insert((size_t)-1, str); }
|
200
201
|
void append(const char text[]) { this->insert((size_t)-1, text); }
|
201
202
|
void append(const char text[], size_t len) { this->insert((size_t)-1, text, len); }
|
203
|
+
void append(const SkString& str) { this->insert((size_t)-1, str.c_str(), str.size()); }
|
204
|
+
void append(std::string_view str) { this->insert((size_t)-1, str.data(), str.size()); }
|
202
205
|
void appendUnichar(SkUnichar uni) { this->insertUnichar((size_t)-1, uni); }
|
203
206
|
void appendS32(int32_t value) { this->insertS32((size_t)-1, value); }
|
204
207
|
void appendS64(int64_t value, int minDigits = 0) { this->insertS64((size_t)-1, value, minDigits); }
|
@@ -207,9 +210,10 @@ public:
|
|
207
210
|
void appendHex(uint32_t value, int minDigits = 0) { this->insertHex((size_t)-1, value, minDigits); }
|
208
211
|
void appendScalar(SkScalar value) { this->insertScalar((size_t)-1, value); }
|
209
212
|
|
210
|
-
void prepend(const SkString& str) { this->insert(0, str); }
|
211
213
|
void prepend(const char text[]) { this->insert(0, text); }
|
212
214
|
void prepend(const char text[], size_t len) { this->insert(0, text, len); }
|
215
|
+
void prepend(const SkString& str) { this->insert(0, str.c_str(), str.size()); }
|
216
|
+
void prepend(std::string_view str) { this->insert(0, str.data(), str.size()); }
|
213
217
|
void prependUnichar(SkUnichar uni) { this->insertUnichar(0, uni); }
|
214
218
|
void prependS32(int32_t value) { this->insertS32(0, value); }
|
215
219
|
void prependS64(int32_t value, int minDigits = 0) { this->insertS64(0, value, minDigits); }
|
@@ -235,6 +239,8 @@ public:
|
|
235
239
|
*/
|
236
240
|
void swap(SkString& other);
|
237
241
|
|
242
|
+
using sk_is_trivially_relocatable = std::true_type;
|
243
|
+
|
238
244
|
private:
|
239
245
|
struct Rec {
|
240
246
|
public:
|
@@ -259,6 +265,8 @@ private:
|
|
259
265
|
};
|
260
266
|
sk_sp<Rec> fRec;
|
261
267
|
|
268
|
+
static_assert(::sk_is_trivially_relocatable<decltype(fRec)>::value);
|
269
|
+
|
262
270
|
#ifdef SK_DEBUG
|
263
271
|
const SkString& validate() const;
|
264
272
|
#else
|
@@ -21,24 +21,31 @@
|
|
21
21
|
#include <android/hardware_buffer.h>
|
22
22
|
#endif
|
23
23
|
|
24
|
-
#
|
24
|
+
#if SK_SUPPORT_GPU && defined(SK_METAL)
|
25
25
|
#include "include/gpu/mtl/GrMtlTypes.h"
|
26
26
|
#endif
|
27
27
|
|
28
28
|
class SkCanvas;
|
29
|
+
class SkCapabilities;
|
29
30
|
class SkDeferredDisplayList;
|
30
31
|
class SkPaint;
|
31
32
|
class SkSurfaceCharacterization;
|
32
33
|
class GrBackendRenderTarget;
|
33
34
|
class GrBackendSemaphore;
|
34
|
-
class GrBackendSurfaceMutableState;
|
35
35
|
class GrBackendTexture;
|
36
36
|
class GrDirectContext;
|
37
37
|
class GrRecordingContext;
|
38
38
|
class GrRenderTarget;
|
39
39
|
enum GrSurfaceOrigin: int;
|
40
40
|
|
41
|
-
namespace skgpu
|
41
|
+
namespace skgpu {
|
42
|
+
class MutableTextureState;
|
43
|
+
}
|
44
|
+
|
45
|
+
namespace skgpu::graphite {
|
46
|
+
class BackendTexture;
|
47
|
+
class Recorder;
|
48
|
+
}
|
42
49
|
|
43
50
|
/** \class SkSurface
|
44
51
|
SkSurface is responsible for managing the pixels that a canvas draws into. The pixels can be
|
@@ -391,7 +398,41 @@ public:
|
|
391
398
|
);
|
392
399
|
#endif
|
393
400
|
|
394
|
-
#ifdef
|
401
|
+
#ifdef SK_GRAPHITE_ENABLED
|
402
|
+
/**
|
403
|
+
* In Graphite, while clients hold a ref on an SkSurface, the backing gpu object does _not_
|
404
|
+
* count against the budget. Once an SkSurface is freed, the backing gpu object may or may
|
405
|
+
* not become a scratch (i.e., reusable) resource but, if it does, it will be counted against
|
406
|
+
* the budget.
|
407
|
+
*/
|
408
|
+
static sk_sp<SkSurface> MakeGraphite(
|
409
|
+
skgpu::graphite::Recorder*,
|
410
|
+
const SkImageInfo& imageInfo,
|
411
|
+
skgpu::graphite::Mipmapped = skgpu::graphite::Mipmapped::kNo,
|
412
|
+
const SkSurfaceProps* surfaceProps = nullptr);
|
413
|
+
|
414
|
+
/**
|
415
|
+
* Wraps a GPU-backed texture in an SkSurface. Depending on the backend gpu API, the caller may
|
416
|
+
* be required to ensure the texture is valid for the lifetime of the returned SkSurface. The
|
417
|
+
* required lifetimes for the specific apis are:
|
418
|
+
* Metal: Skia will call retain on the underlying MTLTexture so the caller can drop it once
|
419
|
+
* this call returns.
|
420
|
+
*
|
421
|
+
* SkSurface is returned if all the parameters are valid. The backendTexture is valid if its
|
422
|
+
* format agrees with colorSpace and recorder; for instance, if backendTexture has an sRGB
|
423
|
+
* configuration, then the recorder must support sRGB, and colorSpace must be present. Further,
|
424
|
+
* backendTexture's width and height must not exceed the recorder's capabilities, and the
|
425
|
+
* recorder must be able to support the back-end texture.
|
426
|
+
*/
|
427
|
+
static sk_sp<SkSurface> MakeGraphiteFromBackendTexture(skgpu::graphite::Recorder*,
|
428
|
+
const skgpu::graphite::BackendTexture&,
|
429
|
+
SkColorType colorType,
|
430
|
+
sk_sp<SkColorSpace> colorSpace,
|
431
|
+
const SkSurfaceProps* props);
|
432
|
+
|
433
|
+
#endif // SK_GRAPHITE_ENABLED
|
434
|
+
|
435
|
+
#if SK_SUPPORT_GPU && defined(SK_METAL)
|
395
436
|
/** Creates SkSurface from CAMetalLayer.
|
396
437
|
Returned SkSurface takes a reference on the CAMetalLayer. The ref on the layer will be
|
397
438
|
released when the SkSurface is destroyed.
|
@@ -600,6 +641,12 @@ public:
|
|
600
641
|
*/
|
601
642
|
SkCanvas* getCanvas();
|
602
643
|
|
644
|
+
/** Returns SkCapabilities that describes the capabilities of the SkSurface's device.
|
645
|
+
|
646
|
+
@return SkCapabilities of SkSurface's device.
|
647
|
+
*/
|
648
|
+
sk_sp<const SkCapabilities> capabilities();
|
649
|
+
|
603
650
|
/** Returns a compatible SkSurface, or nullptr. Returned SkSurface contains
|
604
651
|
the same raster, GPU, or null properties as the original. Returned SkSurface
|
605
652
|
does not share the same pixels.
|
@@ -787,6 +834,36 @@ public:
|
|
787
834
|
using RescaleGamma = SkImage::RescaleGamma;
|
788
835
|
using RescaleMode = SkImage::RescaleMode;
|
789
836
|
|
837
|
+
/** Makes surface pixel data available to caller, possibly asynchronously.
|
838
|
+
|
839
|
+
Currently asynchronous reads are only supported on the GPU backend and only when the
|
840
|
+
underlying 3D API supports transfer buffers and CPU/GPU synchronization primitives. In all
|
841
|
+
other cases this operates synchronously.
|
842
|
+
|
843
|
+
Data is read from the source sub-rectangle, then converted to the color space, color type,
|
844
|
+
and alpha type of 'info'. A 'srcRect' that is not contained by the bounds of the surface
|
845
|
+
causes failure.
|
846
|
+
|
847
|
+
When the pixel data is ready the caller's ReadPixelsCallback is called with a
|
848
|
+
AsyncReadResult containing pixel data in the requested color type, alpha type, and color
|
849
|
+
space. The AsyncReadResult will have count() == 1. Upon failure the callback is called
|
850
|
+
with nullptr for AsyncReadResult. For a GPU surface this flushes work but a submit must
|
851
|
+
occur to guarantee a finite time before the callback is called.
|
852
|
+
|
853
|
+
The data is valid for the lifetime of AsyncReadResult with the exception that if the
|
854
|
+
SkSurface is GPU-backed the data is immediately invalidated if the context is abandoned
|
855
|
+
or destroyed.
|
856
|
+
|
857
|
+
@param info info of the requested pixels
|
858
|
+
@param srcRect subrectangle of surface to read
|
859
|
+
@param callback function to call with result of the read
|
860
|
+
@param context passed to callback
|
861
|
+
*/
|
862
|
+
void asyncReadPixels(const SkImageInfo& info,
|
863
|
+
const SkIRect& srcRect,
|
864
|
+
ReadPixelsCallback callback,
|
865
|
+
ReadPixelsContext context);
|
866
|
+
|
790
867
|
/** Makes surface pixel data available to caller, possibly asynchronously. It can also rescale
|
791
868
|
the surface pixels.
|
792
869
|
|
@@ -990,15 +1067,15 @@ public:
|
|
990
1067
|
The GrFlushInfo describes additional options to flush. Please see documentation at
|
991
1068
|
GrFlushInfo for more info.
|
992
1069
|
|
993
|
-
If a
|
994
|
-
the surface to be in the state requested by the
|
1070
|
+
If a skgpu::MutableTextureState is passed in, at the end of the flush we will transition
|
1071
|
+
the surface to be in the state requested by the skgpu::MutableTextureState. If the surface
|
995
1072
|
(or SkImage or GrBackendSurface wrapping the same backend object) is used again after this
|
996
1073
|
flush the state may be changed and no longer match what is requested here. This is often
|
997
1074
|
used if the surface will be used for presenting or external use and the client wants backend
|
998
1075
|
object to be prepped for that use. A finishedProc or semaphore on the GrFlushInfo will also
|
999
1076
|
include the work for any requested state change.
|
1000
1077
|
|
1001
|
-
If the backend API is Vulkan, the caller can set the
|
1078
|
+
If the backend API is Vulkan, the caller can set the skgpu::MutableTextureState's
|
1002
1079
|
VkImageLayout to VK_IMAGE_LAYOUT_UNDEFINED or queueFamilyIndex to VK_QUEUE_FAMILY_IGNORED to
|
1003
1080
|
tell Skia to not change those respective states.
|
1004
1081
|
|
@@ -1022,7 +1099,7 @@ public:
|
|
1022
1099
|
@param access optional state change request after flush
|
1023
1100
|
*/
|
1024
1101
|
GrSemaphoresSubmitted flush(const GrFlushInfo& info,
|
1025
|
-
const
|
1102
|
+
const skgpu::MutableTextureState* newState = nullptr);
|
1026
1103
|
#endif // SK_SUPPORT_GPU
|
1027
1104
|
|
1028
1105
|
void flush();
|
@@ -20,6 +20,10 @@ struct SkRSXform;
|
|
20
20
|
struct SkSerialProcs;
|
21
21
|
struct SkDeserialProcs;
|
22
22
|
|
23
|
+
namespace sktext {
|
24
|
+
class GlyphRunList;
|
25
|
+
}
|
26
|
+
|
23
27
|
/** \class SkTextBlob
|
24
28
|
SkTextBlob combines multiple text runs into an immutable container. Each text
|
25
29
|
run consists of glyphs, SkPaint, and position. Only parts of SkPaint related to
|
@@ -250,8 +254,7 @@ private:
|
|
250
254
|
fCacheID.store(cacheID);
|
251
255
|
}
|
252
256
|
|
253
|
-
friend class
|
254
|
-
friend class GrTextBlobCache;
|
257
|
+
friend class sktext::GlyphRunList;
|
255
258
|
friend class SkTextBlobBuilder;
|
256
259
|
friend class SkTextBlobPriv;
|
257
260
|
friend class SkTextBlobRunIterator;
|
@@ -193,9 +193,9 @@
|
|
193
193
|
#else
|
194
194
|
#include "include/config/SkUserConfig.h"
|
195
195
|
#endif
|
196
|
+
// IWYU pragma: end_exports
|
196
197
|
#include <stddef.h>
|
197
198
|
#include <stdint.h>
|
198
|
-
// IWYU pragma: end_exports
|
199
199
|
|
200
200
|
// Post SkUserConfig.h checks and such.
|
201
201
|
#if !defined(SK_DEBUG) && !defined(SK_RELEASE)
|
@@ -236,7 +236,7 @@
|
|
236
236
|
# define SK_SUPPORT_GPU 1
|
237
237
|
#endif
|
238
238
|
|
239
|
-
#if SK_SUPPORT_GPU || SK_GRAPHITE_ENABLED
|
239
|
+
#if SK_SUPPORT_GPU || defined(SK_GRAPHITE_ENABLED)
|
240
240
|
# if !defined(SK_ENABLE_SKSL)
|
241
241
|
# define SK_ENABLE_SKSL
|
242
242
|
# endif
|
@@ -340,14 +340,6 @@
|
|
340
340
|
# endif
|
341
341
|
#endif
|
342
342
|
|
343
|
-
#if !defined(SK_MAYBE_UNUSED)
|
344
|
-
# if defined(__clang__) || defined(__GNUC__)
|
345
|
-
# define SK_MAYBE_UNUSED [[maybe_unused]]
|
346
|
-
# else
|
347
|
-
# define SK_MAYBE_UNUSED
|
348
|
-
# endif
|
349
|
-
#endif
|
350
|
-
|
351
343
|
/**
|
352
344
|
* If your judgment is better than the compiler's (i.e. you've profiled it),
|
353
345
|
* you can use SK_ALWAYS_INLINE to force inlining. E.g.
|
@@ -529,6 +521,15 @@ static inline constexpr int64_t SkLeftShift(int64_t value, int32_t shift) {
|
|
529
521
|
|
530
522
|
/** @return the number of entries in an array (not a pointer)
|
531
523
|
*/
|
524
|
+
// The SkArrayCountHelper template returns a type 'char (&)[N]', a reference to an array of
|
525
|
+
// char with N elements, where N is deduced using function parameter type deduction. This is then
|
526
|
+
// used in the sizeof operator in SK_ARRAY_COUNT. The sizeof operator ignores the reference, and
|
527
|
+
// just evaluates the size of the array type.
|
528
|
+
//
|
529
|
+
// DEPRECATED: use std::size() instead.
|
530
|
+
// Note: Rarely, std::size(z) can't deduce the type of z during compile time for static_assert
|
531
|
+
// while SK_ARRAY_COUNT can. It can't be deduced because z is part of class, and the class' this
|
532
|
+
// pointer is not a valid constexpr expression. Use SkASSERT instead.
|
532
533
|
template <typename T, size_t N> char (&SkArrayCountHelper(T (&array)[N]))[N];
|
533
534
|
#define SK_ARRAY_COUNT(array) (sizeof(SkArrayCountHelper(array)))
|
534
535
|
|
@@ -35,14 +35,9 @@ public:
|
|
35
35
|
void appendInt(const char* owner, const char* name, int value);
|
36
36
|
void appendFloat(const char* owner, const char* name, float value);
|
37
37
|
void appendName(const char* owner, const char* attrName, const char* value);
|
38
|
-
void appendString(const char* owner, const char* attrName, const char* value);
|
39
38
|
void appendFloatArray(const char* owner,
|
40
39
|
const char* name,
|
41
40
|
const std::vector<float>& value);
|
42
|
-
// Deprecated.
|
43
|
-
void appendStringArray(const char* owner,
|
44
|
-
const char* attrName,
|
45
|
-
const std::vector<SkString>& values);
|
46
41
|
void appendNodeIdArray(const char* owner,
|
47
42
|
const char* attrName,
|
48
43
|
const std::vector<int>& nodeIds);
|
@@ -8,7 +8,12 @@
|
|
8
8
|
#ifndef Sk1DPathEffect_DEFINED
|
9
9
|
#define Sk1DPathEffect_DEFINED
|
10
10
|
|
11
|
-
#include "include/core/
|
11
|
+
#include "include/core/SkRefCnt.h"
|
12
|
+
#include "include/core/SkScalar.h"
|
13
|
+
#include "include/core/SkTypes.h"
|
14
|
+
|
15
|
+
class SkPath;
|
16
|
+
class SkPathEffect;
|
12
17
|
|
13
18
|
class SK_API SkPath1DPathEffect {
|
14
19
|
public:
|
@@ -8,10 +8,13 @@
|
|
8
8
|
#ifndef Sk2DPathEffect_DEFINED
|
9
9
|
#define Sk2DPathEffect_DEFINED
|
10
10
|
|
11
|
-
#include "include/core/
|
11
|
+
#include "include/core/SkRefCnt.h"
|
12
|
+
#include "include/core/SkScalar.h"
|
13
|
+
#include "include/core/SkTypes.h"
|
12
14
|
|
13
15
|
class SkMatrix;
|
14
16
|
class SkPath;
|
17
|
+
class SkPathEffect;
|
15
18
|
|
16
19
|
class SK_API SkLine2DPathEffect {
|
17
20
|
public:
|
@@ -9,17 +9,14 @@
|
|
9
9
|
#define SkColorMatrixFilter_DEFINED
|
10
10
|
|
11
11
|
#include "include/core/SkColorFilter.h"
|
12
|
-
#include "include/effects/SkColorMatrix.h"
|
13
12
|
|
13
|
+
// (DEPRECATED) This factory function is deprecated. Please use the one in
|
14
|
+
// SkColorFilters (i.e., Lighting).
|
14
15
|
class SK_API SkColorMatrixFilter : public SkColorFilter {
|
15
16
|
public:
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
* [0..255]. The alpha components of the mul and add arguments
|
20
|
-
* are ignored.
|
21
|
-
*/
|
22
|
-
static sk_sp<SkColorFilter> MakeLightingFilter(SkColor mul, SkColor add);
|
17
|
+
static sk_sp<SkColorFilter> MakeLightingFilter(SkColor mul, SkColor add) {
|
18
|
+
return SkColorFilters::Lighting(mul, add);
|
19
|
+
}
|
23
20
|
};
|
24
21
|
|
25
22
|
#endif
|