react-canvaskit
Version:
A React implementation of the Skia-CanvasKit drawing library.
40 lines • 6.48 kB
JavaScript
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