Clean project structure.
This commit is contained in:
parent
78a4fa99ff
commit
947bf937fd
496 changed files with 206 additions and 137 deletions
59
src/base/compression/ZlibEncoder.h
Normal file
59
src/base/compression/ZlibEncoder.h
Normal file
|
@ -0,0 +1,59 @@
|
|||
#pragma once
|
||||
|
||||
#include "AbstractEncoder.h"
|
||||
|
||||
#include "DeflateElements.h"
|
||||
|
||||
#include <memory>
|
||||
#include <vector>
|
||||
|
||||
class AbstractChecksumCalculator;
|
||||
|
||||
class ZlibEncoder : public AbstractEncoder
|
||||
{
|
||||
public:
|
||||
|
||||
enum class CompressionMethod : unsigned char
|
||||
{
|
||||
DEFLATE = 8,
|
||||
};
|
||||
|
||||
enum class CompressionLevel : unsigned char
|
||||
{
|
||||
FASTEST,
|
||||
FAST,
|
||||
DEFAULT,
|
||||
MAX_COMPRESSION
|
||||
};
|
||||
|
||||
ZlibEncoder(BitStream* inputStream, BitStream* outputStream);
|
||||
~ZlibEncoder();
|
||||
|
||||
void setWindowSize(unsigned size);
|
||||
void setDeflateCompressionMethod(Deflate::CompressionMethod method)
|
||||
{
|
||||
mDeflateCompressionMethod = method;
|
||||
}
|
||||
|
||||
bool encode() override;
|
||||
bool decode() override;
|
||||
|
||||
std::string getData() const;
|
||||
std::string toString(CompressionLevel level) const;
|
||||
std::string toString(CompressionMethod method) const;
|
||||
|
||||
private:
|
||||
void parseCompressionMethod(unsigned char method);
|
||||
void parseExtraFlags(unsigned char extraFlags, unsigned char compression_byte);
|
||||
|
||||
CompressionMethod mCompressionMethod{CompressionMethod::DEFLATE};
|
||||
Deflate::CompressionMethod mDeflateCompressionMethod{Deflate::CompressionMethod::NONE};
|
||||
unsigned mWindowSize{32768}; // Window size, n in 2^(n+8) bytes
|
||||
|
||||
unsigned char mFlagCheck{0};
|
||||
bool mUseDictionary{false};
|
||||
CompressionLevel mFlagLevel{CompressionLevel::DEFAULT};
|
||||
|
||||
std::unique_ptr<AbstractChecksumCalculator> mChecksumCalculator;
|
||||
std::unique_ptr<AbstractEncoder> mWorkingEncoder;
|
||||
};
|
Loading…
Add table
Add a link
Reference in a new issue