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"); |
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/fxbarcode/common/BC_CommonBitMatrix.h" | 23 #include "xfa/fxbarcode/common/BC_CommonBitMatrix.h" |
24 #include "xfa/fxbarcode/qrcode/BC_QRDataMask.h" | 24 #include "xfa/fxbarcode/qrcode/BC_QRDataMask.h" |
25 #include "xfa/fxbarcode/utils.h" | 25 #include "xfa/fxbarcode/utils.h" |
26 | 26 |
27 static int32_t N_DATA_MASKS = 0; | 27 namespace { |
28 CFX_PtrArray* CBC_QRDataMask::DATA_MASKS = NULL; | 28 |
| 29 int32_t N_DATA_MASKS = 0; |
| 30 CFX_ArrayTemplate<CBC_QRDataMask*>* DATA_MASKS = nullptr; |
| 31 |
| 32 } // namespace |
29 | 33 |
30 void CBC_QRDataMask::Initialize() { | 34 void CBC_QRDataMask::Initialize() { |
31 DATA_MASKS = new CFX_PtrArray(); | 35 DATA_MASKS = new CFX_ArrayTemplate<CBC_QRDataMask*>(); |
32 N_DATA_MASKS = BuildDataMasks(); | 36 N_DATA_MASKS = BuildDataMasks(); |
33 } | 37 } |
| 38 |
34 void CBC_QRDataMask::Finalize() { | 39 void CBC_QRDataMask::Finalize() { |
35 Destroy(); | 40 Destroy(); |
36 delete DATA_MASKS; | 41 delete DATA_MASKS; |
| 42 DATA_MASKS = nullptr; |
37 } | 43 } |
| 44 |
38 void CBC_QRDataMask::Destroy() { | 45 void CBC_QRDataMask::Destroy() { |
39 int32_t i; | 46 for (int32_t i = 0; i < N_DATA_MASKS; ++i) |
40 for (i = 0; i < N_DATA_MASKS; i++) { | 47 delete (*DATA_MASKS)[i]; |
41 CBC_QRDataMask* p = (CBC_QRDataMask*)(*DATA_MASKS)[i]; | 48 } |
42 if (p) { | 49 |
43 delete p; | 50 void CBC_QRDataMask::UnmaskBitMatrix(CBC_CommonBitMatrix* bits, |
| 51 int32_t dimension) { |
| 52 for (int32_t i = 0; i < dimension; i++) { |
| 53 for (int32_t j = 0; j < dimension; j++) { |
| 54 if (IsMasked(i, j)) |
| 55 bits->Flip(j, i); |
44 } | 56 } |
45 } | 57 } |
46 } | 58 } |
47 void CBC_QRDataMask::UnmaskBitMatirx(CBC_CommonBitMatrix* bits, | 59 |
48 int32_t dimension) { | |
49 for (int32_t i = 0; i < dimension; i++) { | |
50 for (int32_t j = 0; j < dimension; j++) { | |
51 if (IsMasked(i, j)) { | |
52 bits->Flip(j, i); | |
53 } | |
54 } | |
55 } | |
56 } | |
57 CBC_QRDataMask* CBC_QRDataMask::ForReference(int32_t reference, int32_t& e) { | 60 CBC_QRDataMask* CBC_QRDataMask::ForReference(int32_t reference, int32_t& e) { |
58 if (reference < 0 || reference > 7) { | 61 if (reference < 0 || reference > 7) { |
59 e = BCExceptionReferenceMustBeBetween0And7; | 62 e = BCExceptionReferenceMustBeBetween0And7; |
60 BC_EXCEPTION_CHECK_ReturnValue(e, NULL); | 63 BC_EXCEPTION_CHECK_ReturnValue(e, nullptr); |
61 } | 64 } |
62 return (CBC_QRDataMask*)(*DATA_MASKS)[reference]; | 65 return (*DATA_MASKS)[reference]; |
63 } | 66 } |
| 67 |
64 class DataMask000 : public CBC_QRDataMask { | 68 class DataMask000 : public CBC_QRDataMask { |
65 public: | 69 public: |
66 FX_BOOL IsMasked(int32_t x, int32_t y) { return ((x + y) % 2) == 0; } | 70 FX_BOOL IsMasked(int32_t x, int32_t y) { return ((x + y) % 2) == 0; } |
67 }; | 71 }; |
68 class DataMask001 : public CBC_QRDataMask { | 72 class DataMask001 : public CBC_QRDataMask { |
69 public: | 73 public: |
70 FX_BOOL IsMasked(int32_t x, int32_t y) { return (x % 2) == 0; } | 74 FX_BOOL IsMasked(int32_t x, int32_t y) { return (x % 2) == 0; } |
71 }; | 75 }; |
72 class DataMask010 : public CBC_QRDataMask { | 76 class DataMask010 : public CBC_QRDataMask { |
73 public: | 77 public: |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
109 DATA_MASKS->Add(new DataMask010); | 113 DATA_MASKS->Add(new DataMask010); |
110 DATA_MASKS->Add(new DataMask011); | 114 DATA_MASKS->Add(new DataMask011); |
111 DATA_MASKS->Add(new DataMask100); | 115 DATA_MASKS->Add(new DataMask100); |
112 DATA_MASKS->Add(new DataMask101); | 116 DATA_MASKS->Add(new DataMask101); |
113 DATA_MASKS->Add(new DataMask110); | 117 DATA_MASKS->Add(new DataMask110); |
114 DATA_MASKS->Add(new DataMask111); | 118 DATA_MASKS->Add(new DataMask111); |
115 return DATA_MASKS->GetSize(); | 119 return DATA_MASKS->GetSize(); |
116 } | 120 } |
117 CBC_QRDataMask::CBC_QRDataMask() {} | 121 CBC_QRDataMask::CBC_QRDataMask() {} |
118 CBC_QRDataMask::~CBC_QRDataMask() {} | 122 CBC_QRDataMask::~CBC_QRDataMask() {} |
OLD | NEW |