convert method

  1. @override
Barcode2DMatrix convert(
  1. Uint8List data
)
override

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),
  );
}