diff options
author | Dan Sinclair <dsinclair@chromium.org> | 2017-03-29 15:18:41 -0400 |
---|---|---|
committer | Chromium commit bot <commit-bot@chromium.org> | 2017-03-29 21:01:07 +0000 |
commit | e778668fe92b8c60e0537ee48f79d5af6c1a2f1e (patch) | |
tree | ce7ce115b6f7306a6363f4a3d26d0de2c5646aea /fxbarcode/datamatrix/BC_HighLevelEncoder.h | |
parent | b929ab0886a2b0ceb701989ef126e5b0cabf6997 (diff) | |
download | pdfium-e778668fe92b8c60e0537ee48f79d5af6c1a2f1e.tar.xz |
Move xfa/fxbarcode fxbarcode/
Nothing in fxbarcode/ depends on XFA code. This CL moves xfa/fxbarcode
to be fxbarcode/ and creates a static_library for fxbarcode which is
depend on by the xfa library.
Change-Id: I0b708737b07efb94b769a5238d92af92bc62880d
Reviewed-on: https://pdfium-review.googlesource.com/3291
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Commit-Queue: dsinclair <dsinclair@chromium.org>
Diffstat (limited to 'fxbarcode/datamatrix/BC_HighLevelEncoder.h')
-rw-r--r-- | fxbarcode/datamatrix/BC_HighLevelEncoder.h | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/fxbarcode/datamatrix/BC_HighLevelEncoder.h b/fxbarcode/datamatrix/BC_HighLevelEncoder.h new file mode 100644 index 0000000000..83136be2f4 --- /dev/null +++ b/fxbarcode/datamatrix/BC_HighLevelEncoder.h @@ -0,0 +1,79 @@ +// 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 + +#ifndef FXBARCODE_DATAMATRIX_BC_HIGHLEVELENCODER_H_ +#define FXBARCODE_DATAMATRIX_BC_HIGHLEVELENCODER_H_ + +#include <vector> + +#include "fxbarcode/datamatrix/BC_SymbolShapeHint.h" + +#define ASCII_ENCODATION 0 +#define C40_ENCODATION 1 +#define TEXT_ENCODATION 2 +#define X12_ENCODATION 3 +#define EDIFACT_ENCODATION 4 +#define BASE256_ENCODATION 5 + +class CBC_HighLevelEncoder : public CBC_SymbolShapeHint { + public: + CBC_HighLevelEncoder(); + ~CBC_HighLevelEncoder() override; + + std::vector<uint8_t>& getBytesForMessage(CFX_WideString msg); + static CFX_WideString encodeHighLevel(CFX_WideString msg, + CFX_WideString ecLevel, + int32_t& e); + 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, + int32_t currentMode); + static bool isDigit(wchar_t ch); + static bool isExtendedASCII(wchar_t ch); + static int32_t determineConsecutiveDigitCount(CFX_WideString msg, + int32_t startpos); + static void illegalCharacter(wchar_t c, int32_t& e); + + public: + static wchar_t LATCH_TO_C40; + static wchar_t LATCH_TO_BASE256; + static wchar_t UPPER_SHIFT; + static wchar_t LATCH_TO_ANSIX12; + static wchar_t LATCH_TO_TEXT; + static wchar_t LATCH_TO_EDIFACT; + static wchar_t C40_UNLATCH; + static wchar_t X12_UNLATCH; + + private: + static wchar_t PAD; + static wchar_t MACRO_05; + static wchar_t MACRO_06; + static const wchar_t* MACRO_05_HEADER; + static const wchar_t* MACRO_06_HEADER; + static const wchar_t MACRO_TRAILER; + std::vector<uint8_t> m_bytearray; + + private: + static wchar_t randomize253State(wchar_t ch, int32_t codewordPosition); + static int32_t findMinimums(std::vector<float>& charCounts, + std::vector<int32_t>& intCharCounts, + int32_t min, + std::vector<uint8_t>& mins); + static int32_t getMinimumCount(std::vector<uint8_t>& mins); + static bool isNativeC40(wchar_t ch); + static bool isNativeText(wchar_t ch); + static bool isNativeX12(wchar_t ch); + static bool isX12TermSep(wchar_t ch); + static bool isNativeEDIFACT(wchar_t ch); + static bool isSpecialB256(wchar_t ch); +}; + +#endif // FXBARCODE_DATAMATRIX_BC_HIGHLEVELENCODER_H_ |