convert method
Implementation
@override
Iterable<bool> convert(String data) sync* {
if (fixedLength != null) {
data = checkLength(data, fixedLength!);
} else {
if (zeroPrepend && ((data.length % 2 != 0) != addChecksum)) {
data = "0$data";
}
if (addChecksum) {
data += checkSumModulo10(data);
}
if (data.length % 2 != 0) {
throw BarcodeException("$name barcode can only encode an even number of digits.");
}
}
yield* add(BarcodeMaps.itfStart, 4);
final List<int> cu = data.codeUnits;
for (int i = 0; i < cu.length / 2; i++) {
final List<int?> tuple = <int?>[BarcodeMaps.itf[cu[i * 2]], BarcodeMaps.itf[cu[i * 2 + 1]]];
if (tuple[0] == null || tuple[1] == null) {
throw BarcodeException('Unable to encode "${String.fromCharCode(cu[i * 2])}${String.fromCharCode(cu[i * 2 + 1])}" to $name Barcode');
}
for (int n = 0; n < 10; n++) {
final int v = (tuple[n % 2]! >> (n ~/ 2)) & 1;
final bool c = n % 2 == 0;
yield c;
if (v != 0) {
yield c;
yield c;
}
}
}
yield* add(BarcodeMaps.itfEnd, 5);
}