encode method
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;
}