insertN method

void insertN(
  1. int index,
  2. int count
)
override

Implementation

void insertN(int index, int count) {
  //                       start
  // +--------------------------|-----------------------------------+
  // |                          |                                   |
  // +--------------------------\--\--------------------------------+ end
  //                             \  \
  //                              \  \
  //                               v  v
  // +--------------------------|--|--------------------------------+
  // |                          |  |                                |
  // +--------------------------|--|--------------------------------+ end
  //                       start   start+offset

  final moveStart = index * _cellSize64Bit;
  final moveOffset = count * _cellSize64Bit;
  final bufferEnd = _maxCols * _cellSize64Bit;

  // move data forward
  final cells = _cells.buffer.asInt64List();
  for (var i = bufferEnd - moveOffset - 1; i >= moveStart; i--) {
    cells[i + moveOffset] = cells[i];
  }

  // set inserted cells to 0
  for (var i = moveStart; i < moveStart + moveOffset; i++) {
    cells[i] = 0x00;
  }
}