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

Side by Side Diff: xfa/fxbarcode/pdf417/BC_PDF417Reader.cpp

Issue 1941863002: Replace CFX_PtrArray with typesafe CFX_ArrayTemplate, part 11 (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Nits. Created 4 years, 7 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
« no previous file with comments | « xfa/fxbarcode/pdf417/BC_PDF417Reader.h ('k') | xfa/fxbarcode/pdf417/BC_PDF417ScanningDecoder.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 <algorithm>
23 #include <limits> 24 #include <limits>
25 #include <memory>
24 26
25 #include "xfa/fxbarcode/BC_BinaryBitmap.h" 27 #include "xfa/fxbarcode/BC_BinaryBitmap.h"
26 #include "xfa/fxbarcode/BC_BinaryBitmap.h" 28 #include "xfa/fxbarcode/BC_BinaryBitmap.h"
27 #include "xfa/fxbarcode/BC_DecoderResult.h" 29 #include "xfa/fxbarcode/BC_DecoderResult.h"
28 #include "xfa/fxbarcode/BC_Reader.h" 30 #include "xfa/fxbarcode/BC_Reader.h"
29 #include "xfa/fxbarcode/BC_ResultPoint.h" 31 #include "xfa/fxbarcode/BC_ResultPoint.h"
30 #include "xfa/fxbarcode/common/BC_CommonBitArray.h" 32 #include "xfa/fxbarcode/common/BC_CommonBitArray.h"
31 #include "xfa/fxbarcode/common/BC_CommonBitMatrix.h" 33 #include "xfa/fxbarcode/common/BC_CommonBitMatrix.h"
32 #include "xfa/fxbarcode/common/BC_CommonBitMatrix.h" 34 #include "xfa/fxbarcode/common/BC_CommonBitMatrix.h"
33 #include "xfa/fxbarcode/common/BC_CommonDecoderResult.h" 35 #include "xfa/fxbarcode/common/BC_CommonDecoderResult.h"
(...skipping 23 matching lines...) Expand all
57 CBC_PDF417Reader::~CBC_PDF417Reader() {} 59 CBC_PDF417Reader::~CBC_PDF417Reader() {}
58 60
59 CFX_ByteString CBC_PDF417Reader::Decode(CBC_BinaryBitmap* image, int32_t& e) { 61 CFX_ByteString CBC_PDF417Reader::Decode(CBC_BinaryBitmap* image, int32_t& e) {
60 return Decode(image, 0, e); 62 return Decode(image, 0, e);
61 } 63 }
62 CFX_ByteString CBC_PDF417Reader::Decode(CBC_BinaryBitmap* image, 64 CFX_ByteString CBC_PDF417Reader::Decode(CBC_BinaryBitmap* image,
63 FX_BOOL multiple, 65 FX_BOOL multiple,
64 int32_t hints, 66 int32_t hints,
65 int32_t& e) { 67 int32_t& e) {
66 CFX_ByteString results; 68 CFX_ByteString results;
67 CBC_PDF417DetectorResult* detectorResult = 69 std::unique_ptr<CBC_PDF417DetectorResult> detectorResult(
68 CBC_Detector::detect(image, hints, multiple, e); 70 CBC_Detector::detect(image, hints, multiple, e));
69 BC_EXCEPTION_CHECK_ReturnValue(e, ""); 71 BC_EXCEPTION_CHECK_ReturnValue(e, "");
70 for (int32_t i = 0; i < detectorResult->getPoints()->GetSize(); i++) { 72 for (int32_t i = 0; i < detectorResult->getPoints()->GetSize(); i++) {
71 CFX_PtrArray* points = (CFX_PtrArray*)detectorResult->getPoints()->GetAt(i); 73 CBC_ResultPointArray* points = detectorResult->getPoints()->GetAt(i);
72 CBC_CommonDecoderResult* ResultTemp = CBC_PDF417ScanningDecoder::decode( 74 std::unique_ptr<CBC_CommonDecoderResult> ResultTemp(
73 detectorResult->getBits(), (CBC_ResultPoint*)points->GetAt(4), 75 CBC_PDF417ScanningDecoder::decode(
74 (CBC_ResultPoint*)points->GetAt(5), (CBC_ResultPoint*)points->GetAt(6), 76 detectorResult->getBits(), points->GetAt(4), points->GetAt(5),
75 (CBC_ResultPoint*)points->GetAt(7), getMinCodewordWidth(*points), 77 points->GetAt(6), points->GetAt(7), getMinCodewordWidth(*points),
76 getMaxCodewordWidth(*points), e); 78 getMaxCodewordWidth(*points), e));
77 if (ResultTemp == NULL) { 79 if (!ResultTemp) {
78 delete detectorResult;
79 e = BCExceptiontNotFoundInstance; 80 e = BCExceptiontNotFoundInstance;
80 return ""; 81 return CFX_ByteString();
81 } 82 }
82 results += ResultTemp->GetText(); 83 results += ResultTemp->GetText();
83 delete ResultTemp;
84 } 84 }
85 delete detectorResult;
86 return results; 85 return results;
87 } 86 }
87
88 CFX_ByteString CBC_PDF417Reader::Decode(CBC_BinaryBitmap* image, 88 CFX_ByteString CBC_PDF417Reader::Decode(CBC_BinaryBitmap* image,
89 int32_t hints, 89 int32_t hints,
90 int32_t& e) { 90 int32_t& e) {
91 CFX_ByteString bs = Decode(image, FALSE, 0, e); 91 CFX_ByteString bs = Decode(image, FALSE, 0, e);
92 BC_EXCEPTION_CHECK_ReturnValue(e, ""); 92 BC_EXCEPTION_CHECK_ReturnValue(e, "");
93 return bs; 93 return bs;
94 } 94 }
95 int32_t CBC_PDF417Reader::getMaxWidth(CBC_ResultPoint* p1, 95 int32_t CBC_PDF417Reader::getMaxWidth(CBC_ResultPoint* p1,
96 CBC_ResultPoint* p2) { 96 CBC_ResultPoint* p2) {
97 if (p1 == NULL || p2 == NULL) { 97 if (p1 == NULL || p2 == NULL) {
98 return 0; 98 return 0;
99 } 99 }
100 return (int32_t)FXSYS_fabs(p1->GetX() - p2->GetX()); 100 return (int32_t)FXSYS_fabs(p1->GetX() - p2->GetX());
101 } 101 }
102 int32_t CBC_PDF417Reader::getMinWidth(CBC_ResultPoint* p1, 102 int32_t CBC_PDF417Reader::getMinWidth(CBC_ResultPoint* p1,
103 CBC_ResultPoint* p2) { 103 CBC_ResultPoint* p2) {
104 if (!p1 || !p2) 104 if (!p1 || !p2)
105 return std::numeric_limits<int32_t>::max(); 105 return std::numeric_limits<int32_t>::max();
106 return (int32_t)FXSYS_fabs(p1->GetX() - p2->GetX()); 106 return (int32_t)FXSYS_fabs(p1->GetX() - p2->GetX());
107 } 107 }
108 int32_t CBC_PDF417Reader::getMaxCodewordWidth(CFX_PtrArray& p) { 108
109 int32_t a = 109 int32_t CBC_PDF417Reader::getMaxCodewordWidth(
110 getMaxWidth((CBC_ResultPoint*)p.GetAt(6), (CBC_ResultPoint*)p.GetAt(2)) * 110 const CFX_ArrayTemplate<CBC_ResultPoint*>& p) {
111 CBC_PDF417Common::MODULES_IN_CODEWORD / 111 int32_t a = getMaxWidth(p.GetAt(6), p.GetAt(2)) *
112 CBC_PDF417Common::MODULES_IN_STOP_PATTERN; 112 CBC_PDF417Common::MODULES_IN_CODEWORD /
113 int32_t b = 113 CBC_PDF417Common::MODULES_IN_STOP_PATTERN;
114 getMaxWidth((CBC_ResultPoint*)p.GetAt(7), (CBC_ResultPoint*)p.GetAt(3)) * 114 int32_t b = getMaxWidth(p.GetAt(7), p.GetAt(3)) *
115 CBC_PDF417Common::MODULES_IN_CODEWORD / 115 CBC_PDF417Common::MODULES_IN_CODEWORD /
116 CBC_PDF417Common::MODULES_IN_STOP_PATTERN; 116 CBC_PDF417Common::MODULES_IN_STOP_PATTERN;
117 int32_t c = getMaxWidth((CBC_ResultPoint*)p.GetAt(0), 117 int32_t c = std::min(a, getMaxWidth(p.GetAt(0), p.GetAt(4)));
118 (CBC_ResultPoint*)p.GetAt(4)) < a 118 int32_t d = std::min(b, getMaxWidth(p.GetAt(1), p.GetAt(5)));
119 ? getMaxWidth((CBC_ResultPoint*)p.GetAt(0), 119 return std::min(c, d);
120 (CBC_ResultPoint*)p.GetAt(4))
121 : a;
122 int32_t d = getMaxWidth((CBC_ResultPoint*)p.GetAt(1),
123 (CBC_ResultPoint*)p.GetAt(5)) < b
124 ? getMaxWidth((CBC_ResultPoint*)p.GetAt(1),
125 (CBC_ResultPoint*)p.GetAt(5))
126 : b;
127 return c < d ? c : d;
128 } 120 }
129 int32_t CBC_PDF417Reader::getMinCodewordWidth(CFX_PtrArray& p) { 121
130 int32_t a = 122 int32_t CBC_PDF417Reader::getMinCodewordWidth(
131 getMinWidth((CBC_ResultPoint*)p.GetAt(6), (CBC_ResultPoint*)p.GetAt(2)) * 123 const CFX_ArrayTemplate<CBC_ResultPoint*>& p) {
132 CBC_PDF417Common::MODULES_IN_CODEWORD / 124 int32_t a = getMinWidth(p.GetAt(6), p.GetAt(2)) *
133 CBC_PDF417Common::MODULES_IN_STOP_PATTERN; 125 CBC_PDF417Common::MODULES_IN_CODEWORD /
134 int32_t b = 126 CBC_PDF417Common::MODULES_IN_STOP_PATTERN;
135 getMinWidth((CBC_ResultPoint*)p.GetAt(7), (CBC_ResultPoint*)p.GetAt(3)) * 127 int32_t b = getMinWidth(p.GetAt(7), p.GetAt(3)) *
136 CBC_PDF417Common::MODULES_IN_CODEWORD / 128 CBC_PDF417Common::MODULES_IN_CODEWORD /
137 CBC_PDF417Common::MODULES_IN_STOP_PATTERN; 129 CBC_PDF417Common::MODULES_IN_STOP_PATTERN;
138 int32_t c = getMinWidth((CBC_ResultPoint*)p.GetAt(0), 130 int32_t c = std::min(a, getMinWidth(p.GetAt(0), p.GetAt(4)));
139 (CBC_ResultPoint*)p.GetAt(4)) < a 131 int32_t d = std::min(b, getMinWidth(p.GetAt(1), p.GetAt(5)));
140 ? getMinWidth((CBC_ResultPoint*)p.GetAt(0), 132 return std::min(c, d);
141 (CBC_ResultPoint*)p.GetAt(4))
142 : a;
143 int32_t d = getMinWidth((CBC_ResultPoint*)p.GetAt(1),
144 (CBC_ResultPoint*)p.GetAt(5)) < b
145 ? getMinWidth((CBC_ResultPoint*)p.GetAt(1),
146 (CBC_ResultPoint*)p.GetAt(5))
147 : b;
148 return c < d ? c : d;
149 } 133 }
OLDNEW
« no previous file with comments | « xfa/fxbarcode/pdf417/BC_PDF417Reader.h ('k') | xfa/fxbarcode/pdf417/BC_PDF417ScanningDecoder.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698