convert method
Implementation
@override
Barcode2DMatrix convert(Uint8List data) {
final Iterable<int> dataWords = _highlevelEncode(data);
final _Pdf417Size dim = _calcDimensions(dataWords.length, _errorCorrectionWordCount(securityLevel));
if (dim.columns < _minCols || dim.columns > _maxCols || dim.rows < _minRows || dim.rows > _maxRows) {
throw const BarcodeException("Unable to fit data in barcode");
}
final List<int> codeWords = _encodeData(dataWords.toList(), dim.columns, securityLevel);
final List<List<int>> grid = <List<int>>[];
for (int i = 0; i < codeWords.length; i += dim.columns) {
grid.add(codeWords.sublist(i, min(i + dim.columns, codeWords.length)));
}
final List<List<int>> codes = <List<int>>[];
int rowNum = 0;
for (final List<int> row in grid) {
final int table = rowNum % 3;
final List<int> rowCodes = <int>[];
rowCodes.add(startWord);
rowCodes.add(_getCodeword(table, _getLeftCodeWord(rowNum, dim.rows, dim.columns, securityLevel)));
for (final int word in row) {
rowCodes.add(_getCodeword(table, word));
}
rowCodes.add(_getCodeword(table, _getRightCodeWord(rowNum, dim.rows, dim.columns, securityLevel)));
rowCodes.add(stopWord);
codes.add(rowCodes);
rowNum++;
}
final int width = (dim.columns + 4) * 17 + 1;
return Barcode2DMatrix(
width,
dim.rows,
moduleHeight,
_renderBarcode(codes),
);
}