private static _getTextLines()

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;
  }