// PpmdEncoder.h #ifndef __COMPRESS_PPMD_ENCODER_H #define __COMPRESS_PPMD_ENCODER_H #include "../../../C/Ppmd7.h" #include "../../Common/MyCom.h" #include "../ICoder.h" #include "../Common/CWrappers.h" namespace NCompress { namespace NPpmd { struct CEncProps { UInt32 MemSize; UInt32 ReduceSize; int Order; CEncProps() { MemSize = (UInt32)(Int32)-1; ReduceSize = (UInt32)(Int32)-1; Order = -1; } void Normalize(int level); }; class CEncoder : public ICompressCoder, public ICompressSetCoderProperties, public ICompressWriteCoderProperties, public CMyUnknownImp { Byte *_inBuf; CByteOutBufWrap _outStream; CPpmd7z_RangeEnc _rangeEnc; CPpmd7 _ppmd; CEncProps _props; public: MY_UNKNOWN_IMP2( ICompressSetCoderProperties, ICompressWriteCoderProperties) STDMETHOD(Code)(ISequentialInStream *inStream, ISequentialOutStream *outStream, const UInt64 *inSize, const UInt64 *outSize, ICompressProgressInfo *progress); STDMETHOD(SetCoderProperties)(const PROPID *propIDs, const PROPVARIANT *props, UInt32 numProps); STDMETHOD(WriteCoderProperties)(ISequentialOutStream *outStream); CEncoder(); ~CEncoder(); }; }} #endif