detect method

Implementation

UAztecDetectorResult? detect() {
  final Offset? center = _getMatrixCenter();
  if (center == null) return null;
  final List<Offset>? bullsEyeCorners = _getBullsEyeCorners(center);
  if (bullsEyeCorners == null) return null;
  if (!_extractParameters(bullsEyeCorners)) return null;

  final int dimension = _getDimension();
  final int lowOffset = (_nbCenterLayers * 2) - (_compact ? 5 : 7);
  final List<Offset> corners = _expandSquare(bullsEyeCorners, 2 * _nbCenterLayers, dimension);
  final UBitMatrix? bits = _sampleGrid(corners[_shift % 4], corners[(_shift + 1) % 4], corners[(_shift + 2) % 4], corners[(_shift + 3) % 4], dimension);
  if (bits == null || lowOffset < -1000) return null;
  return UAztecDetectorResult(bits, corners, _compact, _nbDataBlocks, _nbLayers);
}