1 // Copyright 2014 PDFium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 6 7 #ifndef XFA_FXBARCODE_DATAMATRIX_BC_C40ENCODER_H_ 8 #define XFA_FXBARCODE_DATAMATRIX_BC_C40ENCODER_H_ 9 10 #include "xfa/fxbarcode/datamatrix/BC_Encoder.h" 11 12 class CBC_C40Encoder : public CBC_Encoder { 13 public: 14 CBC_C40Encoder(); 15 ~CBC_C40Encoder() override; 16 17 // CBC_Encoder 18 int32_t getEncodingMode() override; 19 void Encode(CBC_EncoderContext& context, int32_t& e) override; 20 21 static void writeNextTriplet(CBC_EncoderContext& context, 22 CFX_WideString& buffer); 23 24 virtual void handleEOD(CBC_EncoderContext& context, 25 CFX_WideString& buffer, 26 int32_t& e); 27 virtual int32_t encodeChar(FX_WCHAR c, CFX_WideString& sb, int32_t& e); 28 29 private: 30 int32_t backtrackOneCharacter(CBC_EncoderContext& context, 31 CFX_WideString& buffer, 32 CFX_WideString& removed, 33 int32_t lastCharSize, 34 int32_t& e); 35 static CFX_WideString encodeToCodewords(CFX_WideString sb, int32_t startPos); 36 }; 37 38 #endif // XFA_FXBARCODE_DATAMATRIX_BC_C40ENCODER_H_ 39