1 // XzEncoder.h 2 3 #ifndef __XZ_ENCODER_H 4 #define __XZ_ENCODER_H 5 6 #include "../../../C/XzEnc.h" 7 8 #include "../../Common/MyCom.h" 9 10 #include "../ICoder.h" 11 12 namespace NCompress { 13 namespace NXz { 14 15 16 class CEncoder: 17 public ICompressCoder, 18 public ICompressSetCoderProperties, 19 public ICompressSetCoderPropertiesOpt, 20 public CMyUnknownImp 21 { 22 CXzEncHandle _encoder; 23 public: 24 CXzProps xzProps; 25 26 MY_UNKNOWN_IMP3( 27 ICompressCoder, 28 ICompressSetCoderProperties, 29 ICompressSetCoderPropertiesOpt) 30 31 void InitCoderProps(); 32 HRESULT SetCheckSize(UInt32 checkSizeInBytes); 33 HRESULT SetCoderProp(PROPID propID, const PROPVARIANT &prop); 34 35 STDMETHOD(Code)(ISequentialInStream *inStream, ISequentialOutStream *outStream, 36 const UInt64 *inSize, const UInt64 *outSize, ICompressProgressInfo *progress); 37 STDMETHOD(SetCoderProperties)(const PROPID *propIDs, const PROPVARIANT *props, UInt32 numProps); 38 STDMETHOD(SetCoderPropertiesOpt)(const PROPID *propIDs, const PROPVARIANT *props, UInt32 numProps); 39 40 CEncoder(); 41 virtual ~CEncoder(); 42 }; 43 44 }} 45 46 #endif 47