// 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 CORE_SRC_FXCODEC_JBIG2_JBIG2_ARITHDECODER_H_
#define CORE_SRC_FXCODEC_JBIG2_JBIG2_ARITHDECODER_H_

class CJBig2_BitStream;

struct JBig2ArithCtx {
  JBig2ArithCtx() : MPS(0), I(0) {}

  unsigned int MPS;
  unsigned int I;
};

class CJBig2_ArithDecoder {
 public:
  explicit CJBig2_ArithDecoder(CJBig2_BitStream* pStream);

  ~CJBig2_ArithDecoder();

  int DECODE(JBig2ArithCtx* pCX);

 private:
  void BYTEIN();
  void ReadValueA();

  unsigned char m_B;
  unsigned int m_C;
  unsigned int m_A;
  unsigned int m_CT;
  CJBig2_BitStream* const m_pStream;
};

#endif  // CORE_SRC_FXCODEC_JBIG2_JBIG2_ARITHDECODER_H_
