@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
package/android/CMakeLists.txt
CHANGED
@@ -1,11 +1,6 @@
|
|
1
1
|
project(RNSkia)
|
2
2
|
cmake_minimum_required(VERSION 3.4.1)
|
3
3
|
|
4
|
-
if(${BUILD_TYPE} STREQUAL "debug")
|
5
|
-
set (CMAKE_BUILD_TYPE Debug)
|
6
|
-
message("-- Building with Debug Symbols")
|
7
|
-
endif()
|
8
|
-
|
9
4
|
set (CMAKE_VERBOSE_MAKEFILE ON)
|
10
5
|
set (CMAKE_CXX_STANDARD 17)
|
11
6
|
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DSK_GL -DSK_BUILD_FOR_ANDROID -DFOLLY_NO_CONFIG=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -DFOLLY_HAVE_MEMRCHR=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_MOBILE=1 -DON_ANDROID -DONANDROID")
|
@@ -14,12 +9,19 @@ set (PACKAGE_NAME "reactskia")
|
|
14
9
|
set (SKIA_LIB "skia")
|
15
10
|
set (SKIA_SVG_LIB "svg")
|
16
11
|
set (SKIA_SKSHAPER_LIB "skshaper")
|
12
|
+
set (SKIA_SKPARAGRAPH_LIB "skparagraph")
|
13
|
+
set (SKIA_SKUNICODE_LIB "skunicode")
|
17
14
|
|
18
15
|
set(build_DIR ${CMAKE_SOURCE_DIR}/build)
|
19
16
|
file(GLOB LIBRN_DIR "${PREBUILT_DIR}/${ANDROID_ABI}")
|
20
17
|
file(GLOB libfbjni_link_DIRS "${build_DIR}/fbjni*.aar/jni/${ANDROID_ABI}")
|
21
18
|
file(GLOB libfbjni_include_DIRS "${build_DIR}/fbjni-*-headers.jar/")
|
22
19
|
|
20
|
+
message("-- ABI : " ${ANDROID_ABI})
|
21
|
+
message("-- PREBUILT: " ${PREBUILT_DIR})
|
22
|
+
message("-- BUILD : " ${build_DIR})
|
23
|
+
message("-- LIBRN : " ${LIBRN_DIR})
|
24
|
+
|
23
25
|
link_directories(../libs/android/${ANDROID_ABI}/)
|
24
26
|
|
25
27
|
if(${REACT_NATIVE_VERSION} LESS 66)
|
@@ -41,11 +43,15 @@ add_library(
|
|
41
43
|
"${PROJECT_SOURCE_DIR}/cpp/rnskia-android/SkiaOpenGLRenderer.cpp"
|
42
44
|
|
43
45
|
"${PROJECT_SOURCE_DIR}/cpp/jsi/JsiHostObject.cpp"
|
46
|
+
"${PROJECT_SOURCE_DIR}/cpp/jsi/JsiValue.cpp"
|
44
47
|
|
45
48
|
"${PROJECT_SOURCE_DIR}/cpp/rnskia/RNSkManager.cpp"
|
46
49
|
"${PROJECT_SOURCE_DIR}/cpp/rnskia/RNSkJsView.cpp"
|
50
|
+
"${PROJECT_SOURCE_DIR}/cpp/rnskia/RNSkDomView.cpp"
|
47
51
|
"${PROJECT_SOURCE_DIR}/cpp/rnskia/RNSkDispatchQueue.cpp"
|
48
52
|
|
53
|
+
"${PROJECT_SOURCE_DIR}/cpp/rnskia/dom/base/DrawingContext.cpp"
|
54
|
+
|
49
55
|
"${PROJECT_SOURCE_DIR}/cpp/api/third_party/CSSColorParser.cpp"
|
50
56
|
|
51
57
|
)
|
@@ -66,6 +72,7 @@ target_include_directories(
|
|
66
72
|
cpp/skia/include/utils/
|
67
73
|
cpp/skia/include/pathops/
|
68
74
|
cpp/skia/modules/
|
75
|
+
cpp/skia/modules/skparagraph/include/
|
69
76
|
cpp/skia/include/
|
70
77
|
cpp/skia
|
71
78
|
|
@@ -75,6 +82,10 @@ target_include_directories(
|
|
75
82
|
cpp/rnskia-android
|
76
83
|
cpp/rnskia
|
77
84
|
cpp/rnskia/values
|
85
|
+
cpp/rnskia/dom
|
86
|
+
cpp/rnskia/dom/base
|
87
|
+
cpp/rnskia/dom/nodes
|
88
|
+
cpp/rnskia/dom/props
|
78
89
|
cpp/utils
|
79
90
|
|
80
91
|
${libfbjni_include_DIRS}
|
@@ -82,6 +93,7 @@ target_include_directories(
|
|
82
93
|
|
83
94
|
# Import prebuilt SKIA libraries
|
84
95
|
set (SKIA_LIBS_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../libs/android/${ANDROID_ABI}")
|
96
|
+
|
85
97
|
add_library(skia STATIC IMPORTED)
|
86
98
|
set_property(TARGET skia PROPERTY IMPORTED_LOCATION "${SKIA_LIBS_PATH}/libskia.a")
|
87
99
|
|
@@ -91,18 +103,20 @@ set_property(TARGET svg PROPERTY IMPORTED_LOCATION "${SKIA_LIBS_PATH}/libsvg.a")
|
|
91
103
|
add_library(skshaper STATIC IMPORTED)
|
92
104
|
set_property(TARGET skshaper PROPERTY IMPORTED_LOCATION "${SKIA_LIBS_PATH}/libskshaper.a")
|
93
105
|
|
106
|
+
add_library(skparagraph STATIC IMPORTED)
|
107
|
+
set_property(TARGET skparagraph PROPERTY IMPORTED_LOCATION "${SKIA_LIBS_PATH}/libskparagraph.a")
|
108
|
+
|
109
|
+
add_library(skunicode STATIC IMPORTED)
|
110
|
+
set_property(TARGET skunicode PROPERTY IMPORTED_LOCATION "${SKIA_LIBS_PATH}/libskunicode.a")
|
111
|
+
|
94
112
|
|
95
113
|
find_library(
|
96
114
|
LOG_LIB
|
97
115
|
log
|
98
116
|
)
|
99
117
|
|
100
|
-
|
101
|
-
|
102
|
-
jsi
|
103
|
-
PATHS ${LIBRN_DIR}
|
104
|
-
NO_CMAKE_FIND_ROOT_PATH
|
105
|
-
)
|
118
|
+
message("-- LOG : " ${LOG_LIB})
|
119
|
+
|
106
120
|
if(${REACT_NATIVE_VERSION} LESS 66)
|
107
121
|
# JSI lib didn't exist on RN 0.65 and before. Simply omit it.
|
108
122
|
set (JSI_LIB "")
|
@@ -116,6 +130,8 @@ find_library(
|
|
116
130
|
)
|
117
131
|
endif()
|
118
132
|
|
133
|
+
message("-- JSI : " ${JSI_LIB})
|
134
|
+
|
119
135
|
find_library(
|
120
136
|
REACT_LIB
|
121
137
|
react_nativemodule_core
|
@@ -123,6 +139,8 @@ find_library(
|
|
123
139
|
NO_CMAKE_FIND_ROOT_PATH
|
124
140
|
)
|
125
141
|
|
142
|
+
message("-- REACT : " ${REACT_LIB})
|
143
|
+
|
126
144
|
find_library(
|
127
145
|
FBJNI_LIBRARY
|
128
146
|
fbjni
|
@@ -130,6 +148,8 @@ find_library(
|
|
130
148
|
NO_CMAKE_FIND_ROOT_PATH
|
131
149
|
)
|
132
150
|
|
151
|
+
message("-- FBJNI : " ${FBJNI_LIBRARY})
|
152
|
+
|
133
153
|
find_library(
|
134
154
|
TURBOMODULES_LIB
|
135
155
|
turbomodulejsijni
|
@@ -137,6 +157,8 @@ find_library(
|
|
137
157
|
NO_CMAKE_FIND_ROOT_PATH
|
138
158
|
)
|
139
159
|
|
160
|
+
message("-- TURBO : " ${TURBOMODULES_LIB})
|
161
|
+
|
140
162
|
# Link
|
141
163
|
target_link_libraries(
|
142
164
|
${PACKAGE_NAME}
|
@@ -147,6 +169,8 @@ target_link_libraries(
|
|
147
169
|
${TURBOMODULES_LIB}
|
148
170
|
${SKIA_SVG_LIB}
|
149
171
|
${SKIA_SKSHAPER_LIB}
|
172
|
+
${SKIA_SKPARAGRAPH_LIB}
|
173
|
+
${SKIA_SKUNICODE_LIB}
|
150
174
|
${SKIA_LIB}
|
151
175
|
-ljnigraphics
|
152
176
|
-lGLESv2
|
package/android/build.gradle
CHANGED
@@ -48,26 +48,14 @@ logger.warn("react-native-skia: node_modules/ found at: ${nodeModules}")
|
|
48
48
|
|
49
49
|
def sourceBuild = false
|
50
50
|
def defaultDir = null
|
51
|
-
def androidSourcesDir = null
|
52
|
-
def androidSourcesName = 'React Native sources'
|
53
|
-
|
54
|
-
def buildType = "debug"
|
55
|
-
tasks.all({ task ->
|
56
|
-
if (task.name == "buildCMakeRelease") {
|
57
|
-
buildType = "release"
|
58
|
-
}
|
59
|
-
})
|
60
51
|
|
61
52
|
if (rootProject.ext.has('reactNativeAndroidRoot')) {
|
62
53
|
defaultDir = rootProject.ext.get('reactNativeAndroidRoot')
|
63
|
-
androidSourcesDir = defaultDir.parentFile.toString()
|
64
54
|
} else if (findProject(':ReactAndroid') != null) {
|
65
55
|
sourceBuild = true
|
66
56
|
defaultDir = project(':ReactAndroid').projectDir
|
67
|
-
androidSourcesDir = defaultDir.parentFile.toString()
|
68
57
|
} else {
|
69
58
|
defaultDir = file("$nodeModules/react-native/android")
|
70
|
-
androidSourcesDir = defaultDir.parentFile.toString()
|
71
59
|
}
|
72
60
|
|
73
61
|
if (!defaultDir.exists()) {
|
@@ -81,14 +69,24 @@ def prebuiltDir = sourceBuild
|
|
81
69
|
: "$buildDir/react-native-0*/jni"
|
82
70
|
|
83
71
|
|
72
|
+
def buildType = "debug"
|
73
|
+
if (gradle.startParameter.taskRequests.args[0].toString().contains("Release")) {
|
74
|
+
buildType = "release"
|
75
|
+
} else if (gradle.startParameter.taskRequests.args[0].toString().contains("Debug")) {
|
76
|
+
buildType = "debug"
|
77
|
+
}
|
78
|
+
|
84
79
|
def reactProperties = new Properties()
|
85
80
|
file("$nodeModules/react-native/ReactAndroid/gradle.properties").withInputStream { reactProperties.load(it) }
|
86
|
-
def
|
81
|
+
def FULL_RN_VERSION = reactProperties.getProperty("VERSION_NAME")
|
82
|
+
def REACT_NATIVE_VERSION = FULL_RN_VERSION.split("\\.")[1].toInteger()
|
87
83
|
|
88
|
-
logger.warn("react-native-skia:
|
89
|
-
logger.warn("react-native-skia:
|
90
|
-
logger.warn("react-native-skia:
|
91
|
-
logger.warn("react-native-skia:
|
84
|
+
logger.warn("react-native-skia: RN Version: ${REACT_NATIVE_VERSION} / ${FULL_RN_VERSION}")
|
85
|
+
logger.warn("react-native-skia: isSourceBuild: ${sourceBuild}")
|
86
|
+
logger.warn("react-native-skia: PrebuiltDir: ${prebuiltDir}")
|
87
|
+
logger.warn("react-native-skia: buildType: ${buildType}")
|
88
|
+
logger.warn("react-native-skia: buildDir: ${buildDir}")
|
89
|
+
logger.warn("react-native-skia: node_modules: ${nodeModules}")
|
92
90
|
|
93
91
|
buildscript {
|
94
92
|
// The Android Gradle plugin is only required when opening the android folder stand-alone.
|
@@ -123,8 +121,7 @@ android {
|
|
123
121
|
arguments '-DANDROID_STL=c++_shared',
|
124
122
|
"-DREACT_NATIVE_VERSION=${REACT_NATIVE_VERSION}",
|
125
123
|
"-DNODE_MODULES_DIR=${nodeModules}",
|
126
|
-
"-DPREBUILT_DIR=${prebuiltDir}"
|
127
|
-
"-DBUILD_TYPE=${buildType}"
|
124
|
+
"-DPREBUILT_DIR=${prebuiltDir}"
|
128
125
|
|
129
126
|
}
|
130
127
|
}
|
@@ -189,13 +186,12 @@ dependencies {
|
|
189
186
|
//noinspection GradleDynamicVersion
|
190
187
|
extractJNI("com.facebook.fbjni:fbjni:0.2.2")
|
191
188
|
|
192
|
-
if(
|
193
|
-
def rnAAR = fileTree("${nodeModules}/react-native/android").matching({ it.include "**/**/*.aar" }).singleFile
|
194
|
-
extractJNI(files(rnAAR))
|
195
|
-
} else {
|
196
|
-
// React Native >= 0.69
|
189
|
+
if (!sourceBuild) {
|
197
190
|
def rnAarMatcher = "**/react-native/**/*${buildType}.aar"
|
198
|
-
|
191
|
+
if (REACT_NATIVE_VERSION < 69) {
|
192
|
+
rnAarMatcher = "**/**/*.aar"
|
193
|
+
}
|
194
|
+
def rnAAR = fileTree("${nodeModules}/react-native/android").matching({ it.include rnAarMatcher }).singleFile
|
199
195
|
extractJNI(files(rnAAR))
|
200
196
|
}
|
201
197
|
}
|
@@ -1,4 +1,5 @@
|
|
1
1
|
#include "JniPlatformContext.h"
|
2
|
+
#include "JniSkiaDomView.h"
|
2
3
|
#include "JniSkiaDrawView.h"
|
3
4
|
#include "JniSkiaManager.h"
|
4
5
|
#include "JniSkiaPictureView.h"
|
@@ -10,6 +11,7 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *) {
|
|
10
11
|
RNSkia::JniSkiaManager::registerNatives();
|
11
12
|
RNSkia::JniSkiaDrawView::registerNatives();
|
12
13
|
RNSkia::JniSkiaPictureView::registerNatives();
|
14
|
+
RNSkia::JniSkiaDomView::registerNatives();
|
13
15
|
RNSkia::JniPlatformContext::registerNatives();
|
14
16
|
});
|
15
17
|
}
|
@@ -0,0 +1,89 @@
|
|
1
|
+
#pragma once
|
2
|
+
|
3
|
+
#include <memory>
|
4
|
+
#include <string>
|
5
|
+
|
6
|
+
#include <fbjni/fbjni.h>
|
7
|
+
#include <jni.h>
|
8
|
+
#include <jsi/jsi.h>
|
9
|
+
|
10
|
+
#include <JniSkiaBaseView.h>
|
11
|
+
#include <JniSkiaManager.h>
|
12
|
+
#include <RNSkAndroidView.h>
|
13
|
+
#include <RNSkDomView.h>
|
14
|
+
|
15
|
+
#include <android/native_window.h>
|
16
|
+
#include <android/native_window_jni.h>
|
17
|
+
#include <fbjni/detail/Hybrid.h>
|
18
|
+
|
19
|
+
namespace RNSkia {
|
20
|
+
|
21
|
+
namespace jsi = facebook::jsi;
|
22
|
+
namespace jni = facebook::jni;
|
23
|
+
|
24
|
+
class JniSkiaDomView : public jni::HybridClass<JniSkiaDomView>,
|
25
|
+
public JniSkiaBaseView {
|
26
|
+
public:
|
27
|
+
static auto constexpr kJavaDescriptor =
|
28
|
+
"Lcom/shopify/reactnative/skia/SkiaDomView;";
|
29
|
+
|
30
|
+
static jni::local_ref<jhybriddata>
|
31
|
+
initHybrid(jni::alias_ref<jhybridobject> jThis,
|
32
|
+
jni::alias_ref<JniSkiaManager::javaobject> skiaManager) {
|
33
|
+
return makeCxxInstance(jThis, skiaManager);
|
34
|
+
}
|
35
|
+
|
36
|
+
static void registerNatives() {
|
37
|
+
registerHybrid(
|
38
|
+
{makeNativeMethod("initHybrid", JniSkiaDomView::initHybrid),
|
39
|
+
makeNativeMethod("surfaceAvailable", JniSkiaDomView::surfaceAvailable),
|
40
|
+
makeNativeMethod("surfaceDestroyed", JniSkiaDomView::surfaceDestroyed),
|
41
|
+
makeNativeMethod("surfaceSizeChanged",
|
42
|
+
JniSkiaDomView::surfaceSizeChanged),
|
43
|
+
makeNativeMethod("setMode", JniSkiaDomView::setMode),
|
44
|
+
makeNativeMethod("setDebugMode", JniSkiaDomView::setDebugMode),
|
45
|
+
makeNativeMethod("updateTouchPoints",
|
46
|
+
JniSkiaDomView::updateTouchPoints),
|
47
|
+
makeNativeMethod("registerView", JniSkiaDomView::registerView),
|
48
|
+
makeNativeMethod("unregisterView", JniSkiaDomView::unregisterView)});
|
49
|
+
}
|
50
|
+
|
51
|
+
protected:
|
52
|
+
void updateTouchPoints(jni::JArrayDouble touches) override {
|
53
|
+
JniSkiaBaseView::updateTouchPoints(touches);
|
54
|
+
}
|
55
|
+
|
56
|
+
void surfaceAvailable(jobject surface, int width, int height) override {
|
57
|
+
JniSkiaBaseView::surfaceAvailable(surface, width, height);
|
58
|
+
}
|
59
|
+
|
60
|
+
void surfaceSizeChanged(int width, int height) override {
|
61
|
+
JniSkiaBaseView::surfaceSizeChanged(width, height);
|
62
|
+
}
|
63
|
+
|
64
|
+
void surfaceDestroyed() override { JniSkiaBaseView::surfaceDestroyed(); }
|
65
|
+
|
66
|
+
void setMode(std::string mode) override { JniSkiaBaseView::setMode(mode); }
|
67
|
+
|
68
|
+
void setDebugMode(bool show) override { JniSkiaBaseView::setDebugMode(show); }
|
69
|
+
|
70
|
+
void registerView(int nativeId) override {
|
71
|
+
JniSkiaBaseView::registerView(nativeId);
|
72
|
+
}
|
73
|
+
|
74
|
+
void unregisterView() override { JniSkiaBaseView::unregisterView(); }
|
75
|
+
|
76
|
+
private:
|
77
|
+
friend HybridBase;
|
78
|
+
|
79
|
+
explicit JniSkiaDomView(
|
80
|
+
jni::alias_ref<jhybridobject> jThis,
|
81
|
+
jni::alias_ref<JniSkiaManager::javaobject> skiaManager)
|
82
|
+
: JniSkiaBaseView(skiaManager,
|
83
|
+
std::make_shared<RNSkAndroidView<RNSkia::RNSkDomView>>(
|
84
|
+
skiaManager->cthis()->getPlatformContext())) {}
|
85
|
+
|
86
|
+
jni::global_ref<javaobject> javaPart_;
|
87
|
+
};
|
88
|
+
|
89
|
+
} // namespace RNSkia
|
@@ -6,10 +6,11 @@
|
|
6
6
|
|
7
7
|
namespace RNSkia {
|
8
8
|
/** Static members */
|
9
|
-
std::shared_ptr<
|
9
|
+
std::shared_ptr<OpenGLDrawingContext>
|
10
|
+
SkiaOpenGLRenderer::getThreadDrawingContext() {
|
10
11
|
auto threadId = std::this_thread::get_id();
|
11
12
|
if (threadContexts.count(threadId) == 0) {
|
12
|
-
auto drawingContext = std::make_shared<
|
13
|
+
auto drawingContext = std::make_shared<OpenGLDrawingContext>();
|
13
14
|
drawingContext->glContext = EGL_NO_CONTEXT;
|
14
15
|
drawingContext->glDisplay = EGL_NO_DISPLAY;
|
15
16
|
drawingContext->glConfig = 0;
|
@@ -64,7 +65,7 @@ void SkiaOpenGLRenderer::run(const std::function<void(SkCanvas *)> &cb,
|
|
64
65
|
cb(_skSurface->getCanvas());
|
65
66
|
|
66
67
|
// Flush
|
67
|
-
_skSurface->
|
68
|
+
_skSurface->flushAndSubmit();
|
68
69
|
|
69
70
|
if (!eglSwapBuffers(getThreadDrawingContext()->glDisplay, _glSurface)) {
|
70
71
|
RNSkLogger::logToConsole("eglSwapBuffers failed: %d\n", eglGetError());
|
@@ -26,14 +26,15 @@
|
|
26
26
|
#pragma clang diagnostic pop
|
27
27
|
|
28
28
|
namespace RNSkia {
|
29
|
-
using
|
29
|
+
using OpenGLDrawingContext = struct {
|
30
30
|
EGLContext glContext;
|
31
31
|
EGLDisplay glDisplay;
|
32
32
|
EGLConfig glConfig;
|
33
33
|
sk_sp<GrDirectContext> skContext;
|
34
34
|
};
|
35
35
|
|
36
|
-
static std::unordered_map<std::thread::id,
|
36
|
+
static std::unordered_map<std::thread::id,
|
37
|
+
std::shared_ptr<OpenGLDrawingContext>>
|
37
38
|
threadContexts;
|
38
39
|
|
39
40
|
enum RenderState : int {
|
@@ -113,7 +114,7 @@ private:
|
|
113
114
|
* each new view, we track the OpenGL and Skia drawing context per thread.
|
114
115
|
* @return The drawing context for the current thread
|
115
116
|
*/
|
116
|
-
static std::shared_ptr<
|
117
|
+
static std::shared_ptr<OpenGLDrawingContext> getThreadDrawingContext();
|
117
118
|
|
118
119
|
EGLSurface _glSurface = EGL_NO_SURFACE;
|
119
120
|
|
@@ -18,6 +18,7 @@ public class RNSkiaPackage implements ReactPackage {
|
|
18
18
|
|
19
19
|
@Override
|
20
20
|
public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) {
|
21
|
-
return Arrays.<ViewManager>asList(new SkiaDrawViewManager(),
|
21
|
+
return Arrays.<ViewManager>asList(new SkiaDrawViewManager(),
|
22
|
+
new SkiaPictureViewManager(), new SkiaDomViewManager());
|
22
23
|
}
|
23
24
|
}
|
@@ -0,0 +1,45 @@
|
|
1
|
+
package com.shopify.reactnative.skia;
|
2
|
+
|
3
|
+
import android.content.Context;
|
4
|
+
|
5
|
+
import com.facebook.jni.HybridData;
|
6
|
+
import com.facebook.jni.annotations.DoNotStrip;
|
7
|
+
import com.facebook.react.bridge.ReactContext;
|
8
|
+
|
9
|
+
public class SkiaDomView extends SkiaBaseView {
|
10
|
+
@DoNotStrip
|
11
|
+
private HybridData mHybridData;
|
12
|
+
|
13
|
+
public SkiaDomView(Context context) {
|
14
|
+
super(context);
|
15
|
+
RNSkiaModule skiaModule = ((ReactContext) context).getNativeModule(RNSkiaModule.class);
|
16
|
+
mHybridData = initHybrid(skiaModule.getSkiaManager());
|
17
|
+
}
|
18
|
+
|
19
|
+
@Override
|
20
|
+
protected void finalize() throws Throwable {
|
21
|
+
super.finalize();
|
22
|
+
mHybridData.resetNative();
|
23
|
+
}
|
24
|
+
|
25
|
+
private native HybridData initHybrid(SkiaManager skiaManager);
|
26
|
+
|
27
|
+
protected native void surfaceAvailable(Object surface, int width, int height);
|
28
|
+
|
29
|
+
protected native void surfaceSizeChanged(int width, int height);
|
30
|
+
|
31
|
+
protected native void surfaceDestroyed();
|
32
|
+
|
33
|
+
protected native void setBgColor(int color);
|
34
|
+
|
35
|
+
protected native void setMode(String mode);
|
36
|
+
|
37
|
+
protected native void setDebugMode(boolean show);
|
38
|
+
|
39
|
+
protected native void updateTouchPoints(double[] points);
|
40
|
+
|
41
|
+
protected native void registerView(int nativeId);
|
42
|
+
|
43
|
+
protected native void unregisterView();
|
44
|
+
|
45
|
+
}
|
@@ -0,0 +1,64 @@
|
|
1
|
+
package com.shopify.reactnative.skia;
|
2
|
+
|
3
|
+
import com.facebook.react.bridge.ReactContext;
|
4
|
+
import com.facebook.react.uimanager.BaseViewManager;
|
5
|
+
import com.facebook.react.uimanager.LayoutShadowNode;
|
6
|
+
import com.facebook.react.uimanager.ThemedReactContext;
|
7
|
+
import com.facebook.react.uimanager.annotations.ReactProp;
|
8
|
+
|
9
|
+
import androidx.annotation.NonNull;
|
10
|
+
import androidx.annotation.Nullable;
|
11
|
+
|
12
|
+
import java.util.HashMap;
|
13
|
+
|
14
|
+
public class SkiaDomViewManager extends BaseViewManager<SkiaDomView, LayoutShadowNode> {
|
15
|
+
|
16
|
+
@NonNull
|
17
|
+
@Override
|
18
|
+
public String getName() {
|
19
|
+
return "SkiaDomView";
|
20
|
+
}
|
21
|
+
|
22
|
+
@Override
|
23
|
+
public LayoutShadowNode createShadowNodeInstance() {
|
24
|
+
return new LayoutShadowNode();
|
25
|
+
}
|
26
|
+
|
27
|
+
@Override
|
28
|
+
public Class<? extends LayoutShadowNode> getShadowNodeClass() {
|
29
|
+
return LayoutShadowNode.class;
|
30
|
+
}
|
31
|
+
|
32
|
+
@Override
|
33
|
+
public void updateExtraData(SkiaDomView root, Object extraData) {
|
34
|
+
}
|
35
|
+
|
36
|
+
@Override
|
37
|
+
public void setNativeId(@NonNull SkiaDomView view, @Nullable String nativeId) {
|
38
|
+
super.setNativeId(view, nativeId);
|
39
|
+
int nativeIdResolved = Integer.parseInt(nativeId);
|
40
|
+
view.registerView(nativeIdResolved);
|
41
|
+
}
|
42
|
+
|
43
|
+
@ReactProp(name = "mode")
|
44
|
+
public void setMode(SkiaDomView view, String mode) {
|
45
|
+
view.setMode(mode);
|
46
|
+
}
|
47
|
+
|
48
|
+
@ReactProp(name = "debug")
|
49
|
+
public void setDebug(SkiaDomView view, boolean show) {
|
50
|
+
view.setDebugMode(show);
|
51
|
+
}
|
52
|
+
|
53
|
+
@Override
|
54
|
+
public void onDropViewInstance(@NonNull SkiaDomView view) {
|
55
|
+
super.onDropViewInstance(view);
|
56
|
+
view.unregisterView();
|
57
|
+
}
|
58
|
+
|
59
|
+
@NonNull
|
60
|
+
@Override
|
61
|
+
protected SkiaDomView createViewInstance(@NonNull ThemedReactContext reactContext) {
|
62
|
+
return new SkiaDomView(reactContext);
|
63
|
+
}
|
64
|
+
}
|
@@ -54,6 +54,12 @@ public:
|
|
54
54
|
T &getObject() { return _object; }
|
55
55
|
const T &getObject() const { return _object; }
|
56
56
|
|
57
|
+
/**
|
58
|
+
Updates the inner object with a new version of the object.
|
59
|
+
*/
|
60
|
+
void setObject(T &object) { _object = object; }
|
61
|
+
void setObject(const T &object) { _object = object; }
|
62
|
+
|
57
63
|
private:
|
58
64
|
/**
|
59
65
|
* Wrapped object
|
@@ -204,7 +204,7 @@ public:
|
|
204
204
|
JSI_HOST_FUNCTION(MakeRuntimeShader) {
|
205
205
|
auto rtb = JsiSkRuntimeShaderBuilder::fromValue(runtime, arguments[0]);
|
206
206
|
|
207
|
-
const char *childName =
|
207
|
+
const char *childName = "";
|
208
208
|
if (!arguments[1].isNull() && !arguments[1].isUndefined()) {
|
209
209
|
childName = arguments[1].asString(runtime).utf8(runtime).c_str();
|
210
210
|
}
|
package/cpp/api/JsiSkPaint.h
CHANGED
@@ -184,8 +184,15 @@ public:
|
|
184
184
|
std::move(context), std::make_shared<SkPaint>(std::move(paint))) {}
|
185
185
|
|
186
186
|
/**
|
187
|
-
|
188
|
-
*/
|
187
|
+
Copy from another paint
|
188
|
+
*/
|
189
|
+
void fromPaint(const SkPaint &paint) {
|
190
|
+
setObject(std::make_shared<SkPaint>(std::move(paint)));
|
191
|
+
}
|
192
|
+
|
193
|
+
/**
|
194
|
+
Returns the underlying object from a host object of this type
|
195
|
+
*/
|
189
196
|
static std::shared_ptr<SkPaint> fromValue(jsi::Runtime &runtime,
|
190
197
|
const jsi::Value &obj) {
|
191
198
|
return obj.asObject(runtime).asHostObject<JsiSkPaint>(runtime)->getObject();
|
package/cpp/api/JsiSkPath.h
CHANGED
@@ -99,7 +99,7 @@ public:
|
|
99
99
|
throw jsi::JSError(runtime, "invalid uniform index");
|
100
100
|
}
|
101
101
|
auto it = getObject()->uniforms().begin() + i;
|
102
|
-
return jsi::String::createFromAscii(runtime, it->name
|
102
|
+
return jsi::String::createFromAscii(runtime, std::string(it->name));
|
103
103
|
}
|
104
104
|
|
105
105
|
JSI_HOST_FUNCTION(getUniform) {
|
@@ -131,41 +131,7 @@ public:
|
|
131
131
|
: JsiSkWrappingSkPtrHostObject<SkRuntimeEffect>(std::move(context),
|
132
132
|
std::move(rt)) {}
|
133
133
|
|
134
|
-
|
135
|
-
sk_sp<SkData> castUniforms(jsi::Runtime &runtime, const jsi::Value &value) {
|
136
|
-
auto jsiUniforms = value.asObject(runtime).asArray(runtime);
|
137
|
-
auto jsiUniformsSize = jsiUniforms.size(runtime);
|
138
|
-
|
139
|
-
// verify size of input uniforms
|
140
|
-
if (jsiUniformsSize * sizeof(float) != getObject()->uniformSize()) {
|
141
|
-
std::string msg =
|
142
|
-
"Uniforms size differs from effect's uniform size. Received " +
|
143
|
-
std::to_string(jsiUniformsSize) + " expected " +
|
144
|
-
std::to_string(getObject()->uniformSize() / sizeof(float));
|
145
|
-
throw jsi::JSError(runtime, msg.c_str());
|
146
|
-
}
|
147
|
-
|
148
|
-
auto uniforms = SkData::MakeUninitialized(getObject()->uniformSize());
|
149
|
-
|
150
|
-
// Convert to skia uniforms
|
151
|
-
const auto &u = getObject()->uniforms();
|
152
|
-
for (std::size_t i = 0; i < u.size(); i++) {
|
153
|
-
auto it = getObject()->uniforms().begin() + i;
|
154
|
-
RuntimeEffectUniform reu = fromUniform(*it);
|
155
|
-
for (std::size_t j = 0; j < reu.columns * reu.rows; ++j) {
|
156
|
-
const std::size_t offset = reu.slot + j;
|
157
|
-
float fValue = jsiUniforms.getValueAtIndex(runtime, offset).asNumber();
|
158
|
-
int iValue = static_cast<int>(fValue);
|
159
|
-
auto value = reu.isInteger ? iValue : fValue;
|
160
|
-
memcpy(SkTAddOffset<void>(uniforms->writable_data(),
|
161
|
-
offset * sizeof(value)),
|
162
|
-
&value, sizeof(value));
|
163
|
-
}
|
164
|
-
}
|
165
|
-
return uniforms;
|
166
|
-
}
|
167
|
-
|
168
|
-
RuntimeEffectUniform fromUniform(const SkRuntimeEffect::Uniform &u) {
|
134
|
+
static RuntimeEffectUniform fromUniform(const SkRuntimeEffect::Uniform &u) {
|
169
135
|
RuntimeEffectUniform su;
|
170
136
|
su.rows = u.count; // arrayLength
|
171
137
|
su.columns = 1;
|
@@ -214,5 +180,39 @@ private:
|
|
214
180
|
su.slot = static_cast<int>(u.offset / sizeof(float));
|
215
181
|
return su;
|
216
182
|
}
|
183
|
+
|
184
|
+
private:
|
185
|
+
sk_sp<SkData> castUniforms(jsi::Runtime &runtime, const jsi::Value &value) {
|
186
|
+
auto jsiUniforms = value.asObject(runtime).asArray(runtime);
|
187
|
+
auto jsiUniformsSize = jsiUniforms.size(runtime);
|
188
|
+
|
189
|
+
// verify size of input uniforms
|
190
|
+
if (jsiUniformsSize * sizeof(float) != getObject()->uniformSize()) {
|
191
|
+
std::string msg =
|
192
|
+
"Uniforms size differs from effect's uniform size. Received " +
|
193
|
+
std::to_string(jsiUniformsSize) + " expected " +
|
194
|
+
std::to_string(getObject()->uniformSize() / sizeof(float));
|
195
|
+
throw jsi::JSError(runtime, msg.c_str());
|
196
|
+
}
|
197
|
+
|
198
|
+
auto uniforms = SkData::MakeUninitialized(getObject()->uniformSize());
|
199
|
+
|
200
|
+
// Convert to skia uniforms
|
201
|
+
const auto &u = getObject()->uniforms();
|
202
|
+
for (std::size_t i = 0; i < u.size(); i++) {
|
203
|
+
auto it = getObject()->uniforms().begin() + i;
|
204
|
+
RuntimeEffectUniform reu = fromUniform(*it);
|
205
|
+
for (std::size_t j = 0; j < reu.columns * reu.rows; ++j) {
|
206
|
+
const std::size_t offset = reu.slot + j;
|
207
|
+
float fValue = jsiUniforms.getValueAtIndex(runtime, offset).asNumber();
|
208
|
+
int iValue = static_cast<int>(fValue);
|
209
|
+
auto value = reu.isInteger ? iValue : fValue;
|
210
|
+
memcpy(SkTAddOffset<void>(uniforms->writable_data(),
|
211
|
+
offset * sizeof(value)),
|
212
|
+
&value, sizeof(value));
|
213
|
+
}
|
214
|
+
}
|
215
|
+
return uniforms;
|
216
|
+
}
|
217
217
|
};
|
218
218
|
} // namespace RNSkia
|