70 lines
1.5 KiB
C++
70 lines
1.5 KiB
C++
/* Copyright (c) Microsoft Corporation. All rights reserved. */
|
|
|
|
#include "Erase2Event.h"
|
|
|
|
// ICDWriteEngine2Event methods
|
|
|
|
VOID DeleteCurrentLine2()
|
|
{
|
|
printf(//"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b"
|
|
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b"
|
|
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b"
|
|
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b"
|
|
);
|
|
return;
|
|
}
|
|
VOID OverwriteCurrentLine2()
|
|
{
|
|
printf(" "
|
|
" "
|
|
);
|
|
return;
|
|
}
|
|
VOID
|
|
UpdatePercentageDisplay2(
|
|
IN ULONG Numerator,
|
|
IN ULONG Denominator
|
|
)
|
|
{
|
|
ULONG percent;
|
|
ULONG i;
|
|
|
|
if (Numerator > Denominator) {
|
|
return;
|
|
}
|
|
|
|
if (0 == Denominator) {
|
|
printf("ESTIMATED ERASE TIME IS ZERO!\n");
|
|
return;
|
|
}
|
|
|
|
// NOTE: Overflow possibility exists for large numerators.
|
|
|
|
percent = (Numerator * 100) / Denominator;
|
|
|
|
// each block is 2%
|
|
// ----=----1----=----2----=----3----=----4----=----5----=----6----=----7----=----8
|
|
// ±.....................
|
|
|
|
for (i=1; i<100; i+=2) {
|
|
if (i < percent) {
|
|
putchar(178);
|
|
} else if (i == percent) {
|
|
putchar(177);
|
|
} else {
|
|
putchar(176);
|
|
}
|
|
}
|
|
printf(" %d%%", percent);
|
|
}
|
|
|
|
STDMETHODIMP_(VOID) CTestErase2Event::Update(IDispatch* object, LONG elapsedTime, LONG totalTime)
|
|
{
|
|
UNREFERENCED_PARAMETER (object);
|
|
|
|
DeleteCurrentLine2();
|
|
UpdatePercentageDisplay2(elapsedTime, totalTime);
|
|
|
|
return;
|
|
}
|