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 _BC_C40ENCODER_H_
8 #define _BC_C40ENCODER_H_
9 class CBC_C40Encoder;
10 class CBC_C40Encoder : public CBC_Encoder {
11  public:
12   CBC_C40Encoder();
13   virtual ~CBC_C40Encoder();
14   virtual int32_t getEncodingMode();
15   virtual void Encode(CBC_EncoderContext& context, int32_t& e);
16   static void writeNextTriplet(CBC_EncoderContext& context,
17                                CFX_WideString& buffer);
18   virtual void handleEOD(CBC_EncoderContext& context,
19                          CFX_WideString& buffer,
20                          int32_t& e);
21   virtual int32_t encodeChar(FX_WCHAR c, CFX_WideString& sb, int32_t& e);
22 
23  private:
24   int32_t backtrackOneCharacter(CBC_EncoderContext& context,
25                                 CFX_WideString& buffer,
26                                 CFX_WideString& removed,
27                                 int32_t lastCharSize,
28                                 int32_t& e);
29   static CFX_WideString encodeToCodewords(CFX_WideString sb, int32_t startPos);
30 };
31 #endif
32