in client/src/services/image-rendering.ts [40:62]
private static _getTextLines(context: CanvasRenderingContext2D, text: string, maxWidth: number): string[] {
const lines: string[] = [];
let remainingText = text;
while (remainingText) {
const metrics = context.measureText(remainingText);
if (metrics.width < maxWidth) {
lines.push(remainingText);
break;
}
let breakIndex = Math.floor(remainingText.length * maxWidth / metrics.width);
if (breakIndex <= 0) {
lines.push(remainingText);
break;
}
const prevWhitespaceIndex = remainingText.lastIndexOf(' ', breakIndex);
if (prevWhitespaceIndex >= 0) {
breakIndex = prevWhitespaceIndex;
}
lines.push(remainingText.slice(0, breakIndex));
remainingText = remainingText.slice(breakIndex).trim();
}
return lines;
}