62 if (
strlen(StringText) > MaxChars)
63 strcpy(&StringText[MaxChars - 3],
"...");
129 ULONG LineBreakCount;
130 ULONG BoxWidth, BoxHeight;
131 ULONG RealLeft, RealTop;
136 TextLength =
strlen(TextString);
145 if (TextString[
Index] ==
'\n')
154 if ((
Index - LastIndex) > BoxWidth)
163 BoxHeight = LineBreakCount + 1;
170 RealLeft = (Left + Right - BoxWidth + 1) / 2;
171 RealTop = (
Top +
Bottom - BoxHeight + 1) / 2;
178 if (TextString[
Index] ==
'\n')
187 X = (
ULONG)(RealLeft + LastIndex);
190 Temp[0] = TextString[
Index];
201#define TAG_TUI_SCREENBUFFER 'SiuT'
202#define TAG_TUI_PALETTE 'PiuT'
247 "[Time Remaining: %d]");
350 for (
j = Left;
j <= Right; ++
j)
375 for (; Idx <= Right; ++Idx)
427 UCHAR ULCorner, URCorner;
430 if (HorzStyle ==
HORZ)
432 if (VertStyle ==
VERT)
445 if (VertStyle ==
VERT)
471 UCHAR LLCorner, LRCorner;
474 if (HorzStyle ==
HORZ)
476 if (VertStyle ==
VERT)
489 if (VertStyle ==
VERT)
563 if (TimeInfo->
Year < 1 || 9999 < TimeInfo->
Year ||
564 TimeInfo->
Month < 1 || 12 < TimeInfo->
Month ||
565 TimeInfo->
Day < 1 || 31 < TimeInfo->
Day ||
566 23 < TimeInfo->
Hour ||
575 if (1 == TimeInfo->
Day || 21 == TimeInfo->
Day || 31 == TimeInfo->
Day)
577 else if (2 == TimeInfo->
Day || 22 == TimeInfo->
Day)
579 else if (3 == TimeInfo->
Day || 23 == TimeInfo->
Day)
597 if (TimeInfo->
Hour > 12)
599 TimeInfo->
Hour -= 12;
602 if (TimeInfo->
Hour == 0)
613 PMHour ?
"PM" :
"AM");
673 if (MessageText[
i] ==
'\n')
680 while ((MessageText[
j] !=
'\n') && (MessageText[
j] != 0))
705 if ((MessageText[
i] ==
'\n') || (MessageText[
i] == 0))
713 temp[
j++] = MessageText[
i];
749 ULONG ProgressBarWidth;
750 CHAR ProgressString[256];
777 ULONG ProgressBarWidth;
783 ASSERT(SubPercentTimes100 <= (100 * 100));
790 FillCount = ProgressBarWidth * SubPercentTimes100 / (100 * 100);
830 Right = Left +
Width - 1;
892 if (
_stricmp(ColorText,
"Default") == 0)
909 UCHAR FillStyleValue;
921 if (
_stricmp(FillStyleText, FillStyles[
i].FillStyleName) == 0)
922 return FillStyles[
i].FillStyleValue;
937 if (TuiFadePalette !=
NULL)
963 if (TuiFadePalette !=
NULL)
996 ULONG EditBoxStartX, EditBoxEndX;
998 ULONG EditBoxTextLength, EditBoxTextPosition;
999 INT EditBoxTextDisplayIndex;
1011 if (MessageText[
i] ==
'\n')
1018 while ((MessageText[
j] !=
'\n') && (MessageText[
j] != 0))
1043 if ((MessageText[
i] ==
'\n') || (MessageText[
i] == 0))
1051 temp[
j++] = MessageText[
i];
1054 EditBoxTextLength = (
ULONG)
strlen(EditTextBuffer);
1055 EditBoxTextLength =
min(EditBoxTextLength,
Length - 1);
1056 EditBoxTextPosition = 0;
1057 EditBoxLine =
y2 - 2;
1058 EditBoxStartX =
x1 + 3;
1059 EditBoxEndX =
x2 - 3;
1066 EditBoxCursorX = EditBoxStartX;
1104 if ( (EditBoxTextLength > 0) && (EditBoxTextPosition > 0) &&
1105 (EditBoxTextPosition <= EditBoxTextLength) )
1107 EditBoxTextPosition--;
1108 memmove(EditTextBuffer + EditBoxTextPosition,
1109 EditTextBuffer + EditBoxTextPosition + 1,
1110 EditBoxTextLength - EditBoxTextPosition);
1111 EditBoxTextLength--;
1112 EditTextBuffer[EditBoxTextLength] = 0;
1121 if ( (EditBoxTextLength > 0) &&
1122 (EditBoxTextPosition < EditBoxTextLength) )
1124 memmove(EditTextBuffer + EditBoxTextPosition,
1125 EditTextBuffer + EditBoxTextPosition + 1,
1126 EditBoxTextLength - EditBoxTextPosition);
1127 EditBoxTextLength--;
1128 EditTextBuffer[EditBoxTextLength] = 0;
1137 EditBoxTextPosition = 0;
1141 EditBoxTextPosition = EditBoxTextLength;
1145 if (EditBoxTextPosition < EditBoxTextLength)
1146 EditBoxTextPosition++;
1152 if (EditBoxTextPosition > 0)
1153 EditBoxTextPosition--;
1159 if ( (EditBoxTextLength <
Length - 1) &&
1160 (EditBoxTextPosition <
Length - 1) )
1162 memmove(EditTextBuffer + EditBoxTextPosition + 1,
1163 EditTextBuffer + EditBoxTextPosition,
1164 EditBoxTextLength - EditBoxTextPosition);
1165 EditTextBuffer[EditBoxTextPosition] =
key;
1166 EditBoxTextPosition++;
1167 EditBoxTextLength++;
1168 EditTextBuffer[EditBoxTextLength] = 0;
1185 if (EditBoxTextPosition > (EditBoxEndX - EditBoxStartX))
1187 EditBoxTextDisplayIndex = EditBoxTextPosition - (EditBoxEndX - EditBoxStartX);
1188 EditBoxCursorX = EditBoxEndX;
1192 EditBoxTextDisplayIndex = 0;
1193 EditBoxCursorX = EditBoxStartX + EditBoxTextPosition;
ACPI_SIZE strlen(const char *String)
char * strcpy(char *DstString, const char *SrcString)
TIMEINFO * ArcGetTime(VOID)
static LPHIST_ENTRY Bottom
#define MachVideoClearScreen(Attr)
#define MachConsPutChar(Ch)
#define MachVideoSetTextCursorPosition(X, Y)
#define MachVideoSetDisplayMode(Mode, Init)
#define MachVideoHideShowTextCursor(Show)
#define MachVideoIsPaletteFixed()
#define MachVideoPutChar(Ch, Attr, X, Y)
FORCEINLINE PVOID FrLdrTempAlloc(_In_ SIZE_T Size, _In_ ULONG Tag)
FORCEINLINE VOID FrLdrTempFree(PVOID Allocation, ULONG Tag)
VOID VideoFadeIn(PPALETTE_ENTRY Palette, ULONG ColorCount)
VOID VideoSetAllColorsToBlack(ULONG ColorCount)
VOID VideoFadeOut(ULONG ColorCount)
struct _PALETTE_ENTRY * PPALETTE_ENTRY
VOID VideoFreeOffScreenBuffer(VOID)
VOID VideoRestorePaletteState(PPALETTE_ENTRY Palette, ULONG ColorCount)
PVOID VideoAllocateOffScreenBuffer(VOID)
VOID VideoSavePaletteState(PPALETTE_ENTRY Palette, ULONG ColorCount)
VOID VideoCopyOffScreenBufferToVRAM(VOID)
VOID TuiDrawCenteredText(_In_ ULONG Left, _In_ ULONG Top, _In_ ULONG Right, _In_ ULONG Bottom, _In_ PCSTR TextString, _In_ UCHAR Attr)
VOID TuiMessageBox(PCSTR MessageText)
VOID TuiTruncateStringEllipsis(_Inout_z_ PSTR StringText, _In_ ULONG MaxChars)
VOID TuiDrawBox(_In_ ULONG Left, _In_ ULONG Top, _In_ ULONG Right, _In_ ULONG Bottom, _In_ UCHAR VertStyle, _In_ UCHAR HorzStyle, _In_ BOOLEAN Fill, _In_ BOOLEAN Shadow, _In_ UCHAR Attr)
VOID TuiDrawShadow(ULONG Left, ULONG Top, ULONG Right, ULONG Bottom)
UCHAR TuiTextToColor(PCSTR ColorText)
VOID TuiUnInitialize(VOID)
static VOID TuiSetProgressBarText(_In_ PCSTR ProgressText)
VOID TuiRestoreScreen(PUCHAR Buffer)
VOID TuiFillArea(ULONG Left, ULONG Top, ULONG Right, ULONG Bottom, CHAR FillChar, UCHAR Attr)
UCHAR TuiTextToFillStyle(PCSTR FillStyleText)
VOID TuiDrawText(_In_ ULONG X, _In_ ULONG Y, _In_ PCSTR Text, _In_ UCHAR Attr)
static VOID TuiDrawProgressBar(_In_ ULONG Left, _In_ ULONG Top, _In_ ULONG Right, _In_ ULONG Bottom, _In_ PCSTR ProgressText)
VOID TuiDrawBackdrop(VOID)
VOID TuiDrawStatusText(PCSTR StatusText)
#define TAG_TUI_SCREENBUFFER
VOID TuiDrawBoxBottomLine(_In_ ULONG Left, _In_ ULONG Bottom, _In_ ULONG Right, _In_ UCHAR VertStyle, _In_ UCHAR HorzStyle, _In_ UCHAR Attr)
static VOID TuiTickProgressBar(_In_ ULONG SubPercentTimes100)
VOID TuiFadeInBackdrop(VOID)
VOID TuiDrawText2(_In_ ULONG X, _In_ ULONG Y, _In_opt_ ULONG MaxNumChars, _In_reads_or_z_(MaxNumChars) PCSTR Text, _In_ UCHAR Attr)
VOID TuiUpdateDateTime(VOID)
UCHAR MachDefaultTextColor
static VOID TuiDrawProgressBarCenter(_In_ PCSTR ProgressText)
VOID TuiMessageBoxCritical(PCSTR MessageText)
BOOLEAN TuiInitialize(VOID)
BOOLEAN TuiEditBox(PCSTR MessageText, PCHAR EditTextBuffer, ULONG Length)
VOID TuiSaveScreen(PUCHAR Buffer)
VOID TuiDrawBoxTopLine(_In_ ULONG Left, _In_ ULONG Top, _In_ ULONG Right, _In_ UCHAR VertStyle, _In_ UCHAR HorzStyle, _In_ UCHAR Attr)
INT TuiPrintf(_In_ PCSTR Format,...)
void Fill(HDC hdc, LONG x, LONG y, COLORREF color)
const PCSTR FrLdrVersionString
GLint GLint GLsizei GLsizei height
GLint GLint GLsizei width
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
#define memmove(s1, s2, n)
#define _In_reads_or_z_(size)
_In_ ULONG _In_ ULONG _In_ ULONG Length
NTSTRSAFEVAPI RtlStringCbPrintfA(_Out_writes_bytes_(cbDest) _Always_(_Post_z_) NTSTRSAFE_PSTR pszDest, _In_ size_t cbDest, _In_ _Printf_format_string_ NTSTRSAFE_PCSTR pszFormat,...)
NTSTRSAFEAPI RtlStringCbCopyA(_Out_writes_bytes_(cbDest) _Always_(_Post_z_) NTSTRSAFE_PSTR pszDest, _In_ size_t cbDest, _In_ NTSTRSAFE_PCSTR pszSrc)
VOID TuiDrawMenu(_In_ PUI_MENU_INFO MenuInfo)
#define TUI_TITLE_BOX_CHAR_HEIGHT
BOOLEAN TuiDisplayMenu(IN PCSTR MenuHeader, IN PCSTR MenuFooter OPTIONAL, IN BOOLEAN ShowBootOptions, IN PCSTR MenuItemList[], IN ULONG MenuItemCount, IN ULONG DefaultMenuItem, IN LONG MenuTimeOut, OUT PULONG SelectedMenuItem, IN BOOLEAN CanEscape, IN UiMenuKeyPressFilterCallback KeyPressFilter OPTIONAL, IN PVOID Context OPTIONAL)
#define COLOR_LIGHTMAGENTA
UCHAR UiMessageBoxFgColor
UCHAR UiMessageBoxBgColor
UI_PROGRESS_BAR UiProgressBar
VOID UiDrawText(_In_ ULONG X, _In_ ULONG Y, _In_ PCSTR Text, _In_ UCHAR Attr)
BOOLEAN UiUseSpecialEffects
VOID UiDrawText2(_In_ ULONG X, _In_ ULONG Y, _In_opt_ ULONG MaxNumChars, _In_reads_or_z_(MaxNumChars) PCSTR Text, _In_ UCHAR Attr)
const PCSTR UiMonthNames[12]
#define ATTR(cFore, cBack)
CHAR UiTitleBoxTitleText[260]
UCHAR UiBackdropFillStyle
VOID UiFillArea(ULONG Left, ULONG Top, ULONG Right, ULONG Bottom, CHAR FillChar, UCHAR Attr)
VOID UiDrawStatusText(PCSTR StatusText)
UCHAR UiSelectedTextColor
UCHAR UiSelectedTextBgColor
VOID UiInitProgressBar(_In_ ULONG Left, _In_ ULONG Top, _In_ ULONG Right, _In_ ULONG Bottom, _In_ PCSTR ProgressText)
_In_ HFONT _Out_ PUINT _Out_ PUINT Width
_In_ HFONT _Out_ PUINT Height
_In_ WDFCOLLECTION _In_ ULONG Index
_In_ CLIPOBJ _In_ BRUSHOBJ _In_ LONG _In_ LONG _In_ LONG x2
_In_ CLIPOBJ _In_ BRUSHOBJ _In_ LONG _In_ LONG y1
_In_ CLIPOBJ _In_ BRUSHOBJ _In_ LONG x1
_In_ CLIPOBJ _In_ BRUSHOBJ _In_ LONG _In_ LONG _In_ LONG _In_ LONG y2
void int int ULONGLONG int va_list * ap