Cleanup some fx_codec_fax.cpp code.
[pdfium.git] / core / src / fxcodec / jbig2 / JBig2_ArithDecoder.h
index 214688d..02c81b3 100644 (file)
 // Copyright 2014 PDFium Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
+
 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
 
-#ifndef _JBIG2_ARITHMETIC_DECODER_H_
-#define _JBIG2_ARITHMETIC_DECODER_H_
-#include "JBig2_Define.h"
-#include "JBig2_BitStream.h"
-#include "JBig2_ArithQe.h"
-typedef struct {
-    unsigned int MPS;
-    unsigned int I;
-} JBig2ArithCtx;
-class CJBig2_ArithDecoder : public CJBig2_Object
-{
-public:
+#ifndef CORE_SRC_FXCODEC_JBIG2_JBIG2_ARITHDECODER_H_
+#define CORE_SRC_FXCODEC_JBIG2_JBIG2_ARITHDECODER_H_
+
+class CJBig2_BitStream;
 
-    CJBig2_ArithDecoder(CJBig2_BitStream *pStream);
+struct JBig2ArithCtx {
+  unsigned int MPS;
+  unsigned int I;
+};
 
-    ~CJBig2_ArithDecoder();
+class CJBig2_ArithDecoder {
+ public:
+  explicit CJBig2_ArithDecoder(CJBig2_BitStream* pStream);
 
-    int DECODE(JBig2ArithCtx *pCX);
-private:
+  ~CJBig2_ArithDecoder();
 
-    void INITDEC();
+  int DECODE(JBig2ArithCtx* pCX);
 
-    void BYTEIN();
-    unsigned char B;
-    unsigned int C;
-    unsigned int A;
-    unsigned int CT;
-    CJBig2_BitStream *m_pStream;
+ private:
+  void INITDEC();
+  void BYTEIN();
+
+  unsigned char B;
+  unsigned int C;
+  unsigned int A;
+  unsigned int CT;
+  CJBig2_BitStream* m_pStream;
 };
-inline CJBig2_ArithDecoder::CJBig2_ArithDecoder(CJBig2_BitStream *pStream)
-{
-    m_pStream = pStream;
-    INITDEC();
-}
-inline CJBig2_ArithDecoder::~CJBig2_ArithDecoder()
-{
-}
-inline void CJBig2_ArithDecoder::INITDEC()
-{
-    B = m_pStream->getCurByte_arith();
-    C = (B ^ 0xff) << 16;;
-    BYTEIN();
-    C = C << 7;
-    CT = CT - 7;
-    A = 0x8000;
-}
-inline void CJBig2_ArithDecoder::BYTEIN()
-{
-    unsigned char B1;
-    if(B == 0xff) {
-        B1 = m_pStream->getNextByte_arith();
-        if(B1 > 0x8f) {
-            CT = 8;
-        } else {
-            m_pStream->incByteIdx();
-            B = B1;
-            C = C + 0xfe00 - (B << 9);
-            CT = 7;
-        }
-    } else {
-        m_pStream->incByteIdx();
-        B = m_pStream->getCurByte_arith();
-        C = C + 0xff00 - (B << 8);
-        CT = 8;
-    }
-}
-inline int CJBig2_ArithDecoder::DECODE(JBig2ArithCtx *pCX)
-{
-    int D;
-    const JBig2ArithQe * qe = &QeTable[pCX->I];
-    A = A - qe->Qe;
-    if((C >> 16) < A) {
-        if(A & 0x8000) {
-            D = pCX->MPS;
-        } else {
-            if(A < qe->Qe) {
-                D = 1 - pCX->MPS;
-                if(qe->nSwitch == 1) {
-                    pCX->MPS = 1 - pCX->MPS;
-                }
-                pCX->I = qe->NLPS;
-            } else {
-                D = pCX->MPS;
-                pCX->I = qe->NMPS;
-            }
-            do {
-                if (CT == 0) {
-                    BYTEIN();
-                }
-                A <<= 1;
-                C <<= 1;
-                CT--;
-            } while ((A & 0x8000) == 0);
-        }
-    } else {
-        C -= A << 16;
-        if(A < qe->Qe) {
-            A = qe->Qe;
-            D = pCX->MPS;
-            pCX->I = qe->NMPS;
-        } else {
-            A = qe->Qe;
-            D = 1 - pCX->MPS;
-            if(qe->nSwitch == 1) {
-                pCX->MPS = 1 - pCX->MPS;
-            }
-            pCX->I = qe->NLPS;
-        }
-        do {
-            if (CT == 0) {
-                BYTEIN();
-            }
-            A <<= 1;
-            C <<= 1;
-            CT--;
-        } while ((A & 0x8000) == 0);
-    }
-    return D;
-}
-#endif
+
+#endif  // CORE_SRC_FXCODEC_JBIG2_JBIG2_ARITHDECODER_H_