Source code
Revision control
Copy as Markdown
Other Tools
// ProgressUtils.cpp↩
↩
#include "StdAfx.h"↩
↩
#include "ProgressUtils.h"↩
↩
CLocalProgress::CLocalProgress():↩
ProgressOffset(0),↩
InSize(0),↩
OutSize(0),↩
SendRatio(true),↩
SendProgress(true)↩
{}↩
↩
void CLocalProgress::Init(IProgress *progress, bool inSizeIsMain)↩
{↩
_ratioProgress.Release();↩
_progress = progress;↩
_progress.QueryInterface(IID_ICompressProgressInfo, &_ratioProgress);↩
_inSizeIsMain = inSizeIsMain;↩
}↩
↩
STDMETHODIMP CLocalProgress::SetRatioInfo(const UInt64 *inSize, const UInt64 *outSize)↩
{↩
UInt64 inSize2 = InSize;↩
UInt64 outSize2 = OutSize;↩
↩
if (inSize)↩
inSize2 += (*inSize);↩
if (outSize)↩
outSize2 += (*outSize);↩
↩
if (SendRatio && _ratioProgress)↩
{↩
RINOK(_ratioProgress->SetRatioInfo(&inSize2, &outSize2));↩
}↩
↩
if (SendProgress)↩
{↩
inSize2 += ProgressOffset;↩
outSize2 += ProgressOffset;↩
return _progress->SetCompleted(_inSizeIsMain ? &inSize2 : &outSize2);↩
}↩
↩
return S_OK;↩
}↩
↩
HRESULT CLocalProgress::SetCur()↩
{↩
return SetRatioInfo(NULL, NULL);↩
}↩