1*f6dc9357SAndroid Build Coastguard Worker // ZipAddCommon.h 2*f6dc9357SAndroid Build Coastguard Worker 3*f6dc9357SAndroid Build Coastguard Worker #ifndef ZIP7_INC_ZIP_ADD_COMMON_H 4*f6dc9357SAndroid Build Coastguard Worker #define ZIP7_INC_ZIP_ADD_COMMON_H 5*f6dc9357SAndroid Build Coastguard Worker 6*f6dc9357SAndroid Build Coastguard Worker #include "../../ICoder.h" 7*f6dc9357SAndroid Build Coastguard Worker #include "../../IProgress.h" 8*f6dc9357SAndroid Build Coastguard Worker 9*f6dc9357SAndroid Build Coastguard Worker #include "../../Common/CreateCoder.h" 10*f6dc9357SAndroid Build Coastguard Worker #include "../../Common/FilterCoder.h" 11*f6dc9357SAndroid Build Coastguard Worker 12*f6dc9357SAndroid Build Coastguard Worker #include "../../Compress/CopyCoder.h" 13*f6dc9357SAndroid Build Coastguard Worker 14*f6dc9357SAndroid Build Coastguard Worker #include "../../Crypto/ZipCrypto.h" 15*f6dc9357SAndroid Build Coastguard Worker #include "../../Crypto/WzAes.h" 16*f6dc9357SAndroid Build Coastguard Worker 17*f6dc9357SAndroid Build Coastguard Worker #include "ZipCompressionMode.h" 18*f6dc9357SAndroid Build Coastguard Worker 19*f6dc9357SAndroid Build Coastguard Worker namespace NArchive { 20*f6dc9357SAndroid Build Coastguard Worker namespace NZip { 21*f6dc9357SAndroid Build Coastguard Worker 22*f6dc9357SAndroid Build Coastguard Worker struct CCompressingResult 23*f6dc9357SAndroid Build Coastguard Worker { 24*f6dc9357SAndroid Build Coastguard Worker UInt64 UnpackSize; 25*f6dc9357SAndroid Build Coastguard Worker UInt64 PackSize; 26*f6dc9357SAndroid Build Coastguard Worker UInt32 CRC; 27*f6dc9357SAndroid Build Coastguard Worker UInt16 Method; 28*f6dc9357SAndroid Build Coastguard Worker Byte ExtractVersion; 29*f6dc9357SAndroid Build Coastguard Worker bool DescriptorMode; 30*f6dc9357SAndroid Build Coastguard Worker bool LzmaEos; 31*f6dc9357SAndroid Build Coastguard Worker CCompressingResultCCompressingResult32*f6dc9357SAndroid Build Coastguard Worker CCompressingResult() 33*f6dc9357SAndroid Build Coastguard Worker { 34*f6dc9357SAndroid Build Coastguard Worker // for GCC: 35*f6dc9357SAndroid Build Coastguard Worker UnpackSize = 0; 36*f6dc9357SAndroid Build Coastguard Worker } 37*f6dc9357SAndroid Build Coastguard Worker }; 38*f6dc9357SAndroid Build Coastguard Worker 39*f6dc9357SAndroid Build Coastguard Worker class CAddCommon MY_UNCOPYABLE 40*f6dc9357SAndroid Build Coastguard Worker { 41*f6dc9357SAndroid Build Coastguard Worker CCompressionMethodMode _options; 42*f6dc9357SAndroid Build Coastguard Worker CMyComPtr2<ICompressCoder, NCompress::CCopyCoder> _copyCoder; 43*f6dc9357SAndroid Build Coastguard Worker 44*f6dc9357SAndroid Build Coastguard Worker CMyComPtr<ICompressCoder> _compressEncoder; 45*f6dc9357SAndroid Build Coastguard Worker Byte _compressExtractVersion; 46*f6dc9357SAndroid Build Coastguard Worker bool _isLzmaEos; 47*f6dc9357SAndroid Build Coastguard Worker 48*f6dc9357SAndroid Build Coastguard Worker CMyComPtr2<ISequentialOutStream, CFilterCoder> _cryptoStream; 49*f6dc9357SAndroid Build Coastguard Worker 50*f6dc9357SAndroid Build Coastguard Worker NCrypto::NZip::CEncoder *_filterSpec; 51*f6dc9357SAndroid Build Coastguard Worker NCrypto::NWzAes::CEncoder *_filterAesSpec; 52*f6dc9357SAndroid Build Coastguard Worker 53*f6dc9357SAndroid Build Coastguard Worker Byte *_buf; 54*f6dc9357SAndroid Build Coastguard Worker 55*f6dc9357SAndroid Build Coastguard Worker HRESULT CalcStreamCRC(ISequentialInStream *inStream, UInt32 &resultCRC); 56*f6dc9357SAndroid Build Coastguard Worker public: 57*f6dc9357SAndroid Build Coastguard Worker // CAddCommon(const CCompressionMethodMode &options); 58*f6dc9357SAndroid Build Coastguard Worker CAddCommon(); 59*f6dc9357SAndroid Build Coastguard Worker void SetOptions(const CCompressionMethodMode &options); 60*f6dc9357SAndroid Build Coastguard Worker ~CAddCommon(); 61*f6dc9357SAndroid Build Coastguard Worker 62*f6dc9357SAndroid Build Coastguard Worker HRESULT Set_Pre_CompressionResult(bool inSeqMode, bool outSeqMode, UInt64 unpackSize, 63*f6dc9357SAndroid Build Coastguard Worker CCompressingResult &opRes) const; 64*f6dc9357SAndroid Build Coastguard Worker 65*f6dc9357SAndroid Build Coastguard Worker HRESULT Compress( 66*f6dc9357SAndroid Build Coastguard Worker DECL_EXTERNAL_CODECS_LOC_VARS 67*f6dc9357SAndroid Build Coastguard Worker ISequentialInStream *inStream, IOutStream *outStream, 68*f6dc9357SAndroid Build Coastguard Worker bool inSeqMode, bool outSeqMode, 69*f6dc9357SAndroid Build Coastguard Worker UInt32 fileTime, 70*f6dc9357SAndroid Build Coastguard Worker UInt64 expectedDataSize, bool expectedDataSize_IsConfirmed, 71*f6dc9357SAndroid Build Coastguard Worker ICompressProgressInfo *progress, CCompressingResult &opRes); 72*f6dc9357SAndroid Build Coastguard Worker }; 73*f6dc9357SAndroid Build Coastguard Worker 74*f6dc9357SAndroid Build Coastguard Worker }} 75*f6dc9357SAndroid Build Coastguard Worker 76*f6dc9357SAndroid Build Coastguard Worker #endif 77