summaryrefslogtreecommitdiff
path: root/core/fxcodec/jbig2/JBig2_BitStream.h
diff options
context:
space:
mode:
Diffstat (limited to 'core/fxcodec/jbig2/JBig2_BitStream.h')
-rw-r--r--core/fxcodec/jbig2/JBig2_BitStream.h58
1 files changed, 58 insertions, 0 deletions
diff --git a/core/fxcodec/jbig2/JBig2_BitStream.h b/core/fxcodec/jbig2/JBig2_BitStream.h
new file mode 100644
index 0000000000..c24fedfba1
--- /dev/null
+++ b/core/fxcodec/jbig2/JBig2_BitStream.h
@@ -0,0 +1,58 @@
+// 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_FXCODEC_JBIG2_JBIG2_BITSTREAM_H_
+#define CORE_FXCODEC_JBIG2_JBIG2_BITSTREAM_H_
+
+#include "core/include/fxcrt/fx_basic.h"
+
+class CPDF_StreamAcc;
+
+class CJBig2_BitStream {
+ public:
+ explicit CJBig2_BitStream(CPDF_StreamAcc* pSrcStream);
+ ~CJBig2_BitStream();
+
+ // TODO(thestig): readFoo() should return bool.
+ int32_t readNBits(FX_DWORD nBits, FX_DWORD* dwResult);
+ int32_t readNBits(FX_DWORD nBits, int32_t* nResult);
+ int32_t read1Bit(FX_DWORD* dwResult);
+ int32_t read1Bit(FX_BOOL* bResult);
+ int32_t read1Byte(uint8_t* cResult);
+ int32_t readInteger(FX_DWORD* dwResult);
+ int32_t readShortInteger(FX_WORD* wResult);
+ void alignByte();
+ uint8_t getCurByte() const;
+ void incByteIdx();
+ uint8_t getCurByte_arith() const;
+ uint8_t getNextByte_arith() const;
+ FX_DWORD getOffset() const;
+ void setOffset(FX_DWORD dwOffset);
+ FX_DWORD getBitPos() const;
+ void setBitPos(FX_DWORD dwBitPos);
+ const uint8_t* getBuf() const;
+ FX_DWORD getLength() const { return m_dwLength; }
+ const uint8_t* getPointer() const;
+ void offset(FX_DWORD dwOffset);
+ FX_DWORD getByteLeft() const;
+ FX_DWORD getObjNum() const;
+
+ private:
+ void AdvanceBit();
+ bool IsInBound() const;
+ FX_DWORD LengthInBits() const;
+
+ const uint8_t* m_pBuf;
+ FX_DWORD m_dwLength;
+ FX_DWORD m_dwByteIdx;
+ FX_DWORD m_dwBitIdx;
+ const FX_DWORD m_dwObjNum;
+
+ CJBig2_BitStream(const CJBig2_BitStream&) = delete;
+ void operator=(const CJBig2_BitStream&) = delete;
+};
+
+#endif // CORE_FXCODEC_JBIG2_JBIG2_BITSTREAM_H_