parseAnsiColour function
parse a color from params starting from offset.
Returns a list with 2 entries. Index 0 = color, Index 1 = number of params used
Implementation
List<int> parseAnsiColour(List<int> params, int offset, Terminal terminal) {
  final length = params.length - offset;
  if (length > 2) {
    switch (params[offset + 1]) {
      case 5:
        // 8 bit colour
        final colNum = params[offset + 2];
        if (colNum >= 256 || colNum < 0) {
          return [TerminalColor.empty(), 2];
        }
        return [parse8BitSgrColour(colNum, terminal), 2];
      case 2:
        if (length < 4) {
          return [TerminalColor.empty(), 0];
        }
        // 24 bit colour
        if (length == 5) {
          final r = params[offset + 2];
          final g = params[offset + 3];
          final b = params[offset + 4];
          return [TerminalColor.fromARGB(0xff, r, g, b), 4];
        }
        if (length > 5) {
          // ISO/IEC International Standard 8613-6
          final r = params[offset + 3];
          final g = params[offset + 4];
          final b = params[offset + 5];
          return [TerminalColor.fromARGB(0xff, r, g, b), 5];
        }
    }
  }
  return [TerminalColor.empty(), 0];
}