@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
package/cpp/api/JsiSkFont.h
CHANGED
|
@@ -2,13 +2,17 @@
|
|
|
2
2
|
|
|
3
3
|
#include <memory>
|
|
4
4
|
#include <numeric>
|
|
5
|
+
#include <optional>
|
|
6
|
+
#include <string>
|
|
5
7
|
#include <utility>
|
|
8
|
+
#include <variant>
|
|
6
9
|
#include <vector>
|
|
7
10
|
|
|
8
|
-
#include "
|
|
11
|
+
#include "JsiSkNativeObjects.h"
|
|
9
12
|
#include "utils/RNSkLog.h"
|
|
10
13
|
#include <jsi/jsi.h>
|
|
11
14
|
|
|
15
|
+
#include "JsiSkConverters.h"
|
|
12
16
|
#include "JsiSkPaint.h"
|
|
13
17
|
#include "JsiSkPoint.h"
|
|
14
18
|
#include "JsiSkRect.h"
|
|
@@ -26,41 +30,30 @@ namespace RNSkia {
|
|
|
26
30
|
|
|
27
31
|
namespace jsi = facebook::jsi;
|
|
28
32
|
|
|
29
|
-
class JsiSkFont : public
|
|
33
|
+
class JsiSkFont : public JsiSkWrappingSharedPtrNativeObject<JsiSkFont, SkFont> {
|
|
30
34
|
public:
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
std::vector<
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
for (int i = 0; i < glyphsSize; i++) {
|
|
41
|
-
glyphs.push_back(jsiGlyphs.getValueAtIndex(runtime, i).asNumber());
|
|
35
|
+
static constexpr const char *CLASS_NAME = "Font";
|
|
36
|
+
|
|
37
|
+
std::vector<double>
|
|
38
|
+
getGlyphWidths(std::vector<int> glyphs,
|
|
39
|
+
std::optional<std::shared_ptr<SkPaint>> paint) {
|
|
40
|
+
std::vector<SkGlyphID> glyphIds;
|
|
41
|
+
glyphIds.reserve(glyphs.size());
|
|
42
|
+
for (auto glyph : glyphs) {
|
|
43
|
+
glyphIds.push_back(static_cast<SkGlyphID>(glyph));
|
|
42
44
|
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
}
|
|
51
|
-
auto jsiWidths = jsi::Array(runtime, glyphsSize);
|
|
52
|
-
for (int i = 0; i < glyphsSize; i++) {
|
|
53
|
-
jsiWidths.setValueAtIndex(
|
|
54
|
-
runtime, i,
|
|
55
|
-
jsi::Value(
|
|
56
|
-
SkScalarToDouble(static_cast<SkScalar *>(widthPtrs.data())[i])));
|
|
57
|
-
}
|
|
58
|
-
return jsiWidths;
|
|
45
|
+
std::vector<SkScalar> widths;
|
|
46
|
+
widths.resize(glyphIds.size());
|
|
47
|
+
auto g = SkSpan(glyphIds.data(), glyphIds.size());
|
|
48
|
+
auto w = SkSpan(widths.data(), widths.size());
|
|
49
|
+
getObject()->getWidthsBounds(
|
|
50
|
+
g, w, {}, paint.has_value() ? paint.value().get() : nullptr);
|
|
51
|
+
return std::vector<double>(widths.begin(), widths.end());
|
|
59
52
|
}
|
|
60
53
|
|
|
61
54
|
// TODO: deprecate
|
|
62
|
-
|
|
63
|
-
|
|
55
|
+
int getTextWidth(std::string str,
|
|
56
|
+
std::optional<std::shared_ptr<SkPaint>> paint) {
|
|
64
57
|
auto numGlyphIDs = getObject()->countText(str.c_str(), str.length(),
|
|
65
58
|
SkTextEncoding::kUTF8);
|
|
66
59
|
std::vector<SkGlyphID> glyphs;
|
|
@@ -68,34 +61,25 @@ public:
|
|
|
68
61
|
auto g = SkSpan(glyphs.data(), glyphs.size());
|
|
69
62
|
getObject()->textToGlyphs(str.c_str(), str.length(), SkTextEncoding::kUTF8,
|
|
70
63
|
g);
|
|
71
|
-
std::vector<SkScalar>
|
|
72
|
-
|
|
73
|
-
auto
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
} else {
|
|
78
|
-
getObject()->getWidthsBounds(g, widths, {}, nullptr);
|
|
79
|
-
}
|
|
80
|
-
return jsi::Value(std::accumulate(widthPtrs.begin(), widthPtrs.end(), 0));
|
|
64
|
+
std::vector<SkScalar> widths;
|
|
65
|
+
widths.resize(numGlyphIDs);
|
|
66
|
+
auto w = SkSpan(widths.data(), widths.size());
|
|
67
|
+
getObject()->getWidthsBounds(
|
|
68
|
+
g, w, {}, paint.has_value() ? paint.value().get() : nullptr);
|
|
69
|
+
return std::accumulate(widths.begin(), widths.end(), 0);
|
|
81
70
|
}
|
|
82
71
|
|
|
83
|
-
|
|
84
|
-
|
|
72
|
+
std::shared_ptr<JsiSkRect>
|
|
73
|
+
measureText(std::string str, std::optional<std::shared_ptr<SkPaint>> paint) {
|
|
85
74
|
SkRect bounds;
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
} else {
|
|
91
|
-
getObject()->measureText(str.c_str(), str.length(), SkTextEncoding::kUTF8,
|
|
92
|
-
&bounds);
|
|
93
|
-
}
|
|
94
|
-
auto rect = std::make_shared<JsiSkRect>(getContext(), std::move(bounds));
|
|
95
|
-
return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(runtime, rect,
|
|
96
|
-
getContext());
|
|
75
|
+
getObject()->measureText(str.c_str(), str.length(), SkTextEncoding::kUTF8,
|
|
76
|
+
&bounds,
|
|
77
|
+
paint.has_value() ? paint.value().get() : nullptr);
|
|
78
|
+
return std::make_shared<JsiSkRect>(getContext(), bounds);
|
|
97
79
|
}
|
|
98
80
|
|
|
81
|
+
// Stays raw: the result object has a conditionally present `bounds`
|
|
82
|
+
// property, which a typed return value cannot express.
|
|
99
83
|
JSI_HOST_FUNCTION(getMetrics) {
|
|
100
84
|
SkFontMetrics fm;
|
|
101
85
|
getObject()->getMetrics(&fm);
|
|
@@ -112,178 +96,131 @@ public:
|
|
|
112
96
|
return metrics;
|
|
113
97
|
}
|
|
114
98
|
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
: getObject()->countText(str.c_str(), str.length(),
|
|
121
|
-
SkTextEncoding::kUTF8);
|
|
99
|
+
std::vector<int> getGlyphIDs(std::string str, JsiOptional<int> numGlyphs) {
|
|
100
|
+
int numGlyphIDs = numGlyphs.has_value()
|
|
101
|
+
? *numGlyphs
|
|
102
|
+
: getObject()->countText(str.c_str(), str.length(),
|
|
103
|
+
SkTextEncoding::kUTF8);
|
|
122
104
|
std::vector<SkGlyphID> glyphIDs;
|
|
123
105
|
glyphIDs.resize(numGlyphIDs);
|
|
124
106
|
auto g = SkSpan(static_cast<SkGlyphID *>(glyphIDs.data()), glyphIDs.size());
|
|
125
107
|
getObject()->textToGlyphs(str.c_str(), str.length(), SkTextEncoding::kUTF8,
|
|
126
108
|
g);
|
|
127
|
-
|
|
128
|
-
for (int i = 0; i < numGlyphIDs; i++) {
|
|
129
|
-
jsiGlyphIDs.setValueAtIndex(runtime, i,
|
|
130
|
-
jsi::Value(static_cast<int>(glyphIDs[i])));
|
|
131
|
-
}
|
|
132
|
-
return jsiGlyphIDs;
|
|
109
|
+
return std::vector<int>(glyphIDs.begin(), glyphIDs.end());
|
|
133
110
|
}
|
|
134
111
|
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
positions.reserve(pointsSize);
|
|
143
|
-
for (int i = 0; i < pointsSize; i++) {
|
|
144
|
-
std::shared_ptr<SkPoint> point = JsiSkPoint::fromValue(
|
|
145
|
-
runtime, jsiPositions.getValueAtIndex(runtime, i).asObject(runtime));
|
|
146
|
-
positions.push_back(*point.get());
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
std::vector<SkGlyphID> glyphs;
|
|
150
|
-
int glyphsSize = static_cast<int>(jsiGlyphs.size(runtime));
|
|
151
|
-
glyphs.reserve(glyphsSize);
|
|
152
|
-
for (int i = 0; i < glyphsSize; i++) {
|
|
153
|
-
glyphs.push_back(jsiGlyphs.getValueAtIndex(runtime, i).asNumber());
|
|
112
|
+
std::vector<int> getGlyphIntercepts(std::vector<int> glyphs,
|
|
113
|
+
std::vector<SkPoint> positions,
|
|
114
|
+
double top, double bottom) {
|
|
115
|
+
std::vector<SkGlyphID> glyphIds;
|
|
116
|
+
glyphIds.reserve(glyphs.size());
|
|
117
|
+
for (auto glyph : glyphs) {
|
|
118
|
+
glyphIds.push_back(static_cast<SkGlyphID>(glyph));
|
|
154
119
|
}
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
throw jsi::JSError(runtime, "Not enough x,y position pairs for glyphs");
|
|
158
|
-
return jsi::Value::null();
|
|
120
|
+
if (glyphIds.size() > positions.size()) {
|
|
121
|
+
throw std::runtime_error("Not enough x,y position pairs for glyphs");
|
|
159
122
|
}
|
|
160
|
-
auto g = SkSpan(
|
|
123
|
+
auto g = SkSpan(glyphIds.data(), glyphIds.size());
|
|
161
124
|
auto p = SkSpan(positions.data(), positions.size());
|
|
162
125
|
auto sects = getObject()->getIntercepts(g, p, top, bottom);
|
|
163
|
-
|
|
164
|
-
for (int i = 0; i < sects.size(); i++) {
|
|
165
|
-
jsiSects.setValueAtIndex(runtime, i,
|
|
166
|
-
jsi::Value(static_cast<int>(sects.at(i))));
|
|
167
|
-
}
|
|
168
|
-
return jsiSects;
|
|
126
|
+
return std::vector<int>(sects.begin(), sects.end());
|
|
169
127
|
}
|
|
170
128
|
|
|
171
|
-
|
|
172
|
-
return jsi::Value(SkScalarToDouble(getObject()->getScaleX()));
|
|
173
|
-
}
|
|
129
|
+
double getScaleX() { return SkScalarToDouble(getObject()->getScaleX()); }
|
|
174
130
|
|
|
175
|
-
|
|
176
|
-
return jsi::Value(SkScalarToDouble(getObject()->getSize()));
|
|
177
|
-
}
|
|
131
|
+
double getSize() { return SkScalarToDouble(getObject()->getSize()); }
|
|
178
132
|
|
|
179
|
-
|
|
180
|
-
return jsi::Value(SkScalarToDouble(getObject()->getSkewX()));
|
|
181
|
-
}
|
|
133
|
+
double getSkewX() { return SkScalarToDouble(getObject()->getSkewX()); }
|
|
182
134
|
|
|
183
|
-
|
|
184
|
-
return jsi::Value(getObject()->isEmbolden());
|
|
185
|
-
}
|
|
135
|
+
bool isEmbolden() { return getObject()->isEmbolden(); }
|
|
186
136
|
|
|
187
|
-
|
|
188
|
-
return JsiSkTypeface
|
|
189
|
-
|
|
137
|
+
std::shared_ptr<JsiSkTypeface> getTypeface() {
|
|
138
|
+
return std::make_shared<JsiSkTypeface>(
|
|
139
|
+
getContext(), sk_sp<SkTypeface>(getObject()->getTypeface()));
|
|
190
140
|
}
|
|
191
141
|
|
|
192
|
-
|
|
193
|
-
auto edging = arguments[0].asNumber();
|
|
142
|
+
void setEdging(double edging) {
|
|
194
143
|
getObject()->setEdging(static_cast<SkFont::Edging>(edging));
|
|
195
|
-
return jsi::Value::undefined();
|
|
196
144
|
}
|
|
197
145
|
|
|
198
|
-
|
|
199
|
-
auto embeddedBitmaps = arguments[0].getBool();
|
|
146
|
+
void setEmbeddedBitmaps(bool embeddedBitmaps) {
|
|
200
147
|
getObject()->setEmbeddedBitmaps(embeddedBitmaps);
|
|
201
|
-
return jsi::Value::undefined();
|
|
202
148
|
}
|
|
203
149
|
|
|
204
|
-
|
|
205
|
-
auto hinting = arguments[0].asNumber();
|
|
150
|
+
void setHinting(double hinting) {
|
|
206
151
|
getObject()->setHinting(static_cast<SkFontHinting>(hinting));
|
|
207
|
-
return jsi::Value::undefined();
|
|
208
152
|
}
|
|
209
153
|
|
|
210
|
-
|
|
211
|
-
auto linearMetrics = arguments[0].getBool();
|
|
154
|
+
void setLinearMetrics(bool linearMetrics) {
|
|
212
155
|
getObject()->setLinearMetrics(linearMetrics);
|
|
213
|
-
return jsi::Value::undefined();
|
|
214
156
|
}
|
|
215
157
|
|
|
216
|
-
|
|
217
|
-
auto scaleX = arguments[0].asNumber();
|
|
218
|
-
getObject()->setScaleX(scaleX);
|
|
219
|
-
return jsi::Value::undefined();
|
|
220
|
-
}
|
|
158
|
+
void setScaleX(double scaleX) { getObject()->setScaleX(scaleX); }
|
|
221
159
|
|
|
222
|
-
|
|
223
|
-
auto skewX = arguments[0].asNumber();
|
|
224
|
-
getObject()->setSkewX(skewX);
|
|
225
|
-
return jsi::Value::undefined();
|
|
226
|
-
}
|
|
160
|
+
void setSkewX(double skewX) { getObject()->setSkewX(skewX); }
|
|
227
161
|
|
|
228
|
-
|
|
229
|
-
auto size = arguments[0].asNumber();
|
|
230
|
-
getObject()->setSize(size);
|
|
231
|
-
return jsi::Value::undefined();
|
|
232
|
-
}
|
|
162
|
+
void setSize(double size) { getObject()->setSize(size); }
|
|
233
163
|
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
164
|
+
// The JS API declares booleans here, but the previous implementation read
|
|
165
|
+
// the arguments with asNumber() — keep accepting numbers.
|
|
166
|
+
void setEmbolden(double embolden) {
|
|
167
|
+
getObject()->setEmbolden(static_cast<bool>(embolden));
|
|
238
168
|
}
|
|
239
169
|
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
getObject()->setSubpixel(subpixel);
|
|
243
|
-
return jsi::Value::undefined();
|
|
170
|
+
void setSubpixel(double subpixel) {
|
|
171
|
+
getObject()->setSubpixel(static_cast<bool>(subpixel));
|
|
244
172
|
}
|
|
245
173
|
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
return jsi::Value::undefined();
|
|
174
|
+
void setTypeface(std::variant<std::nullptr_t, sk_sp<SkTypeface>> typeface) {
|
|
175
|
+
getObject()->setTypeface(
|
|
176
|
+
std::holds_alternative<std::nullptr_t>(typeface)
|
|
177
|
+
? nullptr
|
|
178
|
+
: std::get<sk_sp<SkTypeface>>(std::move(typeface)));
|
|
252
179
|
}
|
|
253
180
|
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
181
|
+
static void definePrototype(jsi::Runtime &runtime, jsi::Object &prototype) {
|
|
182
|
+
installCommon(runtime, prototype);
|
|
183
|
+
installMethod(runtime, prototype, "getSize", &JsiSkFont::getSize);
|
|
184
|
+
installHostMethod(runtime, prototype, "getMetrics", &JsiSkFont::getMetrics);
|
|
185
|
+
installMethod(runtime, prototype, "getGlyphIDs", &JsiSkFont::getGlyphIDs);
|
|
186
|
+
installMethod(runtime, prototype, "getGlyphIntercepts",
|
|
187
|
+
&JsiSkFont::getGlyphIntercepts);
|
|
188
|
+
installMethod(runtime, prototype, "getScaleX", &JsiSkFont::getScaleX);
|
|
189
|
+
installMethod(runtime, prototype, "getSkewX", &JsiSkFont::getSkewX);
|
|
190
|
+
installMethod(runtime, prototype, "getTypeface", &JsiSkFont::getTypeface);
|
|
191
|
+
installMethod(runtime, prototype, "setEdging", &JsiSkFont::setEdging);
|
|
192
|
+
installMethod(runtime, prototype, "embeddedBitmaps",
|
|
193
|
+
&JsiSkFont::setEmbeddedBitmaps);
|
|
194
|
+
installMethod(runtime, prototype, "setHinting", &JsiSkFont::setHinting);
|
|
195
|
+
installMethod(runtime, prototype, "setLinearMetrics",
|
|
196
|
+
&JsiSkFont::setLinearMetrics);
|
|
197
|
+
installMethod(runtime, prototype, "setScaleX", &JsiSkFont::setScaleX);
|
|
198
|
+
installMethod(runtime, prototype, "setSkewX", &JsiSkFont::setSkewX);
|
|
199
|
+
installMethod(runtime, prototype, "setSize", &JsiSkFont::setSize);
|
|
200
|
+
installMethod(runtime, prototype, "setEmbolden", &JsiSkFont::setEmbolden);
|
|
201
|
+
installMethod(runtime, prototype, "setSubpixel", &JsiSkFont::setSubpixel);
|
|
202
|
+
installMethod(runtime, prototype, "setTypeface", &JsiSkFont::setTypeface);
|
|
203
|
+
installMethod(runtime, prototype, "getGlyphWidths",
|
|
204
|
+
&JsiSkFont::getGlyphWidths);
|
|
205
|
+
installMethod(runtime, prototype, "getTextWidth", &JsiSkFont::getTextWidth);
|
|
206
|
+
installMethod(runtime, prototype, "measureText", &JsiSkFont::measureText);
|
|
207
|
+
}
|
|
277
208
|
|
|
278
209
|
JsiSkFont(std::shared_ptr<RNSkPlatformContext> context, const SkFont &font)
|
|
279
|
-
:
|
|
280
|
-
|
|
210
|
+
: JsiSkWrappingSharedPtrNativeObject<JsiSkFont, SkFont>(
|
|
211
|
+
std::move(context), std::make_shared<SkFont>(font)) {}
|
|
281
212
|
|
|
282
|
-
size_t getMemoryPressure()
|
|
213
|
+
size_t getMemoryPressure() override {
|
|
283
214
|
return std::max(sizeof(SkFont), kMinMemoryPressure);
|
|
284
215
|
}
|
|
285
216
|
|
|
286
|
-
|
|
217
|
+
/**
|
|
218
|
+
Returns the underlying object from a host object of this type
|
|
219
|
+
*/
|
|
220
|
+
static std::shared_ptr<SkFont> fromValue(jsi::Runtime &runtime,
|
|
221
|
+
const jsi::Value &obj) {
|
|
222
|
+
return objectFromValue(runtime, obj);
|
|
223
|
+
}
|
|
287
224
|
|
|
288
225
|
/**
|
|
289
226
|
* Creates the function for construction a new instance of the SkFont
|
|
@@ -299,22 +236,16 @@ public:
|
|
|
299
236
|
if (count == 2) {
|
|
300
237
|
auto typeface = JsiSkTypeface::fromValue(runtime, arguments[0]);
|
|
301
238
|
auto size = arguments[1].asNumber();
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(
|
|
305
|
-
runtime, hostObjectInstance, std::move(context));
|
|
239
|
+
return makeJsiObject(runtime, std::make_shared<JsiSkFont>(
|
|
240
|
+
context, SkFont(typeface, size)));
|
|
306
241
|
} else if (count == 1) {
|
|
307
242
|
auto typeface = JsiSkTypeface::fromValue(runtime, arguments[0]);
|
|
308
|
-
|
|
309
|
-
std::make_shared<JsiSkFont>(context, SkFont(typeface));
|
|
310
|
-
return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(
|
|
311
|
-
runtime, hostObjectInstance, std::move(context));
|
|
243
|
+
return makeJsiObject(
|
|
244
|
+
runtime, std::make_shared<JsiSkFont>(context, SkFont(typeface)));
|
|
312
245
|
} else {
|
|
313
246
|
// Return the newly constructed object
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(
|
|
317
|
-
runtime, hostObjectInstance, std::move(context));
|
|
247
|
+
return makeJsiObject(runtime,
|
|
248
|
+
std::make_shared<JsiSkFont>(context, SkFont()));
|
|
318
249
|
}
|
|
319
250
|
};
|
|
320
251
|
}
|
package/cpp/api/JsiSkFontMgr.h
CHANGED
|
@@ -2,11 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
#include <memory>
|
|
4
4
|
#include <numeric>
|
|
5
|
+
#include <string>
|
|
5
6
|
#include <utility>
|
|
6
7
|
#include <vector>
|
|
7
8
|
|
|
9
|
+
#include "JsiSkConverters.h"
|
|
8
10
|
#include "JsiSkFontStyle.h"
|
|
9
|
-
#include "
|
|
11
|
+
#include "JsiSkNativeObjects.h"
|
|
12
|
+
#include "JsiSkTypeface.h"
|
|
10
13
|
#include "utils/RNSkLog.h"
|
|
11
14
|
#include <jsi/jsi.h>
|
|
12
15
|
|
|
@@ -21,61 +24,65 @@ namespace RNSkia {
|
|
|
21
24
|
|
|
22
25
|
namespace jsi = facebook::jsi;
|
|
23
26
|
|
|
24
|
-
class JsiSkFontMgr
|
|
27
|
+
class JsiSkFontMgr
|
|
28
|
+
: public JsiSkWrappingSkPtrNativeObject<JsiSkFontMgr, SkFontMgr> {
|
|
25
29
|
public:
|
|
26
|
-
|
|
30
|
+
static constexpr const char *CLASS_NAME = "FontMgr";
|
|
27
31
|
|
|
28
32
|
JsiSkFontMgr(std::shared_ptr<RNSkPlatformContext> context,
|
|
29
33
|
sk_sp<SkFontMgr> fontMgr)
|
|
30
|
-
:
|
|
34
|
+
: JsiSkWrappingSkPtrNativeObject<JsiSkFontMgr, SkFontMgr>(context,
|
|
35
|
+
fontMgr),
|
|
31
36
|
_systemFontFamilies(context->getSystemFontFamilies()) {}
|
|
32
37
|
|
|
33
|
-
|
|
38
|
+
int countFamilies() {
|
|
34
39
|
return static_cast<int>(getObject()->countFamilies() +
|
|
35
40
|
_systemFontFamilies.size());
|
|
36
41
|
}
|
|
37
42
|
|
|
38
|
-
|
|
39
|
-
auto i = static_cast<int>(arguments[0].asNumber());
|
|
43
|
+
std::string getFamilyName(int i) {
|
|
40
44
|
auto baseFamilyCount = getObject()->countFamilies();
|
|
41
45
|
if (i < baseFamilyCount) {
|
|
42
46
|
SkString name;
|
|
43
47
|
getObject()->getFamilyName(i, &name);
|
|
44
|
-
return
|
|
48
|
+
return std::string(name.c_str());
|
|
45
49
|
}
|
|
46
50
|
auto systemIndex = i - baseFamilyCount;
|
|
47
51
|
if (systemIndex < static_cast<int>(_systemFontFamilies.size())) {
|
|
48
|
-
return
|
|
49
|
-
_systemFontFamilies[systemIndex]);
|
|
52
|
+
return _systemFontFamilies[systemIndex];
|
|
50
53
|
}
|
|
51
|
-
throw
|
|
52
|
-
runtime,
|
|
54
|
+
throw std::runtime_error(
|
|
53
55
|
"Font family index out of bounds: " + std::to_string(i) +
|
|
54
|
-
|
|
55
|
-
|
|
56
|
+
" (total families: " +
|
|
57
|
+
std::to_string(baseFamilyCount + _systemFontFamilies.size()) + ")");
|
|
56
58
|
}
|
|
57
59
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
+
std::shared_ptr<JsiSkTypeface>
|
|
61
|
+
matchFamilyStyle(std::string name, std::shared_ptr<SkFontStyle> fontStyle) {
|
|
60
62
|
// Resolve font family aliases (e.g., "System" -> ".AppleSystemUIFont" on
|
|
61
63
|
// iOS)
|
|
62
64
|
auto resolvedName = getContext()->resolveFontFamily(name);
|
|
63
|
-
auto fontStyle = JsiSkFontStyle::fromValue(runtime, arguments[1]);
|
|
64
65
|
auto typeface =
|
|
65
66
|
getObject()->matchFamilyStyle(resolvedName.c_str(), *fontStyle);
|
|
66
|
-
|
|
67
|
-
std::make_shared<JsiSkTypeface>(getContext(), std::move(typeface));
|
|
68
|
-
return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(
|
|
69
|
-
runtime, hostObjectInstance, getContext());
|
|
67
|
+
return std::make_shared<JsiSkTypeface>(getContext(), std::move(typeface));
|
|
70
68
|
}
|
|
71
69
|
|
|
72
|
-
size_t getMemoryPressure()
|
|
70
|
+
size_t getMemoryPressure() override { return 2048; }
|
|
73
71
|
|
|
74
|
-
|
|
72
|
+
static sk_sp<SkFontMgr> fromValue(jsi::Runtime &runtime,
|
|
73
|
+
const jsi::Value &obj) {
|
|
74
|
+
return objectFromValue(runtime, obj);
|
|
75
|
+
}
|
|
75
76
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
77
|
+
static void definePrototype(jsi::Runtime &runtime, jsi::Object &prototype) {
|
|
78
|
+
installCommon(runtime, prototype);
|
|
79
|
+
installMethod(runtime, prototype, "countFamilies",
|
|
80
|
+
&JsiSkFontMgr::countFamilies);
|
|
81
|
+
installMethod(runtime, prototype, "getFamilyName",
|
|
82
|
+
&JsiSkFontMgr::getFamilyName);
|
|
83
|
+
installMethod(runtime, prototype, "matchFamilyStyle",
|
|
84
|
+
&JsiSkFontMgr::matchFamilyStyle);
|
|
85
|
+
}
|
|
79
86
|
|
|
80
87
|
private:
|
|
81
88
|
std::vector<std::string> _systemFontFamilies;
|
|
@@ -6,7 +6,8 @@
|
|
|
6
6
|
|
|
7
7
|
#include <jsi/jsi.h>
|
|
8
8
|
|
|
9
|
-
#include "
|
|
9
|
+
#include "JsiSkFontMgr.h"
|
|
10
|
+
#include "JsiSkNativeObjects.h"
|
|
10
11
|
|
|
11
12
|
#pragma clang diagnostic push
|
|
12
13
|
#pragma clang diagnostic ignored "-Wdocumentation"
|
|
@@ -20,8 +21,10 @@ namespace RNSkia {
|
|
|
20
21
|
|
|
21
22
|
namespace jsi = facebook::jsi;
|
|
22
23
|
|
|
23
|
-
class JsiSkFontMgrFactory : public
|
|
24
|
+
class JsiSkFontMgrFactory : public JsiSkNativeObject<JsiSkFontMgrFactory> {
|
|
24
25
|
public:
|
|
26
|
+
static constexpr const char *CLASS_NAME = "FontMgrFactory";
|
|
27
|
+
|
|
25
28
|
static sk_sp<SkFontMgr>
|
|
26
29
|
getFontMgr(std::shared_ptr<RNSkPlatformContext> context) {
|
|
27
30
|
static SkOnce once;
|
|
@@ -30,21 +33,19 @@ public:
|
|
|
30
33
|
return fontMgr;
|
|
31
34
|
}
|
|
32
35
|
|
|
33
|
-
|
|
36
|
+
std::shared_ptr<JsiSkFontMgr> System() {
|
|
34
37
|
auto fontMgr = JsiSkFontMgrFactory::getFontMgr(getContext());
|
|
35
|
-
|
|
36
|
-
return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(runtime, fontMgrObj,
|
|
37
|
-
getContext());
|
|
38
|
+
return std::make_shared<JsiSkFontMgr>(getContext(), fontMgr);
|
|
38
39
|
}
|
|
39
40
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
size_t getMemoryPressure() const override { return 1024; }
|
|
41
|
+
size_t getMemoryPressure() override { return 1024; }
|
|
43
42
|
|
|
44
|
-
|
|
43
|
+
static void definePrototype(jsi::Runtime &runtime, jsi::Object &prototype) {
|
|
44
|
+
installMethod(runtime, prototype, "System", &JsiSkFontMgrFactory::System);
|
|
45
|
+
}
|
|
45
46
|
|
|
46
47
|
explicit JsiSkFontMgrFactory(std::shared_ptr<RNSkPlatformContext> context)
|
|
47
|
-
:
|
|
48
|
+
: JsiSkNativeObject<JsiSkFontMgrFactory>(std::move(context)) {}
|
|
48
49
|
};
|
|
49
50
|
|
|
50
51
|
} // namespace RNSkia
|
package/cpp/api/JsiSkFontStyle.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"
|
|
@@ -18,13 +18,14 @@ namespace RNSkia {
|
|
|
18
18
|
|
|
19
19
|
namespace jsi = facebook::jsi;
|
|
20
20
|
|
|
21
|
-
class JsiSkFontStyle
|
|
21
|
+
class JsiSkFontStyle
|
|
22
|
+
: public JsiSkWrappingSharedPtrNativeObject<JsiSkFontStyle, SkFontStyle> {
|
|
22
23
|
public:
|
|
23
|
-
|
|
24
|
+
static constexpr const char *CLASS_NAME = "FontStyle";
|
|
24
25
|
|
|
25
26
|
JsiSkFontStyle(std::shared_ptr<RNSkPlatformContext> context,
|
|
26
27
|
const SkFontStyle &fontStyle)
|
|
27
|
-
:
|
|
28
|
+
: JsiSkWrappingSharedPtrNativeObject<JsiSkFontStyle, SkFontStyle>(
|
|
28
29
|
std::move(context), std::make_shared<SkFontStyle>(fontStyle)) {}
|
|
29
30
|
|
|
30
31
|
/**
|
|
@@ -33,8 +34,9 @@ public:
|
|
|
33
34
|
static std::shared_ptr<SkFontStyle> fromValue(jsi::Runtime &runtime,
|
|
34
35
|
const jsi::Value &obj) {
|
|
35
36
|
const auto &object = obj.asObject(runtime);
|
|
36
|
-
|
|
37
|
-
|
|
37
|
+
auto fontStyle = tryGetJsiObject<JsiSkFontStyle>(runtime, object);
|
|
38
|
+
if (fontStyle) {
|
|
39
|
+
return fontStyle->getObject();
|
|
38
40
|
} else {
|
|
39
41
|
auto weightProp = object.getProperty(runtime, "weight");
|
|
40
42
|
auto weight = static_cast<int>(
|
|
@@ -56,11 +58,13 @@ public:
|
|
|
56
58
|
}
|
|
57
59
|
}
|
|
58
60
|
|
|
59
|
-
size_t getMemoryPressure()
|
|
61
|
+
size_t getMemoryPressure() override {
|
|
60
62
|
return std::max(sizeof(SkFontStyle), kMinMemoryPressure);
|
|
61
63
|
}
|
|
62
64
|
|
|
63
|
-
|
|
65
|
+
static void definePrototype(jsi::Runtime &runtime, jsi::Object &prototype) {
|
|
66
|
+
installCommon(runtime, prototype);
|
|
67
|
+
}
|
|
64
68
|
|
|
65
69
|
/**
|
|
66
70
|
Returns the jsi object from a host object of this type
|
|
@@ -68,10 +72,8 @@ public:
|
|
|
68
72
|
static jsi::Value toValue(jsi::Runtime &runtime,
|
|
69
73
|
std::shared_ptr<RNSkPlatformContext> context,
|
|
70
74
|
const SkFontStyle &fontStyle) {
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(runtime, fontStyleObj,
|
|
74
|
-
context);
|
|
75
|
+
return makeJsiObject(runtime, std::make_shared<JsiSkFontStyle>(
|
|
76
|
+
std::move(context), fontStyle));
|
|
75
77
|
}
|
|
76
78
|
};
|
|
77
79
|
} // namespace RNSkia
|