setStringN method

void setStringN(
  1. int x,
  2. int y,
  3. String string,
  4. int maxWidth,
  5. Style style,
)

Write at most maxWidth characters of string at (x, y).

Implementation

void setStringN(
  int x,
  int y,
  String string,
  int maxWidth,
  Style style,
) {
  var remainingWidth = (area.right - x).clamp(0, maxWidth);
  var cx = x;
  final runes = string.runes.toList();
  for (var i = 0; i < runes.length && remainingWidth > 0; i++) {
    final ch = runes[i];
    if (ch < 0x20 && ch != 0x0A && ch != 0x0D) continue;
    final width = charWidth(ch);
    if (width == 0) continue;
    if (width > remainingWidth) break;
    remainingWidth -= width;
    final cellIndex = indexOf(cx, y);
    if (cellIndex < content.length) {
      content[cellIndex].setChar(ch);
      content[cellIndex].setStyle(style);
    }
    cx += 1;
    for (var j = 1; j < width; j++) {
      final skipIndex = indexOf(cx, y);
      if (skipIndex < content.length) {
        content[skipIndex].reset();
      }
      cx += 1;
    }
  }
}