buildLines method

List<TextViewLine> buildLines(
  1. TextDocument document,
  2. EditorState state
)

Implementation

List<TextViewLine> buildLines(TextDocument document, EditorState state) {
  final visual = _buildVisualLines(document);

  final result = <TextViewLine>[];
  for (var i = 0; i < visual.length; i++) {
    final line = visual[i];
    final lineLength = document.lineLength(line.rowIndex);
    final cursorColumn = state.line == line.rowIndex
        ? state.column.clamp(0, lineLength)
        : -1;
    final segStart = line.charOffset;
    final segEnd = segStart + line.graphemeCount;
    final hasCursor =
        state.line == line.rowIndex &&
        cursorColumn >= segStart &&
        cursorColumn <= segEnd;

    result.add(
      TextViewLine(
        visualRow: i,
        logicalLine: line.rowIndex,
        charOffset: line.charOffset,
        text: line.text,
        graphemeCount: line.graphemeCount,
        hasCursor: hasCursor,
      ),
    );
  }

  return result;
}