convertHM method

  1. @override
Iterable<BarcodeHMBar> convertHM(
  1. String data
)
override

Implementation

@override
Iterable<BarcodeHMBar> convertHM(String data) sync* {
  yield fromBits(BarcodeMaps.rm4sccStart);

  int sumTop = 0;
  int sumBottom = 0;
  final List<int> keys = BarcodeMaps.rm4scc.keys.toList();

  for (final int codeUnit in data.codeUnits) {
    final int? code = BarcodeMaps.rm4scc[codeUnit];
    if (code == null) {
      throw BarcodeException('Unable to encode "${String.fromCharCode(codeUnit)}" to $name');
    }
    yield* addHW(code, BarcodeMaps.rm4sccLen);

    final int index = keys.indexOf(codeUnit);
    sumTop += (index ~/ 6 + 1) % 6;
    sumBottom += (index + 1) % 6;
  }

  final int crc = ((sumTop - 1) % 6) * 6 + (sumBottom - 1) % 6;
  yield* addHW(BarcodeMaps.rm4scc[keys[crc]]!, BarcodeMaps.rm4sccLen);

  yield fromBits(BarcodeMaps.rm4sccStop);
}