5 * Copyright 2010 ZXing authors All rights reserved.
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
20 #include <zxing/DecodeHints.h>
21 #include <zxing/common/IllegalArgumentException.h>
24 const DecodeHints DecodeHints::PRODUCT_HINT(
25 BARCODEFORMAT_UPC_E_HINT |
26 BARCODEFORMAT_UPC_A_HINT |
27 BARCODEFORMAT_EAN_8_HINT |
28 BARCODEFORMAT_EAN_13_HINT);
30 const DecodeHints DecodeHints::ONED_HINT(
31 BARCODEFORMAT_UPC_E_HINT |
32 BARCODEFORMAT_UPC_A_HINT |
33 BARCODEFORMAT_EAN_8_HINT |
34 BARCODEFORMAT_EAN_13_HINT |
35 BARCODEFORMAT_CODE_128_HINT |
36 BARCODEFORMAT_CODE_39_HINT |
37 BARCODEFORMAT_ITF_HINT);
39 const DecodeHints DecodeHints::DEFAULT_HINT(
40 BARCODEFORMAT_UPC_E_HINT |
41 BARCODEFORMAT_UPC_A_HINT |
42 BARCODEFORMAT_EAN_8_HINT |
43 BARCODEFORMAT_EAN_13_HINT |
44 BARCODEFORMAT_CODE_128_HINT |
45 BARCODEFORMAT_CODE_39_HINT |
46 BARCODEFORMAT_ITF_HINT |
47 // TODO: uncomment once this passes QA
48 // BARCODEFORMAT_DATA_MATRIX_HINT |
49 BARCODEFORMAT_QR_CODE_HINT);
51 DecodeHints::DecodeHints() {
55 DecodeHints::DecodeHints(DecodeHintType init) {
59 void DecodeHints::addFormat(BarcodeFormat toadd) {
61 case BarcodeFormat_QR_CODE: hints |= BARCODEFORMAT_QR_CODE_HINT; break;
62 case BarcodeFormat_DATA_MATRIX: hints |= BARCODEFORMAT_DATA_MATRIX_HINT; break;
63 case BarcodeFormat_UPC_E: hints |= BARCODEFORMAT_UPC_E_HINT; break;
64 case BarcodeFormat_UPC_A: hints |= BARCODEFORMAT_UPC_A_HINT; break;
65 case BarcodeFormat_EAN_8: hints |= BARCODEFORMAT_EAN_8_HINT; break;
66 case BarcodeFormat_EAN_13: hints |= BARCODEFORMAT_EAN_13_HINT; break;
67 case BarcodeFormat_CODE_128: hints |= BARCODEFORMAT_CODE_128_HINT; break;
68 case BarcodeFormat_CODE_39: hints |= BARCODEFORMAT_CODE_39_HINT; break;
69 case BarcodeFormat_ITF: hints |= BARCODEFORMAT_ITF_HINT; break;
70 default: throw IllegalArgumentException("Unrecognizd barcode format");
74 bool DecodeHints::containsFormat(BarcodeFormat tocheck) const {
75 DecodeHintType checkAgainst;
77 case BarcodeFormat_QR_CODE: checkAgainst = BARCODEFORMAT_QR_CODE_HINT; break;
78 case BarcodeFormat_DATA_MATRIX: checkAgainst = BARCODEFORMAT_DATA_MATRIX_HINT; break;
79 case BarcodeFormat_UPC_E: checkAgainst = BARCODEFORMAT_UPC_E_HINT; break;
80 case BarcodeFormat_UPC_A: checkAgainst = BARCODEFORMAT_UPC_A_HINT; break;
81 case BarcodeFormat_EAN_8: checkAgainst = BARCODEFORMAT_EAN_8_HINT; break;
82 case BarcodeFormat_EAN_13: checkAgainst = BARCODEFORMAT_EAN_13_HINT; break;
83 case BarcodeFormat_CODE_128: checkAgainst = BARCODEFORMAT_CODE_128_HINT; break;
84 case BarcodeFormat_CODE_39: checkAgainst = BARCODEFORMAT_CODE_39_HINT; break;
85 case BarcodeFormat_ITF: checkAgainst = BARCODEFORMAT_ITF_HINT; break;
86 default: throw IllegalArgumentException("Unrecognizd barcode format");
88 return (hints & checkAgainst);
91 void DecodeHints::setTryHarder(bool toset) {
93 hints |= TRYHARDER_HINT;
95 hints &= ~TRYHARDER_HINT;
99 bool DecodeHints::getTryHarder() const {
100 return (hints & TRYHARDER_HINT);
103 void DecodeHints::setResultPointCallback(Ref<ResultPointCallback> const& _callback) {
104 callback = _callback;
107 Ref<ResultPointCallback> DecodeHints::getResultPointCallback() const {