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

Side by Side Diff: xfa/src/fxbarcode/qrcode/BC_QRDetector.cpp

Issue 1172793002: Merge to XFA: Use stdint.h types throughout PDFium. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@xfa
Patch Set: Created 5 years, 6 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 2007 ZXing authors 8 * Copyright 2007 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");
(...skipping 19 matching lines...) Expand all
30 #include "BC_QRAlignmentPatternFinder.h" 30 #include "BC_QRAlignmentPatternFinder.h"
31 #include "BC_QRFinderPatternFinder.h" 31 #include "BC_QRFinderPatternFinder.h"
32 #include "BC_QRDetectorResult.h" 32 #include "BC_QRDetectorResult.h"
33 #include "BC_QRDetector.h" 33 #include "BC_QRDetector.h"
34 CBC_QRDetector::CBC_QRDetector(CBC_CommonBitMatrix *image): m_image(image) 34 CBC_QRDetector::CBC_QRDetector(CBC_CommonBitMatrix *image): m_image(image)
35 { 35 {
36 } 36 }
37 CBC_QRDetector::~CBC_QRDetector() 37 CBC_QRDetector::~CBC_QRDetector()
38 { 38 {
39 } 39 }
40 CBC_QRDetectorResult *CBC_QRDetector::Detect(FX_INT32 hints, FX_INT32 &e) 40 CBC_QRDetectorResult *CBC_QRDetector::Detect(int32_t hints, int32_t &e)
41 { 41 {
42 CBC_QRFinderPatternFinder finder(m_image); 42 CBC_QRFinderPatternFinder finder(m_image);
43 CBC_QRFinderPatternInfo* qpi = finder.Find(hints, e); 43 CBC_QRFinderPatternInfo* qpi = finder.Find(hints, e);
44 BC_EXCEPTION_CHECK_ReturnValue(e, NULL); 44 BC_EXCEPTION_CHECK_ReturnValue(e, NULL);
45 CBC_AutoPtr<CBC_QRFinderPatternInfo> info(qpi); 45 CBC_AutoPtr<CBC_QRFinderPatternInfo> info(qpi);
46 CBC_QRDetectorResult* qdr = ProcessFinderPatternInfo(info.get(), e); 46 CBC_QRDetectorResult* qdr = ProcessFinderPatternInfo(info.get(), e);
47 BC_EXCEPTION_CHECK_ReturnValue(e, NULL); 47 BC_EXCEPTION_CHECK_ReturnValue(e, NULL);
48 return qdr; 48 return qdr;
49 } 49 }
50 CBC_QRDetectorResult* CBC_QRDetector::ProcessFinderPatternInfo(CBC_QRFinderPatte rnInfo *info, FX_INT32 &e) 50 CBC_QRDetectorResult* CBC_QRDetector::ProcessFinderPatternInfo(CBC_QRFinderPatte rnInfo *info, int32_t &e)
51 { 51 {
52 CBC_AutoPtr<CBC_QRFinderPattern> topLeft(info->GetTopLeft()); 52 CBC_AutoPtr<CBC_QRFinderPattern> topLeft(info->GetTopLeft());
53 CBC_AutoPtr<CBC_QRFinderPattern> topRight(info->GetTopRight()); 53 CBC_AutoPtr<CBC_QRFinderPattern> topRight(info->GetTopRight());
54 CBC_AutoPtr<CBC_QRFinderPattern> bottomLeft(info->GetBottomLeft()); 54 CBC_AutoPtr<CBC_QRFinderPattern> bottomLeft(info->GetBottomLeft());
55 FX_FLOAT moduleSize = CalculateModuleSize(topLeft.get(), topRight.get(), bot tomLeft.get()); 55 FX_FLOAT moduleSize = CalculateModuleSize(topLeft.get(), topRight.get(), bot tomLeft.get());
56 if(moduleSize < 1.0f) { 56 if(moduleSize < 1.0f) {
57 e = BCExceptionRead; 57 e = BCExceptionRead;
58 BC_EXCEPTION_CHECK_ReturnValue(e, NULL); 58 BC_EXCEPTION_CHECK_ReturnValue(e, NULL);
59 } 59 }
60 FX_INT32 dimension = ComputeDimension(topLeft.get(), topRight.get(), bottomL eft.get(), moduleSize, e); 60 int32_t dimension = ComputeDimension(topLeft.get(), topRight.get(), bottomLe ft.get(), moduleSize, e);
61 BC_EXCEPTION_CHECK_ReturnValue(e, NULL); 61 BC_EXCEPTION_CHECK_ReturnValue(e, NULL);
62 CBC_QRCoderVersion *provisionalVersion = CBC_QRCoderVersion::GetProvisionalV ersionForDimension(dimension, e); 62 CBC_QRCoderVersion *provisionalVersion = CBC_QRCoderVersion::GetProvisionalV ersionForDimension(dimension, e);
63 BC_EXCEPTION_CHECK_ReturnValue(e, NULL); 63 BC_EXCEPTION_CHECK_ReturnValue(e, NULL);
64 FX_INT32 modulesBetweenFPCenters = provisionalVersion->GetDimensionForVersio n() - 7; 64 int32_t modulesBetweenFPCenters = provisionalVersion->GetDimensionForVersion () - 7;
65 CBC_QRAlignmentPattern * alignmentPattern = NULL; 65 CBC_QRAlignmentPattern * alignmentPattern = NULL;
66 if(provisionalVersion->GetAlignmentPatternCenters()->GetSize() > 0) { 66 if(provisionalVersion->GetAlignmentPatternCenters()->GetSize() > 0) {
67 FX_FLOAT bottomRightX = topRight->GetX() - topLeft->GetX() + bottomLeft ->GetX(); 67 FX_FLOAT bottomRightX = topRight->GetX() - topLeft->GetX() + bottomLeft ->GetX();
68 FX_FLOAT bottomRightY = topRight->GetY() - topLeft->GetY() + bottomLeft- >GetY(); 68 FX_FLOAT bottomRightY = topRight->GetY() - topLeft->GetY() + bottomLeft- >GetY();
69 FX_FLOAT correctionToTopLeft = 1.0f - 3.0f / (FX_FLOAT) modulesBetweenFP Centers; 69 FX_FLOAT correctionToTopLeft = 1.0f - 3.0f / (FX_FLOAT) modulesBetweenFP Centers;
70 FX_FLOAT xtemp = (topLeft->GetX() + correctionToTopLeft * (bottomRightX - topLeft->GetX())); 70 FX_FLOAT xtemp = (topLeft->GetX() + correctionToTopLeft * (bottomRightX - topLeft->GetX()));
71 FX_INT32 estAlignmentX = (FX_INT32)xtemp ; 71 int32_t estAlignmentX = (int32_t)xtemp ;
72 FX_FLOAT ytemp = (topLeft->GetY() + correctionToTopLeft * (bottomRightY - topLeft->GetY())); 72 FX_FLOAT ytemp = (topLeft->GetY() + correctionToTopLeft * (bottomRightY - topLeft->GetY()));
73 FX_INT32 estAlignmentY = (FX_INT32)ytemp; 73 int32_t estAlignmentY = (int32_t)ytemp;
74 for(FX_INT32 i = 4; i <= 16; i <<= 1) { 74 for(int32_t i = 4; i <= 16; i <<= 1) {
75 CBC_QRAlignmentPattern *temp = FindAlignmentInRegion(moduleSize, est AlignmentX, estAlignmentY, (FX_FLOAT) i, e); 75 CBC_QRAlignmentPattern *temp = FindAlignmentInRegion(moduleSize, est AlignmentX, estAlignmentY, (FX_FLOAT) i, e);
76 alignmentPattern = temp; 76 alignmentPattern = temp;
77 break; 77 break;
78 } 78 }
79 } 79 }
80 CBC_CommonBitMatrix *bits = SampleGrid(m_image, topLeft.get(), topRight.get( ), bottomLeft.get(), (CBC_ResultPoint*)(alignmentPattern), dimension, e); 80 CBC_CommonBitMatrix *bits = SampleGrid(m_image, topLeft.get(), topRight.get( ), bottomLeft.get(), (CBC_ResultPoint*)(alignmentPattern), dimension, e);
81 BC_EXCEPTION_CHECK_ReturnValue(e, NULL); 81 BC_EXCEPTION_CHECK_ReturnValue(e, NULL);
82 CFX_PtrArray *points = FX_NEW CFX_PtrArray; 82 CFX_PtrArray *points = FX_NEW CFX_PtrArray;
83 if(alignmentPattern == NULL) { 83 if(alignmentPattern == NULL) {
84 points->Add(bottomLeft.release()); 84 points->Add(bottomLeft.release());
85 points->Add(topLeft.release()); 85 points->Add(topLeft.release());
86 points->Add(topRight.release()); 86 points->Add(topRight.release());
87 } else { 87 } else {
88 points->Add(bottomLeft.release()); 88 points->Add(bottomLeft.release());
89 points->Add(topLeft.release()); 89 points->Add(topLeft.release());
90 points->Add(topRight.release()); 90 points->Add(topRight.release());
91 points->Add(alignmentPattern); 91 points->Add(alignmentPattern);
92 } 92 }
93 return FX_NEW CBC_QRDetectorResult(bits, points); 93 return FX_NEW CBC_QRDetectorResult(bits, points);
94 } 94 }
95 CBC_CommonBitMatrix *CBC_QRDetector::SampleGrid(CBC_CommonBitMatrix *image, CBC_ ResultPoint *topLeft, CBC_ResultPoint *topRight, 95 CBC_CommonBitMatrix *CBC_QRDetector::SampleGrid(CBC_CommonBitMatrix *image, CBC_ ResultPoint *topLeft, CBC_ResultPoint *topRight,
96 CBC_ResultPoint *bottomLeft, CBC_ResultPoint* alignmentPattern, 96 CBC_ResultPoint *bottomLeft, CBC_ResultPoint* alignmentPattern,
97 FX_INT32 dimension, FX_INT32 &e) 97 int32_t dimension, int32_t &e)
98 { 98 {
99 FX_FLOAT dimMinusThree = (FX_FLOAT) dimension - 3.5f; 99 FX_FLOAT dimMinusThree = (FX_FLOAT) dimension - 3.5f;
100 FX_FLOAT bottomRightX; 100 FX_FLOAT bottomRightX;
101 FX_FLOAT bottomRightY; 101 FX_FLOAT bottomRightY;
102 FX_FLOAT sourceBottomRightX; 102 FX_FLOAT sourceBottomRightX;
103 FX_FLOAT sourceBottomRightY; 103 FX_FLOAT sourceBottomRightY;
104 if (alignmentPattern != NULL) { 104 if (alignmentPattern != NULL) {
105 bottomRightX = alignmentPattern->GetX(); 105 bottomRightX = alignmentPattern->GetX();
106 bottomRightY = alignmentPattern->GetY(); 106 bottomRightY = alignmentPattern->GetY();
107 sourceBottomRightX = sourceBottomRightY = dimMinusThree - 3.0f; 107 sourceBottomRightX = sourceBottomRightY = dimMinusThree - 3.0f;
(...skipping 17 matching lines...) Expand all
125 topLeft->GetY(), 125 topLeft->GetY(),
126 topRight->GetX(), 126 topRight->GetX(),
127 topRight->GetY(), 127 topRight->GetY(),
128 bottomRightX, 128 bottomRightX,
129 bottomRightY, 129 bottomRightY,
130 bottomLeft->GetX(), 130 bottomLeft->GetX(),
131 bottomLeft->GetY(), e); 131 bottomLeft->GetY(), e);
132 BC_EXCEPTION_CHECK_ReturnValue(e, NULL); 132 BC_EXCEPTION_CHECK_ReturnValue(e, NULL);
133 return cbm; 133 return cbm;
134 } 134 }
135 FX_INT32 CBC_QRDetector::ComputeDimension(CBC_ResultPoint *topLeft, CBC_ResultPo int *topRight, 135 int32_t CBC_QRDetector::ComputeDimension(CBC_ResultPoint *topLeft, CBC_ResultPoi nt *topRight,
136 CBC_ResultPoint *bottomLeft, FX_FLOAT moduleSize, FX_INT32 &e) 136 CBC_ResultPoint *bottomLeft, FX_FLOAT moduleSize, int32_t &e)
137 { 137 {
138 FX_INT32 tltrCentersDimension = Round(CBC_QRFinderPatternFinder::Distance(to pLeft, topRight) / moduleSize); 138 int32_t tltrCentersDimension = Round(CBC_QRFinderPatternFinder::Distance(top Left, topRight) / moduleSize);
139 FX_INT32 tlblCentersDimension = Round(CBC_QRFinderPatternFinder::Distance(to pLeft, bottomLeft) / moduleSize); 139 int32_t tlblCentersDimension = Round(CBC_QRFinderPatternFinder::Distance(top Left, bottomLeft) / moduleSize);
140 FX_INT32 dimension = ((tltrCentersDimension + tlblCentersDimension) >> 1) + 7; 140 int32_t dimension = ((tltrCentersDimension + tlblCentersDimension) >> 1) + 7 ;
141 switch(dimension & 0x03) { 141 switch(dimension & 0x03) {
142 case 0: 142 case 0:
143 dimension++; 143 dimension++;
144 break; 144 break;
145 case 2: 145 case 2:
146 dimension--; 146 dimension--;
147 break; 147 break;
148 case 3: { 148 case 3: {
149 e = BCExceptionRead; 149 e = BCExceptionRead;
150 BC_EXCEPTION_CHECK_ReturnValue(e, 0); 150 BC_EXCEPTION_CHECK_ReturnValue(e, 0);
151 } 151 }
152 } 152 }
153 return dimension; 153 return dimension;
154 } 154 }
155 FX_FLOAT CBC_QRDetector::CalculateModuleSize(CBC_ResultPoint *topLeft, CBC_Resul tPoint *topRight, CBC_ResultPoint *bottomLeft) 155 FX_FLOAT CBC_QRDetector::CalculateModuleSize(CBC_ResultPoint *topLeft, CBC_Resul tPoint *topRight, CBC_ResultPoint *bottomLeft)
156 { 156 {
157 return (CalculateModuleSizeOneWay(topLeft, topRight) + CalculateModuleSizeOn eWay(topLeft, bottomLeft)) / 2.0f; 157 return (CalculateModuleSizeOneWay(topLeft, topRight) + CalculateModuleSizeOn eWay(topLeft, bottomLeft)) / 2.0f;
158 } 158 }
159 FX_FLOAT CBC_QRDetector::CalculateModuleSizeOneWay(CBC_ResultPoint *pattern, CBC _ResultPoint *otherPattern) 159 FX_FLOAT CBC_QRDetector::CalculateModuleSizeOneWay(CBC_ResultPoint *pattern, CBC _ResultPoint *otherPattern)
160 { 160 {
161 FX_FLOAT moduleSizeEst1 = SizeOfBlackWhiteBlackRunBothWays((FX_INT32) patter n->GetX(), 161 FX_FLOAT moduleSizeEst1 = SizeOfBlackWhiteBlackRunBothWays((int32_t) pattern ->GetX(),
162 (FX_INT32) pattern->GetY(), 162 (int32_t) pattern->GetY(),
163 (FX_INT32) otherPattern->GetX(), 163 (int32_t) otherPattern->GetX(),
164 (FX_INT32) otherPattern->GetY()); 164 (int32_t) otherPattern->GetY());
165 FX_FLOAT moduleSizeEst2 = SizeOfBlackWhiteBlackRunBothWays((FX_INT32) otherP attern->GetX(), 165 FX_FLOAT moduleSizeEst2 = SizeOfBlackWhiteBlackRunBothWays((int32_t) otherPa ttern->GetX(),
166 (FX_INT32) otherPattern->GetY(), 166 (int32_t) otherPattern->GetY(),
167 (FX_INT32) pattern->GetX(), 167 (int32_t) pattern->GetX(),
168 (FX_INT32) pattern->GetY()); 168 (int32_t) pattern->GetY());
169 if (FXSYS_isnan(moduleSizeEst1)) { 169 if (FXSYS_isnan(moduleSizeEst1)) {
170 return moduleSizeEst2; 170 return moduleSizeEst2;
171 } 171 }
172 if (FXSYS_isnan(moduleSizeEst2)) { 172 if (FXSYS_isnan(moduleSizeEst2)) {
173 return moduleSizeEst1; 173 return moduleSizeEst1;
174 } 174 }
175 return (moduleSizeEst1 + moduleSizeEst2) / 14.0f; 175 return (moduleSizeEst1 + moduleSizeEst2) / 14.0f;
176 } 176 }
177 FX_INT32 CBC_QRDetector::Round(FX_FLOAT d) 177 int32_t CBC_QRDetector::Round(FX_FLOAT d)
178 { 178 {
179 return (FX_INT32)(d + 0.5f); 179 return (int32_t)(d + 0.5f);
180 } 180 }
181 FX_FLOAT CBC_QRDetector::SizeOfBlackWhiteBlackRunBothWays(FX_INT32 fromX, FX_INT 32 fromY, FX_INT32 toX, FX_INT32 toY) 181 FX_FLOAT CBC_QRDetector::SizeOfBlackWhiteBlackRunBothWays(int32_t fromX, int32_t fromY, int32_t toX, int32_t toY)
182 { 182 {
183 FX_FLOAT result = SizeOfBlackWhiteBlackRun(fromX, fromY, toX, toY); 183 FX_FLOAT result = SizeOfBlackWhiteBlackRun(fromX, fromY, toX, toY);
184 FX_INT32 otherToX = fromX - (toX - fromX); 184 int32_t otherToX = fromX - (toX - fromX);
185 if (otherToX < 0) { 185 if (otherToX < 0) {
186 otherToX = -1; 186 otherToX = -1;
187 } else if (otherToX >= m_image->GetWidth()) { 187 } else if (otherToX >= m_image->GetWidth()) {
188 otherToX = m_image->GetWidth(); 188 otherToX = m_image->GetWidth();
189 } 189 }
190 FX_INT32 otherToY = fromY - (toY - fromY); 190 int32_t otherToY = fromY - (toY - fromY);
191 if (otherToY < 0) { 191 if (otherToY < 0) {
192 otherToY = -1; 192 otherToY = -1;
193 } else if (otherToY >= m_image->GetHeight()) { 193 } else if (otherToY >= m_image->GetHeight()) {
194 otherToY = m_image->GetHeight(); 194 otherToY = m_image->GetHeight();
195 } 195 }
196 result += SizeOfBlackWhiteBlackRun(fromX, fromY, otherToX, otherToY); 196 result += SizeOfBlackWhiteBlackRun(fromX, fromY, otherToX, otherToY);
197 return result - 1.0f; 197 return result - 1.0f;
198 } 198 }
199 FX_FLOAT CBC_QRDetector::SizeOfBlackWhiteBlackRun(FX_INT32 fromX, FX_INT32 fromY , FX_INT32 toX, FX_INT32 toY) 199 FX_FLOAT CBC_QRDetector::SizeOfBlackWhiteBlackRun(int32_t fromX, int32_t fromY, int32_t toX, int32_t toY)
200 { 200 {
201 FX_BOOL steep = FXSYS_abs(toY - fromY) > FXSYS_abs(toX - fromX); 201 FX_BOOL steep = FXSYS_abs(toY - fromY) > FXSYS_abs(toX - fromX);
202 if (steep) { 202 if (steep) {
203 FX_INT32 temp = fromX; 203 int32_t temp = fromX;
204 fromX = fromY; 204 fromX = fromY;
205 fromY = temp; 205 fromY = temp;
206 temp = toX; 206 temp = toX;
207 toX = toY; 207 toX = toY;
208 toY = temp; 208 toY = temp;
209 } 209 }
210 FX_INT32 dx = FXSYS_abs(toX - fromX); 210 int32_t dx = FXSYS_abs(toX - fromX);
211 FX_INT32 dy = FXSYS_abs(toY - fromY); 211 int32_t dy = FXSYS_abs(toY - fromY);
212 FX_INT32 error = -dx >> 1; 212 int32_t error = -dx >> 1;
213 FX_INT32 ystep = fromY < toY ? 1 : -1; 213 int32_t ystep = fromY < toY ? 1 : -1;
214 FX_INT32 xstep = fromX < toX ? 1 : -1; 214 int32_t xstep = fromX < toX ? 1 : -1;
215 FX_INT32 state = 0; 215 int32_t state = 0;
216 for (FX_INT32 x = fromX, y = fromY; x != toX; x += xstep) { 216 for (int32_t x = fromX, y = fromY; x != toX; x += xstep) {
217 FX_INT32 realX = steep ? y : x; 217 int32_t realX = steep ? y : x;
218 FX_INT32 realY = steep ? x : y; 218 int32_t realY = steep ? x : y;
219 if (state == 1) { 219 if (state == 1) {
220 if (m_image->Get(realX, realY)) { 220 if (m_image->Get(realX, realY)) {
221 state++; 221 state++;
222 } 222 }
223 } else { 223 } else {
224 if (!m_image->Get(realX, realY)) { 224 if (!m_image->Get(realX, realY)) {
225 state++; 225 state++;
226 } 226 }
227 } 227 }
228 if (state == 3) { 228 if (state == 3) {
229 FX_INT32 diffX = x - fromX; 229 int32_t diffX = x - fromX;
230 FX_INT32 diffY = y - fromY; 230 int32_t diffY = y - fromY;
231 return (FX_FLOAT) sqrt((double) (diffX * diffX + diffY * diffY)); 231 return (FX_FLOAT) sqrt((double) (diffX * diffX + diffY * diffY));
232 } 232 }
233 error += dy; 233 error += dy;
234 if (error > 0) { 234 if (error > 0) {
235 y += ystep; 235 y += ystep;
236 error -= dx; 236 error -= dx;
237 } 237 }
238 } 238 }
239 FX_INT32 diffX = toX - fromX; 239 int32_t diffX = toX - fromX;
240 FX_INT32 diffY = toY - fromY; 240 int32_t diffY = toY - fromY;
241 return (FX_FLOAT) sqrt((double) (diffX * diffX + diffY * diffY)); 241 return (FX_FLOAT) sqrt((double) (diffX * diffX + diffY * diffY));
242 } 242 }
243 CBC_QRAlignmentPattern *CBC_QRDetector::FindAlignmentInRegion(FX_FLOAT overallEs tModuleSize, FX_INT32 estAlignmentX, 243 CBC_QRAlignmentPattern *CBC_QRDetector::FindAlignmentInRegion(FX_FLOAT overallEs tModuleSize, int32_t estAlignmentX,
244 FX_INT32 estAlignmentY, FX_FLOAT allowanceFactor, FX_INT32 &e) 244 int32_t estAlignmentY, FX_FLOAT allowanceFactor, int32_t &e)
245 { 245 {
246 FX_INT32 allowance = (FX_INT32) (allowanceFactor * overallEstModuleSize); 246 int32_t allowance = (int32_t) (allowanceFactor * overallEstModuleSize);
247 FX_INT32 alignmentAreaLeftX = FX_MAX(0, estAlignmentX - allowance); 247 int32_t alignmentAreaLeftX = FX_MAX(0, estAlignmentX - allowance);
248 FX_INT32 alignmentAreaRightX = FX_MIN(m_image->GetWidth() - 1, estAlignmentX + allowance); 248 int32_t alignmentAreaRightX = FX_MIN(m_image->GetWidth() - 1, estAlignmentX + allowance);
249 if (alignmentAreaRightX - alignmentAreaLeftX < overallEstModuleSize * 3) { 249 if (alignmentAreaRightX - alignmentAreaLeftX < overallEstModuleSize * 3) {
250 e = BCExceptionRead; 250 e = BCExceptionRead;
251 BC_EXCEPTION_CHECK_ReturnValue(e, NULL); 251 BC_EXCEPTION_CHECK_ReturnValue(e, NULL);
252 } 252 }
253 FX_INT32 alignmentAreaTopY = FX_MAX(0, estAlignmentY - allowance); 253 int32_t alignmentAreaTopY = FX_MAX(0, estAlignmentY - allowance);
254 FX_INT32 alignmentAreaBottomY = FX_MIN(m_image->GetHeight() - 1, estAlignmen tY + allowance); 254 int32_t alignmentAreaBottomY = FX_MIN(m_image->GetHeight() - 1, estAlignment Y + allowance);
255 CBC_QRAlignmentPatternFinder alignmentFinder(m_image, 255 CBC_QRAlignmentPatternFinder alignmentFinder(m_image,
256 alignmentAreaLeftX, 256 alignmentAreaLeftX,
257 alignmentAreaTopY, 257 alignmentAreaTopY,
258 alignmentAreaRightX - alignmentAreaLeftX, 258 alignmentAreaRightX - alignmentAreaLeftX,
259 alignmentAreaBottomY - alignmentAreaTopY, 259 alignmentAreaBottomY - alignmentAreaTopY,
260 overallEstModuleSize); 260 overallEstModuleSize);
261 CBC_QRAlignmentPattern *qap = alignmentFinder.Find(e); 261 CBC_QRAlignmentPattern *qap = alignmentFinder.Find(e);
262 BC_EXCEPTION_CHECK_ReturnValue(e, NULL); 262 BC_EXCEPTION_CHECK_ReturnValue(e, NULL);
263 return qap; 263 return qap;
264 } 264 }
OLDNEW
« no previous file with comments | « xfa/src/fxbarcode/qrcode/BC_QRDetector.h ('k') | xfa/src/fxbarcode/qrcode/BC_QRDetectorResult.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698