copyFrom method
Copies len cells from src starting at srcCol to dstCol at this
line.
Implementation
void copyFrom(BufferLine src, int srcCol, int dstCol, int len) {
final requiredLength = dstCol + len;
if (requiredLength > _length) {
resize(requiredLength);
}
final copiedCombiningCharacters = <int, String>{};
final copiedUnderlineColors = <int, int>{};
for (final entry in src._combiningCharacters.entries) {
if (entry.key < srcCol || entry.key >= srcCol + len) continue;
copiedCombiningCharacters[dstCol + entry.key - srcCol] = entry.value;
}
for (final entry in src._underlineColors.entries) {
if (entry.key < srcCol || entry.key >= srcCol + len) continue;
copiedUnderlineColors[dstCol + entry.key - srcCol] = entry.value;
}
// data.setRange(
// dstCol * _cellSize,
// (dstCol + len) * _cellSize,
// Uint32List.sublistView(src.data, srcCol * _cellSize, len * _cellSize),
// );
var srcOffset = srcCol * _cellSize;
var dstOffset = dstCol * _cellSize;
for (var i = 0; i < len * _cellSize; i++) {
_data[dstOffset++] = src._data[srcOffset++];
}
_combiningCharacters.removeWhere(
(index, _) => index >= dstCol && index < dstCol + len,
);
_combiningCharacters.addAll(copiedCombiningCharacters);
_underlineColors.removeWhere(
(index, _) => index >= dstCol && index < dstCol + len,
);
_underlineColors.addAll(copiedUnderlineColors);
}