UNPKG

react-canvaskit

Version:

A React implementation of the Skia-CanvasKit drawing library.

40 lines 7.53 kB
import { isCkCanvas } from './CkCanvas'; import { toSkFont, toSkPaint } from './SkiaElementMapping'; class CkText { constructor(canvasKit, props) { this.skObjectType = 'Text'; this.type = 'ck-text'; this.deleted = false; this.canvasKit = canvasKit; this.props = props; this.defaultPaint = new this.canvasKit.Paint(); this.defaultPaint.setStyle(this.canvasKit.PaintStyle.Fill); this.defaultPaint.setAntiAlias(true); this.defaultFont = new this.canvasKit.Font(null, 14); } render(parent) { var _a, _b, _c, _d, _e, _f, _g; if (parent && isCkCanvas(parent)) { // TODO we can be smart and only recreate the paint object if the paint props have changed. (_a = this.renderPaint) === null || _a === void 0 ? void 0 : _a.delete(); this.renderPaint = toSkPaint(this.canvasKit, this.props.paint); // TODO we can be smart and only recreate the font object if the font props have changed. (_b = this.renderFont) === null || _b === void 0 ? void 0 : _b.delete(); this.renderFont = toSkFont(this.canvasKit, this.props.font); (_c = parent.skObject) === null || _c === void 0 ? void 0 : _c.drawText(this.props.children, (_d = this.props.x) !== null && _d !== void 0 ? _d : 0, (_e = this.props.y) !== null && _e !== void 0 ? _e : 0, (_f = this.renderPaint) !== null && _f !== void 0 ? _f : this.defaultPaint, (_g = this.renderFont) !== null && _g !== void 0 ? _g : this.defaultFont); } } delete() { var _a, _b; if (this.deleted) { return; } this.deleted = true; this.defaultFont.delete(); this.defaultPaint.delete(); (_a = this.renderPaint) === null || _a === void 0 ? void 0 : _a.delete(); (_b = this.renderFont) === null || _b === void 0 ? void 0 : _b.delete(); } } export const createCkText = (type, props, canvasKit) => new CkText(canvasKit, props); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2tUZXh0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL0NrVGV4dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBQ3ZDLE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFtQjFELE1BQU0sTUFBTTtJQWFWLFlBQVksU0FBb0IsRUFBRSxLQUF5QztRQVZsRSxpQkFBWSxHQUFzQyxNQUFNLENBQUE7UUFDeEQsU0FBSSxHQUFjLFNBQVMsQ0FBQTtRQU9wQyxZQUFPLEdBQUcsS0FBSyxDQUFBO1FBR2IsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUE7UUFDMUIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUE7UUFFbEIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUE7UUFDOUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDMUQsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUE7UUFFcEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQTtJQUN0RCxDQUFDO0lBRUQsTUFBTSxDQUFDLE1BQWdDOztRQUNyQyxJQUFJLE1BQU0sSUFBSSxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDaEMsMkZBQTJGO1lBQzNGLE1BQUEsSUFBSSxDQUFDLFdBQVcsMENBQUUsTUFBTSxFQUFFLENBQUE7WUFDMUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFBO1lBQzlELHlGQUF5RjtZQUN6RixNQUFBLElBQUksQ0FBQyxVQUFVLDBDQUFFLE1BQU0sRUFBRSxDQUFBO1lBQ3pCLElBQUksQ0FBQyxVQUFVLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUMzRCxNQUFBLE1BQU0sQ0FBQyxRQUFRLDBDQUFFLFFBQVEsQ0FDdkIsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQ25CLE1BQUEsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLG1DQUFJLENBQUMsRUFDakIsTUFBQSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsbUNBQUksQ0FBQyxFQUNqQixNQUFBLElBQUksQ0FBQyxXQUFXLG1DQUFJLElBQUksQ0FBQyxZQUFZLEVBQ3JDLE1BQUEsSUFBSSxDQUFDLFVBQVUsbUNBQUksSUFBSSxDQUFDLFdBQVcsQ0FDcEMsQ0FBQTtTQUNGO0lBQ0gsQ0FBQztJQUVELE1BQU07O1FBQ0osSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2hCLE9BQU07U0FDUDtRQUNELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFBO1FBQ25CLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUE7UUFDekIsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQTtRQUMxQixNQUFBLElBQUksQ0FBQyxXQUFXLDBDQUFFLE1BQU0sRUFBRSxDQUFBO1FBQzFCLE1BQUEsSUFBSSxDQUFDLFVBQVUsMENBQUUsTUFBTSxFQUFFLENBQUE7SUFDM0IsQ0FBQztDQUNGO0FBRUQsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFnQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IENhbnZhc0tpdCwgRm9udCBhcyBTa0ZvbnQsIFBhaW50IGFzIFNrUGFpbnQgfSBmcm9tICdjYW52YXNraXQtd2FzbSdcbmltcG9ydCB7IGlzQ2tDYW52YXMgfSBmcm9tICcuL0NrQ2FudmFzJ1xuaW1wb3J0IHsgdG9Ta0ZvbnQsIHRvU2tQYWludCB9IGZyb20gJy4vU2tpYUVsZW1lbnRNYXBwaW5nJ1xuaW1wb3J0IHtcbiAgQ2tFbGVtZW50LFxuICBDa0VsZW1lbnRDb250YWluZXIsXG4gIENrRWxlbWVudENyZWF0b3IsXG4gIENrRWxlbWVudFByb3BzLFxuICBDa09iamVjdFR5cGluZyxcbiAgRm9udCxcbiAgUGFpbnQsXG59IGZyb20gJy4vU2tpYUVsZW1lbnRUeXBlcydcblxuZXhwb3J0IGludGVyZmFjZSBDa1RleHRQcm9wcyBleHRlbmRzIENrRWxlbWVudFByb3BzPG5ldmVyPiB7XG4gIHg/OiBudW1iZXJcbiAgeT86IG51bWJlclxuICBwYWludD86IFBhaW50XG4gIGZvbnQ/OiBGb250XG4gIGNoaWxkcmVuOiBzdHJpbmdcbn1cblxuY2xhc3MgQ2tUZXh0IGltcGxlbWVudHMgQ2tFbGVtZW50PCdjay10ZXh0Jz4ge1xuICByZWFkb25seSBjYW52YXNLaXQ6IENhbnZhc0tpdFxuICByZWFkb25seSBwcm9wczogQ2tPYmplY3RUeXBpbmdbJ2NrLXRleHQnXVsncHJvcHMnXVxuICByZWFkb25seSBza09iamVjdFR5cGU6IENrT2JqZWN0VHlwaW5nWydjay10ZXh0J11bJ25hbWUnXSA9ICdUZXh0J1xuICByZWFkb25seSB0eXBlOiAnY2stdGV4dCcgPSAnY2stdGV4dCdcblxuICBwcml2YXRlIHJlYWRvbmx5IGRlZmF1bHRQYWludDogU2tQYWludFxuICBwcml2YXRlIHJlYWRvbmx5IGRlZmF1bHRGb250OiBTa0ZvbnRcblxuICBwcml2YXRlIHJlbmRlclBhaW50PzogU2tQYWludFxuICBwcml2YXRlIHJlbmRlckZvbnQ/OiBTa0ZvbnRcbiAgZGVsZXRlZCA9IGZhbHNlXG5cbiAgY29uc3RydWN0b3IoY2FudmFzS2l0OiBDYW52YXNLaXQsIHByb3BzOiBDa09iamVjdFR5cGluZ1snY2stdGV4dCddWydwcm9wcyddKSB7XG4gICAgdGhpcy5jYW52YXNLaXQgPSBjYW52YXNLaXRcbiAgICB0aGlzLnByb3BzID0gcHJvcHNcblxuICAgIHRoaXMuZGVmYXVsdFBhaW50ID0gbmV3IHRoaXMuY2FudmFzS2l0LlBhaW50KClcbiAgICB0aGlzLmRlZmF1bHRQYWludC5zZXRTdHlsZSh0aGlzLmNhbnZhc0tpdC5QYWludFN0eWxlLkZpbGwpXG4gICAgdGhpcy5kZWZhdWx0UGFpbnQuc2V0QW50aUFsaWFzKHRydWUpXG5cbiAgICB0aGlzLmRlZmF1bHRGb250ID0gbmV3IHRoaXMuY2FudmFzS2l0LkZvbnQobnVsbCwgMTQpXG4gIH1cblxuICByZW5kZXIocGFyZW50PzogQ2tFbGVtZW50Q29udGFpbmVyPGFueT4pOiB2b2lkIHtcbiAgICBpZiAocGFyZW50ICYmIGlzQ2tDYW52YXMocGFyZW50KSkge1xuICAgICAgLy8gVE9ETyB3ZSBjYW4gYmUgc21hcnQgYW5kIG9ubHkgcmVjcmVhdGUgdGhlIHBhaW50IG9iamVjdCBpZiB0aGUgcGFpbnQgcHJvcHMgaGF2ZSBjaGFuZ2VkLlxuICAgICAgdGhpcy5yZW5kZXJQYWludD8uZGVsZXRlKClcbiAgICAgIHRoaXMucmVuZGVyUGFpbnQgPSB0b1NrUGFpbnQodGhpcy5jYW52YXNLaXQsIHRoaXMucHJvcHMucGFpbnQpXG4gICAgICAvLyBUT0RPIHdlIGNhbiBiZSBzbWFydCBhbmQgb25seSByZWNyZWF0ZSB0aGUgZm9udCBvYmplY3QgaWYgdGhlIGZvbnQgcHJvcHMgaGF2ZSBjaGFuZ2VkLlxuICAgICAgdGhpcy5yZW5kZXJGb250Py5kZWxldGUoKVxuICAgICAgdGhpcy5yZW5kZXJGb250ID0gdG9Ta0ZvbnQodGhpcy5jYW52YXNLaXQsIHRoaXMucHJvcHMuZm9udClcbiAgICAgIHBhcmVudC5za09iamVjdD8uZHJhd1RleHQoXG4gICAgICAgIHRoaXMucHJvcHMuY2hpbGRyZW4sXG4gICAgICAgIHRoaXMucHJvcHMueCA/PyAwLFxuICAgICAgICB0aGlzLnByb3BzLnkgPz8gMCxcbiAgICAgICAgdGhpcy5yZW5kZXJQYWludCA/PyB0aGlzLmRlZmF1bHRQYWludCxcbiAgICAgICAgdGhpcy5yZW5kZXJGb250ID8/IHRoaXMuZGVmYXVsdEZvbnQsXG4gICAgICApXG4gICAgfVxuICB9XG5cbiAgZGVsZXRlKCkge1xuICAgIGlmICh0aGlzLmRlbGV0ZWQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICB0aGlzLmRlbGV0ZWQgPSB0cnVlXG4gICAgdGhpcy5kZWZhdWx0Rm9udC5kZWxldGUoKVxuICAgIHRoaXMuZGVmYXVsdFBhaW50LmRlbGV0ZSgpXG4gICAgdGhpcy5yZW5kZXJQYWludD8uZGVsZXRlKClcbiAgICB0aGlzLnJlbmRlckZvbnQ/LmRlbGV0ZSgpXG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IGNyZWF0ZUNrVGV4dDogQ2tFbGVtZW50Q3JlYXRvcjwnY2stdGV4dCc+ID0gKHR5cGUsIHByb3BzLCBjYW52YXNLaXQpID0+IG5ldyBDa1RleHQoY2FudmFzS2l0LCBwcm9wcylcbiJdfQ==