Home | History | Annotate | Download | only in pdf417
      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_PDF417_H_
      8 #define _BC_PDF417_H_
      9 class CBC_Compaction;
     10 class CBC_BarcodeRow;
     11 class CBC_BarcodeMatrix;
     12 class CBC_PDF417 {
     13  public:
     14   CBC_PDF417();
     15   CBC_PDF417(FX_BOOL compact);
     16   virtual ~CBC_PDF417();
     17   CBC_BarcodeMatrix* getBarcodeMatrix();
     18   void generateBarcodeLogic(CFX_WideString msg,
     19                             int32_t errorCorrectionLevel,
     20                             int32_t& e);
     21   void setDimensions(int32_t maxCols,
     22                      int32_t minCols,
     23                      int32_t maxRows,
     24                      int32_t minRows);
     25   void setCompaction(Compaction compaction);
     26   void setCompact(FX_BOOL compact);
     27 
     28  private:
     29   static int32_t START_PATTERN;
     30   static int32_t STOP_PATTERN;
     31   static int32_t CODEWORD_TABLE[][1000];
     32   static FX_FLOAT PREFERRED_RATIO;
     33   static FX_FLOAT DEFAULT_MODULE_WIDTH;
     34   static FX_FLOAT HEIGHT;
     35   CBC_BarcodeMatrix* m_barcodeMatrix;
     36   FX_BOOL m_compact;
     37   Compaction m_compaction;
     38   int32_t m_minCols;
     39   int32_t m_maxCols;
     40   int32_t m_maxRows;
     41   int32_t m_minRows;
     42 
     43  private:
     44   static int32_t calculateNumberOfRows(int32_t m, int32_t k, int32_t c);
     45   static int32_t getNumberOfPadCodewords(int32_t m,
     46                                          int32_t k,
     47                                          int32_t c,
     48                                          int32_t r);
     49   static void encodeChar(int32_t pattern, int32_t len, CBC_BarcodeRow* logic);
     50   void encodeLowLevel(CFX_WideString fullCodewords,
     51                       int32_t c,
     52                       int32_t r,
     53                       int32_t errorCorrectionLevel,
     54                       CBC_BarcodeMatrix* logic);
     55   CFX_Int32Array* determineDimensions(int32_t sourceCodeWords,
     56                                       int32_t errorCorrectionCodeWords,
     57                                       int32_t& e);
     58 };
     59 #endif
     60