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_ONEDCODA39READER_H_
8 #define _BC_ONEDCODA39READER_H_
9 class CBC_OneDReader;
10 class CBC_CommonBitArray;
11 class CBC_OnedCoda39Reader;
12 class CBC_OnedCode39Reader : public CBC_OneDReader {
13  public:
14   static const FX_CHAR* ALPHABET_STRING;
15   static const FX_CHAR* CHECKSUM_STRING;
16   const static int32_t CHARACTER_ENCODINGS[44];
17   const static int32_t ASTERISK_ENCODING;
18   CBC_OnedCode39Reader();
19   CBC_OnedCode39Reader(FX_BOOL usingCheckDigit);
20   CBC_OnedCode39Reader(FX_BOOL usingCheckDigit, FX_BOOL extendedMode);
21   virtual ~CBC_OnedCode39Reader();
22   CFX_ByteString DecodeRow(int32_t rowNumber,
23                            CBC_CommonBitArray* row,
24                            int32_t hints,
25                            int32_t& e);
26 
27  private:
28   FX_BOOL m_usingCheckDigit;
29   FX_BOOL m_extendedMode;
30   CFX_Int32Array* FindAsteriskPattern(CBC_CommonBitArray* row, int32_t& e);
31   int32_t ToNarrowWidePattern(CFX_Int32Array* counters);
32   FX_CHAR PatternToChar(int32_t pattern, int32_t& e);
33   CFX_ByteString DecodeExtended(CFX_ByteString& encoded, int32_t& e);
34 };
35 #endif
36