paint method

  1. @override
String paint()

Implementation

@override
String paint() {
  final maxW = size.width.toInt();
  _ensureBaseCache(maxW);

  final baseLines = _cachedBaseLines!;
  final baseLineWidths = _cachedBaseLineWidths!;
  final baseLineHasAnsi = _cachedBaseLineHasAnsi!;
  final start = selectionStart;
  final end = selectionEnd;
  if (start != null && end != null) {
    final customRanges = selectionHighlightRangesByLine;
    final lines = customRanges == null
        ? applySelectionHighlighting(
            baseLines,
            offset: 0,
            selectionStart: start,
            selectionEnd: end,
            highlightStyle: selectionHighlightStyle,
            lineWidths: baseLineWidths,
            lineHasAnsi: baseLineHasAnsi,
          )
        : applySelectionHighlightingWithRanges(
            baseLines,
            offset: 0,
            selectionStart: start,
            selectionEnd: end,
            highlightStyle: selectionHighlightStyle,
            lineWidths: baseLineWidths,
            lineHasAnsi: baseLineHasAnsi,
            lineHighlightRanges: [
              for (var i = 0; i < baseLines.length; i++)
                i < customRanges.length
                    ? [
                        for (final range in customRanges[i])
                          StyleRange(
                            range.start.clamp(0, maxW),
                            range.end.clamp(0, maxW),
                            range.style,
                          ),
                      ]
                    : const <StyleRange>[],
            ],
          );
    return lines.join('\n');
  }
  return _cachedBaseText!;
}