UNPKG

react-canvaskit

Version:

A React implementation of the Skia-CanvasKit drawing library.

79 lines 14.4 kB
import { FontSlantEnum, FontWeightEnum, FontWidthEnum } from './SkiaElementTypes'; export const toSkTypeFace = (canvasKit, typeFace) => { var _a; return typeFace ? (_a = canvasKit.Typeface.MakeFreeTypeFaceFromData(typeFace.data)) !== null && _a !== void 0 ? _a : undefined : undefined; }; export const toSkFont = (canvasKit, font) => font ? new canvasKit.Font(font.typeFace === undefined ? null : toSkTypeFace(canvasKit, font.typeFace), font.size) : undefined; export const toSkColor = (canvasKit, color) => { var _a; if (typeof color === 'string') { // @ts-ignore return canvasKit.parseColorString(color); } else { return color ? canvasKit.Color(color.red, color.green, color.blue, (_a = color.alpha) !== null && _a !== void 0 ? _a : 1) : undefined; } }; export const toSkPaint = (canvasKit, paint) => { if (paint === undefined) { return undefined; } const skPaint = new canvasKit.Paint(); // TODO blendMode?: BlendMode; const skColor = toSkColor(canvasKit, paint.color); if (skColor) { skPaint.setColor(skColor); } // TODO filterQuality?: FilterQuality; // TODO strokeCap?: StrokeCap; // TODO strokeJoin?: StrokeJoin; if (paint.strokeMiter) { skPaint.setStrokeMiter(paint.strokeMiter); } if (paint.strokeWidth) { skPaint.setStrokeWidth(paint.strokeWidth); } if (paint.antiAlias) { skPaint.setAntiAlias(paint.antiAlias); } // TODO colorFilter?: ColorFilter // TODO imageFilter?: ImageFilter; // TODO maskFilter?: MaskFilter // TODO pathEffect?: PathEffect // TODO shader?: Shader // TODO style?: PaintStyle return skPaint; }; export const toFontStyle = (canvasKit, fontStyle) => { var _a, _b, _c; return { slant: { value: (_a = fontStyle === null || fontStyle === void 0 ? void 0 : fontStyle.slant) !== null && _a !== void 0 ? _a : FontSlantEnum.Upright }, weight: { value: (_b = fontStyle === null || fontStyle === void 0 ? void 0 : fontStyle.weight) !== null && _b !== void 0 ? _b : FontWeightEnum.Normal }, width: { value: (_c = fontStyle === null || fontStyle === void 0 ? void 0 : fontStyle.width) !== null && _c !== void 0 ? _c : FontWidthEnum.Normal }, }; }; export const toSkTextStyle = (canvasKit, textStyle) => { var _a, _b, _c, _d, _e, _f, _g; return { backgroundColor: (_a = toSkColor(canvasKit, textStyle === null || textStyle === void 0 ? void 0 : textStyle.backgroundColor)) !== null && _a !== void 0 ? _a : canvasKit.WHITE, color: (_b = toSkColor(canvasKit, textStyle === null || textStyle === void 0 ? void 0 : textStyle.color)) !== null && _b !== void 0 ? _b : canvasKit.BLACK, decoration: (_c = textStyle === null || textStyle === void 0 ? void 0 : textStyle.decoration) !== null && _c !== void 0 ? _c : 0, decorationThickness: (_d = textStyle === null || textStyle === void 0 ? void 0 : textStyle.decorationThickness) !== null && _d !== void 0 ? _d : 0, fontFamilies: (_e = textStyle === null || textStyle === void 0 ? void 0 : textStyle.fontFamilies) !== null && _e !== void 0 ? _e : [], fontSize: (_f = textStyle === null || textStyle === void 0 ? void 0 : textStyle.fontSize) !== null && _f !== void 0 ? _f : 14, fontStyle: toFontStyle(canvasKit, textStyle === null || textStyle === void 0 ? void 0 : textStyle.fontStyle), foregroundColor: (_g = toSkColor(canvasKit, textStyle === null || textStyle === void 0 ? void 0 : textStyle.foregroundColor)) !== null && _g !== void 0 ? _g : canvasKit.BLACK, }; }; export const toSkParagraphStyle = (canvasKit, paragraphStyle) => { const textAlign = (paragraphStyle === null || paragraphStyle === void 0 ? void 0 : paragraphStyle.textAlign) ? { value: paragraphStyle.textAlign } : undefined; const textDirection = (paragraphStyle === null || paragraphStyle === void 0 ? void 0 : paragraphStyle.textDirection) ? { value: paragraphStyle.textDirection } : undefined; return new canvasKit.ParagraphStyle({ disableHinting: paragraphStyle === null || paragraphStyle === void 0 ? void 0 : paragraphStyle.disableHinting, ellipsis: paragraphStyle === null || paragraphStyle === void 0 ? void 0 : paragraphStyle.ellipsis, maxLines: paragraphStyle === null || paragraphStyle === void 0 ? void 0 : paragraphStyle.maxLines, textAlign, textDirection, textStyle: toSkTextStyle(canvasKit, paragraphStyle === null || paragraphStyle === void 0 ? void 0 : paragraphStyle.textStyle), }); }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2tpYUVsZW1lbnRNYXBwaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL1NraWFFbGVtZW50TWFwcGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFXQSxPQUFPLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQU1qRixNQUFNLENBQUMsTUFBTSxZQUFZLEdBQXlDLENBQUMsU0FBUyxFQUFFLFFBQVEsRUFBRSxFQUFFLFdBQ3hGLE9BQUEsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFBLFNBQVMsQ0FBQyxRQUFRLENBQUMsd0JBQXdCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxtQ0FBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQSxFQUFBLENBQUE7QUFDaEcsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFpQyxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUN4RSxJQUFJO0lBQ0YsQ0FBQyxDQUFDLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUcsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQzlHLENBQUMsQ0FBQyxTQUFTLENBQUE7QUFDZixNQUFNLENBQUMsTUFBTSxTQUFTLEdBQTRDLENBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxFQUFFOztJQUNyRixJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtRQUM3QixhQUFhO1FBQ2IsT0FBZ0IsU0FBUyxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFBO0tBQ2xEO1NBQU07UUFDTCxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxLQUFL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b3IgYXMgU2tDb2xvcixcbiAgRm9udCBhcyBTa0ZvbnQsXG4gIEZvbnRTdHlsZSxcbiAgUGFpbnQgYXMgU2tQYWludCxcbiAgUGFyYWdyYXBoU3R5bGUgYXMgU2tQYXJhZ3JhcGhTdHlsZSxcbiAgVGV4dFN0eWxlIGFzIFNrVGV4dFN0eWxlLFxuICBUeXBlZmFjZSBhcyBTa1R5cGVmYWNlLFxufSBmcm9tICdjYW52YXNraXQtd2FzbSdcbmltcG9ydCB0eXBlIHsgQ2tGb250U3R5bGUsIENvbG9yLCBGb250LCBQYWludCwgUGFyYWdyYXBoU3R5bGUsIFRleHRTdHlsZSwgVHlwZUZhY2UgfSBmcm9tICcuL1NraWFFbGVtZW50VHlwZXMnXG5pbXBvcnQgeyBGb250U2xhbnRFbnVtLCBGb250V2VpZ2h0RW51bSwgRm9udFdpZHRoRW51bSB9IGZyb20gJy4vU2tpYUVsZW1lbnRUeXBlcydcblxuZXhwb3J0IGludGVyZmFjZSBQcm9wc0NvbnZlcnRlcjxJTiwgT1VUPiB7XG4gIChjYW52YXNLaXQ6IENhbnZhc0tpdCwgcHJvcEluPzogSU4pOiBPVVQgfCB1bmRlZmluZWRcbn1cblxuZXhwb3J0IGNvbnN0IHRvU2tUeXBlRmFjZTogUHJvcHNDb252ZXJ0ZXI8VHlwZUZhY2UsIFNrVHlwZWZhY2U+ID0gKGNhbnZhc0tpdCwgdHlwZUZhY2UpID0+XG4gIHR5cGVGYWNlID8gY2FudmFzS2l0LlR5cGVmYWNlLk1ha2VGcmVlVHlwZUZhY2VGcm9tRGF0YSh0eXBlRmFjZS5kYXRhKSA/PyB1bmRlZmluZWQgOiB1bmRlZmluZWRcbmV4cG9ydCBjb25zdCB0b1NrRm9udDogUHJvcHNDb252ZXJ0ZXI8Rm9udCwgU2tGb250PiA9IChjYW52YXNLaXQsIGZvbnQpID0+XG4gIGZvbnRcbiAgICA/IG5ldyBjYW52YXNLaXQuRm9udChmb250LnR5cGVGYWNlID09PSB1bmRlZmluZWQgPyBudWxsIDogdG9Ta1R5cGVGYWNlKGNhbnZhc0tpdCwgZm9udC50eXBlRmFjZSkhISwgZm9udC5zaXplKVxuICAgIDogdW5kZWZpbmVkXG5leHBvcnQgY29uc3QgdG9Ta0NvbG9yOiBQcm9wc0NvbnZlcnRlcjxDb2xvciB8IHN0cmluZywgU2tDb2xvcj4gPSAoY2FudmFzS2l0LCBjb2xvcikgPT4ge1xuICBpZiAodHlwZW9mIGNvbG9yID09PSAnc3RyaW5nJykge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICByZXR1cm4gPFNrQ29sb3I+Y2FudmFzS2l0LnBhcnNlQ29sb3JTdHJpbmcoY29sb3IpXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGNvbG9yID8gY2FudmFzS2l0LkNvbG9yKGNvbG9yLnJlZCwgY29sb3IuZ3JlZW4sIGNvbG9yLmJsdWUsIGNvbG9yLmFscGhhID8/IDEpIDogdW5kZWZpbmVkXG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHRvU2tQYWludDogUHJvcHNDb252ZXJ0ZXI8UGFpbnQsIFNrUGFpbnQ+ID0gKGNhbnZhc0tpdCwgcGFpbnQpID0+IHtcbiAgaWYgKHBhaW50ID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH1cblxuICBjb25zdCBza1BhaW50ID0gbmV3IGNhbnZhc0tpdC5QYWludCgpXG5cbiAgLy8gVE9ETyBibGVuZE1vZGU/OiBCbGVuZE1vZGU7XG5cbiAgY29uc3Qgc2tDb2xvciA9IHRvU2tDb2xvcihjYW52YXNLaXQsIHBhaW50LmNvbG9yKVxuICBpZiAoc2tDb2xvcikge1xuICAgIHNrUGFpbnQuc2V0Q29sb3Ioc2tDb2xvcilcbiAgfVxuXG4gIC8vIFRPRE8gZmlsdGVyUXVhbGl0eT86IEZpbHRlclF1YWxpdHk7XG4gIC8vIFRPRE8gc3Ryb2tlQ2FwPzogU3Ryb2tlQ2FwO1xuICAvLyBUT0RPIHN0cm9rZUpvaW4/OiBTdHJva2VKb2luO1xuXG4gIGlmIChwYWludC5zdHJva2VNaXRlcikge1xuICAgIHNrUGFpbnQuc2V0U3Ryb2tlTWl0ZXIocGFpbnQuc3Ryb2tlTWl0ZXIpXG4gIH1cbiAgaWYgKHBhaW50LnN0cm9rZVdpZHRoKSB7XG4gICAgc2tQYWludC5zZXRTdHJva2VXaWR0aChwYWludC5zdHJva2VXaWR0aClcbiAgfVxuICBpZiAocGFpbnQuYW50aUFsaWFzKSB7XG4gICAgc2tQYWludC5zZXRBbnRpQWxpYXMocGFpbnQuYW50aUFsaWFzKVxuICB9XG4gIC8vIFRPRE8gY29sb3JGaWx0ZXI/OiBDb2xvckZpbHRlclxuICAvLyBUT0RPIGltYWdlRmlsdGVyPzogSW1hZ2VGaWx0ZXI7XG4gIC8vIFRPRE8gbWFza0ZpbHRlcj86IE1hc2tGaWx0ZXJcbiAgLy8gVE9ETyBwYXRoRWZmZWN0PzogUGF0aEVmZmVjdFxuICAvLyBUT0RPIHNoYWRlcj86IFNoYWRlclxuICAvLyBUT0RPIHN0eWxlPzogUGFpbnRTdHlsZVxuXG4gIHJldHVybiBza1BhaW50XG59XG5cbmV4cG9ydCBjb25zdCB0b0ZvbnRTdHlsZTogUHJvcHNDb252ZXJ0ZXI8Q2tGb250U3R5bGUsIEZvbnRTdHlsZT4gPSAoY2FudmFzS2l0LCBmb250U3R5bGUpOiBGb250U3R5bGUgPT4ge1xuICByZXR1cm4ge1xuICAgIHNsYW50OiB7IHZhbHVlOiBmb250U3R5bGU/LnNsYW50ID8/IEZvbnRTbGFudEVudW0uVXByaWdodCB9LFxuICAgIHdlaWdodDogeyB2YWx1ZTogZm9udFN0eWxlPy53ZWlnaHQgPz8gRm9udFdlaWdodEVudW0uTm9ybWFsIH0sXG4gICAgd2lkdGg6IHsgdmFsdWU6IGZvbnRTdHlsZT8ud2lkdGggPz8gRm9udFdpZHRoRW51bS5Ob3JtYWwgfSxcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgdG9Ta1RleHRTdHlsZTogUHJvcHNDb252ZXJ0ZXI8VGV4dFN0eWxlLCBTa1RleHRTdHlsZT4gPSAoY2FudmFzS2l0LCB0ZXh0U3R5bGUpID0+IHtcbiAgcmV0dXJuIHtcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IHRvU2tDb2xvcihjYW52YXNLaXQsIHRleHRTdHlsZT8uYmFja2dyb3VuZENvbG9yKSA/PyBjYW52YXNLaXQuV0hJVEUsXG4gICAgY29sb3I6IHRvU2tDb2xvcihjYW52YXNLaXQsIHRleHRTdHlsZT8uY29sb3IpID8/IGNhbnZhc0tpdC5CTEFDSyxcbiAgICBkZWNvcmF0aW9uOiB0ZXh0U3R5bGU/LmRlY29yYXRpb24gPz8gMCxcbiAgICBkZWNvcmF0aW9uVGhpY2tuZXNzOiB0ZXh0U3R5bGU/LmRlY29yYXRpb25UaGlja25lc3MgPz8gMCxcbiAgICBmb250RmFtaWxpZXM6IHRleHRTdHlsZT8uZm9udEZhbWlsaWVzID8/IFtdLFxuICAgIGZvbnRTaXplOiB0ZXh0U3R5bGU/LmZvbnRTaXplID8/IDE0LFxuICAgIGZvbnRTdHlsZTogPEZvbnRTdHlsZT50b0ZvbnRTdHlsZShjYW52YXNLaXQsIHRleHRTdHlsZT8uZm9udFN0eWxlKSxcbiAgICBmb3JlZ3JvdW5kQ29sb3I6IHRvU2tDb2xvcihjYW52YXNLaXQsIHRleHRTdHlsZT8uZm9yZWdyb3VuZENvbG9yKSA/PyBjYW52YXNLaXQuQkxBQ0ssXG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHRvU2tQYXJhZ3JhcGhTdHlsZTogUHJvcHNDb252ZXJ0ZXI8UGFyYWdyYXBoU3R5bGUsIFNrUGFyYWdyYXBoU3R5bGU+ID0gKGNhbnZhc0tpdCwgcGFyYWdyYXBoU3R5bGUpID0+IHtcbiAgY29uc3QgdGV4dEFsaWduID0gcGFyYWdyYXBoU3R5bGU/LnRleHRBbGlnbiA/IHsgdmFsdWU6IHBhcmFncmFwaFN0eWxlLnRleHRBbGlnbiB9IDogdW5kZWZpbmVkXG4gIGNvbnN0IHRleHREaXJlY3Rpb24gPSBwYXJhZ3JhcGhTdHlsZT8udGV4dERpcmVjdGlvbiA/IHsgdmFsdWU6IHBhcmFncmFwaFN0eWxlLnRleHREaXJlY3Rpb24gfSA6IHVuZGVmaW5lZFxuXG4gIHJldHVybiBuZXcgY2FudmFzS2l0LlBhcmFncmFwaFN0eWxlKHtcbiAgICBkaXNhYmxlSGludGluZzogcGFyYWdyYXBoU3R5bGU/LmRpc2FibGVIaW50aW5nLFxuICAgIGVsbGlwc2lzOiBwYXJhZ3JhcGhTdHlsZT8uZWxsaXBzaXMsXG4gICAgbWF4TGluZXM6IHBhcmFncmFwaFN0eWxlPy5tYXhMaW5lcyxcbiAgICB0ZXh0QWxpZ24sXG4gICAgdGV4dERpcmVjdGlvbixcbiAgICB0ZXh0U3R5bGU6IDxTa1RleHRTdHlsZT50b1NrVGV4dFN0eWxlKGNhbnZhc0tpdCwgcGFyYWdyYXBoU3R5bGU/LnRleHRTdHlsZSksXG4gIH0pXG59XG4iXX0=