@shopify/react-native-skia 0.1.158 → 0.1.159
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/android/CMakeLists.txt +35 -11
- package/android/build.gradle +21 -25
- package/android/cpp/jni/JniLoad.cpp +2 -0
- package/android/cpp/jni/include/JniSkiaDomView.h +89 -0
- package/android/cpp/rnskia-android/SkiaOpenGLRenderer.cpp +4 -3
- package/android/cpp/rnskia-android/SkiaOpenGLRenderer.h +4 -3
- package/android/src/main/java/com/shopify/reactnative/skia/RNSkiaPackage.java +2 -1
- package/android/src/main/java/com/shopify/reactnative/skia/SkiaDomView.java +45 -0
- package/android/src/main/java/com/shopify/reactnative/skia/SkiaDomViewManager.java +64 -0
- package/cpp/api/JsiSkHostObjects.h +6 -0
- package/cpp/api/JsiSkImageFilterFactory.h +1 -1
- package/cpp/api/JsiSkPaint.h +9 -2
- package/cpp/api/JsiSkPath.h +1 -0
- package/cpp/api/JsiSkRuntimeEffect.h +36 -36
- package/cpp/jsi/JsiHostObject.cpp +16 -28
- package/cpp/jsi/JsiHostObject.h +127 -7
- package/cpp/jsi/JsiValue.cpp +346 -0
- package/cpp/jsi/JsiValue.h +222 -0
- package/cpp/jsi/JsiValueWrapper.h +33 -5
- package/cpp/rnskia/RNSkDomView.cpp +220 -0
- package/cpp/rnskia/RNSkDomView.h +140 -0
- package/cpp/rnskia/RNSkJsView.cpp +0 -4
- package/cpp/rnskia/RNSkJsView.h +6 -4
- package/cpp/rnskia/RNSkManager.cpp +7 -0
- package/cpp/rnskia/RNSkPictureView.h +5 -8
- package/cpp/rnskia/RNSkView.h +113 -5
- package/cpp/rnskia/dom/JsiDomApi.h +167 -0
- package/cpp/rnskia/dom/base/BaseNodeProp.h +72 -0
- package/cpp/rnskia/dom/base/DerivedNodeProp.h +187 -0
- package/cpp/rnskia/dom/base/DrawingContext.cpp +227 -0
- package/cpp/rnskia/dom/base/DrawingContext.h +136 -0
- package/cpp/rnskia/dom/base/JsiDependencyManager.h +294 -0
- package/cpp/rnskia/dom/base/JsiDomDeclarationNode.h +176 -0
- package/cpp/rnskia/dom/base/JsiDomDrawingNode.h +50 -0
- package/cpp/rnskia/dom/base/JsiDomNode.h +361 -0
- package/cpp/rnskia/dom/base/JsiDomRenderNode.h +267 -0
- package/cpp/rnskia/dom/base/NodeProp.h +130 -0
- package/cpp/rnskia/dom/base/NodePropsContainer.h +119 -0
- package/cpp/rnskia/dom/nodes/JsiBackdropFilterNode.h +38 -0
- package/cpp/rnskia/dom/nodes/JsiBlendNode.h +112 -0
- package/cpp/rnskia/dom/nodes/JsiBlurMaskNode.h +78 -0
- package/cpp/rnskia/dom/nodes/JsiBoxNode.h +104 -0
- package/cpp/rnskia/dom/nodes/JsiBoxShadowNode.h +33 -0
- package/cpp/rnskia/dom/nodes/JsiCircleNode.h +38 -0
- package/cpp/rnskia/dom/nodes/JsiColorFilterNodes.h +192 -0
- package/cpp/rnskia/dom/nodes/JsiCustomDrawingNode.h +123 -0
- package/cpp/rnskia/dom/nodes/JsiDiffRectNode.h +42 -0
- package/cpp/rnskia/dom/nodes/JsiFillNode.h +22 -0
- package/cpp/rnskia/dom/nodes/JsiGlyphsNode.h +56 -0
- package/cpp/rnskia/dom/nodes/JsiGroupNode.h +26 -0
- package/cpp/rnskia/dom/nodes/JsiImageFilterNodes.h +415 -0
- package/cpp/rnskia/dom/nodes/JsiImageNode.h +34 -0
- package/cpp/rnskia/dom/nodes/JsiImageSvgNode.h +44 -0
- package/cpp/rnskia/dom/nodes/JsiLayerNode.h +64 -0
- package/cpp/rnskia/dom/nodes/JsiLineNode.h +43 -0
- package/cpp/rnskia/dom/nodes/JsiOvalNode.h +34 -0
- package/cpp/rnskia/dom/nodes/JsiPaintNode.h +77 -0
- package/cpp/rnskia/dom/nodes/JsiPatchNode.h +54 -0
- package/cpp/rnskia/dom/nodes/JsiPathEffectNodes.h +315 -0
- package/cpp/rnskia/dom/nodes/JsiPathNode.h +181 -0
- package/cpp/rnskia/dom/nodes/JsiPictureNode.h +32 -0
- package/cpp/rnskia/dom/nodes/JsiPointsNode.h +51 -0
- package/cpp/rnskia/dom/nodes/JsiRRectNode.h +34 -0
- package/cpp/rnskia/dom/nodes/JsiRectNode.h +34 -0
- package/cpp/rnskia/dom/nodes/JsiShaderNodes.h +517 -0
- package/cpp/rnskia/dom/nodes/JsiTextBlobNode.h +47 -0
- package/cpp/rnskia/dom/nodes/JsiTextNode.h +54 -0
- package/cpp/rnskia/dom/nodes/JsiTextPathNode.h +32 -0
- package/cpp/rnskia/dom/nodes/JsiVerticesNode.h +43 -0
- package/cpp/rnskia/dom/props/BezierProps.h +63 -0
- package/cpp/rnskia/dom/props/BlendModeProp.h +101 -0
- package/cpp/rnskia/dom/props/BoxShadowProps.h +61 -0
- package/cpp/rnskia/dom/props/CircleProp.h +46 -0
- package/cpp/rnskia/dom/props/ClipProp.h +62 -0
- package/cpp/rnskia/dom/props/ColorProp.h +80 -0
- package/cpp/rnskia/dom/props/DrawingProp.h +33 -0
- package/cpp/rnskia/dom/props/FontProp.h +34 -0
- package/cpp/rnskia/dom/props/GlyphsProp.h +53 -0
- package/cpp/rnskia/dom/props/ImageProps.h +173 -0
- package/cpp/rnskia/dom/props/LayerProp.h +50 -0
- package/cpp/rnskia/dom/props/MatrixProp.h +33 -0
- package/cpp/rnskia/dom/props/NumbersProp.h +63 -0
- package/cpp/rnskia/dom/props/PaintProps.h +172 -0
- package/cpp/rnskia/dom/props/PathProp.h +55 -0
- package/cpp/rnskia/dom/props/PictureProp.h +38 -0
- package/cpp/rnskia/dom/props/PointProp.h +72 -0
- package/cpp/rnskia/dom/props/PointsProp.h +83 -0
- package/cpp/rnskia/dom/props/RRectProp.h +134 -0
- package/cpp/rnskia/dom/props/RadiusProp.h +43 -0
- package/cpp/rnskia/dom/props/RectProp.h +118 -0
- package/cpp/rnskia/dom/props/StrokeProps.h +75 -0
- package/cpp/rnskia/dom/props/SvgProp.h +37 -0
- package/cpp/rnskia/dom/props/TextBlobProp.h +128 -0
- package/cpp/rnskia/dom/props/TileModeProp.h +50 -0
- package/cpp/rnskia/dom/props/TransformProp.h +80 -0
- package/cpp/rnskia/dom/props/TransformsProps.h +68 -0
- package/cpp/rnskia/dom/props/UniformsProp.h +194 -0
- package/cpp/rnskia/dom/props/VertexModeProp.h +47 -0
- package/cpp/rnskia/dom/props/VerticesProps.h +67 -0
- package/cpp/rnskia/values/RNSkReadonlyValue.h +13 -4
- package/cpp/skia/include/android/SkAndroidFrameworkUtils.h +35 -1
- package/cpp/skia/include/codec/SkAndroidCodec.h +17 -1
- package/cpp/skia/include/codec/SkCodec.h +8 -5
- package/cpp/skia/include/core/SkAnnotation.h +2 -0
- package/cpp/skia/include/core/SkBitmap.h +52 -1
- package/cpp/skia/include/core/SkBlendMode.h +2 -0
- package/cpp/skia/include/core/SkCanvas.h +52 -31
- package/cpp/skia/include/core/SkCapabilities.h +44 -0
- package/cpp/skia/include/core/SkColor.h +7 -0
- package/cpp/skia/include/core/SkColorFilter.h +37 -0
- package/cpp/skia/include/core/SkColorSpace.h +1 -1
- package/cpp/skia/include/core/SkFont.h +4 -0
- package/cpp/skia/include/core/SkFontMgr.h +3 -0
- package/cpp/skia/include/core/SkGraphics.h +9 -0
- package/cpp/skia/include/core/SkImage.h +77 -17
- package/cpp/skia/include/core/SkImageEncoder.h +5 -3
- package/cpp/skia/include/core/SkImageGenerator.h +27 -17
- package/cpp/skia/include/core/SkM44.h +1 -0
- package/cpp/skia/include/core/SkMesh.h +120 -34
- package/cpp/skia/include/core/SkMilestone.h +1 -1
- package/cpp/skia/include/core/SkOverdrawCanvas.h +2 -1
- package/cpp/skia/include/core/SkPaint.h +15 -2
- package/cpp/skia/include/core/SkPath.h +4 -0
- package/cpp/skia/include/core/SkPathBuilder.h +1 -1
- package/cpp/skia/include/core/SkPicture.h +0 -3
- package/cpp/skia/include/core/SkPictureRecorder.h +0 -2
- package/cpp/skia/include/core/SkPixmap.h +19 -0
- package/cpp/skia/include/core/SkRasterHandleAllocator.h +3 -1
- package/cpp/skia/include/core/SkRect.h +11 -4
- package/cpp/skia/include/core/SkRefCnt.h +13 -1
- package/cpp/skia/include/core/SkRegion.h +6 -0
- package/cpp/skia/include/core/SkSamplingOptions.h +8 -6
- package/cpp/skia/include/core/SkScalar.h +6 -25
- package/cpp/skia/include/core/SkShader.h +20 -12
- package/cpp/skia/include/core/SkSpan.h +51 -19
- package/cpp/skia/include/core/SkStream.h +2 -2
- package/cpp/skia/include/core/SkString.h +11 -3
- package/cpp/skia/include/core/SkSurface.h +85 -8
- package/cpp/skia/include/core/SkTextBlob.h +5 -2
- package/cpp/skia/include/core/SkTypes.h +11 -10
- package/cpp/skia/include/docs/SkPDFDocument.h +0 -5
- package/cpp/skia/include/effects/Sk1DPathEffect.h +6 -1
- package/cpp/skia/include/effects/Sk2DPathEffect.h +4 -1
- package/cpp/skia/include/effects/SkColorMatrix.h +1 -0
- package/cpp/skia/include/effects/SkColorMatrixFilter.h +5 -8
- package/cpp/skia/include/effects/SkCornerPathEffect.h +5 -1
- package/cpp/skia/include/effects/SkDashPathEffect.h +5 -1
- package/cpp/skia/include/effects/SkGradientShader.h +68 -38
- package/cpp/skia/include/effects/SkHighContrastFilter.h +5 -1
- package/cpp/skia/include/effects/SkImageFilters.h +5 -4
- package/cpp/skia/include/effects/SkLumaColorFilter.h +4 -1
- package/cpp/skia/include/effects/SkOpPathEffect.h +6 -2
- package/cpp/skia/include/effects/SkOverdrawColorFilter.h +5 -2
- package/cpp/skia/include/effects/SkRuntimeEffect.h +54 -62
- package/cpp/skia/include/effects/SkShaderMaskFilter.h +3 -1
- package/cpp/skia/include/effects/SkTableColorFilter.h +8 -21
- package/cpp/skia/include/effects/SkTableMaskFilter.h +5 -1
- package/cpp/skia/include/effects/SkTrimPathEffect.h +5 -1
- package/cpp/skia/include/encode/SkEncoder.h +17 -0
- package/cpp/skia/include/encode/SkWebpEncoder.h +17 -0
- package/cpp/skia/include/gpu/GpuTypes.h +18 -0
- package/cpp/skia/include/gpu/GrBackendSurface.h +38 -17
- package/cpp/skia/include/gpu/GrBackendSurfaceMutableState.h +6 -71
- package/cpp/skia/include/gpu/GrContextOptions.h +1 -1
- package/cpp/skia/include/gpu/GrContextThreadSafeProxy.h +10 -9
- package/cpp/skia/include/gpu/GrDirectContext.h +42 -22
- package/cpp/skia/include/gpu/GrRecordingContext.h +6 -3
- package/cpp/skia/include/gpu/GrTypes.h +11 -11
- package/cpp/skia/include/gpu/MutableTextureState.h +122 -0
- package/cpp/skia/include/gpu/gl/GrGLFunctions.h +1 -0
- package/cpp/skia/include/gpu/gl/GrGLInterface.h +1 -0
- package/cpp/skia/include/gpu/graphite/BackendTexture.h +7 -0
- package/cpp/skia/include/gpu/graphite/CombinationBuilder.h +195 -0
- package/cpp/skia/include/gpu/graphite/Context.h +47 -55
- package/cpp/skia/include/gpu/graphite/ContextOptions.h +85 -0
- package/cpp/skia/include/gpu/graphite/GraphiteTypes.h +1 -17
- package/cpp/skia/include/gpu/graphite/ImageProvider.h +61 -0
- package/cpp/skia/include/gpu/graphite/Recorder.h +87 -8
- package/cpp/skia/include/gpu/graphite/Recording.h +19 -9
- package/cpp/skia/include/gpu/graphite/TextureInfo.h +40 -8
- package/cpp/skia/include/gpu/graphite/dawn/DawnBackendContext.h +25 -0
- package/cpp/skia/include/gpu/graphite/mtl/MtlBackendContext.h +3 -2
- package/cpp/skia/include/gpu/graphite/vk/VulkanGraphiteTypes.h +69 -0
- package/cpp/skia/include/gpu/mtl/MtlMemoryAllocator.h +39 -0
- package/cpp/skia/include/gpu/vk/GrVkBackendContext.h +21 -19
- package/cpp/skia/include/gpu/vk/GrVkExtensions.h +2 -50
- package/cpp/skia/include/gpu/vk/GrVkMemoryAllocator.h +2 -127
- package/cpp/skia/include/gpu/vk/GrVkTypes.h +5 -43
- package/cpp/skia/include/gpu/vk/VulkanBackendContext.h +46 -0
- package/cpp/skia/include/gpu/vk/VulkanExtensions.h +67 -0
- package/cpp/skia/include/gpu/vk/VulkanMemoryAllocator.h +116 -0
- package/cpp/skia/include/gpu/vk/VulkanTypes.h +59 -0
- package/cpp/skia/include/pathops/SkPathOps.h +1 -1
- package/cpp/skia/include/private/SkColorData.h +10 -40
- package/cpp/skia/include/private/SkEncodedInfo.h +9 -3
- package/cpp/skia/include/private/SkFloatingPoint.h +9 -6
- package/cpp/skia/include/private/SkHalf.h +5 -52
- package/cpp/skia/include/private/SkMacros.h +1 -1
- package/cpp/skia/include/private/SkMalloc.h +4 -0
- package/cpp/skia/include/private/SkPathRef.h +10 -10
- package/cpp/skia/include/private/SkSLModifiers.h +59 -23
- package/cpp/skia/include/private/SkSLProgramKind.h +1 -0
- package/cpp/skia/include/private/SkSLSymbol.h +7 -3
- package/cpp/skia/include/private/SkStringView.h +4 -0
- package/cpp/skia/include/private/SkTArray.h +21 -7
- package/cpp/skia/include/private/SkTDArray.h +173 -285
- package/cpp/skia/include/private/SkTHash.h +33 -32
- package/cpp/skia/include/private/SkTemplates.h +24 -26
- package/cpp/skia/include/private/SkVx.h +218 -135
- package/cpp/skia/include/private/chromium/GrSlug.h +3 -65
- package/cpp/skia/include/private/chromium/SkChromeRemoteGlyphCache.h +6 -3
- package/cpp/skia/include/private/chromium/Slug.h +76 -0
- package/cpp/skia/include/private/gpu/ganesh/GrTypesPriv.h +6 -1
- package/cpp/skia/include/private/gpu/ganesh/GrVkTypesPriv.h +5 -39
- package/cpp/skia/include/private/gpu/graphite/VulkanGraphiteTypesPriv.h +63 -0
- package/cpp/skia/include/{gpu/vk/GrVkVulkan.h → private/gpu/vk/SkiaVulkan.h} +2 -2
- package/cpp/skia/include/private/gpu/vk/VulkanTypesPriv.h +57 -0
- package/cpp/skia/include/sksl/DSL.h +0 -1
- package/cpp/skia/include/sksl/DSLBlock.h +4 -18
- package/cpp/skia/include/sksl/DSLCase.h +2 -8
- package/cpp/skia/include/sksl/DSLCore.h +8 -15
- package/cpp/skia/include/sksl/DSLExpression.h +51 -142
- package/cpp/skia/include/sksl/DSLFunction.h +7 -15
- package/cpp/skia/include/sksl/DSLModifiers.h +5 -2
- package/cpp/skia/include/sksl/DSLStatement.h +4 -39
- package/cpp/skia/include/sksl/DSLSymbols.h +1 -11
- package/cpp/skia/include/sksl/DSLType.h +20 -12
- package/cpp/skia/include/sksl/DSLVar.h +56 -146
- package/cpp/skia/include/sksl/SkSLErrorReporter.h +2 -15
- package/cpp/skia/include/sksl/SkSLOperator.h +62 -59
- package/cpp/skia/include/sksl/SkSLPosition.h +2 -0
- package/cpp/skia/include/sksl/SkSLVersion.h +27 -0
- package/cpp/skia/include/svg/SkSVGCanvas.h +1 -0
- package/cpp/skia/include/utils/SkAnimCodecPlayer.h +1 -1
- package/cpp/skia/include/utils/SkBase64.h +2 -0
- package/cpp/skia/include/utils/SkCustomTypeface.h +24 -11
- package/cpp/skia/include/utils/SkEventTracer.h +12 -1
- package/cpp/skia/include/utils/SkNWayCanvas.h +11 -4
- package/cpp/skia/include/utils/SkPaintFilterCanvas.h +9 -4
- package/cpp/skia/include/utils/SkParse.h +3 -0
- package/cpp/skia/include/utils/SkShadowUtils.h +2 -0
- package/cpp/skia/include/utils/SkTextUtils.h +2 -1
- package/cpp/skia/{include/third_party → modules}/skcms/skcms.h +10 -0
- package/cpp/skia/modules/skcms/skcms_internal.h +56 -0
- package/cpp/skia/modules/skcms/src/Transform_inl.h +1609 -0
- package/cpp/skia/modules/skparagraph/include/DartTypes.h +153 -0
- package/cpp/skia/modules/skparagraph/include/FontArguments.h +46 -0
- package/cpp/skia/modules/skparagraph/include/FontCollection.h +84 -0
- package/cpp/skia/modules/skparagraph/include/Metrics.h +98 -0
- package/cpp/skia/modules/skparagraph/include/Paragraph.h +111 -0
- package/cpp/skia/modules/skparagraph/include/ParagraphBuilder.h +69 -0
- package/cpp/skia/modules/skparagraph/include/ParagraphCache.h +77 -0
- package/cpp/skia/modules/skparagraph/include/ParagraphStyle.h +143 -0
- package/cpp/skia/modules/skparagraph/include/TextShadow.h +30 -0
- package/cpp/skia/modules/skparagraph/include/TextStyle.h +352 -0
- package/cpp/skia/modules/skparagraph/include/TypefaceFontProvider.h +81 -0
- package/cpp/skia/modules/svg/include/SkSVGAttributeParser.h +1 -1
- package/cpp/skia/modules/svg/include/SkSVGTypes.h +3 -3
- package/cpp/skia/src/core/SkLRUCache.h +126 -0
- package/cpp/skia/src/core/SkTInternalLList.h +302 -0
- package/cpp/utils/RNSkTimingInfo.h +1 -0
- package/ios/RNSkia-iOS/RNSkMetalCanvasProvider.h +15 -4
- package/ios/RNSkia-iOS/RNSkMetalCanvasProvider.mm +40 -54
- package/ios/RNSkia-iOS/SkiaDomViewManager.h +8 -0
- package/ios/RNSkia-iOS/SkiaDomViewManager.mm +51 -0
- package/lib/commonjs/dom/nodes/JsiSkDOM.js +56 -56
- package/lib/commonjs/dom/nodes/JsiSkDOM.js.map +1 -1
- package/lib/commonjs/dom/nodes/RenderNode.js +1 -1
- package/lib/commonjs/dom/nodes/RenderNode.js.map +1 -1
- package/lib/commonjs/renderer/Canvas.js +19 -63
- package/lib/commonjs/renderer/Canvas.js.map +1 -1
- package/lib/commonjs/renderer/DependencyManager.js +0 -5
- package/lib/commonjs/renderer/DependencyManager.js.map +1 -1
- package/lib/commonjs/renderer/HostComponents.js.map +1 -1
- package/lib/commonjs/renderer/useCanvas.js +4 -18
- package/lib/commonjs/renderer/useCanvas.js.map +1 -1
- package/lib/commonjs/views/SkiaBaseWebView.js +7 -0
- package/lib/commonjs/views/SkiaBaseWebView.js.map +1 -1
- package/lib/commonjs/views/SkiaDomView.js +152 -0
- package/lib/commonjs/views/SkiaDomView.js.map +1 -0
- package/lib/commonjs/views/SkiaDomView.web.js +55 -0
- package/lib/commonjs/views/SkiaDomView.web.js.map +1 -0
- package/lib/commonjs/views/SkiaPictureView.js +16 -2
- package/lib/commonjs/views/SkiaPictureView.js.map +1 -1
- package/lib/commonjs/views/SkiaView.js +17 -2
- package/lib/commonjs/views/SkiaView.js.map +1 -1
- package/lib/commonjs/views/index.js +13 -0
- package/lib/commonjs/views/index.js.map +1 -1
- package/lib/commonjs/views/types.js.map +1 -1
- package/lib/module/dom/nodes/JsiSkDOM.js +56 -56
- package/lib/module/dom/nodes/JsiSkDOM.js.map +1 -1
- package/lib/module/dom/nodes/RenderNode.js +1 -1
- package/lib/module/dom/nodes/RenderNode.js.map +1 -1
- package/lib/module/renderer/Canvas.js +20 -64
- package/lib/module/renderer/Canvas.js.map +1 -1
- package/lib/module/renderer/DependencyManager.js +0 -5
- package/lib/module/renderer/DependencyManager.js.map +1 -1
- package/lib/module/renderer/HostComponents.js.map +1 -1
- package/lib/module/renderer/useCanvas.js +2 -13
- package/lib/module/renderer/useCanvas.js.map +1 -1
- package/lib/module/views/SkiaBaseWebView.js +7 -0
- package/lib/module/views/SkiaBaseWebView.js.map +1 -1
- package/lib/module/views/SkiaDomView.js +128 -0
- package/lib/module/views/SkiaDomView.js.map +1 -0
- package/lib/module/views/SkiaDomView.web.js +41 -0
- package/lib/module/views/SkiaDomView.web.js.map +1 -0
- package/lib/module/views/SkiaPictureView.js +14 -2
- package/lib/module/views/SkiaPictureView.js.map +1 -1
- package/lib/module/views/SkiaView.js +15 -2
- package/lib/module/views/SkiaView.js.map +1 -1
- package/lib/module/views/index.js +1 -0
- package/lib/module/views/index.js.map +1 -1
- package/lib/module/views/types.js.map +1 -1
- package/lib/typescript/src/dom/nodes/JsiSkDOM.d.ts +57 -64
- package/lib/typescript/src/renderer/Canvas.d.ts +5 -8
- package/lib/typescript/src/renderer/DependencyManager.d.ts +0 -2
- package/lib/typescript/src/renderer/HostComponents.d.ts +66 -3
- package/lib/typescript/src/renderer/useCanvas.d.ts +0 -6
- package/lib/typescript/src/views/SkiaBaseWebView.d.ts +4 -0
- package/lib/typescript/src/views/SkiaDomView.d.ts +31 -0
- package/lib/typescript/src/views/SkiaDomView.web.d.ts +7 -0
- package/lib/typescript/src/views/index.d.ts +1 -0
- package/lib/typescript/src/views/types.d.ts +12 -2
- package/libs/android/arm64-v8a/libskia.a +0 -0
- package/libs/android/arm64-v8a/libskottie.a +0 -0
- package/libs/android/arm64-v8a/libskparagraph.a +0 -0
- package/libs/android/arm64-v8a/libsksg.a +0 -0
- package/libs/android/arm64-v8a/libskshaper.a +0 -0
- package/libs/android/arm64-v8a/libskunicode.a +0 -0
- package/libs/android/arm64-v8a/libsvg.a +0 -0
- package/libs/android/armeabi-v7a/libskia.a +0 -0
- package/libs/android/armeabi-v7a/libskottie.a +0 -0
- package/libs/android/armeabi-v7a/libskparagraph.a +0 -0
- package/libs/android/armeabi-v7a/libsksg.a +0 -0
- package/libs/android/armeabi-v7a/libskshaper.a +0 -0
- package/libs/android/armeabi-v7a/libskunicode.a +0 -0
- package/libs/android/armeabi-v7a/libsvg.a +0 -0
- package/libs/android/x86/libskia.a +0 -0
- package/libs/android/x86/libskottie.a +0 -0
- package/libs/android/x86/libskparagraph.a +0 -0
- package/libs/android/x86/libsksg.a +0 -0
- package/libs/android/x86/libskshaper.a +0 -0
- package/libs/android/x86/libskunicode.a +0 -0
- package/libs/android/x86/libsvg.a +0 -0
- package/libs/android/x86_64/libskia.a +0 -0
- package/libs/android/x86_64/libskottie.a +0 -0
- package/libs/android/x86_64/libskparagraph.a +0 -0
- package/libs/android/x86_64/libsksg.a +0 -0
- package/libs/android/x86_64/libskshaper.a +0 -0
- package/libs/android/x86_64/libskunicode.a +0 -0
- package/libs/android/x86_64/libsvg.a +0 -0
- package/libs/ios/libskia.xcframework/ios-arm64_arm64e/libskia.a +0 -0
- package/libs/ios/libskia.xcframework/ios-arm64_arm64e_x86_64-simulator/libskia.a +0 -0
- package/libs/ios/libskottie.xcframework/ios-arm64_arm64e/libskottie.a +0 -0
- package/libs/ios/libskottie.xcframework/ios-arm64_arm64e_x86_64-simulator/libskottie.a +0 -0
- package/libs/ios/libskparagraph.xcframework/Info.plist +42 -0
- package/libs/ios/libskparagraph.xcframework/ios-arm64_arm64e/libskparagraph.a +0 -0
- package/libs/ios/libskparagraph.xcframework/ios-arm64_arm64e_x86_64-simulator/libskparagraph.a +0 -0
- package/libs/ios/libsksg.xcframework/Info.plist +5 -5
- package/libs/ios/libsksg.xcframework/ios-arm64_arm64e/libsksg.a +0 -0
- package/libs/ios/libsksg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsksg.a +0 -0
- package/libs/ios/libskshaper.xcframework/ios-arm64_arm64e/libskshaper.a +0 -0
- package/libs/ios/libskshaper.xcframework/ios-arm64_arm64e_x86_64-simulator/libskshaper.a +0 -0
- package/libs/ios/libskunicode.xcframework/Info.plist +42 -0
- package/libs/ios/libskunicode.xcframework/ios-arm64_arm64e/libskunicode.a +0 -0
- package/libs/ios/libskunicode.xcframework/ios-arm64_arm64e_x86_64-simulator/libskunicode.a +0 -0
- package/libs/ios/libsvg.xcframework/ios-arm64_arm64e/libsvg.a +0 -0
- package/libs/ios/libsvg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsvg.a +0 -0
- package/package.json +5 -3
- package/react-native-skia.podspec +3 -1
- package/src/dom/nodes/JsiSkDOM.ts +170 -56
- package/src/dom/nodes/RenderNode.ts +1 -1
- package/src/renderer/Canvas.tsx +32 -56
- package/src/renderer/DependencyManager.tsx +0 -5
- package/src/renderer/HostComponents.ts +152 -1
- package/src/renderer/useCanvas.ts +1 -15
- package/src/views/SkiaBaseWebView.tsx +4 -0
- package/src/views/SkiaDomView.tsx +120 -0
- package/src/views/SkiaDomView.web.tsx +37 -0
- package/src/views/SkiaPictureView.tsx +10 -2
- package/src/views/SkiaView.tsx +11 -3
- package/src/views/index.ts +1 -0
- package/src/views/types.ts +19 -2
- package/cpp/jsi/JsiSimpleValueWrapper.h +0 -99
- package/cpp/skia/include/c/sk_canvas.h +0 -159
- package/cpp/skia/include/c/sk_colorspace.h +0 -25
- package/cpp/skia/include/c/sk_data.h +0 -65
- package/cpp/skia/include/c/sk_image.h +0 -71
- package/cpp/skia/include/c/sk_imageinfo.h +0 -62
- package/cpp/skia/include/c/sk_maskfilter.h +0 -47
- package/cpp/skia/include/c/sk_matrix.h +0 -49
- package/cpp/skia/include/c/sk_paint.h +0 -145
- package/cpp/skia/include/c/sk_path.h +0 -102
- package/cpp/skia/include/c/sk_picture.h +0 -70
- package/cpp/skia/include/c/sk_shader.h +0 -143
- package/cpp/skia/include/c/sk_surface.h +0 -73
- package/cpp/skia/include/c/sk_types.h +0 -278
- package/cpp/skia/include/gpu/graphite/SkStuff.h +0 -47
- package/cpp/skia/include/private/SkNx.h +0 -430
- package/cpp/skia/include/private/SkNx_neon.h +0 -713
- package/cpp/skia/include/private/SkNx_sse.h +0 -823
- package/cpp/skia/include/sksl/DSLRuntimeEffects.h +0 -32
- package/cpp/skia/include/sksl/DSLWrapper.h +0 -77
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
|