in src/wffile.c [465:586]
void DisplayCompressProgress(
int iType)
{
TCHAR szTemp[120];
TCHAR szNum[30];
LARGE_INTEGER Percentage;
if (!bShowProgress)
{
return;
}
switch (iType)
{
case ( PROGRESS_UPD_FILEANDDIR ) :
case ( PROGRESS_UPD_FILENAME ) :
{
SetDlgItemText(hDlgProgress, IDD_COMPRESS_FILE, szGlobalFile);
if (iType != PROGRESS_UPD_FILEANDDIR)
{
break;
}
// else...fall through
}
case ( PROGRESS_UPD_DIRECTORY ) :
{
//
// Preprocess the directory name to shorten it to fit
// into our space.
//
CompactPath(hDCdir, szGlobalDir, dxdir);
SetDlgItemText(hDlgProgress, IDD_COMPRESS_DIR, szGlobalDir);
break;
}
case ( PROGRESS_UPD_DIRCNT ) :
{
AddCommasInternal(szNum, (DWORD)TotalDirectoryCount);
SetDlgItemText(hDlgProgress, IDD_COMPRESS_TDIRS, szNum);
break;
}
case ( PROGRESS_UPD_FILENUMBERS ) :
case ( PROGRESS_UPD_FILECNT ) :
{
AddCommasInternal(szNum, (DWORD)TotalFileCount);
SetDlgItemText(hDlgProgress, IDD_COMPRESS_TFILES, szNum);
if (iType != PROGRESS_UPD_FILENUMBERS)
{
break;
}
// else...fall through
}
case ( PROGRESS_UPD_COMPRESSEDSIZE ) :
{
PutSize(&TotalCompressedSize, szNum);
wsprintf(szTemp, szSBytes, szNum);
SetDlgItemText(hDlgProgress, IDD_COMPRESS_CSIZE, szTemp);
if (iType != PROGRESS_UPD_FILENUMBERS)
{
break;
}
// else...fall through
}
case ( PROGRESS_UPD_FILESIZE ) :
{
PutSize(&TotalFileSize, szNum);
wsprintf(szTemp, szSBytes, szNum);
SetDlgItemText(hDlgProgress, IDD_COMPRESS_USIZE, szTemp);
if (iType != PROGRESS_UPD_FILENUMBERS)
{
break;
}
// else...fall through
}
case ( PROGRESS_UPD_PERCENTAGE ) :
{
if (TotalFileSize.QuadPart != 0)
{
//
// Percentage = 100 - ((CompressSize * 100) / FileSize)
//
Percentage.QuadPart =
(TotalCompressedSize.QuadPart * 100) /
TotalFileSize.QuadPart;
if (Percentage.HighPart || (Percentage.LowPart > 100))
{
//
// Percentage = 100%
//
Percentage.LowPart = 100;
Percentage.HighPart = 0;
}
else
{
Percentage.LowPart = 100 - Percentage.LowPart;
}
}
else
{
//
// Percentage = 0%
//
Percentage.LowPart = 0;
Percentage.HighPart = 0;
}
PutSize(&Percentage, szNum);
wsprintf(szTemp, TEXT("%s%%"), szNum);
SetDlgItemText(hDlgProgress, IDD_COMPRESS_RATIO, szTemp);
break;
}
}
wfProgressYield();
}