encode method

List<bool> encode(
  1. String data
)

Start Code B, payload, checksum, Stop — each value maps to a pattern.

Implementation

List<bool> encode(String data) {
  final List<int> codes = <int>[104]; // Start B
  for (final int unit in data.codeUnits) {
    if (unit < 32 || unit > 126) {
      throw ArgumentError.value(
        data,
        'data',
        'Code128B requires ASCII 32–126',
      );
    }
    codes.add(unit - 32);
  }
  int checksum = codes[0];
  for (int i = 1; i < codes.length; i++) {
    checksum += codes[i] * i;
  }
  codes.add(checksum % 103);
  codes.add(106); // Stop
  final List<bool> modules = <bool>[];
  for (final int code in codes) {
    final String pattern = _patterns[code];
    for (int i = 0; i < pattern.length; i++) {
      modules.add(pattern.codeUnitAt(i) == 0x31);
    }
  }
  modules.add(true);
  modules.add(true);
  return modules;
}