stuff-from-scratch/src/compression/ZlibEncoder.h
2022-11-23 15:41:33 +00:00

34 lines
718 B
C++

#pragma once
#include "AbstractEncoder.h"
#include <memory>
#include <vector>
class ZlibEncoder : public AbstractEncoder
{
public:
ZlibEncoder(BitStream* inputStream, BitStream* outputStream);
~ZlibEncoder();
void setCompressionMethod(unsigned char method);
void setExtraFlags(unsigned char extraFlags);
bool encode() override;
bool decode() override;
private:
unsigned char mCmf{0};
unsigned char mFlg{0};
unsigned char mCompressionMethod{8};
unsigned char mCompressionInfo{0};
unsigned char mFlagCheck{0};
unsigned char mFlagDict{0};
unsigned char mFlagLevel{0};
unsigned char mCheckValue{0};
std::unique_ptr<AbstractEncoder> mWorkingEncoder;
};