rlm@1: // ProgressUtils.h rlm@1: rlm@1: #include "StdAfx.h" rlm@1: rlm@1: #include "ProgressUtils.h" rlm@1: rlm@1: CLocalProgress::CLocalProgress() rlm@1: { rlm@1: ProgressOffset = InSize = OutSize = 0; rlm@1: SendRatio = SendProgress = true; rlm@1: } rlm@1: rlm@1: void CLocalProgress::Init(IProgress *progress, bool inSizeIsMain) rlm@1: { rlm@1: _ratioProgress.Release(); rlm@1: _progress = progress; rlm@1: _progress.QueryInterface(IID_ICompressProgressInfo, &_ratioProgress); rlm@1: _inSizeIsMain = inSizeIsMain; rlm@1: } rlm@1: rlm@1: STDMETHODIMP CLocalProgress::SetRatioInfo(const UInt64 *inSize, const UInt64 *outSize) rlm@1: { rlm@1: UInt64 inSizeNew = InSize, outSizeNew = OutSize; rlm@1: if (inSize) rlm@1: inSizeNew += (*inSize); rlm@1: if (outSize) rlm@1: outSizeNew += (*outSize); rlm@1: if (SendRatio && _ratioProgress) rlm@1: { rlm@1: RINOK(_ratioProgress->SetRatioInfo(&inSizeNew, &outSizeNew)); rlm@1: } rlm@1: inSizeNew += ProgressOffset; rlm@1: outSizeNew += ProgressOffset; rlm@1: if (SendProgress) rlm@1: return _progress->SetCompleted(_inSizeIsMain ? &inSizeNew : &outSizeNew); rlm@1: return S_OK; rlm@1: } rlm@1: rlm@1: HRESULT CLocalProgress::SetCur() rlm@1: { rlm@1: return SetRatioInfo(NULL, NULL); rlm@1: }