Home | History | Annotate | Download | only in datamatrix
      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_DATAMATRIXDECODEDBITSTREAMPARSER_H_
      8 #define _BC_DATAMATRIXDECODEDBITSTREAMPARSER_H_
      9 class CBC_CommonDecoderResult;
     10 class CBC_CommonBitSource;
     11 class CBC_DataMatrixDecodedBitStreamParser {
     12  public:
     13   CBC_DataMatrixDecodedBitStreamParser();
     14   virtual ~CBC_DataMatrixDecodedBitStreamParser();
     15   static CBC_CommonDecoderResult* Decode(CFX_ByteArray& bytes, int32_t& e);
     16 
     17  private:
     18   static int32_t DecodeAsciiSegment(CBC_CommonBitSource* bits,
     19                                     CFX_ByteString& result,
     20                                     CFX_ByteString& resultTrailer,
     21                                     int32_t& e);
     22   static void DecodeC40Segment(CBC_CommonBitSource* bits,
     23                                CFX_ByteString& result,
     24                                int32_t& e);
     25   static void DecodeTextSegment(CBC_CommonBitSource* bits,
     26                                 CFX_ByteString& result,
     27                                 int32_t& e);
     28   static void DecodeAnsiX12Segment(CBC_CommonBitSource* bits,
     29                                    CFX_ByteString& result,
     30                                    int32_t& e);
     31   static void ParseTwoBytes(int32_t firstByte,
     32                             int32_t secondByte,
     33                             CFX_Int32Array& result);
     34   static void DecodeEdifactSegment(CBC_CommonBitSource* bits,
     35                                    CFX_ByteString& result,
     36                                    int32_t& e);
     37   static void DecodeBase256Segment(CBC_CommonBitSource* bits,
     38                                    CFX_ByteString& result,
     39                                    CFX_Int32Array& byteSegments,
     40                                    int32_t& e);
     41   static uint8_t Unrandomize255State(int32_t randomizedBase256Codeword,
     42                                      int32_t base256CodewordPosition);
     43 
     44   const static FX_CHAR C40_BASIC_SET_CHARS[];
     45   const static FX_CHAR C40_SHIFT2_SET_CHARS[];
     46 
     47   const static FX_CHAR TEXT_BASIC_SET_CHARS[];
     48   const static FX_CHAR TEXT_SHIFT3_SET_CHARS[];
     49   const static int32_t PAD_ENCODE;
     50   const static int32_t ASCII_ENCODE;
     51   const static int32_t C40_ENCODE;
     52   const static int32_t TEXT_ENCODE;
     53   const static int32_t ANSIX12_ENCODE;
     54   const static int32_t EDIFACT_ENCODE;
     55   const static int32_t BASE256_ENCODE;
     56 };
     57 #endif
     58