rebuild method
void
rebuild({})
Implementation
void rebuild({
required List<int> lineLengths,
required double height,
Set<int> foldedLines = const {},
}) {
final lineCount = lineLengths.length;
if (lineCount <= 0) {
_root = _LayoutLeaf();
return;
}
final leaves = <_LayoutNode>[];
for (var start = 0; start < lineCount; start += _LayoutLeaf._capacity) {
final end = math.min(start + _LayoutLeaf._capacity, lineCount);
final lines = <_LineBlock>[];
for (var line = start; line < end; line++) {
lines.add(
_LineBlock(lineLengths[line], height, foldedLines.contains(line)),
);
}
leaves.add(_LayoutLeaf(lines));
}
var level = leaves;
while (level.length > _nodeCapacity) {
final nextLevel = <_LayoutNode>[];
for (var start = 0; start < level.length; start += _nodeCapacity) {
nextLevel.add(
_LayoutInternal(
level.sublist(start, math.min(start + _nodeCapacity, level.length)),
),
);
}
level = nextLevel;
}
_root = level.length == 1 ? level.single : _LayoutInternal(level);
}