painbrush
1.0.21.1.0
dist/src/layer/make-text.js−
dist/src/layer/make-text.jsDeleted−67
Index: package/dist/src/layer/make-text.js
===================================================================
--- package/dist/src/layer/make-text.js
+++ package/dist/src/layer/make-text.js
@@ -1,67 +0,0 @@
-import { punchLayerOver, inflateLayer, overlayLayerOver, } from "./transform.js";
-import { overlayLayersOver } from "./transform.js";
-import { solidFillBrush, alphaBrush, } from "../color/brush.js";
-import { makeRectangleLayer } from "./make-rectangle.js";
-/**
- * Writes the text
- */
-export const makeTextLayer = (text, font, brush = solidFillBrush([255, 255, 255]), { letterPlateBrush = alphaBrush(), bgPlateBrush = alphaBrush(), maxLengthPx = Infinity, breakLinesOn = " ", } = {}) => {
- const { getCharacter } = font;
- const lineHeight = getCharacter("X").height;
- let charLayers = [];
- const words = text
- .split(breakLinesOn)
- .map((word, idx, arr) => arr.length === idx + 1 ? word : word + breakLinesOn)
- .map((word) => word
- .split("\n")
- .map((word, idx, arr) => arr.length === idx + 1 ? word : [word, "\n"]))
- .flat(2);
- let lineOffset = 0;
- let maxWidth = 0;
- let lines = 1;
- for (let word of words) {
- const newline = () => {
- maxWidth = Math.max(lineOffset, maxWidth);
- lineOffset = 0;
- lines++;
- };
- let wordLayers = [];
- let wordOffset = 0;
- for (let character of word) {
- if (character === "\n") {
- newline();
- continue;
- }
- const char = inflateLayer(getCharacter(character), brush, letterPlateBrush);
- wordLayers.push([
- char,
- wordOffset,
- ]);
- wordOffset += char.width;
- }
- const prevLineOffset = lineOffset;
- const verticalOffset = lineHeight * (lines - 1);
- lineOffset = lineOffset + wordOffset;
- if (lineOffset > maxLengthPx) {
- newline();
- }
- charLayers.push(...wordLayers.map((layer) => [
- layer[0],
- {
- skipBlending: true,
- offset: {
- x: prevLineOffset + layer[1],
- y: verticalOffset,
- },
- },
- ]));
- }
- let textLayer = makeRectangleLayer({
- x: (maxWidth = Math.max(lineOffset, maxWidth)),
- y: lineHeight * lines,
- }, bgPlateBrush);
- for (let layer of charLayers) {
- punchLayerOver(textLayer, layer[0], layer[1]);
- }
- return textLayer;
-};