diff options
Diffstat (limited to 'fxbarcode/datamatrix')
-rw-r--r-- | fxbarcode/datamatrix/BC_ASCIIEncoder.cpp | 3 | ||||
-rw-r--r-- | fxbarcode/datamatrix/BC_Base256Encoder.cpp | 3 | ||||
-rw-r--r-- | fxbarcode/datamatrix/BC_C40Encoder.cpp | 34 | ||||
-rw-r--r-- | fxbarcode/datamatrix/BC_C40Encoder.h | 3 | ||||
-rw-r--r-- | fxbarcode/datamatrix/BC_DataMatrixWriter.cpp | 11 | ||||
-rw-r--r-- | fxbarcode/datamatrix/BC_EdifactEncoder.cpp | 197 | ||||
-rw-r--r-- | fxbarcode/datamatrix/BC_EdifactEncoder.h | 9 | ||||
-rw-r--r-- | fxbarcode/datamatrix/BC_Encoder.h | 2 | ||||
-rw-r--r-- | fxbarcode/datamatrix/BC_EncoderContext.cpp | 26 | ||||
-rw-r--r-- | fxbarcode/datamatrix/BC_EncoderContext.h | 12 | ||||
-rw-r--r-- | fxbarcode/datamatrix/BC_ErrorCorrection.cpp | 4 | ||||
-rw-r--r-- | fxbarcode/datamatrix/BC_ErrorCorrection.h | 2 | ||||
-rw-r--r-- | fxbarcode/datamatrix/BC_HighLevelEncoder.cpp | 9 | ||||
-rw-r--r-- | fxbarcode/datamatrix/BC_HighLevelEncoder.h | 3 | ||||
-rw-r--r-- | fxbarcode/datamatrix/BC_SymbolInfo.cpp | 31 | ||||
-rw-r--r-- | fxbarcode/datamatrix/BC_SymbolInfo.h | 8 | ||||
-rw-r--r-- | fxbarcode/datamatrix/BC_TextEncoder.cpp | 4 | ||||
-rw-r--r-- | fxbarcode/datamatrix/BC_X12Encoder.cpp | 2 |
18 files changed, 158 insertions, 205 deletions
diff --git a/fxbarcode/datamatrix/BC_ASCIIEncoder.cpp b/fxbarcode/datamatrix/BC_ASCIIEncoder.cpp index 2d7b9d7995..7b277feb63 100644 --- a/fxbarcode/datamatrix/BC_ASCIIEncoder.cpp +++ b/fxbarcode/datamatrix/BC_ASCIIEncoder.cpp @@ -20,13 +20,14 @@ * limitations under the License. */ -#include "fxbarcode/BC_Dimension.h" #include "fxbarcode/datamatrix/BC_ASCIIEncoder.h" + #include "fxbarcode/datamatrix/BC_Encoder.h" #include "fxbarcode/datamatrix/BC_EncoderContext.h" #include "fxbarcode/datamatrix/BC_HighLevelEncoder.h" #include "fxbarcode/datamatrix/BC_SymbolInfo.h" #include "fxbarcode/datamatrix/BC_SymbolShapeHint.h" +#include "fxbarcode/utils.h" CBC_ASCIIEncoder::CBC_ASCIIEncoder() {} CBC_ASCIIEncoder::~CBC_ASCIIEncoder() {} diff --git a/fxbarcode/datamatrix/BC_Base256Encoder.cpp b/fxbarcode/datamatrix/BC_Base256Encoder.cpp index dd49c8e0f5..a360f6372e 100644 --- a/fxbarcode/datamatrix/BC_Base256Encoder.cpp +++ b/fxbarcode/datamatrix/BC_Base256Encoder.cpp @@ -20,13 +20,14 @@ * limitations under the License. */ -#include "fxbarcode/BC_Dimension.h" #include "fxbarcode/datamatrix/BC_Base256Encoder.h" + #include "fxbarcode/datamatrix/BC_Encoder.h" #include "fxbarcode/datamatrix/BC_EncoderContext.h" #include "fxbarcode/datamatrix/BC_HighLevelEncoder.h" #include "fxbarcode/datamatrix/BC_SymbolInfo.h" #include "fxbarcode/datamatrix/BC_SymbolShapeHint.h" +#include "fxbarcode/utils.h" CBC_Base256Encoder::CBC_Base256Encoder() {} CBC_Base256Encoder::~CBC_Base256Encoder() {} diff --git a/fxbarcode/datamatrix/BC_C40Encoder.cpp b/fxbarcode/datamatrix/BC_C40Encoder.cpp index 7c3f4e7d7a..e8aa679e28 100644 --- a/fxbarcode/datamatrix/BC_C40Encoder.cpp +++ b/fxbarcode/datamatrix/BC_C40Encoder.cpp @@ -20,14 +20,30 @@ * limitations under the License. */ -#include "fxbarcode/BC_Dimension.h" -#include "fxbarcode/common/BC_CommonBitMatrix.h" #include "fxbarcode/datamatrix/BC_C40Encoder.h" + +#include "fxbarcode/common/BC_CommonBitMatrix.h" #include "fxbarcode/datamatrix/BC_Encoder.h" #include "fxbarcode/datamatrix/BC_EncoderContext.h" #include "fxbarcode/datamatrix/BC_HighLevelEncoder.h" #include "fxbarcode/datamatrix/BC_SymbolInfo.h" #include "fxbarcode/datamatrix/BC_SymbolShapeHint.h" +#include "fxbarcode/utils.h" + +namespace { + +CFX_WideString EncodeToCodewords(const CFX_WideString& sb, int32_t startPos) { + wchar_t c1 = sb.GetAt(startPos); + wchar_t c2 = sb.GetAt(startPos + 1); + wchar_t c3 = sb.GetAt(startPos + 2); + int32_t v = (1600 * c1) + (40 * c2) + c3 + 1; + wchar_t cw[2]; + cw[0] = static_cast<wchar_t>(v / 256); + cw[1] = static_cast<wchar_t>(v % 256); + return CFX_WideString(cw); +} + +} // namespace CBC_C40Encoder::CBC_C40Encoder() {} CBC_C40Encoder::~CBC_C40Encoder() {} @@ -85,7 +101,7 @@ void CBC_C40Encoder::Encode(CBC_EncoderContext& context, int32_t& e) { } void CBC_C40Encoder::writeNextTriplet(CBC_EncoderContext& context, CFX_WideString& buffer) { - context.writeCodewords(encodeToCodewords(buffer, 0)); + context.writeCodewords(EncodeToCodewords(buffer, 0)); buffer.Delete(0, 3); } void CBC_C40Encoder::handleEOD(CBC_EncoderContext& context, @@ -186,15 +202,3 @@ int32_t CBC_C40Encoder::backtrackOneCharacter(CBC_EncoderContext& context, context.resetSymbolInfo(); return lastCharSize; } -CFX_WideString CBC_C40Encoder::encodeToCodewords(CFX_WideString sb, - int32_t startPos) { - wchar_t c1 = sb.GetAt(startPos); - wchar_t c2 = sb.GetAt(startPos + 1); - wchar_t c3 = sb.GetAt(startPos + 2); - int32_t v = (1600 * c1) + (40 * c2) + c3 + 1; - wchar_t cw1 = (wchar_t)(v / 256); - wchar_t cw2 = (wchar_t)(v % 256); - CFX_WideString b1(cw1); - CFX_WideString b2(cw2); - return b1 + b2; -} diff --git a/fxbarcode/datamatrix/BC_C40Encoder.h b/fxbarcode/datamatrix/BC_C40Encoder.h index 217404913e..ad8669d412 100644 --- a/fxbarcode/datamatrix/BC_C40Encoder.h +++ b/fxbarcode/datamatrix/BC_C40Encoder.h @@ -9,6 +9,8 @@ #include "fxbarcode/datamatrix/BC_Encoder.h" +class CFX_WideString; + class CBC_C40Encoder : public CBC_Encoder { public: CBC_C40Encoder(); @@ -32,7 +34,6 @@ class CBC_C40Encoder : public CBC_Encoder { CFX_WideString& removed, int32_t lastCharSize, int32_t& e); - static CFX_WideString encodeToCodewords(CFX_WideString sb, int32_t startPos); }; #endif // FXBARCODE_DATAMATRIX_BC_C40ENCODER_H_ diff --git a/fxbarcode/datamatrix/BC_DataMatrixWriter.cpp b/fxbarcode/datamatrix/BC_DataMatrixWriter.cpp index 54b7312abc..f45c338a7c 100644 --- a/fxbarcode/datamatrix/BC_DataMatrixWriter.cpp +++ b/fxbarcode/datamatrix/BC_DataMatrixWriter.cpp @@ -24,7 +24,6 @@ #include <memory> -#include "fxbarcode/BC_Dimension.h" #include "fxbarcode/BC_TwoDimWriter.h" #include "fxbarcode/BC_UtilCodingConvert.h" #include "fxbarcode/BC_Writer.h" @@ -121,16 +120,14 @@ uint8_t* CBC_DataMatrixWriter::Encode(const CFX_WideString& contents, CBC_SymbolShapeHint::SymbolShapeHint shape = CBC_SymbolShapeHint::FORCE_SQUARE; - CBC_Dimension* minSize = nullptr; - CBC_Dimension* maxSize = nullptr; CFX_WideString ecLevel; int32_t e = BCExceptionNO; - CFX_WideString encoded = CBC_HighLevelEncoder::encodeHighLevel( - contents, ecLevel, shape, minSize, maxSize, e); + CFX_WideString encoded = + CBC_HighLevelEncoder::encodeHighLevel(contents, ecLevel, shape, e); if (e != BCExceptionNO) return nullptr; - CBC_SymbolInfo* symbolInfo = CBC_SymbolInfo::lookup( - encoded.GetLength(), shape, minSize, maxSize, true, e); + CBC_SymbolInfo* symbolInfo = + CBC_SymbolInfo::lookup(encoded.GetLength(), shape, true, e); if (e != BCExceptionNO) return nullptr; CFX_WideString codewords = diff --git a/fxbarcode/datamatrix/BC_EdifactEncoder.cpp b/fxbarcode/datamatrix/BC_EdifactEncoder.cpp index 954dcbcba6..9231b1e293 100644 --- a/fxbarcode/datamatrix/BC_EdifactEncoder.cpp +++ b/fxbarcode/datamatrix/BC_EdifactEncoder.cpp @@ -22,134 +22,137 @@ #include "fxbarcode/datamatrix/BC_EdifactEncoder.h" -#include "fxbarcode/BC_Dimension.h" +#include <algorithm> + #include "fxbarcode/common/BC_CommonBitMatrix.h" #include "fxbarcode/datamatrix/BC_Encoder.h" #include "fxbarcode/datamatrix/BC_EncoderContext.h" #include "fxbarcode/datamatrix/BC_HighLevelEncoder.h" #include "fxbarcode/datamatrix/BC_SymbolInfo.h" #include "fxbarcode/datamatrix/BC_SymbolShapeHint.h" +#include "fxbarcode/utils.h" -CBC_EdifactEncoder::CBC_EdifactEncoder() {} -CBC_EdifactEncoder::~CBC_EdifactEncoder() {} -int32_t CBC_EdifactEncoder::getEncodingMode() { - return EDIFACT_ENCODATION; -} -void CBC_EdifactEncoder::Encode(CBC_EncoderContext& context, int32_t& e) { - CFX_WideString buffer; - while (context.hasMoreCharacters()) { - wchar_t c = context.getCurrentChar(); - encodeChar(c, buffer, e); - if (e != BCExceptionNO) { - return; - } - context.m_pos++; - int32_t count = buffer.GetLength(); - if (count >= 4) { - context.writeCodewords(encodeToCodewords(buffer, 0, e)); - if (e != BCExceptionNO) { - return; - } - buffer.Delete(0, 4); - int32_t newMode = CBC_HighLevelEncoder::lookAheadTest( - context.m_msg, context.m_pos, getEncodingMode()); - if (newMode != getEncodingMode()) { - context.signalEncoderChange(ASCII_ENCODATION); - break; - } - } - } - buffer += (wchar_t)31; - handleEOD(context, buffer, e); +namespace { + +CFX_WideString EncodeToCodewords(const CFX_WideString& sb, int32_t startPos) { + int32_t len = sb.GetLength() - startPos; + if (len == 0) + return CFX_WideString(); + + wchar_t c1 = sb.GetAt(startPos); + wchar_t c2 = len >= 2 ? sb.GetAt(startPos + 1) : 0; + wchar_t c3 = len >= 3 ? sb.GetAt(startPos + 2) : 0; + wchar_t c4 = len >= 4 ? sb.GetAt(startPos + 3) : 0; + int32_t v = (c1 << 18) + (c2 << 12) + (c3 << 6) + c4; + constexpr int32_t kBuflen = 3; + wchar_t cw[kBuflen]; + cw[0] = static_cast<wchar_t>((v >> 16) & 255); + cw[1] = static_cast<wchar_t>((v >> 8) & 255); + cw[2] = static_cast<wchar_t>(v & 255); + return CFX_WideString(cw, std::min(len, kBuflen)); } -void CBC_EdifactEncoder::handleEOD(CBC_EncoderContext& context, - CFX_WideString buffer, - int32_t& e) { + +bool HandleEOD(CBC_EncoderContext* context, const CFX_WideString& buffer) { int32_t count = buffer.GetLength(); - if (count == 0) { - return; - } + if (count == 0) + return true; + if (count > 4) + return false; + if (count == 1) { - context.updateSymbolInfo(e); - if (e != BCExceptionNO) { - return; - } + int32_t e = BCExceptionNO; + context->updateSymbolInfo(e); + if (e != BCExceptionNO) + return false; + int32_t available = - context.m_symbolInfo->m_dataCapacity - context.getCodewordCount(); - int32_t remaining = context.getRemainingCharacters(); - if (remaining == 0 && available <= 2) { - return; - } - } - if (count > 4) { - e = BCExceptionIllegalStateCountMustNotExceed4; - return; + context->m_symbolInfo->m_dataCapacity - context->getCodewordCount(); + int32_t remaining = context->getRemainingCharacters(); + if (remaining == 0 && available <= 2) + return true; } + int32_t restChars = count - 1; - CFX_WideString encoded = encodeToCodewords(buffer, 0, e); - if (e != BCExceptionNO) { - return; - } - bool endOfSymbolReached = !context.hasMoreCharacters(); + CFX_WideString encoded = EncodeToCodewords(buffer, 0); + if (encoded.IsEmpty()) + return false; + + bool endOfSymbolReached = !context->hasMoreCharacters(); bool restInAscii = endOfSymbolReached && restChars <= 2; if (restChars <= 2) { - context.updateSymbolInfo(context.getCodewordCount() + restChars, e); - if (e != BCExceptionNO) { - return; - } + int32_t e = BCExceptionNO; + context->updateSymbolInfo(context->getCodewordCount() + restChars, e); + if (e != BCExceptionNO) + return false; + int32_t available = - context.m_symbolInfo->m_dataCapacity - context.getCodewordCount(); + context->m_symbolInfo->m_dataCapacity - context->getCodewordCount(); if (available >= 3) { restInAscii = false; - context.updateSymbolInfo(context.getCodewordCount() + encoded.GetLength(), - e); - if (e != BCExceptionNO) { - return; - } + context->updateSymbolInfo( + context->getCodewordCount() + encoded.GetLength(), e); + if (e != BCExceptionNO) + return false; } } + if (restInAscii) { - context.resetSymbolInfo(); - context.m_pos -= restChars; + context->resetSymbolInfo(); + context->m_pos -= restChars; } else { - context.writeCodewords(encoded); + context->writeCodewords(encoded); } - context.signalEncoderChange(ASCII_ENCODATION); + context->signalEncoderChange(ASCII_ENCODATION); + return true; } -void CBC_EdifactEncoder::encodeChar(wchar_t c, CFX_WideString& sb, int32_t& e) { +void encodeChar(wchar_t c, CFX_WideString* sb, int32_t& e) { if (c >= ' ' && c <= '?') { - sb += c; + *sb += c; } else if (c >= '@' && c <= '^') { - sb += (wchar_t)(c - 64); + *sb += (wchar_t)(c - 64); } else { e = BCExceptionIllegalArgument; } } -CFX_WideString CBC_EdifactEncoder::encodeToCodewords(CFX_WideString sb, - int32_t startPos, - int32_t& e) { - int32_t len = sb.GetLength() - startPos; - if (len == 0) { - e = BCExceptionNoContents; - return CFX_WideString(); - } - wchar_t c1 = sb.GetAt(startPos); - wchar_t c2 = len >= 2 ? sb.GetAt(startPos + 1) : 0; - wchar_t c3 = len >= 3 ? sb.GetAt(startPos + 2) : 0; - wchar_t c4 = len >= 4 ? sb.GetAt(startPos + 3) : 0; - int32_t v = (c1 << 18) + (c2 << 12) + (c3 << 6) + c4; - wchar_t cw1 = (wchar_t)((v >> 16) & 255); - wchar_t cw2 = (wchar_t)((v >> 8) & 255); - wchar_t cw3 = (wchar_t)(v & 255); - CFX_WideString res; - res += cw1; - if (len >= 2) { - res += cw2; - } - if (len >= 3) { - res += cw3; +} // namespace + +CBC_EdifactEncoder::CBC_EdifactEncoder() {} + +CBC_EdifactEncoder::~CBC_EdifactEncoder() {} + +int32_t CBC_EdifactEncoder::getEncodingMode() { + return EDIFACT_ENCODATION; +} + +void CBC_EdifactEncoder::Encode(CBC_EncoderContext& context, int32_t& e) { + CFX_WideString buffer; + while (context.hasMoreCharacters()) { + wchar_t c = context.getCurrentChar(); + encodeChar(c, &buffer, e); + if (e != BCExceptionNO) { + return; + } + context.m_pos++; + int32_t count = buffer.GetLength(); + if (count >= 4) { + CFX_WideString encoded = EncodeToCodewords(buffer, 0); + if (encoded.IsEmpty()) { + e = BCExceptionGeneric; + return; + } + context.writeCodewords(encoded); + buffer.Delete(0, 4); + int32_t newMode = CBC_HighLevelEncoder::lookAheadTest( + context.m_msg, context.m_pos, getEncodingMode()); + if (newMode != getEncodingMode()) { + context.signalEncoderChange(ASCII_ENCODATION); + break; + } + } } - return res; + buffer += static_cast<wchar_t>(31); + if (!HandleEOD(&context, buffer)) + e = BCExceptionGeneric; } diff --git a/fxbarcode/datamatrix/BC_EdifactEncoder.h b/fxbarcode/datamatrix/BC_EdifactEncoder.h index 6fe0934de1..eb59222d4f 100644 --- a/fxbarcode/datamatrix/BC_EdifactEncoder.h +++ b/fxbarcode/datamatrix/BC_EdifactEncoder.h @@ -17,15 +17,6 @@ class CBC_EdifactEncoder : public CBC_Encoder { // CBC_Encoder int32_t getEncodingMode() override; void Encode(CBC_EncoderContext& context, int32_t& e) override; - - private: - static void handleEOD(CBC_EncoderContext& context, - CFX_WideString buffer, - int32_t& e); - static void encodeChar(wchar_t c, CFX_WideString& sb, int32_t& e); - static CFX_WideString encodeToCodewords(CFX_WideString sb, - int32_t startPos, - int32_t& e); }; #endif // FXBARCODE_DATAMATRIX_BC_EDIFACTENCODER_H_ diff --git a/fxbarcode/datamatrix/BC_Encoder.h b/fxbarcode/datamatrix/BC_Encoder.h index 40d491c2cd..be1730f0c2 100644 --- a/fxbarcode/datamatrix/BC_Encoder.h +++ b/fxbarcode/datamatrix/BC_Encoder.h @@ -7,7 +7,7 @@ #ifndef FXBARCODE_DATAMATRIX_BC_ENCODER_H_ #define FXBARCODE_DATAMATRIX_BC_ENCODER_H_ -#include "fxbarcode/utils.h" +#include <stdint.h> class CBC_EncoderContext; diff --git a/fxbarcode/datamatrix/BC_EncoderContext.cpp b/fxbarcode/datamatrix/BC_EncoderContext.cpp index 8fe5bf5b26..0411d03b5d 100644 --- a/fxbarcode/datamatrix/BC_EncoderContext.cpp +++ b/fxbarcode/datamatrix/BC_EncoderContext.cpp @@ -20,16 +20,17 @@ * limitations under the License. */ -#include "fxbarcode/BC_Dimension.h" +#include "fxbarcode/datamatrix/BC_EncoderContext.h" + #include "fxbarcode/BC_UtilCodingConvert.h" #include "fxbarcode/common/BC_CommonBitMatrix.h" #include "fxbarcode/datamatrix/BC_Encoder.h" -#include "fxbarcode/datamatrix/BC_EncoderContext.h" #include "fxbarcode/datamatrix/BC_SymbolInfo.h" #include "fxbarcode/datamatrix/BC_SymbolShapeHint.h" +#include "fxbarcode/utils.h" -CBC_EncoderContext::CBC_EncoderContext(const CFX_WideString msg, - CFX_WideString ecLevel, +CBC_EncoderContext::CBC_EncoderContext(const CFX_WideString& msg, + const CFX_WideString& ecLevel, int32_t& e) { CFX_ByteString dststr; CBC_UtilCodingConvert::UnicodeToUTF8(msg, dststr); @@ -48,21 +49,11 @@ CBC_EncoderContext::CBC_EncoderContext(const CFX_WideString msg, m_pos = 0; m_symbolInfo = nullptr; m_skipAtEnd = 0; - m_maxSize = nullptr; - m_minSize = nullptr; } CBC_EncoderContext::~CBC_EncoderContext() {} void CBC_EncoderContext::setSymbolShape(SymbolShapeHint shape) { m_shape = shape; } -void CBC_EncoderContext::setSizeConstraints(CBC_Dimension* minSize, - CBC_Dimension* maxSize) { - m_maxSize = maxSize; - m_minSize = minSize; -} -CFX_WideString CBC_EncoderContext::getMessage() { - return m_msg; -} void CBC_EncoderContext::setSkipAtEnd(int32_t count) { m_skipAtEnd = count; } @@ -72,9 +63,11 @@ wchar_t CBC_EncoderContext::getCurrentChar() { wchar_t CBC_EncoderContext::getCurrent() { return m_msg.GetAt(m_pos); } -void CBC_EncoderContext::writeCodewords(CFX_WideString codewords) { + +void CBC_EncoderContext::writeCodewords(const CFX_WideString& codewords) { m_codewords += codewords; } + void CBC_EncoderContext::writeCodeword(wchar_t codeword) { m_codewords += codeword; } @@ -98,8 +91,7 @@ void CBC_EncoderContext::updateSymbolInfo(int32_t& e) { } void CBC_EncoderContext::updateSymbolInfo(int32_t len, int32_t& e) { if (!m_symbolInfo || len > m_symbolInfo->m_dataCapacity) { - m_symbolInfo = - CBC_SymbolInfo::lookup(len, m_shape, m_minSize, m_maxSize, true, e); + m_symbolInfo = CBC_SymbolInfo::lookup(len, m_shape, true, e); if (e != BCExceptionNO) return; } diff --git a/fxbarcode/datamatrix/BC_EncoderContext.h b/fxbarcode/datamatrix/BC_EncoderContext.h index 6be824116f..e2259334e8 100644 --- a/fxbarcode/datamatrix/BC_EncoderContext.h +++ b/fxbarcode/datamatrix/BC_EncoderContext.h @@ -7,25 +7,23 @@ #ifndef FXBARCODE_DATAMATRIX_BC_ENCODERCONTEXT_H_ #define FXBARCODE_DATAMATRIX_BC_ENCODERCONTEXT_H_ +#include "core/fxcrt/cfx_widestring.h" #include "fxbarcode/datamatrix/BC_SymbolShapeHint.h" class CBC_SymbolInfo; -class CBC_Dimension; class CBC_EncoderContext : public CBC_SymbolShapeHint { public: - CBC_EncoderContext(const CFX_WideString msg, - CFX_WideString ecLevel, + CBC_EncoderContext(const CFX_WideString& msg, + const CFX_WideString& ecLevel, int32_t& e); ~CBC_EncoderContext() override; void setSymbolShape(SymbolShapeHint shape); - void setSizeConstraints(CBC_Dimension* minSize, CBC_Dimension* maxSize); - CFX_WideString getMessage(); void setSkipAtEnd(int32_t count); wchar_t getCurrentChar(); wchar_t getCurrent(); - void writeCodewords(CFX_WideString codewords); + void writeCodewords(const CFX_WideString& codewords); void writeCodeword(wchar_t codeword); int32_t getCodewordCount(); void signalEncoderChange(int32_t encoding); @@ -48,8 +46,6 @@ class CBC_EncoderContext : public CBC_SymbolShapeHint { private: SymbolShapeHint m_shape; - CBC_Dimension* m_minSize; - CBC_Dimension* m_maxSize; int32_t m_skipAtEnd; }; diff --git a/fxbarcode/datamatrix/BC_ErrorCorrection.cpp b/fxbarcode/datamatrix/BC_ErrorCorrection.cpp index 43bdc24534..cd2355b8fe 100644 --- a/fxbarcode/datamatrix/BC_ErrorCorrection.cpp +++ b/fxbarcode/datamatrix/BC_ErrorCorrection.cpp @@ -20,12 +20,14 @@ * limitations under the License. */ +#include "fxbarcode/datamatrix/BC_ErrorCorrection.h" + #include <vector> #include "fxbarcode/datamatrix/BC_Encoder.h" -#include "fxbarcode/datamatrix/BC_ErrorCorrection.h" #include "fxbarcode/datamatrix/BC_SymbolInfo.h" #include "fxbarcode/datamatrix/BC_SymbolShapeHint.h" +#include "fxbarcode/utils.h" namespace { diff --git a/fxbarcode/datamatrix/BC_ErrorCorrection.h b/fxbarcode/datamatrix/BC_ErrorCorrection.h index f09763da2b..97a2e48e2d 100644 --- a/fxbarcode/datamatrix/BC_ErrorCorrection.h +++ b/fxbarcode/datamatrix/BC_ErrorCorrection.h @@ -7,6 +7,8 @@ #ifndef FXBARCODE_DATAMATRIX_BC_ERRORCORRECTION_H_ #define FXBARCODE_DATAMATRIX_BC_ERRORCORRECTION_H_ +#include "core/fxcrt/cfx_widestring.h" + class CBC_SymbolInfo; class CBC_ErrorCorrection { diff --git a/fxbarcode/datamatrix/BC_HighLevelEncoder.cpp b/fxbarcode/datamatrix/BC_HighLevelEncoder.cpp index f9fb080be3..cc85c838a3 100644 --- a/fxbarcode/datamatrix/BC_HighLevelEncoder.cpp +++ b/fxbarcode/datamatrix/BC_HighLevelEncoder.cpp @@ -20,11 +20,12 @@ * limitations under the License. */ +#include "fxbarcode/datamatrix/BC_HighLevelEncoder.h" + #include <limits> #include <memory> #include <vector> -#include "fxbarcode/BC_Dimension.h" #include "fxbarcode/BC_UtilCodingConvert.h" #include "fxbarcode/common/BC_CommonBitMatrix.h" #include "fxbarcode/datamatrix/BC_ASCIIEncoder.h" @@ -33,7 +34,6 @@ #include "fxbarcode/datamatrix/BC_EdifactEncoder.h" #include "fxbarcode/datamatrix/BC_Encoder.h" #include "fxbarcode/datamatrix/BC_EncoderContext.h" -#include "fxbarcode/datamatrix/BC_HighLevelEncoder.h" #include "fxbarcode/datamatrix/BC_SymbolInfo.h" #include "fxbarcode/datamatrix/BC_SymbolShapeHint.h" #include "fxbarcode/datamatrix/BC_TextEncoder.h" @@ -69,19 +69,16 @@ std::vector<uint8_t>& CBC_HighLevelEncoder::getBytesForMessage( CFX_WideString CBC_HighLevelEncoder::encodeHighLevel(CFX_WideString msg, CFX_WideString ecLevel, int32_t& e) { - return encodeHighLevel(msg, ecLevel, FORCE_NONE, nullptr, nullptr, e); + return encodeHighLevel(msg, ecLevel, FORCE_NONE, e); } CFX_WideString CBC_HighLevelEncoder::encodeHighLevel(CFX_WideString msg, CFX_WideString ecLevel, SymbolShapeHint shape, - CBC_Dimension* minSize, - CBC_Dimension* maxSize, int32_t& e) { CBC_EncoderContext context(msg, ecLevel, e); if (e != BCExceptionNO) return CFX_WideString(); context.setSymbolShape(shape); - context.setSizeConstraints(minSize, maxSize); if ((msg.Mid(0, 6) == MACRO_05_HEADER) && (msg.Mid(msg.GetLength() - 1, 1) == MACRO_TRAILER)) { context.writeCodeword(MACRO_05); diff --git a/fxbarcode/datamatrix/BC_HighLevelEncoder.h b/fxbarcode/datamatrix/BC_HighLevelEncoder.h index 12b8cab35a..6f0db292c9 100644 --- a/fxbarcode/datamatrix/BC_HighLevelEncoder.h +++ b/fxbarcode/datamatrix/BC_HighLevelEncoder.h @@ -9,6 +9,7 @@ #include <vector> +#include "core/fxcrt/cfx_widestring.h" #include "fxbarcode/datamatrix/BC_SymbolShapeHint.h" #define ASCII_ENCODATION 0 @@ -30,8 +31,6 @@ class CBC_HighLevelEncoder : public CBC_SymbolShapeHint { static CFX_WideString encodeHighLevel(CFX_WideString msg, CFX_WideString ecLevel, SymbolShapeHint shape, - CBC_Dimension* minSize, - CBC_Dimension* maxSize, int32_t& e); static int32_t lookAheadTest(CFX_WideString msg, int32_t startpos, diff --git a/fxbarcode/datamatrix/BC_SymbolInfo.cpp b/fxbarcode/datamatrix/BC_SymbolInfo.cpp index f98370b90f..5d12f1c090 100644 --- a/fxbarcode/datamatrix/BC_SymbolInfo.cpp +++ b/fxbarcode/datamatrix/BC_SymbolInfo.cpp @@ -22,11 +22,11 @@ #include "fxbarcode/datamatrix/BC_SymbolInfo.h" -#include "fxbarcode/BC_Dimension.h" #include "fxbarcode/common/BC_CommonBitMatrix.h" #include "fxbarcode/datamatrix/BC_DataMatrixSymbolInfo144.h" #include "fxbarcode/datamatrix/BC_Encoder.h" #include "fxbarcode/datamatrix/BC_SymbolShapeHint.h" +#include "fxbarcode/utils.h" namespace { @@ -133,37 +133,14 @@ CBC_SymbolInfo* CBC_SymbolInfo::lookup(int32_t dataCodewords, SymbolShapeHint shape, bool fail, int32_t& e) { - return lookup(dataCodewords, shape, nullptr, nullptr, fail, e); -} -CBC_SymbolInfo* CBC_SymbolInfo::lookup(int32_t dataCodewords, - SymbolShapeHint shape, - CBC_Dimension* minSize, - CBC_Dimension* maxSize, - bool fail, - int32_t& e) { for (size_t i = 0; i < kSymbolsCount; i++) { CBC_SymbolInfo* symbol = g_symbols[i]; - if (shape == FORCE_SQUARE && symbol->m_rectangular) { - continue; - } - if (shape == FORCE_RECTANGLE && !symbol->m_rectangular) { - continue; - } - if (minSize && (symbol->getSymbolWidth(e) < minSize->getWidth() || - symbol->getSymbolHeight(e) < minSize->getHeight())) { - if (e != BCExceptionNO) - return nullptr; + if ((shape == FORCE_SQUARE && symbol->m_rectangular) || + (shape == FORCE_RECTANGLE && !symbol->m_rectangular)) { continue; } - if (maxSize && (symbol->getSymbolWidth(e) > maxSize->getWidth() || - symbol->getSymbolHeight(e) > maxSize->getHeight())) { - if (e != BCExceptionNO) - return nullptr; - continue; - } - if (dataCodewords <= symbol->m_dataCapacity) { + if (dataCodewords <= symbol->m_dataCapacity) return symbol; - } } if (fail) e = BCExceptionIllegalDataCodewords; diff --git a/fxbarcode/datamatrix/BC_SymbolInfo.h b/fxbarcode/datamatrix/BC_SymbolInfo.h index 36ed01d7e4..0a5cd20247 100644 --- a/fxbarcode/datamatrix/BC_SymbolInfo.h +++ b/fxbarcode/datamatrix/BC_SymbolInfo.h @@ -11,8 +11,6 @@ #include "core/fxcrt/fx_system.h" #include "fxbarcode/datamatrix/BC_SymbolShapeHint.h" -class CBC_Dimension; - class CBC_SymbolInfo : public CBC_SymbolShapeHint { public: CBC_SymbolInfo(bool rectangular, @@ -38,12 +36,6 @@ class CBC_SymbolInfo : public CBC_SymbolShapeHint { SymbolShapeHint shape, bool fail, int32_t& e); - static CBC_SymbolInfo* lookup(int32_t dataCodewords, - SymbolShapeHint shape, - CBC_Dimension* minSize, - CBC_Dimension* maxSize, - bool fail, - int32_t& e); int32_t getHorizontalDataRegions(int32_t& e); int32_t getVerticalDataRegions(int32_t& e); int32_t getSymbolDataWidth(int32_t& e); diff --git a/fxbarcode/datamatrix/BC_TextEncoder.cpp b/fxbarcode/datamatrix/BC_TextEncoder.cpp index 53f92c3d28..ec7ff4751f 100644 --- a/fxbarcode/datamatrix/BC_TextEncoder.cpp +++ b/fxbarcode/datamatrix/BC_TextEncoder.cpp @@ -1,5 +1,3 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com @@ -22,7 +20,6 @@ #include "fxbarcode/datamatrix/BC_TextEncoder.h" -#include "fxbarcode/BC_Dimension.h" #include "fxbarcode/common/BC_CommonBitMatrix.h" #include "fxbarcode/datamatrix/BC_C40Encoder.h" #include "fxbarcode/datamatrix/BC_Encoder.h" @@ -30,6 +27,7 @@ #include "fxbarcode/datamatrix/BC_HighLevelEncoder.h" #include "fxbarcode/datamatrix/BC_SymbolInfo.h" #include "fxbarcode/datamatrix/BC_SymbolShapeHint.h" +#include "fxbarcode/utils.h" CBC_TextEncoder::CBC_TextEncoder() {} CBC_TextEncoder::~CBC_TextEncoder() {} diff --git a/fxbarcode/datamatrix/BC_X12Encoder.cpp b/fxbarcode/datamatrix/BC_X12Encoder.cpp index 9103908b1a..04bf958bf4 100644 --- a/fxbarcode/datamatrix/BC_X12Encoder.cpp +++ b/fxbarcode/datamatrix/BC_X12Encoder.cpp @@ -22,7 +22,6 @@ #include "fxbarcode/datamatrix/BC_X12Encoder.h" -#include "fxbarcode/BC_Dimension.h" #include "fxbarcode/common/BC_CommonBitMatrix.h" #include "fxbarcode/datamatrix/BC_C40Encoder.h" #include "fxbarcode/datamatrix/BC_Encoder.h" @@ -30,6 +29,7 @@ #include "fxbarcode/datamatrix/BC_HighLevelEncoder.h" #include "fxbarcode/datamatrix/BC_SymbolInfo.h" #include "fxbarcode/datamatrix/BC_SymbolShapeHint.h" +#include "fxbarcode/utils.h" CBC_X12Encoder::CBC_X12Encoder() {} CBC_X12Encoder::~CBC_X12Encoder() {} |