UNPKG

react-canvaskit

Version:

A React implementation of the Skia-CanvasKit drawing library.

40 lines 6.48 kB
import { isCkCanvas } from './CkCanvas'; import { toSkPaint } from './SkiaElementMapping'; class CkEncodedImage { constructor(canvasKit, props) { this.canvasKit = canvasKit; this.props = props; this.skObjectType = 'SkImage'; this.type = 'ck-encoded-image'; this.deleted = false; this.defaultPaint = new this.canvasKit.Paint(); this.defaultPaint.setStyle(this.canvasKit.PaintStyle.Fill); this.defaultPaint.setAntiAlias(true); } delete() { var _a, _b; if (this.deleted) { return; } (_a = this.image) === null || _a === void 0 ? void 0 : _a.delete(); this.defaultPaint.delete(); (_b = this.renderPaint) === null || _b === void 0 ? void 0 : _b.delete(); this.deleted = true; } render(parent) { var _a, _b, _c, _d; if (this.deleted) { throw new Error('BUG. line element deleted.'); } if (parent && isCkCanvas(parent)) { this.image = (_a = this.canvasKit.MakeImageFromEncoded(this.props.bytes)) !== null && _a !== void 0 ? _a : undefined; if (this.image) { (_b = this.renderPaint) === null || _b === void 0 ? void 0 : _b.delete(); this.renderPaint = toSkPaint(this.canvasKit, this.props.paint); (_c = parent.skObject) === null || _c === void 0 ? void 0 : _c.drawImage(this.image, this.props.left, this.props.top, (_d = this.renderPaint) !== null && _d !== void 0 ? _d : this.defaultPaint); } } } } export const createCkEncodedImage = (type, props, canvasKit) => new CkEncodedImage(canvasKit, props); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2tFbmNvZGVkSW1hZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvQ2tFbmNvZGVkSW1hZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUN2QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFpQmhELE1BQU0sY0FBYztJQVVsQixZQUFxQixTQUFvQixFQUFXLEtBQWtEO1FBQWpGLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFBVyxVQUFLLEdBQUwsS0FBSyxDQUE2QztRQVQ3RixpQkFBWSxHQUErQyxTQUFTLENBQUE7UUFDcEUsU0FBSSxHQUF1QixrQkFBa0IsQ0FBQTtRQUN0RCxZQUFPLEdBQUcsS0FBSyxDQUFBO1FBUWIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUE7UUFDOUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDMUQsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDdEMsQ0FBQztJQUVELE1BQU07O1FBQ0osSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2hCLE9BQU07U0FDUDtRQUVELE1BQUEsSUFBSSxDQUFDLEtBQUssMENBQUUsTUFBTSxFQUFFLENBQUE7UUFDcEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQTtRQUMxQixNQUFBLElBQUksQ0FBQyxXQUFXLDBDQUFFLE1BQU0sRUFBRSxDQUFBO1FBQzFCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFBO0lBQ3JCLENBQUM7SUFFRCxNQUFNLENBQUMsTUFBK0I7O1FBQ3BDLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNoQixNQUFNLElBQUksS0FBSyxDQUFDLDRCQUE0QixDQUFDLENBQUE7U0FDOUM7UUFFRCxJQUFJLE1BQU0sSUFBSSxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDaEMsSUFBSSxDQUFDLEtBQUssR0FBRyxNQUFBLElBQUksQ0FBQyxTQUFTLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsbUNBQUksU0FBUyxDQUFBO1lBQy9FLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtnQkFDZCxNQUFBLElBQUksQ0FBQyxXQUFXLDBDQUFFLE1BQU0sRUFBRSxDQUFBO2dCQUMxQixJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUE7Z0JBQzlELE1BQUEsTUFBTSxDQUFDLFFBQVEsMENBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsTUFBQSxJQUFJLENBQUMsV0FBVyxtQ0FBSSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUE7YUFDL0c7U0FDRjtJQUNILENBQUM7Q0FDRjtBQUVELE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUF5QyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLEVBQUUsQ0FDbkcsSUFBSSxjQUFjLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2FudmFzS2l0LCBJbWFnZSBhcyBTa0ltYWdlLCBQYWludCBhcyBTa1BhaW50IH0gZnJvbSAnY2FudmFza2l0LXdhc20nXG5pbXBvcnQgeyBpc0NrQ2FudmFzIH0gZnJvbSAnLi9Da0NhbnZhcydcbmltcG9ydCB7IHRvU2tQYWludCB9IGZyb20gJy4vU2tpYUVsZW1lbnRNYXBwaW5nJ1xuaW1wb3J0IHtcbiAgQ2tFbGVtZW50LFxuICBDa0VsZW1lbnRDb250YWluZXIsXG4gIENrRWxlbWVudENyZWF0b3IsXG4gIENrRWxlbWVudFByb3BzLFxuICBDa09iamVjdFR5cGluZyxcbiAgUGFpbnQsXG59IGZyb20gJy4vU2tpYUVsZW1lbnRUeXBlcydcblxuZXhwb3J0IGludGVyZmFjZSBDa0VuY29kZWRJbWFnZVByb3BzIGV4dGVuZHMgQ2tFbGVtZW50UHJvcHM8bmV2ZXI+IHtcbiAgbGVmdDogbnVtYmVyXG4gIHRvcDogbnVtYmVyXG4gIGJ5dGVzOiBVaW50OEFycmF5IHwgQXJyYXlCdWZmZXJcbiAgcGFpbnQ/OiBQYWludFxufVxuXG5jbGFzcyBDa0VuY29kZWRJbWFnZSBpbXBsZW1lbnRzIENrRWxlbWVudDwnY2stZW5jb2RlZC1pbWFnZSc+IHtcbiAgcmVhZG9ubHkgc2tPYmplY3RUeXBlOiBDa09iamVjdFR5cGluZ1snY2stZW5jb2RlZC1pbWFnZSddWyduYW1lJ10gPSAnU2tJbWFnZSdcbiAgcmVhZG9ubHkgdHlwZTogJ2NrLWVuY29kZWQtaW1hZ2UnID0gJ2NrLWVuY29kZWQtaW1hZ2UnXG4gIGRlbGV0ZWQgPSBmYWxzZVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdFBhaW50OiBTa1BhaW50XG4gIHByaXZhdGUgcmVuZGVyUGFpbnQ/OiBTa1BhaW50XG5cbiAgcHJpdmF0ZSBpbWFnZT86IFNrSW1hZ2VcblxuICBjb25zdHJ1Y3RvcihyZWFkb25seSBjYW52YXNLaXQ6IENhbnZhc0tpdCwgcmVhZG9ubHkgcHJvcHM6IENrT2JqZWN0VHlwaW5nWydjay1lbmNvZGVkLWltYWdlJ11bJ3Byb3BzJ10pIHtcbiAgICB0aGlzLmRlZmF1bHRQYWludCA9IG5ldyB0aGlzLmNhbnZhc0tpdC5QYWludCgpXG4gICAgdGhpcy5kZWZhdWx0UGFpbnQuc2V0U3R5bGUodGhpcy5jYW52YXNLaXQuUGFpbnRTdHlsZS5GaWxsKVxuICAgIHRoaXMuZGVmYXVsdFBhaW50LnNldEFudGlBbGlhcyh0cnVlKVxuICB9XG5cbiAgZGVsZXRlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRlbGV0ZWQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHRoaXMuaW1hZ2U/LmRlbGV0ZSgpXG4gICAgdGhpcy5kZWZhdWx0UGFpbnQuZGVsZXRlKClcbiAgICB0aGlzLnJlbmRlclBhaW50Py5kZWxldGUoKVxuICAgIHRoaXMuZGVsZXRlZCA9IHRydWVcbiAgfVxuXG4gIHJlbmRlcihwYXJlbnQ6IENrRWxlbWVudENvbnRhaW5lcjxhbnk+KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGVsZXRlZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdCVUcuIGxpbmUgZWxlbWVudCBkZWxldGVkLicpXG4gICAgfVxuXG4gICAgaWYgKHBhcmVudCAmJiBpc0NrQ2FudmFzKHBhcmVudCkpIHtcbiAgICAgIHRoaXMuaW1hZ2UgPSB0aGlzLmNhbnZhc0tpdC5NYWtlSW1hZ2VGcm9tRW5jb2RlZCh0aGlzLnByb3BzLmJ5dGVzKSA/PyB1bmRlZmluZWRcbiAgICAgIGlmICh0aGlzLmltYWdlKSB7XG4gICAgICAgIHRoaXMucmVuZGVyUGFpbnQ/LmRlbGV0ZSgpXG4gICAgICAgIHRoaXMucmVuZGVyUGFpbnQgPSB0b1NrUGFpbnQodGhpcy5jYW52YXNLaXQsIHRoaXMucHJvcHMucGFpbnQpXG4gICAgICAgIHBhcmVudC5za09iamVjdD8uZHJhd0ltYWdlKHRoaXMuaW1hZ2UsIHRoaXMucHJvcHMubGVmdCwgdGhpcy5wcm9wcy50b3AsIHRoaXMucmVuZGVyUGFpbnQgPz8gdGhpcy5kZWZhdWx0UGFpbnQpXG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVDa0VuY29kZWRJbWFnZTogQ2tFbGVtZW50Q3JlYXRvcjwnY2stZW5jb2RlZC1pbWFnZSc+ID0gKHR5cGUsIHByb3BzLCBjYW52YXNLaXQpID0+XG4gIG5ldyBDa0VuY29kZWRJbWFnZShjYW52YXNLaXQsIHByb3BzKVxuIl19