MultiFormatOneDReader.cpp Example File
appdemos/qtws/QZXing/zxing/zxing/oned/MultiFormatOneDReader.cpp
#include <zxing/ZXing.h>
#include <zxing/oned/MultiFormatOneDReader.h>
#include <zxing/oned/MultiFormatUPCEANReader.h>
#include <zxing/oned/Code39Reader.h>
#include <zxing/oned/Code128Reader.h>
#include <zxing/oned/Code93Reader.h>
#include <zxing/oned/CodaBarReader.h>
#include <zxing/oned/ITFReader.h>
#include <zxing/ReaderException.h>
#include <zxing/NotFoundException.h>
using zxing::Ref;
using zxing::Result;
using zxing::oned::MultiFormatOneDReader;
using zxing::DecodeHints;
using zxing::BitArray;
MultiFormatOneDReader::MultiFormatOneDReader(DecodeHints hints) : readers() {
if (hints.containsFormat(BarcodeFormat::EAN_13) ||
hints.containsFormat(BarcodeFormat::EAN_8) ||
hints.containsFormat(BarcodeFormat::UPC_A) ||
hints.containsFormat(BarcodeFormat::UPC_E)) {
readers.push_back(Ref<OneDReader>(new MultiFormatUPCEANReader(hints)));
}
if (hints.containsFormat(BarcodeFormat::CODE_39)) {
readers.push_back(Ref<OneDReader>(new Code39Reader()));
}
if (hints.containsFormat(BarcodeFormat::CODE_93)) {
readers.push_back(Ref<OneDReader>(new Code93Reader()));
}
if (hints.containsFormat(BarcodeFormat::CODE_128)) {
readers.push_back(Ref<OneDReader>(new Code128Reader()));
}
if (hints.containsFormat(BarcodeFormat::ITF)) {
readers.push_back(Ref<OneDReader>(new ITFReader()));
}
if (hints.containsFormat(BarcodeFormat::CODABAR)) {
readers.push_back(Ref<OneDReader>(new CodaBarReader()));
}
if (readers.size() == 0) {
readers.push_back(Ref<OneDReader>(new MultiFormatUPCEANReader(hints)));
readers.push_back(Ref<OneDReader>(new Code39Reader()));
readers.push_back(Ref<OneDReader>(new CodaBarReader()));
readers.push_back(Ref<OneDReader>(new Code93Reader()));
readers.push_back(Ref<OneDReader>(new Code128Reader()));
readers.push_back(Ref<OneDReader>(new ITFReader()));
}
}
#include <typeinfo>
Ref<Result> MultiFormatOneDReader::decodeRow(int rowNumber, Ref<BitArray> row, zxing::DecodeHints hints) {
int size = readers.size();
for (int i = 0; i < size; i++) {
OneDReader* reader = readers[i];
try {
Ref<Result> result = reader->decodeRow(rowNumber, row, hints);
return result;
} catch (ReaderException const& re) {
(void)re;
}
}
throw NotFoundException();
}