styledStringBounds function

Rectangle styledStringBounds(
  1. String text,
  2. WidthMethod method
)

Parses a string and returns its bounds (width/height) using a width method.

Upstream: third_party/ultraviolet/styled.go (StyledString.widthHeight).

Implementation

Rectangle styledStringBounds(String text, WidthMethod method) {
  final normalized = text.replaceAll('\r\n', '\n');
  final expanded = term_ansi.Ansi.expandTabs(normalized);
  final lines = expanded.split('\n');
  var maxWidth = 0;
  for (final line in lines) {
    final width = _visibleStringWidth(line, method);
    if (width > maxWidth) maxWidth = width;
  }
  return rect(0, 0, maxWidth, lines.length);
}