|  | // 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_ENCODERCONTEXT_H_ | 
|  | #define FXBARCODE_DATAMATRIX_BC_ENCODERCONTEXT_H_ | 
|  |  | 
|  | #include "core/fxcrt/unowned_ptr.h" | 
|  | #include "core/fxcrt/widestring.h" | 
|  |  | 
|  | class CBC_SymbolInfo; | 
|  |  | 
|  | class CBC_EncoderContext { | 
|  | public: | 
|  | CBC_EncoderContext(const WideString& msg, | 
|  | const WideString& ecLevel, | 
|  | int32_t& e); | 
|  | ~CBC_EncoderContext(); | 
|  |  | 
|  | void setAllowRectangular(bool allow); | 
|  | void setSkipAtEnd(int32_t count); | 
|  | wchar_t getCurrentChar(); | 
|  | wchar_t getCurrent(); | 
|  | void writeCodewords(const WideString& codewords); | 
|  | void writeCodeword(wchar_t codeword); | 
|  | size_t getCodewordCount(); | 
|  | void signalEncoderChange(int32_t encoding); | 
|  | void resetEncoderSignal(); | 
|  | bool hasMoreCharacters(); | 
|  | size_t getRemainingCharacters(); | 
|  | void updateSymbolInfo(int32_t& e); | 
|  | void updateSymbolInfo(int32_t len, int32_t& e); | 
|  | void resetSymbolInfo(); | 
|  |  | 
|  | WideString m_msg; | 
|  | WideString m_codewords; | 
|  | size_t m_pos; | 
|  | int32_t m_newEncoding; | 
|  | UnownedPtr<CBC_SymbolInfo> m_symbolInfo; | 
|  |  | 
|  | private: | 
|  | size_t getTotalMessageCharCount(); | 
|  |  | 
|  | bool m_allowRectangular;  // Force square when false. | 
|  | size_t m_skipAtEnd; | 
|  | }; | 
|  |  | 
|  | #endif  // FXBARCODE_DATAMATRIX_BC_ENCODERCONTEXT_H_ |