UNPKG

@shopify/react-native-skia

Version:

High-performance React Native Graphics using Skia

55 lines (44 loc) 1.23 kB
import type { CanvasKit, Surface } from "canvaskit-wasm"; import type { SkCanvas, SkImage, SkRect, SkSurface } from "../types"; import { HostObject } from "./Host"; import { JsiSkCanvas } from "./JsiSkCanvas"; import { JsiSkImage } from "./JsiSkImage"; import { JsiSkRect } from "./JsiSkRect"; export class JsiSkSurface extends HostObject<Surface, "Surface"> implements SkSurface { constructor(CanvasKit: CanvasKit, ref: Surface) { super(CanvasKit, ref, "Surface"); } dispose = () => { this.ref.dispose(); }; flush() { this.ref.flush(); } width() { return this.ref.width(); } height() { return this.ref.height(); } getCanvas(): SkCanvas { return new JsiSkCanvas(this.CanvasKit, this.ref.getCanvas()); } makeImageSnapshot(bounds?: SkRect, outputImage?: JsiSkImage): SkImage { const image = this.ref.makeImageSnapshot( bounds ? Array.from(JsiSkRect.fromValue(this.CanvasKit, bounds)) : undefined ); if (outputImage) { outputImage.ref = image; } return new JsiSkImage(this.CanvasKit, image); } getNativeTextureUnstable(): unknown { console.warn("getBackendTexture is not implemented on Web"); return null; } }