• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // PpmdEncoder.h
2 
3 #ifndef __COMPRESS_PPMD_ENCODER_H
4 #define __COMPRESS_PPMD_ENCODER_H
5 
6 #include "../../../C/Ppmd7.h"
7 
8 #include "../../Common/MyCom.h"
9 
10 #include "../ICoder.h"
11 
12 #include "../Common/CWrappers.h"
13 
14 namespace NCompress {
15 namespace NPpmd {
16 
17 struct CEncProps
18 {
19   UInt32 MemSize;
20   UInt32 ReduceSize;
21   int Order;
22 
CEncPropsCEncProps23   CEncProps()
24   {
25     MemSize = (UInt32)(Int32)-1;
26     ReduceSize = (UInt32)(Int32)-1;
27     Order = -1;
28   }
29   void Normalize(int level);
30 };
31 
32 class CEncoder :
33   public ICompressCoder,
34   public ICompressSetCoderProperties,
35   public ICompressWriteCoderProperties,
36   public CMyUnknownImp
37 {
38   Byte *_inBuf;
39   CByteOutBufWrap _outStream;
40   CPpmd7z_RangeEnc _rangeEnc;
41   CPpmd7 _ppmd;
42   CEncProps _props;
43 public:
44   MY_UNKNOWN_IMP3(
45       ICompressCoder,
46       ICompressSetCoderProperties,
47       ICompressWriteCoderProperties)
48   STDMETHOD(Code)(ISequentialInStream *inStream, ISequentialOutStream *outStream,
49       const UInt64 *inSize, const UInt64 *outSize, ICompressProgressInfo *progress);
50   STDMETHOD(SetCoderProperties)(const PROPID *propIDs, const PROPVARIANT *props, UInt32 numProps);
51   STDMETHOD(WriteCoderProperties)(ISequentialOutStream *outStream);
52   CEncoder();
53   ~CEncoder();
54 };
55 
56 }}
57 
58 #endif
59