Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2)

Side by Side Diff: xfa/src/fxbarcode/pdf417/BC_PDF417Detector.cpp

Issue 1730893003: Remove include only barcode.h and IWYU. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 PDFium Authors. All rights reserved. 1 // Copyright 2014 PDFium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6 // Original code is licensed as follows: 6 // Original code is licensed as follows:
7 /* 7 /*
8 * Copyright 2009 ZXing authors 8 * Copyright 2009 ZXing authors
9 * 9 *
10 * Licensed under the Apache License, Version 2.0 (the "License"); 10 * Licensed under the Apache License, Version 2.0 (the "License");
11 * you may not use this file except in compliance with the License. 11 * you may not use this file except in compliance with the License.
12 * You may obtain a copy of the License at 12 * You may obtain a copy of the License at
13 * 13 *
14 * http://www.apache.org/licenses/LICENSE-2.0 14 * http://www.apache.org/licenses/LICENSE-2.0
15 * 15 *
16 * Unless required by applicable law or agreed to in writing, software 16 * Unless required by applicable law or agreed to in writing, software
17 * distributed under the License is distributed on an "AS IS" BASIS, 17 * distributed under the License is distributed on an "AS IS" BASIS,
18 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 18 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19 * See the License for the specific language governing permissions and 19 * See the License for the specific language governing permissions and
20 * limitations under the License. 20 * limitations under the License.
21 */ 21 */
22 22
23 #include "xfa/src/fxbarcode/BC_BinaryBitmap.h" 23 #include "xfa/src/fxbarcode/BC_BinaryBitmap.h"
24 #include "xfa/src/fxbarcode/BC_ResultPoint.h" 24 #include "xfa/src/fxbarcode/BC_ResultPoint.h"
25 #include "xfa/src/fxbarcode/barcode.h"
26 #include "xfa/src/fxbarcode/common/BC_CommonBitArray.h" 25 #include "xfa/src/fxbarcode/common/BC_CommonBitArray.h"
27 #include "xfa/src/fxbarcode/common/BC_CommonBitMatrix.h" 26 #include "xfa/src/fxbarcode/common/BC_CommonBitMatrix.h"
28 #include "xfa/src/fxbarcode/pdf417/BC_PDF417Detector.h" 27 #include "xfa/src/fxbarcode/pdf417/BC_PDF417Detector.h"
29 #include "xfa/src/fxbarcode/pdf417/BC_PDF417DetectorResult.h" 28 #include "xfa/src/fxbarcode/pdf417/BC_PDF417DetectorResult.h"
30 #define INTERGER_MAX 2147483647 29 #include "xfa/src/fxbarcode/utils.h"
30
31 #define INTEGER_MAX 2147483647
Lei Zhang 2016/02/24 20:37:59 Delete and use INT_MAX or std::numeric_limits<int3
dsinclair 2016/02/24 20:39:21 There are 3 of them, will do in a followup, just w
32
31 int32_t CBC_Detector::INDEXES_START_PATTERN[] = {0, 4, 1, 5}; 33 int32_t CBC_Detector::INDEXES_START_PATTERN[] = {0, 4, 1, 5};
32 int32_t CBC_Detector::INDEXES_STOP_PATTERN[] = {6, 2, 7, 3}; 34 int32_t CBC_Detector::INDEXES_STOP_PATTERN[] = {6, 2, 7, 3};
33 int32_t CBC_Detector::INTEGER_MATH_SHIFT = 8; 35 int32_t CBC_Detector::INTEGER_MATH_SHIFT = 8;
34 int32_t CBC_Detector::PATTERN_MATCH_RESULT_SCALE_FACTOR = 1 36 int32_t CBC_Detector::PATTERN_MATCH_RESULT_SCALE_FACTOR = 1
35 << INTEGER_MATH_SHIFT; 37 << INTEGER_MATH_SHIFT;
36 int32_t CBC_Detector::MAX_AVG_VARIANCE = 38 int32_t CBC_Detector::MAX_AVG_VARIANCE =
37 (int32_t)(PATTERN_MATCH_RESULT_SCALE_FACTOR * 0.42f); 39 (int32_t)(PATTERN_MATCH_RESULT_SCALE_FACTOR * 0.42f);
38 int32_t CBC_Detector::MAX_INDIVIDUAL_VARIANCE = 40 int32_t CBC_Detector::MAX_INDIVIDUAL_VARIANCE =
39 (int32_t)(PATTERN_MATCH_RESULT_SCALE_FACTOR * 0.8f); 41 (int32_t)(PATTERN_MATCH_RESULT_SCALE_FACTOR * 0.8f);
40 int32_t CBC_Detector::START_PATTERN[] = {8, 1, 1, 1, 1, 1, 1, 3}; 42 int32_t CBC_Detector::START_PATTERN[] = {8, 1, 1, 1, 1, 1, 1, 3};
41 int32_t CBC_Detector::STOP_PATTERN[] = {7, 1, 1, 3, 1, 1, 1, 2, 1}; 43 int32_t CBC_Detector::STOP_PATTERN[] = {7, 1, 1, 3, 1, 1, 1, 2, 1};
42 int32_t CBC_Detector::MAX_PIXEL_DRIFT = 3; 44 int32_t CBC_Detector::MAX_PIXEL_DRIFT = 3;
43 int32_t CBC_Detector::MAX_PATTERN_DRIFT = 5; 45 int32_t CBC_Detector::MAX_PATTERN_DRIFT = 5;
44 int32_t CBC_Detector::SKIPPED_ROW_COUNT_MAX = 25; 46 int32_t CBC_Detector::SKIPPED_ROW_COUNT_MAX = 25;
45 int32_t CBC_Detector::ROW_STEP = 5; 47 int32_t CBC_Detector::ROW_STEP = 5;
46 int32_t CBC_Detector::BARCODE_MIN_HEIGHT = 10; 48 int32_t CBC_Detector::BARCODE_MIN_HEIGHT = 10;
49
47 CBC_Detector::CBC_Detector() {} 50 CBC_Detector::CBC_Detector() {}
48 CBC_Detector::~CBC_Detector() {} 51 CBC_Detector::~CBC_Detector() {}
49 CBC_PDF417DetectorResult* CBC_Detector::detect(CBC_BinaryBitmap* image, 52 CBC_PDF417DetectorResult* CBC_Detector::detect(CBC_BinaryBitmap* image,
50 int32_t hints, 53 int32_t hints,
51 FX_BOOL multiple, 54 FX_BOOL multiple,
52 int32_t& e) { 55 int32_t& e) {
53 CBC_CommonBitMatrix* bitMatrix = image->GetBlackMatrix(e); 56 CBC_CommonBitMatrix* bitMatrix = image->GetBlackMatrix(e);
54 BC_EXCEPTION_CHECK_ReturnValue(e, NULL); 57 BC_EXCEPTION_CHECK_ReturnValue(e, NULL);
55 CFX_PtrArray* barcodeCoordinates = detect(multiple, bitMatrix); 58 CFX_PtrArray* barcodeCoordinates = detect(multiple, bitMatrix);
56 if (barcodeCoordinates->GetSize() == 0) { 59 if (barcodeCoordinates->GetSize() == 0) {
(...skipping 266 matching lines...) Expand 10 before | Expand all | Expand 10 after
323 int32_t* pattern, 326 int32_t* pattern,
324 int32_t maxIndividualVariance) { 327 int32_t maxIndividualVariance) {
325 int32_t numCounters = counters.GetSize(); 328 int32_t numCounters = counters.GetSize();
326 int32_t total = 0; 329 int32_t total = 0;
327 int32_t patternLength = 0; 330 int32_t patternLength = 0;
328 for (int32_t i = 0; i < numCounters; i++) { 331 for (int32_t i = 0; i < numCounters; i++) {
329 total += counters[i]; 332 total += counters[i];
330 patternLength += pattern[i]; 333 patternLength += pattern[i];
331 } 334 }
332 if (total < patternLength) { 335 if (total < patternLength) {
333 return INTERGER_MAX; 336 return INTEGER_MAX;
334 } 337 }
335 int32_t unitBarWidth = (total << INTEGER_MATH_SHIFT) / patternLength; 338 int32_t unitBarWidth = (total << INTEGER_MATH_SHIFT) / patternLength;
336 maxIndividualVariance = 339 maxIndividualVariance =
337 (maxIndividualVariance * unitBarWidth) >> INTEGER_MATH_SHIFT; 340 (maxIndividualVariance * unitBarWidth) >> INTEGER_MATH_SHIFT;
338 int32_t totalVariance = 0; 341 int32_t totalVariance = 0;
339 for (int32_t x = 0; x < numCounters; x++) { 342 for (int32_t x = 0; x < numCounters; x++) {
340 int32_t counter = counters[x] << INTEGER_MATH_SHIFT; 343 int32_t counter = counters[x] << INTEGER_MATH_SHIFT;
341 int32_t scaledPattern = pattern[x] * unitBarWidth; 344 int32_t scaledPattern = pattern[x] * unitBarWidth;
342 int32_t variance = counter > scaledPattern ? counter - scaledPattern 345 int32_t variance = counter > scaledPattern ? counter - scaledPattern
343 : scaledPattern - counter; 346 : scaledPattern - counter;
344 if (variance > maxIndividualVariance) { 347 if (variance > maxIndividualVariance) {
345 return INTERGER_MAX; 348 return INTEGER_MAX;
346 } 349 }
347 totalVariance += variance; 350 totalVariance += variance;
348 } 351 }
349 return totalVariance / total; 352 return totalVariance / total;
350 } 353 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698