ReactOS 0.4.15-dev-7788-g1ad9096
progress.h File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  _PROGRESSBAR
 

Typedefs

typedef BOOLEAN(NTAPIPUPDATE_PROGRESS) (IN struct _PROGRESSBAR *Bar, IN BOOLEAN AlwaysUpdate, OUT PSTR Buffer, IN SIZE_T cchBufferSize)
 
typedef struct _PROGRESSBAR PROGRESSBAR
 
typedef struct _PROGRESSBARPPROGRESSBAR
 

Functions

PPROGRESSBAR CreateProgressBarEx (IN SHORT Left, IN SHORT Top, IN SHORT Right, IN SHORT Bottom, IN SHORT TextTop, IN SHORT TextRight, IN BOOLEAN DoubleEdge, IN SHORT ProgressColour, IN ULONG StepCount, IN PCSTR DescriptionText OPTIONAL, IN PCSTR ProgressFormatText OPTIONAL, IN PUPDATE_PROGRESS UpdateProgressProc OPTIONAL)
 
PPROGRESSBAR CreateProgressBar (IN SHORT Left, IN SHORT Top, IN SHORT Right, IN SHORT Bottom, IN SHORT TextTop, IN SHORT TextRight, IN BOOLEAN DoubleEdge, IN PCSTR DescriptionText OPTIONAL)
 
VOID DestroyProgressBar (IN OUT PPROGRESSBAR Bar)
 
VOID ProgressSetStepCount (IN PPROGRESSBAR Bar, IN ULONG StepCount)
 
VOID ProgressNextStep (IN PPROGRESSBAR Bar)
 
VOID ProgressSetStep (IN PPROGRESSBAR Bar, IN ULONG Step)
 

Typedef Documentation

◆ PPROGRESSBAR

◆ PROGRESSBAR

◆ PUPDATE_PROGRESS

typedef BOOLEAN(NTAPI * PUPDATE_PROGRESS) (IN struct _PROGRESSBAR *Bar, IN BOOLEAN AlwaysUpdate, OUT PSTR Buffer, IN SIZE_T cchBufferSize)

Definition at line 31 of file progress.h.

Function Documentation

◆ CreateProgressBar()

PPROGRESSBAR CreateProgressBar ( IN SHORT  Left,
IN SHORT  Top,
IN SHORT  Right,
IN SHORT  Bottom,
IN SHORT  TextTop,
IN SHORT  TextRight,
IN BOOLEAN  DoubleEdge,
IN PCSTR DescriptionText  OPTIONAL 
)

Definition at line 317 of file progress.c.

326{
327 /* Call the Ex variant of the function */
328 return CreateProgressBarEx(Left, Top, Right, Bottom,
329 TextTop, TextRight,
330 DoubleEdge,
332 0,
333 DescriptionText,
334 "%-3lu%%",
336}
static BOOLEAN NTAPI UpdateProgressPercentage(IN PPROGRESSBAR Bar, IN BOOLEAN AlwaysUpdate, OUT PSTR Buffer, IN SIZE_T cchBufferSize)
Definition: progress.c:20
PPROGRESSBAR CreateProgressBarEx(IN SHORT Left, IN SHORT Top, IN SHORT Right, IN SHORT Bottom, IN SHORT TextTop, IN SHORT TextRight, IN BOOLEAN DoubleEdge, IN SHORT ProgressColour, IN ULONG StepCount, IN PCSTR DescriptionText OPTIONAL, IN PCSTR ProgressFormatText OPTIONAL, IN PUPDATE_PROGRESS UpdateProgressProc OPTIONAL)
Definition: progress.c:272
static LPHIST_ENTRY Bottom
Definition: history.c:54
static LPHIST_ENTRY Top
Definition: history.c:53
#define BACKGROUND_BLUE
Definition: blue.h:65
#define FOREGROUND_YELLOW
Definition: consup.h:30

Referenced by DoChkdsk(), DoFormat(), and FileCopyPage().

◆ CreateProgressBarEx()

PPROGRESSBAR CreateProgressBarEx ( IN SHORT  Left,
IN SHORT  Top,
IN SHORT  Right,
IN SHORT  Bottom,
IN SHORT  TextTop,
IN SHORT  TextRight,
IN BOOLEAN  DoubleEdge,
IN SHORT  ProgressColour,
IN ULONG  StepCount,
IN PCSTR DescriptionText  OPTIONAL,
IN PCSTR ProgressFormatText  OPTIONAL,
IN PUPDATE_PROGRESS UpdateProgressProc  OPTIONAL 
)

Definition at line 272 of file progress.c.

285{
287
289 0,
290 sizeof(PROGRESSBAR));
291 if (Bar == NULL)
292 return NULL;
293
294 Bar->Left = Left;
295 Bar->Top = Top;
296 Bar->Right = Right;
297 Bar->Bottom = Bottom;
298 Bar->TextTop = TextTop;
299 Bar->TextRight = TextRight;
300
301 Bar->Width = Bar->Right - Bar->Left + 1;
302
303 Bar->DoubleEdge = DoubleEdge;
304 Bar->ProgressColour = ProgressColour;
305 Bar->DescriptionText = DescriptionText;
306 Bar->ProgressFormatText = ProgressFormatText;
307
308 Bar->UpdateProgressProc = UpdateProgressProc;
309
310 /* Reset the progress bar counts and initially draw it */
311 ProgressSetStepCount(Bar, StepCount);
312
313 return Bar;
314}
HANDLE ProcessHeap
Definition: servman.c:15
VOID ProgressSetStepCount(IN PPROGRESSBAR Bar, IN ULONG StepCount)
Definition: progress.c:347
struct _PROGRESSBAR * PPROGRESSBAR
PVOID NTAPI RtlAllocateHeap(IN PVOID HeapHandle, IN ULONG Flags, IN SIZE_T Size)
Definition: heap.c:590
#define NULL
Definition: types.h:112
void Bar(void)
Definition: terminate.cpp:70

Referenced by CreateProgressBar(), and ProgressCountdown().

◆ DestroyProgressBar()

VOID DestroyProgressBar ( IN OUT PPROGRESSBAR  Bar)

Definition at line 339 of file progress.c.

341{
343}
BOOLEAN NTAPI RtlFreeHeap(IN PVOID HeapHandle, IN ULONG Flags, IN PVOID HeapBase)
Definition: heap.c:608

Referenced by DoChkdsk(), DoFormat(), FileCopyPage(), and ProgressCountdown().

◆ ProgressNextStep()

VOID ProgressNextStep ( IN PPROGRESSBAR  Bar)

Definition at line 361 of file progress.c.

363{
364 ProgressSetStep(Bar, Bar->CurrentStep + 1);
365}
VOID ProgressSetStep(IN PPROGRESSBAR Bar, IN ULONG Step)
Definition: progress.c:368

Referenced by FileCopyCallback().

◆ ProgressSetStep()

VOID ProgressSetStep ( IN PPROGRESSBAR  Bar,
IN ULONG  Step 
)

Definition at line 368 of file progress.c.

371{
372 COORD coPos;
373 DWORD Written;
374 ULONG NewPos;
375 CHAR TextBuffer[256];
376
377 if (Step > Bar->StepCount)
378 return;
379
380 Bar->CurrentStep = Step;
381
382 /* Update the progress and redraw it if it has changed */
383 if (Bar->UpdateProgressProc &&
384 Bar->UpdateProgressProc(Bar, FALSE, TextBuffer, ARRAYSIZE(TextBuffer)))
385 {
386 coPos.X = Bar->Left + (Bar->Width - (USHORT)strlen(TextBuffer) + 1) / 2;
387 coPos.Y = Bar->Top;
391 coPos,
392 &Written);
393 }
394
395 /* Calculate the bar position */
396 NewPos = (((Bar->Width - 2) * 2 * Bar->CurrentStep + (Bar->StepCount / 2)) / Bar->StepCount);
397
398 /* Redraw the bar if it has changed */
399 if (Bar->Pos != NewPos)
400 {
401 Bar->Pos = NewPos;
402
403 for (coPos.Y = Bar->Top + 2; coPos.Y <= Bar->Bottom - 1; coPos.Y++)
404 {
405 coPos.X = Bar->Left + 1;
407 CharBlock,
408 Bar->Pos / 2,
409 coPos,
410 &Written);
411 coPos.X += Bar->Pos / 2;
412
413 if (NewPos & 1)
414 {
417 1,
418 coPos,
419 &Written);
420 coPos.X++;
421 }
422
423 if (coPos.X <= Bar->Right - 1)
424 {
426 ' ',
427 Bar->Right - coPos.X,
428 coPos,
429 &Written);
430 }
431 }
432 }
433}
ACPI_SIZE strlen(const char *String)
Definition: utclib.c:269
BOOL WINAPI WriteConsoleOutputCharacterA(HANDLE hConsoleOutput, IN LPCSTR lpCharacter, IN DWORD nLength, IN COORD dwWriteCoord, OUT LPDWORD lpNumberOfCharsWritten)
Definition: console.c:407
BOOL WINAPI FillConsoleOutputCharacterA(IN HANDLE hConsoleOutput, IN CHAR cCharacter, IN DWORD nLength, IN COORD dwWriteCoord, OUT LPDWORD lpNumberOfCharsWritten)
Definition: console.c:560
char TextBuffer[BUFFERLEN]
Definition: combotst.c:45
HANDLE StdOutput
Definition: consup.c:37
#define FALSE
Definition: types.h:117
#define ARRAYSIZE(array)
Definition: filtermapper.c:47
unsigned long DWORD
Definition: ntddk_ex.h:95
unsigned short USHORT
Definition: pedump.c:61
Definition: bl.h:1338
ULONG Y
Definition: bl.h:1340
ULONG X
Definition: bl.h:1339
uint32_t ULONG
Definition: typedefs.h:59
CHAR CharHalfBlock
Definition: mui.c:36
CHAR CharBlock
Definition: mui.c:35
char CHAR
Definition: xmlstorage.h:175

Referenced by FormatCallback(), ProgressCountdown(), ProgressNextStep(), and SetupUpdateMemoryInfo().

◆ ProgressSetStepCount()

VOID ProgressSetStepCount ( IN PPROGRESSBAR  Bar,
IN ULONG  StepCount 
)

Definition at line 347 of file progress.c.

350{
351 Bar->CurrentStep = 0;
352 Bar->StepCount = StepCount;
353
354 Bar->Progress = 0;
355 Bar->Pos = 0;
356
358}
static VOID DrawProgressBar(IN PPROGRESSBAR Bar)
Definition: progress.c:214

Referenced by CreateProgressBarEx(), DoChkdsk(), DoFormat(), FileCopyCallback(), ProgressCountdown(), and SetupUpdateMemoryInfo().