decode method

DecoderResult decode(
  1. BitMatrix bits, [
  2. Map<DecodeHintType, Object>? hints
])

Implementation

DecoderResult decode(BitMatrix bits, [Map<DecodeHintType, Object>? hints]) {
  final parser = BitMatrixParser(bits);
  final codewords = parser.readCodewords();

  _correctErrors(codewords, 0, 10, 10, _ALL);
  final mode = codewords[0] & 0x0F;
  late Uint8List datawords;
  switch (mode) {
    case 2:
    case 3:
    case 4:
      _correctErrors(codewords, 20, 84, 40, _EVEN);
      _correctErrors(codewords, 20, 84, 40, _ODD);
      datawords = Uint8List(94);
      break;
    case 5:
      _correctErrors(codewords, 20, 68, 56, _EVEN);
      _correctErrors(codewords, 20, 68, 56, _ODD);
      datawords = Uint8List(78);
      break;
    default:
      throw FormatsException.instance;
  }

  List.copyRange(datawords, 0, codewords, 0, 10);
  List.copyRange(datawords, 10, codewords, 20, datawords.length + 10);

  return DecodedBitStreamParser.decode(datawords, mode);
}