| 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 2008 ZXing authors | 8 * Copyright 2008 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 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 42 #include "BC_Base256Encoder.h" | 42 #include "BC_Base256Encoder.h" |
| 43 #include "BC_ASCIIEncoder.h" | 43 #include "BC_ASCIIEncoder.h" |
| 44 #include "BC_HighLevelEncoder.h" | 44 #include "BC_HighLevelEncoder.h" |
| 45 #include "BC_DataMatrixWriter.h" | 45 #include "BC_DataMatrixWriter.h" |
| 46 CBC_DataMatrixWriter::CBC_DataMatrixWriter() | 46 CBC_DataMatrixWriter::CBC_DataMatrixWriter() |
| 47 { | 47 { |
| 48 } | 48 } |
| 49 CBC_DataMatrixWriter::~CBC_DataMatrixWriter() | 49 CBC_DataMatrixWriter::~CBC_DataMatrixWriter() |
| 50 { | 50 { |
| 51 } | 51 } |
| 52 FX_BOOL CBC_DataMatrixWriter::SetErrorCorrectionLevel (FX_INT32 level) | 52 FX_BOOL CBC_DataMatrixWriter::SetErrorCorrectionLevel (int32_t level) |
| 53 { | 53 { |
| 54 m_iCorrectLevel = level; | 54 m_iCorrectLevel = level; |
| 55 return TRUE; | 55 return TRUE; |
| 56 } | 56 } |
| 57 FX_BYTE* CBC_DataMatrixWriter::Encode(const CFX_WideString &contents, FX_INT32 &
outWidth, FX_INT32 &outHeight, FX_INT32 &e) | 57 uint8_t* CBC_DataMatrixWriter::Encode(const CFX_WideString &contents, int32_t &o
utWidth, int32_t &outHeight, int32_t &e) |
| 58 { | 58 { |
| 59 if (outWidth < 0 || outHeight < 0) { | 59 if (outWidth < 0 || outHeight < 0) { |
| 60 e = BCExceptionHeightAndWidthMustBeAtLeast1; | 60 e = BCExceptionHeightAndWidthMustBeAtLeast1; |
| 61 BC_EXCEPTION_CHECK_ReturnValue(e, NULL); | 61 BC_EXCEPTION_CHECK_ReturnValue(e, NULL); |
| 62 } | 62 } |
| 63 CBC_SymbolShapeHint::SymbolShapeHint shape = CBC_SymbolShapeHint::FORCE_SQUA
RE; | 63 CBC_SymbolShapeHint::SymbolShapeHint shape = CBC_SymbolShapeHint::FORCE_SQUA
RE; |
| 64 CBC_Dimension* minSize = NULL; | 64 CBC_Dimension* minSize = NULL; |
| 65 CBC_Dimension* maxSize = NULL; | 65 CBC_Dimension* maxSize = NULL; |
| 66 CFX_WideString ecLevel; | 66 CFX_WideString ecLevel; |
| 67 CFX_WideString encoded = CBC_HighLevelEncoder::encodeHighLevel(contents, ecL
evel, shape, minSize, maxSize, e); | 67 CFX_WideString encoded = CBC_HighLevelEncoder::encodeHighLevel(contents, ecL
evel, shape, minSize, maxSize, e); |
| 68 BC_EXCEPTION_CHECK_ReturnValue(e, NULL); | 68 BC_EXCEPTION_CHECK_ReturnValue(e, NULL); |
| 69 CBC_SymbolInfo* symbolInfo = CBC_SymbolInfo::lookup(encoded.GetLength(), sha
pe, minSize, maxSize, TRUE, e); | 69 CBC_SymbolInfo* symbolInfo = CBC_SymbolInfo::lookup(encoded.GetLength(), sha
pe, minSize, maxSize, TRUE, e); |
| 70 BC_EXCEPTION_CHECK_ReturnValue(e, NULL); | 70 BC_EXCEPTION_CHECK_ReturnValue(e, NULL); |
| 71 CFX_WideString codewords = CBC_ErrorCorrection::encodeECC200(encoded, symbol
Info, e); | 71 CFX_WideString codewords = CBC_ErrorCorrection::encodeECC200(encoded, symbol
Info, e); |
| 72 BC_EXCEPTION_CHECK_ReturnValue(e, NULL); | 72 BC_EXCEPTION_CHECK_ReturnValue(e, NULL); |
| 73 CBC_DefaultPlacement* placement = FX_NEW CBC_DefaultPlacement(codewords, sym
bolInfo->getSymbolDataWidth(e), symbolInfo->getSymbolDataHeight(e)); | 73 CBC_DefaultPlacement* placement = FX_NEW CBC_DefaultPlacement(codewords, sym
bolInfo->getSymbolDataWidth(e), symbolInfo->getSymbolDataHeight(e)); |
| 74 BC_EXCEPTION_CHECK_ReturnValue(e, NULL); | 74 BC_EXCEPTION_CHECK_ReturnValue(e, NULL); |
| 75 placement->place(); | 75 placement->place(); |
| 76 CBC_CommonByteMatrix* bytematrix = encodeLowLevel(placement, symbolInfo, e); | 76 CBC_CommonByteMatrix* bytematrix = encodeLowLevel(placement, symbolInfo, e); |
| 77 BC_EXCEPTION_CHECK_ReturnValue(e, NULL); | 77 BC_EXCEPTION_CHECK_ReturnValue(e, NULL); |
| 78 outWidth = bytematrix->GetWidth(); | 78 outWidth = bytematrix->GetWidth(); |
| 79 outHeight = bytematrix->GetHeight(); | 79 outHeight = bytematrix->GetHeight(); |
| 80 FX_BYTE* result = FX_Alloc(FX_BYTE, outWidth * outHeight); | 80 uint8_t* result = FX_Alloc(uint8_t, outWidth * outHeight); |
| 81 FXSYS_memcpy32(result, bytematrix->GetArray(), outWidth * outHeight); | 81 FXSYS_memcpy32(result, bytematrix->GetArray(), outWidth * outHeight); |
| 82 delete bytematrix; | 82 delete bytematrix; |
| 83 delete placement; | 83 delete placement; |
| 84 return result; | 84 return result; |
| 85 } | 85 } |
| 86 FX_BYTE *CBC_DataMatrixWriter::Encode(const CFX_ByteString &contents, BCFORMAT f
ormat, FX_INT32 &outWidth, FX_INT32 &outHeight, FX_INT32 &e) | 86 uint8_t *CBC_DataMatrixWriter::Encode(const CFX_ByteString &contents, BCFORMAT f
ormat, int32_t &outWidth, int32_t &outHeight, int32_t &e) |
| 87 { | 87 { |
| 88 return NULL; | 88 return NULL; |
| 89 } | 89 } |
| 90 FX_BYTE *CBC_DataMatrixWriter::Encode(const CFX_ByteString &contents, BCFORMAT f
ormat, FX_INT32 &outWidth, FX_INT32 &outHeight, FX_INT32 hints, FX_INT32 &e) | 90 uint8_t *CBC_DataMatrixWriter::Encode(const CFX_ByteString &contents, BCFORMAT f
ormat, int32_t &outWidth, int32_t &outHeight, int32_t hints, int32_t &e) |
| 91 { | 91 { |
| 92 return NULL; | 92 return NULL; |
| 93 } | 93 } |
| 94 CBC_CommonByteMatrix* CBC_DataMatrixWriter::encodeLowLevel(CBC_DefaultPlacement*
placement, CBC_SymbolInfo* symbolInfo, FX_INT32 &e) | 94 CBC_CommonByteMatrix* CBC_DataMatrixWriter::encodeLowLevel(CBC_DefaultPlacement*
placement, CBC_SymbolInfo* symbolInfo, int32_t &e) |
| 95 { | 95 { |
| 96 FX_INT32 symbolWidth = symbolInfo->getSymbolDataWidth(e); | 96 int32_t symbolWidth = symbolInfo->getSymbolDataWidth(e); |
| 97 BC_EXCEPTION_CHECK_ReturnValue(e, NULL); | 97 BC_EXCEPTION_CHECK_ReturnValue(e, NULL); |
| 98 FX_INT32 symbolHeight = symbolInfo->getSymbolDataHeight(e); | 98 int32_t symbolHeight = symbolInfo->getSymbolDataHeight(e); |
| 99 BC_EXCEPTION_CHECK_ReturnValue(e, NULL); | 99 BC_EXCEPTION_CHECK_ReturnValue(e, NULL); |
| 100 CBC_CommonByteMatrix* matrix = FX_NEW CBC_CommonByteMatrix(symbolInfo->getSy
mbolWidth(e), symbolInfo->getSymbolHeight(e)); | 100 CBC_CommonByteMatrix* matrix = FX_NEW CBC_CommonByteMatrix(symbolInfo->getSy
mbolWidth(e), symbolInfo->getSymbolHeight(e)); |
| 101 BC_EXCEPTION_CHECK_ReturnValue(e, NULL); | 101 BC_EXCEPTION_CHECK_ReturnValue(e, NULL); |
| 102 matrix->Init(); | 102 matrix->Init(); |
| 103 FX_INT32 matrixY = 0; | 103 int32_t matrixY = 0; |
| 104 for (FX_INT32 y = 0; y < symbolHeight; y++) { | 104 for (int32_t y = 0; y < symbolHeight; y++) { |
| 105 FX_INT32 matrixX; | 105 int32_t matrixX; |
| 106 if ((y % symbolInfo->m_matrixHeight) == 0) { | 106 if ((y % symbolInfo->m_matrixHeight) == 0) { |
| 107 matrixX = 0; | 107 matrixX = 0; |
| 108 for (FX_INT32 x = 0; x < symbolInfo->getSymbolWidth(e); x++) { | 108 for (int32_t x = 0; x < symbolInfo->getSymbolWidth(e); x++) { |
| 109 matrix->Set(matrixX, matrixY, (x % 2) == 0); | 109 matrix->Set(matrixX, matrixY, (x % 2) == 0); |
| 110 matrixX++; | 110 matrixX++; |
| 111 } | 111 } |
| 112 matrixY++; | 112 matrixY++; |
| 113 } | 113 } |
| 114 matrixX = 0; | 114 matrixX = 0; |
| 115 for (FX_INT32 x = 0; x < symbolWidth; x++) { | 115 for (int32_t x = 0; x < symbolWidth; x++) { |
| 116 if ((x % symbolInfo->m_matrixWidth) == 0) { | 116 if ((x % symbolInfo->m_matrixWidth) == 0) { |
| 117 matrix->Set(matrixX, matrixY, TRUE); | 117 matrix->Set(matrixX, matrixY, TRUE); |
| 118 matrixX++; | 118 matrixX++; |
| 119 } | 119 } |
| 120 matrix->Set(matrixX, matrixY, placement->getBit(x, y)); | 120 matrix->Set(matrixX, matrixY, placement->getBit(x, y)); |
| 121 matrixX++; | 121 matrixX++; |
| 122 if ((x % symbolInfo->m_matrixWidth) == symbolInfo->m_matrixWidth - 1
) { | 122 if ((x % symbolInfo->m_matrixWidth) == symbolInfo->m_matrixWidth - 1
) { |
| 123 matrix->Set(matrixX, matrixY, (y % 2) == 0); | 123 matrix->Set(matrixX, matrixY, (y % 2) == 0); |
| 124 matrixX++; | 124 matrixX++; |
| 125 } | 125 } |
| 126 } | 126 } |
| 127 matrixY++; | 127 matrixY++; |
| 128 if ((y % symbolInfo->m_matrixHeight) == symbolInfo->m_matrixHeight - 1)
{ | 128 if ((y % symbolInfo->m_matrixHeight) == symbolInfo->m_matrixHeight - 1)
{ |
| 129 matrixX = 0; | 129 matrixX = 0; |
| 130 for (FX_INT32 x = 0; x < symbolInfo->getSymbolWidth(e); x++) { | 130 for (int32_t x = 0; x < symbolInfo->getSymbolWidth(e); x++) { |
| 131 matrix->Set(matrixX, matrixY, TRUE); | 131 matrix->Set(matrixX, matrixY, TRUE); |
| 132 matrixX++; | 132 matrixX++; |
| 133 } | 133 } |
| 134 matrixY++; | 134 matrixY++; |
| 135 } | 135 } |
| 136 } | 136 } |
| 137 return matrix; | 137 return matrix; |
| 138 } | 138 } |
| OLD | NEW |