OLD | NEW |
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 11 matching lines...) Expand all Loading... |
22 | 22 |
23 #include "xfa/fxbarcode/datamatrix/BC_DataMatrixBitMatrixParser.h" | 23 #include "xfa/fxbarcode/datamatrix/BC_DataMatrixBitMatrixParser.h" |
24 | 24 |
25 #include <memory> | 25 #include <memory> |
26 | 26 |
27 #include "xfa/fxbarcode/common/BC_CommonBitMatrix.h" | 27 #include "xfa/fxbarcode/common/BC_CommonBitMatrix.h" |
28 #include "xfa/fxbarcode/datamatrix/BC_DataMatrixVersion.h" | 28 #include "xfa/fxbarcode/datamatrix/BC_DataMatrixVersion.h" |
29 #include "xfa/fxbarcode/utils.h" | 29 #include "xfa/fxbarcode/utils.h" |
30 | 30 |
31 CBC_DataMatrixBitMatrixParser::CBC_DataMatrixBitMatrixParser() { | 31 CBC_DataMatrixBitMatrixParser::CBC_DataMatrixBitMatrixParser() { |
32 m_mappingBitMatrix = NULL; | 32 m_mappingBitMatrix = nullptr; |
33 m_version = NULL; | 33 m_version = nullptr; |
34 m_readMappingMatrix = NULL; | 34 m_readMappingMatrix = nullptr; |
35 } | 35 } |
36 void CBC_DataMatrixBitMatrixParser::Init(CBC_CommonBitMatrix* bitMatrix, | 36 void CBC_DataMatrixBitMatrixParser::Init(CBC_CommonBitMatrix* bitMatrix, |
37 int32_t& e) { | 37 int32_t& e) { |
38 int32_t dimension = bitMatrix->GetHeight(); | 38 int32_t dimension = bitMatrix->GetHeight(); |
39 if (dimension < 8 || dimension > 144 || (dimension & 0x01) != 0) { | 39 if (dimension < 8 || dimension > 144 || (dimension & 0x01) != 0) { |
40 e = BCExceptionFormatException; | 40 e = BCExceptionFormatException; |
41 return; | 41 return; |
42 } | 42 } |
43 m_version = ReadVersion(bitMatrix, e); | 43 m_version = ReadVersion(bitMatrix, e); |
44 BC_EXCEPTION_CHECK_ReturnVoid(e); | 44 BC_EXCEPTION_CHECK_ReturnVoid(e); |
(...skipping 10 matching lines...) Expand all Loading... |
55 CBC_DataMatrixVersion* CBC_DataMatrixBitMatrixParser::GetVersion() { | 55 CBC_DataMatrixVersion* CBC_DataMatrixBitMatrixParser::GetVersion() { |
56 return m_version; | 56 return m_version; |
57 } | 57 } |
58 CBC_DataMatrixVersion* CBC_DataMatrixBitMatrixParser::ReadVersion( | 58 CBC_DataMatrixVersion* CBC_DataMatrixBitMatrixParser::ReadVersion( |
59 CBC_CommonBitMatrix* bitMatrix, | 59 CBC_CommonBitMatrix* bitMatrix, |
60 int32_t& e) { | 60 int32_t& e) { |
61 int32_t rows = bitMatrix->GetHeight(); | 61 int32_t rows = bitMatrix->GetHeight(); |
62 int32_t columns = bitMatrix->GetWidth(); | 62 int32_t columns = bitMatrix->GetWidth(); |
63 CBC_DataMatrixVersion* temp = | 63 CBC_DataMatrixVersion* temp = |
64 CBC_DataMatrixVersion::GetVersionForDimensions(rows, columns, e); | 64 CBC_DataMatrixVersion::GetVersionForDimensions(rows, columns, e); |
65 BC_EXCEPTION_CHECK_ReturnValue(e, NULL); | 65 BC_EXCEPTION_CHECK_ReturnValue(e, nullptr); |
66 return temp; | 66 return temp; |
67 } | 67 } |
68 CFX_ByteArray* CBC_DataMatrixBitMatrixParser::ReadCodewords(int32_t& e) { | 68 CFX_ByteArray* CBC_DataMatrixBitMatrixParser::ReadCodewords(int32_t& e) { |
69 std::unique_ptr<CFX_ByteArray> result(new CFX_ByteArray()); | 69 std::unique_ptr<CFX_ByteArray> result(new CFX_ByteArray()); |
70 result->SetSize(m_version->GetTotalCodewords()); | 70 result->SetSize(m_version->GetTotalCodewords()); |
71 int32_t resultOffset = 0; | 71 int32_t resultOffset = 0; |
72 int32_t row = 4; | 72 int32_t row = 4; |
73 int32_t column = 0; | 73 int32_t column = 0; |
74 int32_t numRows = m_mappingBitMatrix->GetHeight(); | 74 int32_t numRows = m_mappingBitMatrix->GetHeight(); |
75 int32_t numColumns = m_mappingBitMatrix->GetWidth(); | 75 int32_t numColumns = m_mappingBitMatrix->GetWidth(); |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
125 } | 125 } |
126 row += 2; | 126 row += 2; |
127 column -= 2; | 127 column -= 2; |
128 } while ((row < numRows) && (column >= 0)); | 128 } while ((row < numRows) && (column >= 0)); |
129 row += 3; | 129 row += 3; |
130 column += 1; | 130 column += 1; |
131 } | 131 } |
132 } while ((row < numRows) || (column < numColumns)); | 132 } while ((row < numRows) || (column < numColumns)); |
133 if (resultOffset != m_version->GetTotalCodewords()) { | 133 if (resultOffset != m_version->GetTotalCodewords()) { |
134 e = BCExceptionFormatException; | 134 e = BCExceptionFormatException; |
135 return NULL; | 135 return nullptr; |
136 } | 136 } |
137 return result.release(); | 137 return result.release(); |
138 } | 138 } |
139 FX_BOOL CBC_DataMatrixBitMatrixParser::ReadModule(int32_t row, | 139 FX_BOOL CBC_DataMatrixBitMatrixParser::ReadModule(int32_t row, |
140 int32_t column, | 140 int32_t column, |
141 int32_t numRows, | 141 int32_t numRows, |
142 int32_t numColumns) { | 142 int32_t numColumns) { |
143 if (row < 0) { | 143 if (row < 0) { |
144 row += numRows; | 144 row += numRows; |
145 column += 4 - ((numRows + 4) & 0x07); | 145 column += 4 - ((numRows + 4) & 0x07); |
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
333 } | 333 } |
334 return currentByte; | 334 return currentByte; |
335 } | 335 } |
336 CBC_CommonBitMatrix* CBC_DataMatrixBitMatrixParser::ExtractDataRegion( | 336 CBC_CommonBitMatrix* CBC_DataMatrixBitMatrixParser::ExtractDataRegion( |
337 CBC_CommonBitMatrix* bitMatrix, | 337 CBC_CommonBitMatrix* bitMatrix, |
338 int32_t& e) { | 338 int32_t& e) { |
339 int32_t symbolSizeRows = m_version->GetSymbolSizeRows(); | 339 int32_t symbolSizeRows = m_version->GetSymbolSizeRows(); |
340 int32_t symbolSizeColumns = m_version->GetSymbolSizeColumns(); | 340 int32_t symbolSizeColumns = m_version->GetSymbolSizeColumns(); |
341 if (bitMatrix->GetHeight() != symbolSizeRows) { | 341 if (bitMatrix->GetHeight() != symbolSizeRows) { |
342 e = BCExceptionCanNotCallGetDimensionOnNonSquareMatrix; | 342 e = BCExceptionCanNotCallGetDimensionOnNonSquareMatrix; |
343 return NULL; | 343 return nullptr; |
344 } | 344 } |
345 int32_t dataRegionSizeRows = m_version->GetDataRegionSizeRows(); | 345 int32_t dataRegionSizeRows = m_version->GetDataRegionSizeRows(); |
346 int32_t dataRegionSizeColumns = m_version->GetDataRegionSizeColumns(); | 346 int32_t dataRegionSizeColumns = m_version->GetDataRegionSizeColumns(); |
347 int32_t numDataRegionsRow = symbolSizeRows / dataRegionSizeRows; | 347 int32_t numDataRegionsRow = symbolSizeRows / dataRegionSizeRows; |
348 int32_t numDataRegionsColumn = symbolSizeColumns / dataRegionSizeColumns; | 348 int32_t numDataRegionsColumn = symbolSizeColumns / dataRegionSizeColumns; |
349 int32_t sizeDataRegionRow = numDataRegionsRow * dataRegionSizeRows; | 349 int32_t sizeDataRegionRow = numDataRegionsRow * dataRegionSizeRows; |
350 int32_t sizeDataRegionColumn = numDataRegionsColumn * dataRegionSizeColumns; | 350 int32_t sizeDataRegionColumn = numDataRegionsColumn * dataRegionSizeColumns; |
351 CBC_CommonBitMatrix* bitMatrixWithoutAlignment = new CBC_CommonBitMatrix(); | 351 CBC_CommonBitMatrix* bitMatrixWithoutAlignment = new CBC_CommonBitMatrix(); |
352 bitMatrixWithoutAlignment->Init(sizeDataRegionColumn, sizeDataRegionRow); | 352 bitMatrixWithoutAlignment->Init(sizeDataRegionColumn, sizeDataRegionRow); |
353 int32_t dataRegionRow; | 353 int32_t dataRegionRow; |
(...skipping 15 matching lines...) Expand all Loading... |
369 if (bitMatrix->Get(readColumnOffset, readRowOffset)) { | 369 if (bitMatrix->Get(readColumnOffset, readRowOffset)) { |
370 int32_t writeColumnOffset = dataRegionColumnOffset + j; | 370 int32_t writeColumnOffset = dataRegionColumnOffset + j; |
371 bitMatrixWithoutAlignment->Set(writeColumnOffset, writeRowOffset); | 371 bitMatrixWithoutAlignment->Set(writeColumnOffset, writeRowOffset); |
372 } | 372 } |
373 } | 373 } |
374 } | 374 } |
375 } | 375 } |
376 } | 376 } |
377 return bitMatrixWithoutAlignment; | 377 return bitMatrixWithoutAlignment; |
378 } | 378 } |
OLD | NEW |