Mercurial > vba-linux
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 } |