1baa3858d3f5d128a5c8466b700098109edcad5f2repo sync// ProgressUtils.h 2baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 3baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#include "StdAfx.h" 4baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 5baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#include "ProgressUtils.h" 6baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 7baa3858d3f5d128a5c8466b700098109edcad5f2repo syncCLocalProgress::CLocalProgress() 8baa3858d3f5d128a5c8466b700098109edcad5f2repo sync{ 9baa3858d3f5d128a5c8466b700098109edcad5f2repo sync ProgressOffset = InSize = OutSize = 0; 10baa3858d3f5d128a5c8466b700098109edcad5f2repo sync SendRatio = SendProgress = true; 11baa3858d3f5d128a5c8466b700098109edcad5f2repo sync} 12baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 13baa3858d3f5d128a5c8466b700098109edcad5f2repo syncvoid CLocalProgress::Init(IProgress *progress, bool inSizeIsMain) 14baa3858d3f5d128a5c8466b700098109edcad5f2repo sync{ 15baa3858d3f5d128a5c8466b700098109edcad5f2repo sync _ratioProgress.Release(); 16baa3858d3f5d128a5c8466b700098109edcad5f2repo sync _progress = progress; 17baa3858d3f5d128a5c8466b700098109edcad5f2repo sync _progress.QueryInterface(IID_ICompressProgressInfo, &_ratioProgress); 18baa3858d3f5d128a5c8466b700098109edcad5f2repo sync _inSizeIsMain = inSizeIsMain; 19baa3858d3f5d128a5c8466b700098109edcad5f2repo sync} 20baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 21baa3858d3f5d128a5c8466b700098109edcad5f2repo syncSTDMETHODIMP CLocalProgress::SetRatioInfo(const UInt64 *inSize, const UInt64 *outSize) 22baa3858d3f5d128a5c8466b700098109edcad5f2repo sync{ 23baa3858d3f5d128a5c8466b700098109edcad5f2repo sync UInt64 inSizeNew = InSize, outSizeNew = OutSize; 24baa3858d3f5d128a5c8466b700098109edcad5f2repo sync if (inSize) 25baa3858d3f5d128a5c8466b700098109edcad5f2repo sync inSizeNew += (*inSize); 26baa3858d3f5d128a5c8466b700098109edcad5f2repo sync if (outSize) 27baa3858d3f5d128a5c8466b700098109edcad5f2repo sync outSizeNew += (*outSize); 28baa3858d3f5d128a5c8466b700098109edcad5f2repo sync if (SendRatio && _ratioProgress) 29baa3858d3f5d128a5c8466b700098109edcad5f2repo sync { 30baa3858d3f5d128a5c8466b700098109edcad5f2repo sync RINOK(_ratioProgress->SetRatioInfo(&inSizeNew, &outSizeNew)); 31baa3858d3f5d128a5c8466b700098109edcad5f2repo sync } 32baa3858d3f5d128a5c8466b700098109edcad5f2repo sync inSizeNew += ProgressOffset; 33baa3858d3f5d128a5c8466b700098109edcad5f2repo sync outSizeNew += ProgressOffset; 34baa3858d3f5d128a5c8466b700098109edcad5f2repo sync if (SendProgress) 35baa3858d3f5d128a5c8466b700098109edcad5f2repo sync return _progress->SetCompleted(_inSizeIsMain ? &inSizeNew : &outSizeNew); 36baa3858d3f5d128a5c8466b700098109edcad5f2repo sync return S_OK; 37baa3858d3f5d128a5c8466b700098109edcad5f2repo sync} 38baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 39baa3858d3f5d128a5c8466b700098109edcad5f2repo syncHRESULT CLocalProgress::SetCur() 40baa3858d3f5d128a5c8466b700098109edcad5f2repo sync{ 41baa3858d3f5d128a5c8466b700098109edcad5f2repo sync return SetRatioInfo(NULL, NULL); 42baa3858d3f5d128a5c8466b700098109edcad5f2repo sync} 43