annotate src/win32/7zip/7z/CPP/7zip/Common/ProgressUtils.cpp @ 1:f9f4f1b99eed

importing src directory
author Robert McIntyre <rlm@mit.edu>
date Sat, 03 Mar 2012 10:31:27 -0600
parents
children
rev   line source
rlm@1 1 // ProgressUtils.h
rlm@1 2
rlm@1 3 #include "StdAfx.h"
rlm@1 4
rlm@1 5 #include "ProgressUtils.h"
rlm@1 6
rlm@1 7 CLocalProgress::CLocalProgress()
rlm@1 8 {
rlm@1 9 ProgressOffset = InSize = OutSize = 0;
rlm@1 10 SendRatio = SendProgress = true;
rlm@1 11 }
rlm@1 12
rlm@1 13 void CLocalProgress::Init(IProgress *progress, bool inSizeIsMain)
rlm@1 14 {
rlm@1 15 _ratioProgress.Release();
rlm@1 16 _progress = progress;
rlm@1 17 _progress.QueryInterface(IID_ICompressProgressInfo, &_ratioProgress);
rlm@1 18 _inSizeIsMain = inSizeIsMain;
rlm@1 19 }
rlm@1 20
rlm@1 21 STDMETHODIMP CLocalProgress::SetRatioInfo(const UInt64 *inSize, const UInt64 *outSize)
rlm@1 22 {
rlm@1 23 UInt64 inSizeNew = InSize, outSizeNew = OutSize;
rlm@1 24 if (inSize)
rlm@1 25 inSizeNew += (*inSize);
rlm@1 26 if (outSize)
rlm@1 27 outSizeNew += (*outSize);
rlm@1 28 if (SendRatio && _ratioProgress)
rlm@1 29 {
rlm@1 30 RINOK(_ratioProgress->SetRatioInfo(&inSizeNew, &outSizeNew));
rlm@1 31 }
rlm@1 32 inSizeNew += ProgressOffset;
rlm@1 33 outSizeNew += ProgressOffset;
rlm@1 34 if (SendProgress)
rlm@1 35 return _progress->SetCompleted(_inSizeIsMain ? &inSizeNew : &outSizeNew);
rlm@1 36 return S_OK;
rlm@1 37 }
rlm@1 38
rlm@1 39 HRESULT CLocalProgress::SetCur()
rlm@1 40 {
rlm@1 41 return SetRatioInfo(NULL, NULL);
rlm@1 42 }