#ifndef HUFFMANSTREAM_H #define HUFFMANSTREAM_H #include "bitstream.h" #include "huffmantable.h" class HuffmanStream : public BitStream4 { public: HuffmanStream(const SubFile &file, SubFile::Handle &hdl, quint32 length, const HuffmanTable &table, bool line); bool readNext(qint32 &lonDelta, qint32 &latDelta); bool readOffset(qint32 &lonDelta, qint32 &latDelta); bool atEnd() const {return _symbolDataSize + bitsAvailable() < _table.maxSymbolSize();} private: bool sign(int &val); bool readDelta(int sign, qint32 &delta); const HuffmanTable &_table; quint32 _symbolDataSize; quint32 _symbolData; int _lonSign, _latSign; }; #endif // HUFFMANSTREAM_H