namespace zxing {
namespace oned {
- MultiFormatOneDReader::MultiFormatOneDReader(){
- readers = new std::vector<OneDReader*>();
- readers->push_back(new MultiFormatUPCEANReader());
- readers->push_back(new Code39Reader());
- readers->push_back(new Code128Reader());
- readers->push_back(new ITFReader());
+ 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_128)) {
+ readers.push_back(Ref<OneDReader>(new Code128Reader()));
+ }
+ if (hints.containsFormat(BarcodeFormat_ITF)) {
+ readers.push_back(Ref<OneDReader>(new ITFReader()));
+ }
+ 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 Code128Reader()));
+ readers.push_back(Ref<OneDReader>(new ITFReader()));
+ }
}
Ref<Result> MultiFormatOneDReader::decodeRow(int rowNumber, Ref<BitArray> row){
- int size = readers->size();
+ int size = readers.size();
for (int i = 0; i < size; i++) {
- OneDReader* reader = (*readers)[i];
+ OneDReader* reader = readers[i];
try {
return reader->decodeRow(rowNumber, row);
} catch (ReaderException re) {
}
throw ReaderException("No code detected");
}
- MultiFormatOneDReader::~MultiFormatOneDReader(){
- delete readers;
- }
}
-}
\ No newline at end of file
+}