UNPKG

ultimate-text-to-image

Version:

Generate UTF8 texts into image with auto line break for all international language, including Chinese, Japanese, Korean, etc..

56 lines (55 loc) 2.2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.VerticalImage = void 0; const canvas_1 = require("canvas"); const BaseClass_1 = require("./BaseClass"); const canvas_2 = require("./utils/canvas"); class VerticalImage extends BaseClass_1.BaseClass { constructor(ultimateTextToImages, options = {}, renderOptions = {}) { super(); this.ultimateTextToImages = ultimateTextToImages; this.options = options; this.renderOptions = renderOptions; } render() { this._startTimer(); const { backgroundColor } = this.options; const margin = this.options.margin || 0; for (const ultimateTextToImage of this.ultimateTextToImages) { ultimateTextToImage.render(); } const width = this.ultimateTextToImages .reduce((a, b) => Math.max(a, b.width), 0) + margin * 2; const height = this.ultimateTextToImages.reduce((a, b) => a + b.height, 0) + margin * 2; this._canvas = new canvas_1.Canvas(width, height); const ctx = this._canvas.getContext("2d"); // hook (0, canvas_2.renderHook)(this._canvas, this.renderOptions.preRender); // draw background (0, canvas_2.drawBackgroundColor)(ctx, { color: backgroundColor }); let x = 0; let y = margin; for (const ultimateTextToImage of this.ultimateTextToImages) { let align = this.options.align; if (ultimateTextToImage.options.nestedAlign) { align = ultimateTextToImage.options.nestedAlign; } if (align === "right") { x = width - ultimateTextToImage.width - margin; } else if (align === "center") { x = (width - ultimateTextToImage.width) / 2; } else { x = margin; } ctx.drawImage(ultimateTextToImage.canvas, x, y); y += ultimateTextToImage.height; } // hook (0, canvas_2.renderHook)(this._canvas, this.renderOptions.posRender); this._endTimer(); return this; } } exports.VerticalImage = VerticalImage;