@shopify/react-native-skia 2.9.1 → 2.10.1
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 +8 -46
- package/android/build.gradle +33 -0
- package/android/src/main/java/com/shopify/reactnative/skia/RNSkiaPackage.java +1 -2
- package/cpp/api/JsiNativeBuffer.h +23 -24
- package/cpp/api/JsiSkAnimatedImage.h +24 -25
- package/cpp/api/JsiSkAnimatedImageFactory.h +18 -17
- package/cpp/api/JsiSkApi.h +254 -96
- package/cpp/api/JsiSkCanvas.h +141 -266
- package/cpp/api/JsiSkColor.h +7 -5
- package/cpp/api/JsiSkColorFilter.h +15 -8
- package/cpp/api/JsiSkColorFilterFactory.h +49 -67
- package/cpp/api/JsiSkContourMeasure.h +31 -38
- package/cpp/api/JsiSkContourMeasureIter.h +20 -23
- package/cpp/api/JsiSkConverters.h +410 -0
- package/cpp/api/JsiSkData.h +13 -7
- package/cpp/api/JsiSkDataFactory.h +27 -32
- package/cpp/api/JsiSkFont.h +123 -192
- package/cpp/api/JsiSkFontMgr.h +33 -26
- package/cpp/api/JsiSkFontMgrFactory.h +12 -11
- package/cpp/api/JsiSkFontStyle.h +14 -12
- package/cpp/api/JsiSkImage.h +90 -79
- package/cpp/api/JsiSkImageFactory.h +93 -95
- package/cpp/api/JsiSkImageFilter.h +21 -11
- package/cpp/api/JsiSkImageFilterFactory.h +375 -629
- package/cpp/api/JsiSkImageInfo.h +25 -25
- package/cpp/api/JsiSkMaskFilter.h +21 -11
- package/cpp/api/JsiSkMaskFilterFactory.h +17 -17
- package/cpp/api/JsiSkMatrix.h +51 -88
- package/cpp/api/JsiSkNativeObjects.h +387 -0
- package/cpp/api/JsiSkPaint.h +104 -142
- package/cpp/api/JsiSkParagraph.h +54 -64
- package/cpp/api/JsiSkParagraphBuilder.h +43 -68
- package/cpp/api/JsiSkParagraphBuilderFactory.h +20 -24
- package/cpp/api/JsiSkPath.h +242 -350
- package/cpp/api/JsiSkPathBuilder.h +153 -273
- package/cpp/api/JsiSkPathBuilderFactory.h +19 -20
- package/cpp/api/JsiSkPathEffect.h +21 -11
- package/cpp/api/JsiSkPathEffectFactory.h +61 -80
- package/cpp/api/JsiSkPathFactory.h +148 -238
- package/cpp/api/JsiSkPicture.h +32 -27
- package/cpp/api/JsiSkPictureFactory.h +21 -26
- package/cpp/api/JsiSkPictureRecorder.h +27 -29
- package/cpp/api/JsiSkPoint.h +20 -23
- package/cpp/api/JsiSkRRect.h +24 -32
- package/cpp/api/JsiSkRSXform.h +31 -48
- package/cpp/api/JsiSkRect.h +40 -50
- package/cpp/api/JsiSkRuntimeEffect.h +85 -92
- package/cpp/api/JsiSkRuntimeEffectFactory.h +14 -18
- package/cpp/api/JsiSkRuntimeShaderBuilder.h +28 -30
- package/cpp/api/JsiSkSVG.h +15 -15
- package/cpp/api/JsiSkSVGFactory.h +17 -20
- package/cpp/api/JsiSkShader.h +15 -8
- package/cpp/api/JsiSkShaderFactory.h +159 -238
- package/cpp/api/JsiSkSkottie.h +131 -143
- package/cpp/api/JsiSkSurface.h +29 -32
- package/cpp/api/JsiSkSurfaceFactory.h +18 -20
- package/cpp/api/JsiSkTextBlob.h +15 -8
- package/cpp/api/JsiSkTextBlobFactory.h +40 -66
- package/cpp/api/JsiSkTypeface.h +25 -22
- package/cpp/api/JsiSkTypefaceFactory.h +17 -15
- package/cpp/api/JsiSkTypefaceFontProvider.h +43 -39
- package/cpp/api/JsiSkTypefaceFontProviderFactory.h +13 -12
- package/cpp/api/JsiSkVertices.h +23 -22
- package/cpp/api/JsiSkiaContext.h +22 -23
- package/cpp/api/JsiSkottieFactory.h +16 -17
- package/cpp/api/JsiVideo.h +43 -81
- package/cpp/api/recorder/Convertor.h +31 -61
- package/cpp/api/recorder/DataTypes.h +8 -16
- package/cpp/api/recorder/JsiRecorder.h +83 -55
- package/cpp/api/recorder/RNRecorder.h +1 -1
- package/cpp/jsi/BoxedNativeObject.h +146 -0
- package/cpp/{jsi2 → jsi}/EnumMapper.h +4 -1
- package/cpp/{jsi2 → jsi}/JSIConverter.h +0 -31
- package/cpp/{jsi2 → jsi}/NativeObject.h +131 -152
- package/cpp/jsi/RuntimeAwareCache.cpp +1 -1
- package/cpp/jsi/RuntimeAwareCache.h +26 -8
- package/cpp/jsi/ViewProperty.h +5 -11
- package/cpp/rnskia/RNDawnContext.h +18 -2
- package/cpp/rnskia/RNDawnInterop.cpp +19 -0
- package/cpp/rnskia/RNDawnUtils.h +18 -1
- package/cpp/rnskia/RNSkJsiViewApi.h +20 -11
- package/cpp/rnskia/RNSkManager.cpp +9 -168
- package/cpp/rnskia/RNSkPictureView.h +1 -1
- package/cpp/skia/include/gpu/ganesh/GrDriverBugWorkaroundsAutogen.h +2 -0
- package/lib/commonjs/external/reanimated/renderHelpers.d.ts +15 -0
- package/lib/commonjs/external/reanimated/renderHelpers.js +30 -1
- package/lib/commonjs/external/reanimated/renderHelpers.js.map +1 -1
- package/lib/commonjs/mock/index.js +0 -1
- package/lib/commonjs/mock/index.js.map +1 -1
- package/lib/commonjs/skia/NativeSetup.js +4 -0
- package/lib/commonjs/skia/NativeSetup.js.map +1 -1
- package/lib/commonjs/skia/SkiaWorkletSerialization.d.ts +1 -0
- package/lib/commonjs/skia/SkiaWorkletSerialization.js +66 -0
- package/lib/commonjs/skia/SkiaWorkletSerialization.js.map +1 -0
- package/lib/commonjs/skia/types/Image/ImageFactory.d.ts +15 -6
- package/lib/commonjs/skia/types/Image/ImageFactory.js.map +1 -1
- package/lib/commonjs/skia/types/Skia.d.ts +5 -15
- package/lib/commonjs/skia/types/Skia.js.map +1 -1
- package/lib/commonjs/skia/types/index.d.ts +0 -1
- package/lib/commonjs/skia/types/index.js +0 -11
- package/lib/commonjs/skia/types/index.js.map +1 -1
- package/lib/commonjs/skia/web/JsiSkImageFactory.d.ts +2 -2
- package/lib/commonjs/skia/web/JsiSkImageFactory.js +2 -2
- package/lib/commonjs/skia/web/JsiSkImageFactory.js.map +1 -1
- package/lib/commonjs/skia/web/JsiSkia.js +1 -4
- package/lib/commonjs/skia/web/JsiSkia.js.map +1 -1
- package/lib/commonjs/sksg/Container.native.js +20 -1
- package/lib/commonjs/sksg/Container.native.js.map +1 -1
- package/lib/commonjs/views/index.d.ts +0 -1
- package/lib/commonjs/views/index.js +0 -11
- package/lib/commonjs/views/index.js.map +1 -1
- package/lib/module/external/reanimated/renderHelpers.d.ts +15 -0
- package/lib/module/external/reanimated/renderHelpers.js +29 -0
- package/lib/module/external/reanimated/renderHelpers.js.map +1 -1
- package/lib/module/mock/index.js +0 -1
- package/lib/module/mock/index.js.map +1 -1
- package/lib/module/skia/NativeSetup.js +4 -0
- package/lib/module/skia/NativeSetup.js.map +1 -1
- package/lib/module/skia/SkiaWorkletSerialization.d.ts +1 -0
- package/lib/module/skia/SkiaWorkletSerialization.js +59 -0
- package/lib/module/skia/SkiaWorkletSerialization.js.map +1 -0
- package/lib/module/skia/types/Image/ImageFactory.d.ts +15 -6
- package/lib/module/skia/types/Image/ImageFactory.js.map +1 -1
- package/lib/module/skia/types/Skia.d.ts +5 -15
- package/lib/module/skia/types/Skia.js.map +1 -1
- package/lib/module/skia/types/index.d.ts +0 -1
- package/lib/module/skia/types/index.js +0 -1
- package/lib/module/skia/types/index.js.map +1 -1
- package/lib/module/skia/web/JsiSkImageFactory.d.ts +2 -2
- package/lib/module/skia/web/JsiSkImageFactory.js +2 -2
- package/lib/module/skia/web/JsiSkImageFactory.js.map +1 -1
- package/lib/module/skia/web/JsiSkia.js +1 -4
- package/lib/module/skia/web/JsiSkia.js.map +1 -1
- package/lib/module/sksg/Container.native.js +21 -2
- package/lib/module/sksg/Container.native.js.map +1 -1
- package/lib/module/views/index.d.ts +0 -1
- package/lib/module/views/index.js +0 -1
- package/lib/module/views/index.js.map +1 -1
- package/lib/typescript/lib/commonjs/external/reanimated/renderHelpers.d.ts +2 -0
- package/lib/typescript/lib/commonjs/mock/index.d.ts +0 -1
- package/lib/typescript/lib/commonjs/skia/SkiaWorkletSerialization.d.ts +2 -0
- package/lib/typescript/lib/commonjs/skia/web/JsiSkImageFactory.d.ts +2 -2
- package/lib/typescript/lib/commonjs/skia/web/JsiSkia.d.ts +1 -2
- package/lib/typescript/lib/module/external/reanimated/renderHelpers.d.ts +15 -0
- package/lib/typescript/lib/module/mock/index.d.ts +0 -2
- package/lib/typescript/lib/module/skia/Skia.web.d.ts +1 -2
- package/lib/typescript/lib/module/skia/SkiaWorkletSerialization.d.ts +1 -0
- package/lib/typescript/lib/module/skia/types/index.d.ts +0 -1
- package/lib/typescript/lib/module/skia/web/JsiSkImageFactory.d.ts +2 -2
- package/lib/typescript/lib/module/skia/web/JsiSkia.d.ts +1 -2
- package/lib/typescript/lib/module/views/index.d.ts +0 -1
- package/lib/typescript/src/external/reanimated/renderHelpers.d.ts +15 -0
- package/lib/typescript/src/skia/SkiaWorkletSerialization.d.ts +1 -0
- package/lib/typescript/src/skia/types/Image/ImageFactory.d.ts +15 -6
- package/lib/typescript/src/skia/types/Skia.d.ts +5 -15
- package/lib/typescript/src/skia/types/index.d.ts +0 -1
- package/lib/typescript/src/skia/web/JsiSkImageFactory.d.ts +2 -2
- package/lib/typescript/src/views/index.d.ts +0 -1
- package/package.json +8 -5
- package/react-native-skia.podspec +38 -5
- package/src/external/reanimated/renderHelpers.ts +30 -0
- package/src/mock/index.ts +0 -1
- package/src/skia/NativeSetup.ts +5 -0
- package/src/skia/SkiaWorkletSerialization.ts +67 -0
- package/src/skia/types/Image/ImageFactory.ts +15 -6
- package/src/skia/types/Skia.ts +5 -15
- package/src/skia/types/index.ts +0 -1
- package/src/skia/web/JsiSkImageFactory.ts +3 -3
- package/src/skia/web/JsiSkia.ts +2 -5
- package/src/sksg/Container.native.ts +40 -2
- package/src/views/index.ts +0 -1
- package/android/cpp/jni/JniWebGPUView.cpp +0 -112
- package/android/cpp/rnskia-android/SkiaPlatformContext.h +0 -26
- package/android/src/main/java/com/shopify/reactnative/skia/WebGPUSurfaceView.java +0 -43
- package/android/src/main/java/com/shopify/reactnative/skia/WebGPUTextureView.java +0 -50
- package/android/src/main/java/com/shopify/reactnative/skia/WebGPUView.java +0 -98
- package/android/src/main/java/com/shopify/reactnative/skia/WebGPUViewAPI.java +0 -19
- package/android/src/main/java/com/shopify/reactnative/skia/WebGPUViewManager.java +0 -58
- package/apple/RNWebGPUAppleNativeBuffer.mm +0 -33
- package/apple/SkiaPlatformContext.h +0 -20
- package/apple/SkiaPlatformContext.mm +0 -21
- package/apple/SkiaWebGPUView.mm +0 -81
- package/apple/WebGPUMetalView.mm +0 -136
- package/cpp/api/JsiSkHostObjects.h +0 -257
- package/cpp/jsi/JsiHostObject.cpp +0 -137
- package/cpp/jsi/JsiHostObject.h +0 -385
- package/cpp/rnwgpu/ArrayBuffer.h +0 -117
- package/cpp/rnwgpu/Canvas.h +0 -50
- package/cpp/rnwgpu/PlatformContext.h +0 -18
- package/cpp/rnwgpu/SurfaceRegistry.h +0 -605
- package/cpp/rnwgpu/api/AppleNativeBuffer.h +0 -22
- package/cpp/rnwgpu/api/Convertors.h +0 -783
- package/cpp/rnwgpu/api/External.h +0 -12
- package/cpp/rnwgpu/api/GPU.cpp +0 -162
- package/cpp/rnwgpu/api/GPU.h +0 -60
- package/cpp/rnwgpu/api/GPUAdapter.cpp +0 -240
- package/cpp/rnwgpu/api/GPUAdapter.h +0 -60
- package/cpp/rnwgpu/api/GPUAdapterInfo.h +0 -57
- package/cpp/rnwgpu/api/GPUBindGroup.cpp +0 -3
- package/cpp/rnwgpu/api/GPUBindGroup.h +0 -51
- package/cpp/rnwgpu/api/GPUBindGroupLayout.h +0 -52
- package/cpp/rnwgpu/api/GPUBuffer.cpp +0 -107
- package/cpp/rnwgpu/api/GPUBuffer.h +0 -88
- package/cpp/rnwgpu/api/GPUCanvasContext.cpp +0 -75
- package/cpp/rnwgpu/api/GPUCanvasContext.h +0 -70
- package/cpp/rnwgpu/api/GPUCommandBuffer.h +0 -45
- package/cpp/rnwgpu/api/GPUCommandEncoder.cpp +0 -179
- package/cpp/rnwgpu/api/GPUCommandEncoder.h +0 -111
- package/cpp/rnwgpu/api/GPUCompilationInfo.h +0 -79
- package/cpp/rnwgpu/api/GPUCompilationMessage.h +0 -36
- package/cpp/rnwgpu/api/GPUComputePassEncoder.cpp +0 -60
- package/cpp/rnwgpu/api/GPUComputePassEncoder.h +0 -85
- package/cpp/rnwgpu/api/GPUComputePipeline.cpp +0 -12
- package/cpp/rnwgpu/api/GPUComputePipeline.h +0 -60
- package/cpp/rnwgpu/api/GPUDevice.cpp +0 -614
- package/cpp/rnwgpu/api/GPUDevice.h +0 -258
- package/cpp/rnwgpu/api/GPUDeviceLostInfo.cpp +0 -7
- package/cpp/rnwgpu/api/GPUDeviceLostInfo.h +0 -40
- package/cpp/rnwgpu/api/GPUError.h +0 -35
- package/cpp/rnwgpu/api/GPUExtent3D.h +0 -66
- package/cpp/rnwgpu/api/GPUExternalTexture.cpp +0 -139
- package/cpp/rnwgpu/api/GPUExternalTexture.h +0 -95
- package/cpp/rnwgpu/api/GPUFeatures.h +0 -203
- package/cpp/rnwgpu/api/GPUInternalError.h +0 -31
- package/cpp/rnwgpu/api/GPUOrigin2D.h +0 -55
- package/cpp/rnwgpu/api/GPUOrigin3D.h +0 -62
- package/cpp/rnwgpu/api/GPUOutOfMemoryError.h +0 -33
- package/cpp/rnwgpu/api/GPUPipelineLayout.h +0 -45
- package/cpp/rnwgpu/api/GPUQuerySet.cpp +0 -11
- package/cpp/rnwgpu/api/GPUQuerySet.h +0 -73
- package/cpp/rnwgpu/api/GPUQueue.cpp +0 -179
- package/cpp/rnwgpu/api/GPUQueue.h +0 -84
- package/cpp/rnwgpu/api/GPURenderBundle.h +0 -44
- package/cpp/rnwgpu/api/GPURenderBundleEncoder.cpp +0 -131
- package/cpp/rnwgpu/api/GPURenderBundleEncoder.h +0 -110
- package/cpp/rnwgpu/api/GPURenderPassEncoder.cpp +0 -165
- package/cpp/rnwgpu/api/GPURenderPassEncoder.h +0 -130
- package/cpp/rnwgpu/api/GPURenderPipeline.cpp +0 -13
- package/cpp/rnwgpu/api/GPURenderPipeline.h +0 -61
- package/cpp/rnwgpu/api/GPUSampler.h +0 -44
- package/cpp/rnwgpu/api/GPUShaderModule.cpp +0 -56
- package/cpp/rnwgpu/api/GPUShaderModule.h +0 -66
- package/cpp/rnwgpu/api/GPUSharedFence.cpp +0 -80
- package/cpp/rnwgpu/api/GPUSharedFence.h +0 -53
- package/cpp/rnwgpu/api/GPUSharedTextureMemory.cpp +0 -135
- package/cpp/rnwgpu/api/GPUSharedTextureMemory.h +0 -75
- package/cpp/rnwgpu/api/GPUSupportedLimits.cpp +0 -129
- package/cpp/rnwgpu/api/GPUSupportedLimits.h +0 -131
- package/cpp/rnwgpu/api/GPUTexture.cpp +0 -47
- package/cpp/rnwgpu/api/GPUTexture.h +0 -162
- package/cpp/rnwgpu/api/GPUTextureView.h +0 -44
- package/cpp/rnwgpu/api/GPUUncapturedErrorEvent.h +0 -60
- package/cpp/rnwgpu/api/GPUValidationError.h +0 -32
- package/cpp/rnwgpu/api/ImageBitmap.h +0 -62
- package/cpp/rnwgpu/api/NativeBufferUtils.h +0 -87
- package/cpp/rnwgpu/api/RNWebGPU.h +0 -82
- package/cpp/rnwgpu/api/WebGPUConstants.h +0 -36
- package/cpp/rnwgpu/api/descriptors/GPUBindGroupDescriptor.h +0 -64
- package/cpp/rnwgpu/api/descriptors/GPUBindGroupEntry.h +0 -78
- package/cpp/rnwgpu/api/descriptors/GPUBindGroupLayoutDescriptor.h +0 -56
- package/cpp/rnwgpu/api/descriptors/GPUBindGroupLayoutEntry.h +0 -97
- package/cpp/rnwgpu/api/descriptors/GPUBlendComponent.h +0 -57
- package/cpp/rnwgpu/api/descriptors/GPUBlendState.h +0 -52
- package/cpp/rnwgpu/api/descriptors/GPUBufferBinding.h +0 -56
- package/cpp/rnwgpu/api/descriptors/GPUBufferBindingLayout.h +0 -56
- package/cpp/rnwgpu/api/descriptors/GPUBufferDescriptor.h +0 -59
- package/cpp/rnwgpu/api/descriptors/GPUBufferUsage.h +0 -39
- package/cpp/rnwgpu/api/descriptors/GPUCanvasConfiguration.h +0 -76
- package/cpp/rnwgpu/api/descriptors/GPUColor.h +0 -66
- package/cpp/rnwgpu/api/descriptors/GPUColorTargetState.h +0 -58
- package/cpp/rnwgpu/api/descriptors/GPUColorWrite.h +0 -29
- package/cpp/rnwgpu/api/descriptors/GPUCommandBufferDescriptor.h +0 -45
- package/cpp/rnwgpu/api/descriptors/GPUCommandEncoderDescriptor.h +0 -45
- package/cpp/rnwgpu/api/descriptors/GPUComputePassDescriptor.h +0 -56
- package/cpp/rnwgpu/api/descriptors/GPUComputePassTimestampWrites.h +0 -58
- package/cpp/rnwgpu/api/descriptors/GPUComputePipelineDescriptor.h +0 -67
- package/cpp/rnwgpu/api/descriptors/GPUDawnTogglesDescriptor.h +0 -56
- package/cpp/rnwgpu/api/descriptors/GPUDepthStencilState.h +0 -103
- package/cpp/rnwgpu/api/descriptors/GPUDeviceDescriptor.h +0 -109
- package/cpp/rnwgpu/api/descriptors/GPUExternalTextureBindingLayout.h +0 -38
- package/cpp/rnwgpu/api/descriptors/GPUExternalTextureDescriptor.h +0 -90
- package/cpp/rnwgpu/api/descriptors/GPUFragmentState.h +0 -73
- package/cpp/rnwgpu/api/descriptors/GPUImageCopyBuffer.h +0 -62
- package/cpp/rnwgpu/api/descriptors/GPUImageCopyExternalImage.h +0 -63
- package/cpp/rnwgpu/api/descriptors/GPUImageCopyTexture.h +0 -65
- package/cpp/rnwgpu/api/descriptors/GPUImageCopyTextureTagged.h +0 -81
- package/cpp/rnwgpu/api/descriptors/GPUImageDataLayout.h +0 -54
- package/cpp/rnwgpu/api/descriptors/GPUMapMode.h +0 -22
- package/cpp/rnwgpu/api/descriptors/GPUMultisampleState.h +0 -54
- package/cpp/rnwgpu/api/descriptors/GPUPipelineLayoutDescriptor.h +0 -57
- package/cpp/rnwgpu/api/descriptors/GPUPrimitiveState.h +0 -69
- package/cpp/rnwgpu/api/descriptors/GPUProgrammableStage.h +0 -61
- package/cpp/rnwgpu/api/descriptors/GPUQuerySetDescriptor.h +0 -55
- package/cpp/rnwgpu/api/descriptors/GPUQueueDescriptor.h +0 -43
- package/cpp/rnwgpu/api/descriptors/GPURenderBundleDescriptor.h +0 -45
- package/cpp/rnwgpu/api/descriptors/GPURenderBundleEncoderDescriptor.h +0 -80
- package/cpp/rnwgpu/api/descriptors/GPURenderPassColorAttachment.h +0 -81
- package/cpp/rnwgpu/api/descriptors/GPURenderPassDepthStencilAttachment.h +0 -101
- package/cpp/rnwgpu/api/descriptors/GPURenderPassDescriptor.h +0 -92
- package/cpp/rnwgpu/api/descriptors/GPURenderPassTimestampWrites.h +0 -58
- package/cpp/rnwgpu/api/descriptors/GPURenderPipelineDescriptor.h +0 -103
- package/cpp/rnwgpu/api/descriptors/GPURequestAdapterOptions.h +0 -51
- package/cpp/rnwgpu/api/descriptors/GPUSamplerBindingLayout.h +0 -45
- package/cpp/rnwgpu/api/descriptors/GPUSamplerDescriptor.h +0 -110
- package/cpp/rnwgpu/api/descriptors/GPUShaderModuleCompilationHint.h +0 -60
- package/cpp/rnwgpu/api/descriptors/GPUShaderModuleDescriptor.h +0 -62
- package/cpp/rnwgpu/api/descriptors/GPUShaderStage.h +0 -25
- package/cpp/rnwgpu/api/descriptors/GPUSharedFenceDescriptor.h +0 -58
- package/cpp/rnwgpu/api/descriptors/GPUSharedFenceState.h +0 -51
- package/cpp/rnwgpu/api/descriptors/GPUSharedTextureMemoryDescriptor.h +0 -73
- package/cpp/rnwgpu/api/descriptors/GPUStencilFaceState.h +0 -64
- package/cpp/rnwgpu/api/descriptors/GPUStorageTextureBindingLayout.h +0 -59
- package/cpp/rnwgpu/api/descriptors/GPUTextureBindingLayout.h +0 -59
- package/cpp/rnwgpu/api/descriptors/GPUTextureDescriptor.h +0 -91
- package/cpp/rnwgpu/api/descriptors/GPUTextureUsage.h +0 -29
- package/cpp/rnwgpu/api/descriptors/GPUTextureViewDescriptor.h +0 -91
- package/cpp/rnwgpu/api/descriptors/GPUUncapturedErrorEventInit.h +0 -64
- package/cpp/rnwgpu/api/descriptors/GPUVertexAttribute.h +0 -53
- package/cpp/rnwgpu/api/descriptors/GPUVertexBufferLayout.h +0 -62
- package/cpp/rnwgpu/api/descriptors/GPUVertexState.h +0 -73
- package/cpp/rnwgpu/api/descriptors/Unions.h +0 -1969
- package/cpp/rnwgpu/async/AsyncTaskHandle.cpp +0 -214
- package/cpp/rnwgpu/async/AsyncTaskHandle.h +0 -58
- package/cpp/rnwgpu/async/RuntimeContext.cpp +0 -199
- package/cpp/rnwgpu/async/RuntimeContext.h +0 -134
- package/lib/commonjs/skia/types/WebGPU.d.ts +0 -184
- package/lib/commonjs/skia/types/WebGPU.js +0 -105
- package/lib/commonjs/skia/types/WebGPU.js.map +0 -1
- package/lib/commonjs/specs/WebGPUViewNativeComponent.d.ts +0 -8
- package/lib/commonjs/specs/WebGPUViewNativeComponent.js +0 -10
- package/lib/commonjs/specs/WebGPUViewNativeComponent.js.map +0 -1
- package/lib/commonjs/specs/WebGPUViewNativeComponent.web.d.ts +0 -8
- package/lib/commonjs/specs/WebGPUViewNativeComponent.web.js +0 -103
- package/lib/commonjs/specs/WebGPUViewNativeComponent.web.js.map +0 -1
- package/lib/commonjs/specs/utils.d.ts +0 -1
- package/lib/commonjs/specs/utils.js +0 -11
- package/lib/commonjs/specs/utils.js.map +0 -1
- package/lib/commonjs/views/WebGPUCanvas.d.ts +0 -33
- package/lib/commonjs/views/WebGPUCanvas.js +0 -79
- package/lib/commonjs/views/WebGPUCanvas.js.map +0 -1
- package/lib/commonjs/views/WebGPUCanvas.web.d.ts +0 -23
- package/lib/commonjs/views/WebGPUCanvas.web.js +0 -20
- package/lib/commonjs/views/WebGPUCanvas.web.js.map +0 -1
- package/lib/module/skia/types/WebGPU.d.ts +0 -184
- package/lib/module/skia/types/WebGPU.js +0 -99
- package/lib/module/skia/types/WebGPU.js.map +0 -1
- package/lib/module/specs/WebGPUViewNativeComponent.d.ts +0 -8
- package/lib/module/specs/WebGPUViewNativeComponent.js +0 -4
- package/lib/module/specs/WebGPUViewNativeComponent.js.map +0 -1
- package/lib/module/specs/WebGPUViewNativeComponent.web.d.ts +0 -8
- package/lib/module/specs/WebGPUViewNativeComponent.web.js +0 -96
- package/lib/module/specs/WebGPUViewNativeComponent.web.js.map +0 -1
- package/lib/module/specs/utils.d.ts +0 -1
- package/lib/module/specs/utils.js +0 -5
- package/lib/module/specs/utils.js.map +0 -1
- package/lib/module/views/WebGPUCanvas.d.ts +0 -33
- package/lib/module/views/WebGPUCanvas.js +0 -70
- package/lib/module/views/WebGPUCanvas.js.map +0 -1
- package/lib/module/views/WebGPUCanvas.web.d.ts +0 -23
- package/lib/module/views/WebGPUCanvas.web.js +0 -12
- package/lib/module/views/WebGPUCanvas.web.js.map +0 -1
- package/lib/typescript/lib/commonjs/skia/types/WebGPU.d.ts +0 -2
- package/lib/typescript/lib/commonjs/specs/WebGPUViewNativeComponent.d.ts +0 -4
- package/lib/typescript/lib/commonjs/specs/WebGPUViewNativeComponent.web.d.ts +0 -3
- package/lib/typescript/lib/commonjs/specs/utils.d.ts +0 -2
- package/lib/typescript/lib/commonjs/views/WebGPUCanvas.d.ts +0 -6
- package/lib/typescript/lib/commonjs/views/WebGPUCanvas.web.d.ts +0 -6
- package/lib/typescript/lib/module/skia/types/WebGPU.d.ts +0 -31
- package/lib/typescript/lib/module/specs/WebGPUViewNativeComponent.d.ts +0 -2
- package/lib/typescript/lib/module/specs/WebGPUViewNativeComponent.web.d.ts +0 -2
- package/lib/typescript/lib/module/specs/utils.d.ts +0 -1
- package/lib/typescript/lib/module/views/WebGPUCanvas.d.ts +0 -7
- package/lib/typescript/lib/module/views/WebGPUCanvas.web.d.ts +0 -8
- package/lib/typescript/src/skia/types/WebGPU.d.ts +0 -184
- package/lib/typescript/src/specs/WebGPUViewNativeComponent.d.ts +0 -8
- package/lib/typescript/src/specs/WebGPUViewNativeComponent.web.d.ts +0 -8
- package/lib/typescript/src/specs/utils.d.ts +0 -1
- package/lib/typescript/src/views/WebGPUCanvas.d.ts +0 -33
- package/lib/typescript/src/views/WebGPUCanvas.web.d.ts +0 -23
- package/src/skia/types/WebGPU.ts +0 -226
- package/src/specs/WebGPUViewNativeComponent.ts +0 -11
- package/src/specs/WebGPUViewNativeComponent.web.ts +0 -110
- package/src/specs/utils.ts +0 -4
- package/src/views/WebGPUCanvas.tsx +0 -125
- package/src/views/WebGPUCanvas.web.tsx +0 -36
- /package/cpp/{jsi2 → jsi}/Promise.cpp +0 -0
- /package/cpp/{jsi2 → jsi}/Promise.h +0 -0
|
@@ -0,0 +1,410 @@
|
|
|
1
|
+
#pragma once
|
|
2
|
+
|
|
3
|
+
#include <memory>
|
|
4
|
+
#include <optional>
|
|
5
|
+
#include <utility>
|
|
6
|
+
#include <variant>
|
|
7
|
+
|
|
8
|
+
#include <jsi/jsi.h>
|
|
9
|
+
|
|
10
|
+
#include "jsi/JSIConverter.h"
|
|
11
|
+
|
|
12
|
+
#pragma clang diagnostic push
|
|
13
|
+
#pragma clang diagnostic ignored "-Wdocumentation"
|
|
14
|
+
|
|
15
|
+
#include "include/core/SkColor.h"
|
|
16
|
+
#include "include/core/SkPoint3.h"
|
|
17
|
+
#include "include/core/SkRefCnt.h"
|
|
18
|
+
#include "include/core/SkSize.h"
|
|
19
|
+
|
|
20
|
+
#pragma clang diagnostic pop
|
|
21
|
+
|
|
22
|
+
// Forward declarations of the wrapped Skia types. Only the trait below needs
|
|
23
|
+
// them; the converter bodies are templates and are instantiated lazily, at
|
|
24
|
+
// which point the classes are complete.
|
|
25
|
+
class SkImage;
|
|
26
|
+
class SkShader;
|
|
27
|
+
class SkTypeface;
|
|
28
|
+
class SkColorFilter;
|
|
29
|
+
class SkImageFilter;
|
|
30
|
+
class SkMaskFilter;
|
|
31
|
+
class SkPathEffect;
|
|
32
|
+
class SkData;
|
|
33
|
+
class SkPicture;
|
|
34
|
+
class SkTextBlob;
|
|
35
|
+
class SkRuntimeEffect;
|
|
36
|
+
class SkRuntimeEffectBuilder;
|
|
37
|
+
class SkVertices;
|
|
38
|
+
class SkFontMgr;
|
|
39
|
+
class SkSVGDOM;
|
|
40
|
+
class SkPaint;
|
|
41
|
+
class SkFont;
|
|
42
|
+
class SkMatrix;
|
|
43
|
+
class SkPathBuilder;
|
|
44
|
+
struct SkRect;
|
|
45
|
+
struct SkPoint;
|
|
46
|
+
class SkRRect;
|
|
47
|
+
class SkFontStyle;
|
|
48
|
+
struct SkImageInfo;
|
|
49
|
+
struct SkRSXform;
|
|
50
|
+
|
|
51
|
+
namespace skia {
|
|
52
|
+
namespace textlayout {
|
|
53
|
+
class TextStyle;
|
|
54
|
+
struct ParagraphStyle;
|
|
55
|
+
class TypefaceFontProvider;
|
|
56
|
+
} // namespace textlayout
|
|
57
|
+
} // namespace skia
|
|
58
|
+
|
|
59
|
+
namespace RNSkia {
|
|
60
|
+
|
|
61
|
+
namespace jsi = facebook::jsi;
|
|
62
|
+
|
|
63
|
+
class JsiSkImage;
|
|
64
|
+
class JsiSkShader;
|
|
65
|
+
class JsiSkTypeface;
|
|
66
|
+
class JsiSkColorFilter;
|
|
67
|
+
class JsiSkImageFilter;
|
|
68
|
+
class JsiSkMaskFilter;
|
|
69
|
+
class JsiSkPathEffect;
|
|
70
|
+
class JsiSkData;
|
|
71
|
+
class JsiSkPicture;
|
|
72
|
+
class JsiSkTextBlob;
|
|
73
|
+
class JsiSkRuntimeEffect;
|
|
74
|
+
class JsiSkRuntimeShaderBuilder;
|
|
75
|
+
class JsiSkVertices;
|
|
76
|
+
class JsiSkFontMgr;
|
|
77
|
+
class JsiSkSVG;
|
|
78
|
+
class JsiSkPaint;
|
|
79
|
+
class JsiSkFont;
|
|
80
|
+
class JsiSkMatrix;
|
|
81
|
+
class JsiSkPath;
|
|
82
|
+
class JsiSkRect;
|
|
83
|
+
class JsiSkPoint;
|
|
84
|
+
class JsiSkRRect;
|
|
85
|
+
class JsiSkFontStyle;
|
|
86
|
+
class JsiSkImageInfo;
|
|
87
|
+
class JsiSkRSXform;
|
|
88
|
+
class JsiSkTextStyle;
|
|
89
|
+
class JsiSkParagraphStyle;
|
|
90
|
+
class JsiSkTypefaceFontProvider;
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Maps a wrapped Skia type to the JsiSk* class whose `fromValue` knows how to
|
|
94
|
+
* read it from a JS value (including the plain-object fallbacks, e.g. SkRect
|
|
95
|
+
* from {x, y, width, height}). The JSIConverter specializations below are
|
|
96
|
+
* enabled for exactly the types listed here.
|
|
97
|
+
*/
|
|
98
|
+
template <typename T> struct JsiSkWrapperFor;
|
|
99
|
+
|
|
100
|
+
template <> struct JsiSkWrapperFor<SkImage> {
|
|
101
|
+
using type = JsiSkImage;
|
|
102
|
+
};
|
|
103
|
+
template <> struct JsiSkWrapperFor<SkShader> {
|
|
104
|
+
using type = JsiSkShader;
|
|
105
|
+
};
|
|
106
|
+
template <> struct JsiSkWrapperFor<SkTypeface> {
|
|
107
|
+
using type = JsiSkTypeface;
|
|
108
|
+
};
|
|
109
|
+
template <> struct JsiSkWrapperFor<SkColorFilter> {
|
|
110
|
+
using type = JsiSkColorFilter;
|
|
111
|
+
};
|
|
112
|
+
template <> struct JsiSkWrapperFor<SkImageFilter> {
|
|
113
|
+
using type = JsiSkImageFilter;
|
|
114
|
+
};
|
|
115
|
+
template <> struct JsiSkWrapperFor<SkMaskFilter> {
|
|
116
|
+
using type = JsiSkMaskFilter;
|
|
117
|
+
};
|
|
118
|
+
template <> struct JsiSkWrapperFor<SkPathEffect> {
|
|
119
|
+
using type = JsiSkPathEffect;
|
|
120
|
+
};
|
|
121
|
+
template <> struct JsiSkWrapperFor<SkData> {
|
|
122
|
+
using type = JsiSkData;
|
|
123
|
+
};
|
|
124
|
+
template <> struct JsiSkWrapperFor<SkPicture> {
|
|
125
|
+
using type = JsiSkPicture;
|
|
126
|
+
};
|
|
127
|
+
template <> struct JsiSkWrapperFor<SkTextBlob> {
|
|
128
|
+
using type = JsiSkTextBlob;
|
|
129
|
+
};
|
|
130
|
+
template <> struct JsiSkWrapperFor<SkRuntimeEffect> {
|
|
131
|
+
using type = JsiSkRuntimeEffect;
|
|
132
|
+
};
|
|
133
|
+
template <> struct JsiSkWrapperFor<SkRuntimeEffectBuilder> {
|
|
134
|
+
using type = JsiSkRuntimeShaderBuilder;
|
|
135
|
+
};
|
|
136
|
+
template <> struct JsiSkWrapperFor<SkVertices> {
|
|
137
|
+
using type = JsiSkVertices;
|
|
138
|
+
};
|
|
139
|
+
template <> struct JsiSkWrapperFor<SkFontMgr> {
|
|
140
|
+
using type = JsiSkFontMgr;
|
|
141
|
+
};
|
|
142
|
+
template <> struct JsiSkWrapperFor<SkSVGDOM> {
|
|
143
|
+
using type = JsiSkSVG;
|
|
144
|
+
};
|
|
145
|
+
template <> struct JsiSkWrapperFor<SkPaint> {
|
|
146
|
+
using type = JsiSkPaint;
|
|
147
|
+
};
|
|
148
|
+
template <> struct JsiSkWrapperFor<SkFont> {
|
|
149
|
+
using type = JsiSkFont;
|
|
150
|
+
};
|
|
151
|
+
template <> struct JsiSkWrapperFor<SkMatrix> {
|
|
152
|
+
using type = JsiSkMatrix;
|
|
153
|
+
};
|
|
154
|
+
// Note: JsiSkPath wraps an SkPathBuilder (not an SkPath).
|
|
155
|
+
template <> struct JsiSkWrapperFor<SkPathBuilder> {
|
|
156
|
+
using type = JsiSkPath;
|
|
157
|
+
};
|
|
158
|
+
template <> struct JsiSkWrapperFor<SkRect> {
|
|
159
|
+
using type = JsiSkRect;
|
|
160
|
+
};
|
|
161
|
+
template <> struct JsiSkWrapperFor<SkPoint> {
|
|
162
|
+
using type = JsiSkPoint;
|
|
163
|
+
};
|
|
164
|
+
template <> struct JsiSkWrapperFor<SkRRect> {
|
|
165
|
+
using type = JsiSkRRect;
|
|
166
|
+
};
|
|
167
|
+
template <> struct JsiSkWrapperFor<SkFontStyle> {
|
|
168
|
+
using type = JsiSkFontStyle;
|
|
169
|
+
};
|
|
170
|
+
template <> struct JsiSkWrapperFor<SkImageInfo> {
|
|
171
|
+
using type = JsiSkImageInfo;
|
|
172
|
+
};
|
|
173
|
+
template <> struct JsiSkWrapperFor<SkRSXform> {
|
|
174
|
+
using type = JsiSkRSXform;
|
|
175
|
+
};
|
|
176
|
+
template <> struct JsiSkWrapperFor<skia::textlayout::TextStyle> {
|
|
177
|
+
using type = JsiSkTextStyle;
|
|
178
|
+
};
|
|
179
|
+
template <> struct JsiSkWrapperFor<skia::textlayout::ParagraphStyle> {
|
|
180
|
+
using type = JsiSkParagraphStyle;
|
|
181
|
+
};
|
|
182
|
+
template <> struct JsiSkWrapperFor<skia::textlayout::TypefaceFontProvider> {
|
|
183
|
+
using type = JsiSkTypefaceFontProvider;
|
|
184
|
+
};
|
|
185
|
+
|
|
186
|
+
template <typename T>
|
|
187
|
+
using JsiSkWrapperFor_t = typename JsiSkWrapperFor<T>::type;
|
|
188
|
+
|
|
189
|
+
class JsiSkColor;
|
|
190
|
+
|
|
191
|
+
/**
|
|
192
|
+
* SkColor is a typedef of uint32_t, which already has a JSIConverter, so
|
|
193
|
+
* color arguments use this strong typedef to route through
|
|
194
|
+
* JsiSkColor::fromValue (array | Float32Array) instead.
|
|
195
|
+
*/
|
|
196
|
+
struct JsiColor {
|
|
197
|
+
SkColor color;
|
|
198
|
+
operator SkColor() const { return color; }
|
|
199
|
+
};
|
|
200
|
+
|
|
201
|
+
template <> struct JsiSkWrapperFor<JsiColor> {
|
|
202
|
+
using type = JsiSkColor;
|
|
203
|
+
};
|
|
204
|
+
|
|
205
|
+
/**
|
|
206
|
+
* An argument the JS API treats as absent when it is omitted, undefined, or
|
|
207
|
+
* null. This matches the pervasive `hasOptionalArgument` pattern of the raw
|
|
208
|
+
* bindings. Use std::optional instead when null must be distinguished from
|
|
209
|
+
* undefined (it treats only omitted/undefined as absent).
|
|
210
|
+
*/
|
|
211
|
+
template <typename T> struct JsiOptional : std::optional<T> {
|
|
212
|
+
using std::optional<T>::optional;
|
|
213
|
+
};
|
|
214
|
+
|
|
215
|
+
} // namespace RNSkia
|
|
216
|
+
|
|
217
|
+
namespace rnwgpu {
|
|
218
|
+
|
|
219
|
+
/**
|
|
220
|
+
* sk_sp<T> arguments (SkImage, SkShader, ...). Delegates to the wrapper
|
|
221
|
+
* class's fromValue, so wrapper objects and any legacy fallback shapes keep
|
|
222
|
+
* working. Conversion is strict: null/undefined throw, matching the previous
|
|
223
|
+
* raw JSI_HOST_FUNCTION bodies. Arguments that explicitly accept null use
|
|
224
|
+
* std::variant<std::nullptr_t, sk_sp<T>> (see below); arguments that may be
|
|
225
|
+
* omitted use std::optional.
|
|
226
|
+
*
|
|
227
|
+
* There is intentionally no toJSI: building a wrapper requires the platform
|
|
228
|
+
* context, so methods return std::shared_ptr<JsiSkFoo> built with
|
|
229
|
+
* getContext() instead (handled by the NativeObject converter).
|
|
230
|
+
*/
|
|
231
|
+
template <typename T>
|
|
232
|
+
struct JSIConverter<sk_sp<T>,
|
|
233
|
+
std::void_t<typename RNSkia::JsiSkWrapperFor<T>::type>> {
|
|
234
|
+
static sk_sp<T> fromJSI(jsi::Runtime &runtime, const jsi::Value &arg,
|
|
235
|
+
bool outOfBound) {
|
|
236
|
+
return RNSkia::JsiSkWrapperFor_t<T>::fromValue(runtime, arg);
|
|
237
|
+
}
|
|
238
|
+
};
|
|
239
|
+
|
|
240
|
+
/**
|
|
241
|
+
* std::shared_ptr<T> arguments for the wrapped non-refcounted Skia types
|
|
242
|
+
* (SkPaint, SkFont, SkMatrix, SkRect, ...). Same rules as sk_sp above.
|
|
243
|
+
*/
|
|
244
|
+
template <typename T>
|
|
245
|
+
struct JSIConverter<std::shared_ptr<T>,
|
|
246
|
+
std::void_t<typename RNSkia::JsiSkWrapperFor<T>::type>> {
|
|
247
|
+
static std::shared_ptr<T> fromJSI(jsi::Runtime &runtime,
|
|
248
|
+
const jsi::Value &arg, bool outOfBound) {
|
|
249
|
+
return RNSkia::JsiSkWrapperFor_t<T>::fromValue(runtime, arg);
|
|
250
|
+
}
|
|
251
|
+
};
|
|
252
|
+
|
|
253
|
+
/**
|
|
254
|
+
* Nullable sk_sp<T> arguments: JS null maps to the std::nullptr_t
|
|
255
|
+
* alternative, anything else goes through the strict converter above.
|
|
256
|
+
*/
|
|
257
|
+
template <typename T>
|
|
258
|
+
struct JSIConverter<std::variant<std::nullptr_t, sk_sp<T>>,
|
|
259
|
+
std::void_t<typename RNSkia::JsiSkWrapperFor<T>::type>> {
|
|
260
|
+
using Target = std::variant<std::nullptr_t, sk_sp<T>>;
|
|
261
|
+
|
|
262
|
+
static Target fromJSI(jsi::Runtime &runtime, const jsi::Value &arg,
|
|
263
|
+
bool outOfBound) {
|
|
264
|
+
if (arg.isNull()) {
|
|
265
|
+
return Target(nullptr);
|
|
266
|
+
}
|
|
267
|
+
return Target(JSIConverter<sk_sp<T>>::fromJSI(runtime, arg, outOfBound));
|
|
268
|
+
}
|
|
269
|
+
};
|
|
270
|
+
|
|
271
|
+
/**
|
|
272
|
+
* SkRect / SkPoint / SkMatrix / SkRSXform by value — the wrapper's fromValue
|
|
273
|
+
* provides the plain-object/array fallbacks. fromJSI only; returning these
|
|
274
|
+
* types is done through std::shared_ptr<JsiSkRect> etc. (see above).
|
|
275
|
+
*
|
|
276
|
+
* All bodies below reach the wrapper through JsiSkWrapperFor_t<T> so the
|
|
277
|
+
* name stays dependent on T and is only looked up at instantiation, when the
|
|
278
|
+
* wrapper class is complete (two-phase lookup would otherwise bind — and
|
|
279
|
+
* reject — the incomplete forward declaration at definition time).
|
|
280
|
+
*/
|
|
281
|
+
template <typename T>
|
|
282
|
+
struct JSIConverter<T, std::enable_if_t<std::is_same_v<T, SkRect> ||
|
|
283
|
+
std::is_same_v<T, SkMatrix> ||
|
|
284
|
+
std::is_same_v<T, SkRSXform>>> {
|
|
285
|
+
static T fromJSI(jsi::Runtime &runtime, const jsi::Value &arg,
|
|
286
|
+
bool outOfBound) {
|
|
287
|
+
return *RNSkia::JsiSkWrapperFor_t<T>::fromValue(runtime, arg);
|
|
288
|
+
}
|
|
289
|
+
};
|
|
290
|
+
|
|
291
|
+
// SkPoint additionally converts back to a plain {x, y} object — this is what
|
|
292
|
+
// the raw bindings returned for point results (e.g. getLastPt), NOT a Point
|
|
293
|
+
// wrapper. Methods that should return a wrapper use
|
|
294
|
+
// std::shared_ptr<JsiSkPoint> instead.
|
|
295
|
+
template <typename T>
|
|
296
|
+
struct JSIConverter<T, std::enable_if_t<std::is_same_v<T, SkPoint>>> {
|
|
297
|
+
static T fromJSI(jsi::Runtime &runtime, const jsi::Value &arg,
|
|
298
|
+
bool outOfBound) {
|
|
299
|
+
return *RNSkia::JsiSkWrapperFor_t<T>::fromValue(runtime, arg);
|
|
300
|
+
}
|
|
301
|
+
static jsi::Value toJSI(jsi::Runtime &runtime, const T &point) {
|
|
302
|
+
jsi::Object result(runtime);
|
|
303
|
+
result.setProperty(runtime, "x", static_cast<double>(point.x()));
|
|
304
|
+
result.setProperty(runtime, "y", static_cast<double>(point.y()));
|
|
305
|
+
return result;
|
|
306
|
+
}
|
|
307
|
+
};
|
|
308
|
+
|
|
309
|
+
// Paragraph style values — their fromValue helpers return by value and read
|
|
310
|
+
// plain JS style objects.
|
|
311
|
+
template <typename T>
|
|
312
|
+
struct JSIConverter<
|
|
313
|
+
T, std::enable_if_t<std::is_same_v<T, skia::textlayout::TextStyle> ||
|
|
314
|
+
std::is_same_v<T, skia::textlayout::ParagraphStyle>>> {
|
|
315
|
+
static T fromJSI(jsi::Runtime &runtime, const jsi::Value &arg,
|
|
316
|
+
bool outOfBound) {
|
|
317
|
+
return RNSkia::JsiSkWrapperFor_t<T>::fromValue(runtime, arg);
|
|
318
|
+
}
|
|
319
|
+
};
|
|
320
|
+
|
|
321
|
+
// Colors via the JsiColor strong typedef (see above).
|
|
322
|
+
template <typename T>
|
|
323
|
+
struct JSIConverter<T, std::enable_if_t<std::is_same_v<T, RNSkia::JsiColor>>> {
|
|
324
|
+
static T fromJSI(jsi::Runtime &runtime, const jsi::Value &arg,
|
|
325
|
+
bool outOfBound) {
|
|
326
|
+
return {RNSkia::JsiSkWrapperFor_t<T>::fromValue(runtime, arg)};
|
|
327
|
+
}
|
|
328
|
+
static jsi::Value toJSI(jsi::Runtime &runtime, const T &arg) {
|
|
329
|
+
return RNSkia::JsiSkWrapperFor_t<T>::toValue(runtime, arg.color);
|
|
330
|
+
}
|
|
331
|
+
};
|
|
332
|
+
|
|
333
|
+
// JsiOptional<T>: omitted | undefined | null -> absent
|
|
334
|
+
template <typename T> struct JSIConverter<RNSkia::JsiOptional<T>> {
|
|
335
|
+
static RNSkia::JsiOptional<T> fromJSI(jsi::Runtime &runtime,
|
|
336
|
+
const jsi::Value &arg,
|
|
337
|
+
bool outOfBound) {
|
|
338
|
+
if (outOfBound || arg.isUndefined() || arg.isNull()) {
|
|
339
|
+
return {};
|
|
340
|
+
}
|
|
341
|
+
return {JSIConverter<T>::fromJSI(runtime, arg, outOfBound)};
|
|
342
|
+
}
|
|
343
|
+
static jsi::Value toJSI(jsi::Runtime &runtime,
|
|
344
|
+
const RNSkia::JsiOptional<T> &arg) {
|
|
345
|
+
if (!arg.has_value()) {
|
|
346
|
+
return jsi::Value::null();
|
|
347
|
+
}
|
|
348
|
+
return JSIConverter<T>::toJSI(runtime, arg.value());
|
|
349
|
+
}
|
|
350
|
+
};
|
|
351
|
+
|
|
352
|
+
// SkPoint3 <- {x, y, z}
|
|
353
|
+
template <> struct JSIConverter<SkPoint3> {
|
|
354
|
+
static SkPoint3 fromJSI(jsi::Runtime &runtime, const jsi::Value &arg,
|
|
355
|
+
bool outOfBound) {
|
|
356
|
+
auto object = arg.asObject(runtime);
|
|
357
|
+
auto x = object.getProperty(runtime, "x").asNumber();
|
|
358
|
+
auto y = object.getProperty(runtime, "y").asNumber();
|
|
359
|
+
auto z = object.getProperty(runtime, "z").asNumber();
|
|
360
|
+
return SkPoint3::Make(x, y, z);
|
|
361
|
+
}
|
|
362
|
+
};
|
|
363
|
+
|
|
364
|
+
// std::string | null (nullable string results)
|
|
365
|
+
template <> struct JSIConverter<std::variant<std::nullptr_t, std::string>> {
|
|
366
|
+
using Target = std::variant<std::nullptr_t, std::string>;
|
|
367
|
+
static Target fromJSI(jsi::Runtime &runtime, const jsi::Value &arg,
|
|
368
|
+
bool outOfBound) {
|
|
369
|
+
if (arg.isNull()) {
|
|
370
|
+
return Target(nullptr);
|
|
371
|
+
}
|
|
372
|
+
return Target(JSIConverter<std::string>::fromJSI(runtime, arg, outOfBound));
|
|
373
|
+
}
|
|
374
|
+
static jsi::Value toJSI(jsi::Runtime &runtime, const Target &arg) {
|
|
375
|
+
if (std::holds_alternative<std::nullptr_t>(arg)) {
|
|
376
|
+
return jsi::Value::null();
|
|
377
|
+
}
|
|
378
|
+
return JSIConverter<std::string>::toJSI(runtime, std::get<std::string>(arg));
|
|
379
|
+
}
|
|
380
|
+
};
|
|
381
|
+
|
|
382
|
+
// SkSize -> {width, height} (fractional)
|
|
383
|
+
template <> struct JSIConverter<SkSize> {
|
|
384
|
+
static jsi::Value toJSI(jsi::Runtime &runtime, const SkSize &size) {
|
|
385
|
+
jsi::Object result(runtime);
|
|
386
|
+
result.setProperty(runtime, "width", static_cast<double>(size.width()));
|
|
387
|
+
result.setProperty(runtime, "height", static_cast<double>(size.height()));
|
|
388
|
+
return result;
|
|
389
|
+
}
|
|
390
|
+
};
|
|
391
|
+
|
|
392
|
+
// SkISize <> {width, height}
|
|
393
|
+
template <> struct JSIConverter<SkISize> {
|
|
394
|
+
static SkISize fromJSI(jsi::Runtime &runtime, const jsi::Value &arg,
|
|
395
|
+
bool outOfBound) {
|
|
396
|
+
auto object = arg.asObject(runtime);
|
|
397
|
+
auto width = object.getProperty(runtime, "width").asNumber();
|
|
398
|
+
auto height = object.getProperty(runtime, "height").asNumber();
|
|
399
|
+
return SkISize::Make(static_cast<int32_t>(width),
|
|
400
|
+
static_cast<int32_t>(height));
|
|
401
|
+
}
|
|
402
|
+
static jsi::Value toJSI(jsi::Runtime &runtime, const SkISize &size) {
|
|
403
|
+
jsi::Object result(runtime);
|
|
404
|
+
result.setProperty(runtime, "width", static_cast<double>(size.width()));
|
|
405
|
+
result.setProperty(runtime, "height", static_cast<double>(size.height()));
|
|
406
|
+
return result;
|
|
407
|
+
}
|
|
408
|
+
};
|
|
409
|
+
|
|
410
|
+
} // namespace rnwgpu
|
package/cpp/api/JsiSkData.h
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
#include <jsi/jsi.h>
|
|
7
7
|
|
|
8
|
-
#include "
|
|
8
|
+
#include "JsiSkNativeObjects.h"
|
|
9
9
|
|
|
10
10
|
#pragma clang diagnostic push
|
|
11
11
|
#pragma clang diagnostic ignored "-Wdocumentation"
|
|
@@ -19,19 +19,25 @@ namespace RNSkia {
|
|
|
19
19
|
|
|
20
20
|
namespace jsi = facebook::jsi;
|
|
21
21
|
|
|
22
|
-
class JsiSkData : public
|
|
22
|
+
class JsiSkData : public JsiSkWrappingSkPtrNativeObject<JsiSkData, SkData> {
|
|
23
23
|
public:
|
|
24
|
+
static constexpr const char *CLASS_NAME = "Data";
|
|
25
|
+
|
|
24
26
|
JsiSkData(std::shared_ptr<RNSkPlatformContext> context, sk_sp<SkData> asset)
|
|
25
|
-
:
|
|
27
|
+
: JsiSkWrappingSkPtrNativeObject<JsiSkData, SkData>(std::move(context),
|
|
28
|
+
std::move(asset)) {}
|
|
26
29
|
|
|
27
|
-
size_t getMemoryPressure()
|
|
30
|
+
size_t getMemoryPressure() override {
|
|
28
31
|
auto data = getObject();
|
|
29
32
|
return data ? data->size() : 0;
|
|
30
33
|
}
|
|
31
34
|
|
|
32
|
-
|
|
35
|
+
static sk_sp<SkData> fromValue(jsi::Runtime &runtime, const jsi::Value &obj) {
|
|
36
|
+
return objectFromValue(runtime, obj);
|
|
37
|
+
}
|
|
33
38
|
|
|
34
|
-
|
|
35
|
-
|
|
39
|
+
static void definePrototype(jsi::Runtime &runtime, jsi::Object &prototype) {
|
|
40
|
+
installCommon(runtime, prototype);
|
|
41
|
+
}
|
|
36
42
|
};
|
|
37
43
|
} // namespace RNSkia
|
|
@@ -1,20 +1,24 @@
|
|
|
1
1
|
#pragma once
|
|
2
2
|
|
|
3
3
|
#include <memory>
|
|
4
|
+
#include <string>
|
|
4
5
|
#include <utility>
|
|
5
6
|
|
|
6
7
|
#include <jsi/jsi.h>
|
|
7
8
|
|
|
8
|
-
#include "jsi/JsiPromises.h"
|
|
9
9
|
#include "JsiSkData.h"
|
|
10
|
+
#include "JsiSkNativeObjects.h"
|
|
10
11
|
#include "api/third_party/base64.h"
|
|
12
|
+
#include "jsi/JsiPromises.h"
|
|
11
13
|
|
|
12
14
|
namespace RNSkia {
|
|
13
15
|
|
|
14
16
|
namespace jsi = facebook::jsi;
|
|
15
17
|
|
|
16
|
-
class JsiSkDataFactory : public
|
|
18
|
+
class JsiSkDataFactory : public JsiSkNativeObject<JsiSkDataFactory> {
|
|
17
19
|
public:
|
|
20
|
+
static constexpr const char *CLASS_NAME = "DataFactory";
|
|
21
|
+
|
|
18
22
|
JSI_HOST_FUNCTION(fromURI) {
|
|
19
23
|
auto jsiLocalUri = arguments[0].asString(runtime);
|
|
20
24
|
auto localUri = jsiLocalUri.utf8(runtime);
|
|
@@ -38,10 +42,9 @@ public:
|
|
|
38
42
|
context = std::move(context),
|
|
39
43
|
promise = std::move(promise),
|
|
40
44
|
result = std::move(result)]() {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
runtime, hostObjectInstance, context));
|
|
45
|
+
promise->resolve(makeJsiObject(
|
|
46
|
+
runtime,
|
|
47
|
+
std::make_shared<JsiSkData>(context, std::move(result))));
|
|
45
48
|
});
|
|
46
49
|
});
|
|
47
50
|
});
|
|
@@ -56,51 +59,43 @@ public:
|
|
|
56
59
|
|
|
57
60
|
auto data =
|
|
58
61
|
SkData::MakeWithCopy(buffer.data(runtime), buffer.size(runtime));
|
|
59
|
-
|
|
60
|
-
std::make_shared<JsiSkData>(getContext(), std::move(data));
|
|
61
|
-
return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(
|
|
62
|
-
runtime, hostObjectInstance, getContext());
|
|
62
|
+
return makeJsiObject(
|
|
63
|
+
runtime, std::make_shared<JsiSkData>(getContext(), std::move(data)));
|
|
63
64
|
}
|
|
64
65
|
|
|
65
|
-
|
|
66
|
-
auto base64 = arguments[0].asString(runtime);
|
|
67
|
-
auto base64Str = base64.utf8(runtime);
|
|
66
|
+
std::shared_ptr<JsiSkData> fromBase64(std::string base64Str) {
|
|
68
67
|
auto size = base64Str.size();
|
|
69
68
|
|
|
70
69
|
// Calculate length
|
|
71
70
|
size_t len;
|
|
72
|
-
auto err =
|
|
73
|
-
Base64::Decode(&base64.utf8(runtime).c_str()[0], size, nullptr, &len);
|
|
71
|
+
auto err = Base64::Decode(base64Str.c_str(), size, nullptr, &len);
|
|
74
72
|
if (err != Base64::Error::kNone) {
|
|
75
|
-
throw
|
|
76
|
-
return jsi::Value::undefined();
|
|
73
|
+
throw std::runtime_error("Error decoding base64 string");
|
|
77
74
|
}
|
|
78
75
|
|
|
79
76
|
// Create data object and decode
|
|
80
77
|
auto data = SkData::MakeUninitialized(len);
|
|
81
|
-
err = Base64::Decode(
|
|
82
|
-
data->writable_data(), &len);
|
|
78
|
+
err = Base64::Decode(base64Str.c_str(), size, data->writable_data(), &len);
|
|
83
79
|
if (err != Base64::Error::kNone) {
|
|
84
|
-
throw
|
|
85
|
-
return jsi::Value::undefined();
|
|
80
|
+
throw std::runtime_error("Error decoding base64 string");
|
|
86
81
|
}
|
|
87
82
|
|
|
88
|
-
|
|
89
|
-
std::make_shared<JsiSkData>(getContext(), std::move(data));
|
|
90
|
-
return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(
|
|
91
|
-
runtime, hostObjectInstance, getContext());
|
|
83
|
+
return std::make_shared<JsiSkData>(getContext(), std::move(data));
|
|
92
84
|
}
|
|
93
85
|
|
|
94
|
-
size_t getMemoryPressure()
|
|
86
|
+
size_t getMemoryPressure() override { return 1024; }
|
|
95
87
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
88
|
+
static void definePrototype(jsi::Runtime &runtime, jsi::Object &prototype) {
|
|
89
|
+
installHostMethod(runtime, prototype, "fromURI",
|
|
90
|
+
&JsiSkDataFactory::fromURI);
|
|
91
|
+
installHostMethod(runtime, prototype, "fromBytes",
|
|
92
|
+
&JsiSkDataFactory::fromBytes);
|
|
93
|
+
installMethod(runtime, prototype, "fromBase64",
|
|
94
|
+
&JsiSkDataFactory::fromBase64);
|
|
95
|
+
}
|
|
101
96
|
|
|
102
97
|
explicit JsiSkDataFactory(std::shared_ptr<RNSkPlatformContext> context)
|
|
103
|
-
:
|
|
98
|
+
: JsiSkNativeObject<JsiSkDataFactory>(std::move(context)) {}
|
|
104
99
|
};
|
|
105
100
|
|
|
106
101
|
} // namespace RNSkia
|