diff --git a/base/setup/usetup/consup.c b/base/setup/usetup/consup.c index e72c43106e6..4aa952ce2a3 100644 --- a/base/setup/usetup/consup.c +++ b/base/setup/usetup/consup.c @@ -417,7 +417,7 @@ CONSOLE_SetUnderlinedTextXY( coPos.Y++; FillConsoleOutputCharacterA(StdOutput, - 0xCD, + CharDoubleHorizontalLine, Length, coPos, &Written); diff --git a/base/setup/usetup/genlist.c b/base/setup/usetup/genlist.c index c43f89ccd9b..c94369edbdf 100644 --- a/base/setup/usetup/genlist.c +++ b/base/setup/usetup/genlist.c @@ -78,7 +78,7 @@ DrawListFrame( coPos.X = ListUi->Left; coPos.Y = ListUi->Top; FillConsoleOutputCharacterA(StdOutput, - 0xDA, // '+', + CharUpperLeftCorner, // '+', 1, coPos, &Written); @@ -87,7 +87,7 @@ DrawListFrame( coPos.X = ListUi->Left + 1; coPos.Y = ListUi->Top; FillConsoleOutputCharacterA(StdOutput, - 0xC4, // '-', + CharHorizontalLine, // '-', ListUi->Right - ListUi->Left - 1, coPos, &Written); @@ -96,7 +96,7 @@ DrawListFrame( coPos.X = ListUi->Right; coPos.Y = ListUi->Top; FillConsoleOutputCharacterA(StdOutput, - 0xBF, // '+', + CharUpperRightCorner, // '+', 1, coPos, &Written); @@ -107,14 +107,14 @@ DrawListFrame( coPos.X = ListUi->Left; coPos.Y = i; FillConsoleOutputCharacterA(StdOutput, - 0xB3, // '|', + CharVerticalLine, // '|', 1, coPos, &Written); coPos.X = ListUi->Right; FillConsoleOutputCharacterA(StdOutput, - 0xB3, //'|', + CharVerticalLine, //'|', 1, coPos, &Written); @@ -124,7 +124,7 @@ DrawListFrame( coPos.X = ListUi->Left; coPos.Y = ListUi->Bottom; FillConsoleOutputCharacterA(StdOutput, - 0xC0, // '+', + CharLowerLeftCorner, // '+', 1, coPos, &Written); @@ -133,7 +133,7 @@ DrawListFrame( coPos.X = ListUi->Left + 1; coPos.Y = ListUi->Bottom; FillConsoleOutputCharacterA(StdOutput, - 0xC4, // '-', + CharHorizontalLine, // '-', ListUi->Right - ListUi->Left - 1, coPos, &Written); @@ -142,7 +142,7 @@ DrawListFrame( coPos.X = ListUi->Right; coPos.Y = ListUi->Bottom; FillConsoleOutputCharacterA(StdOutput, - 0xD9, // '+', + CharLowerRightCorner, // '+', 1, coPos, &Written); @@ -239,7 +239,7 @@ DrawScrollBarGenericList( if (ListUi->FirstShown != List->ListHead.Flink) { FillConsoleOutputCharacterA(StdOutput, - '\x18', + CharUpArrow, 1, coPos, &Written); @@ -257,7 +257,7 @@ DrawScrollBarGenericList( if (ListUi->LastShown != List->ListHead.Blink) { FillConsoleOutputCharacterA(StdOutput, - '\x19', + CharDownArrow, 1, coPos, &Written); diff --git a/base/setup/usetup/mui.c b/base/setup/usetup/mui.c index 365576e58f4..9360cbf5554 100644 --- a/base/setup/usetup/mui.c +++ b/base/setup/usetup/mui.c @@ -30,6 +30,27 @@ #define NDEBUG #include +/* Special characters */ +CHAR CharBullet = 0x07; /* bullet */ +CHAR CharBlock = 0xDB; /* block */ +CHAR CharHalfBlock = 0xDD; /* half-left block */ +CHAR CharUpArrow = 0x18; /* up arrow */ +CHAR CharDownArrow = 0x19; /* down arrow */ +CHAR CharHorizontalLine = 0xC4; /* horizontal line */ +CHAR CharVerticalLine = 0xB3; /* vertical line */ +CHAR CharUpperLeftCorner = 0xDA; /* upper left corner */ +CHAR CharUpperRightCorner = 0xBF; /* upper right corner */ +CHAR CharLowerLeftCorner = 0xC0; /* lower left corner */ +CHAR CharLowerRightCorner = 0xD9; /* lower right corner */ +CHAR CharVertLineAndRightHorizLine = 0xC3; /* |- (vertical line and right horizontal line) */ +CHAR CharLeftHorizLineAndVertLine = 0xB4; /* -| (left horizontal line and vertical line) */ +CHAR CharDoubleHorizontalLine = 0xCD; /* double horizontal line (and underline) */ +CHAR CharDoubleVerticalLine = 0xBA; /* double vertical line */ +CHAR CharDoubleUpperLeftCorner = 0xC9; /* double upper left corner */ +CHAR CharDoubleUpperRightCorner = 0xBB; /* double upper right corner */ +CHAR CharDoubleLowerLeftCorner = 0xC8; /* double lower left corner */ +CHAR CharDoubleLowerRightCorner = 0xBC; /* double lower right corner */ + static ULONG FindLanguageIndex(VOID) @@ -535,6 +556,62 @@ SetConsoleCodePage(VOID) wCodePage = (UINT)wcstoul(MUIGetOEMCodePage(SelectedLanguageId), NULL, 10); SetConsoleOutputCP(wCodePage); #endif -} -/* EOF */ + switch (wCodePage) + { + case 28606: /* Romanian */ + /* Set special characters */ + CharBullet = 0x07; + CharBlock = 0x01; + CharHalfBlock = 0x02; + CharUpArrow = 0x03; + CharDownArrow = 0x04; + CharHorizontalLine = 0x05; + CharVerticalLine = 0x06; + CharUpperLeftCorner = 0x08; + CharUpperRightCorner = 0x09; + CharLowerLeftCorner = 0x0B; + CharLowerRightCorner = 0x0C; + CharVertLineAndRightHorizLine = 0x0E; + CharLeftHorizLineAndVertLine = 0x0F; + CharDoubleHorizontalLine = 0x10; + CharDoubleVerticalLine = 0x11; + CharDoubleUpperLeftCorner = 0x12; + CharDoubleUpperRightCorner = 0x13; + CharDoubleLowerLeftCorner = 0x14; + CharDoubleLowerRightCorner = 0x15; + + /* FIXME: Enter 640x400 video mode */ + break; + + case 932: /* Japanese */ + /* FIXME: Set special characters */ + /* FIXME: Enter 640x400 video mode */ + break; + + default: /* Other codepages */ + /* Set special characters */ + CharBullet = 0x07; + CharBlock = 0xDB; + CharHalfBlock = 0xDD; + CharUpArrow = 0x18; + CharDownArrow = 0x19; + CharHorizontalLine = 0xC4; + CharVerticalLine = 0xB3; + CharUpperLeftCorner = 0xDA; + CharUpperRightCorner = 0xBF; + CharLowerLeftCorner = 0xC0; + CharLowerRightCorner = 0xD9; + CharVertLineAndRightHorizLine = 0xC3; + CharLeftHorizLineAndVertLine = 0xB4; + CharDoubleHorizontalLine = 0xCD; + CharDoubleVerticalLine = 0xBA; + CharDoubleUpperLeftCorner = 0xC9; + CharDoubleUpperRightCorner = 0xBB; + CharDoubleLowerLeftCorner = 0xC8; + CharDoubleLowerRightCorner = 0xBC; + + /* FIXME: Enter 720x400 video mode */ + break; + } +} diff --git a/base/setup/usetup/mui.h b/base/setup/usetup/mui.h index 9b35c0736f8..224a679f34c 100644 --- a/base/setup/usetup/mui.h +++ b/base/setup/usetup/mui.h @@ -99,6 +99,27 @@ MUISetStyledText( IN INT TextID, IN INT Flags); +/* Special characters */ +extern CHAR CharBullet; +extern CHAR CharBlock; +extern CHAR CharHalfBlock; +extern CHAR CharUpArrow; +extern CHAR CharDownArrow; +extern CHAR CharHorizontalLine; +extern CHAR CharVerticalLine; +extern CHAR CharUpperLeftCorner; +extern CHAR CharUpperRightCorner; +extern CHAR CharLowerLeftCorner; +extern CHAR CharLowerRightCorner; +extern CHAR CharVertLineAndRightHorizLine; +extern CHAR CharLeftHorizLineAndVertLine; +extern CHAR CharDoubleHorizontalLine; +extern CHAR CharDoubleVerticalLine; +extern CHAR CharDoubleUpperLeftCorner; +extern CHAR CharDoubleUpperRightCorner; +extern CHAR CharDoubleLowerLeftCorner; +extern CHAR CharDoubleLowerRightCorner; + /* MUI Text IDs */ /* Static MUI Text */ diff --git a/base/setup/usetup/partlist.c b/base/setup/usetup/partlist.c index 879a8015f07..d6c934bc47a 100644 --- a/base/setup/usetup/partlist.c +++ b/base/setup/usetup/partlist.c @@ -696,7 +696,7 @@ DrawPartitionList( coPos.X = ListUi->Left; coPos.Y = ListUi->Top; FillConsoleOutputCharacterA(StdOutput, - 0xDA, // '+', + CharUpperLeftCorner, // '+', 1, coPos, &Written); @@ -707,7 +707,7 @@ DrawPartitionList( if (ListUi->Offset == 0) { FillConsoleOutputCharacterA(StdOutput, - 0xC4, // '-', + CharHorizontalLine, // '-', Width, coPos, &Written); @@ -715,19 +715,23 @@ DrawPartitionList( else { FillConsoleOutputCharacterA(StdOutput, - 0xC4, // '-', + CharHorizontalLine, // '-', Width - 4, coPos, &Written); - coPos.X = ListUi->Right - 5; - WriteConsoleOutputCharacterA(StdOutput, - "(\x18)", // "(up)" - 3, - coPos, - &Written); + { + CHAR szBuff[] = "(.)"; // "(up)" + szBuff[1] = CharUpArrow; + coPos.X = ListUi->Right - 5; + WriteConsoleOutputCharacterA(StdOutput, + szBuff, + 3, + coPos, + &Written); + } coPos.X = ListUi->Right - 2; FillConsoleOutputCharacterA(StdOutput, - 0xC4, // '-', + CharHorizontalLine, // '-', 2, coPos, &Written); @@ -737,7 +741,7 @@ DrawPartitionList( coPos.X = ListUi->Right; coPos.Y = ListUi->Top; FillConsoleOutputCharacterA(StdOutput, - 0xBF, // '+', + CharUpperRightCorner, // '+', 1, coPos, &Written); @@ -748,14 +752,14 @@ DrawPartitionList( coPos.X = ListUi->Left; coPos.Y = i; FillConsoleOutputCharacterA(StdOutput, - 0xB3, // '|', + CharVerticalLine, // '|', 1, coPos, &Written); coPos.X = ListUi->Right; FillConsoleOutputCharacterA(StdOutput, - 0xB3, //'|', + CharVerticalLine, //'|', 1, coPos, &Written); @@ -765,7 +769,7 @@ DrawPartitionList( coPos.X = ListUi->Left; coPos.Y = ListUi->Bottom; FillConsoleOutputCharacterA(StdOutput, - 0xC0, // '+', + CharLowerLeftCorner, // '+', 1, coPos, &Written); @@ -776,7 +780,7 @@ DrawPartitionList( if (LastLine - ListUi->Offset <= Height) { FillConsoleOutputCharacterA(StdOutput, - 0xC4, // '-', + CharHorizontalLine, // '-', Width, coPos, &Written); @@ -784,19 +788,23 @@ DrawPartitionList( else { FillConsoleOutputCharacterA(StdOutput, - 0xC4, // '-', + CharHorizontalLine, // '-', Width - 4, coPos, &Written); - coPos.X = ListUi->Right - 5; - WriteConsoleOutputCharacterA(StdOutput, - "(\x19)", // "(down)" - 3, - coPos, - &Written); + { + CHAR szBuff[] = "(.)"; // "(down)" + szBuff[1] = CharDownArrow; + coPos.X = ListUi->Right - 5; + WriteConsoleOutputCharacterA(StdOutput, + szBuff, + 3, + coPos, + &Written); + } coPos.X = ListUi->Right - 2; FillConsoleOutputCharacterA(StdOutput, - 0xC4, // '-', + CharHorizontalLine, // '-', 2, coPos, &Written); @@ -806,7 +814,7 @@ DrawPartitionList( coPos.X = ListUi->Right; coPos.Y = ListUi->Bottom; FillConsoleOutputCharacterA(StdOutput, - 0xD9, // '+', + CharLowerRightCorner, // '+', 1, coPos, &Written); diff --git a/base/setup/usetup/progress.c b/base/setup/usetup/progress.c index aa1f81d3e8c..312ff5a673e 100644 --- a/base/setup/usetup/progress.c +++ b/base/setup/usetup/progress.c @@ -56,7 +56,7 @@ DrawBorder( coPos.X = Bar->Left; coPos.Y = Bar->Top + 1; FillConsoleOutputCharacterA(StdOutput, - 0xDA, // '+', + CharUpperLeftCorner, // '+', 1, coPos, &Written); @@ -65,7 +65,7 @@ DrawBorder( coPos.X = Bar->Left + 1; coPos.Y = Bar->Top + 1; FillConsoleOutputCharacterA(StdOutput, - 0xC4, // '-', + CharHorizontalLine, // '-', Bar->Right - Bar->Left - 1, coPos, &Written); @@ -74,7 +74,7 @@ DrawBorder( coPos.X = Bar->Right; coPos.Y = Bar->Top + 1; FillConsoleOutputCharacterA(StdOutput, - 0xBF, // '+', + CharUpperRightCorner, // '+', 1, coPos, &Written); @@ -85,14 +85,14 @@ DrawBorder( coPos.X = Bar->Left; coPos.Y = i; FillConsoleOutputCharacterA(StdOutput, - 0xB3, // '|', + CharVerticalLine, // '|', 1, coPos, &Written); coPos.X = Bar->Right; FillConsoleOutputCharacterA(StdOutput, - 0xB3, //'|', + CharVerticalLine, //'|', 1, coPos, &Written); @@ -102,7 +102,7 @@ DrawBorder( coPos.X = Bar->Left; coPos.Y = Bar->Bottom; FillConsoleOutputCharacterA(StdOutput, - 0xC0, // '+', + CharLowerLeftCorner, // '+', 1, coPos, &Written); @@ -111,7 +111,7 @@ DrawBorder( coPos.X = Bar->Left + 1; coPos.Y = Bar->Bottom; FillConsoleOutputCharacterA(StdOutput, - 0xC4, // '-', + CharHorizontalLine, // '-', Bar->Right - Bar->Left - 1, coPos, &Written); @@ -120,7 +120,7 @@ DrawBorder( coPos.X = Bar->Right; coPos.Y = Bar->Bottom; FillConsoleOutputCharacterA(StdOutput, - 0xD9, // '+', + CharLowerRightCorner, // '+', 1, coPos, &Written); @@ -139,7 +139,7 @@ DrawThickBorder( coPos.X = Bar->Left; coPos.Y = Bar->Top + 1; FillConsoleOutputCharacterA(StdOutput, - 0xC9, // '+', + CharDoubleUpperLeftCorner, // '+', 1, coPos, &Written); @@ -148,7 +148,7 @@ DrawThickBorder( coPos.X = Bar->Left + 1; coPos.Y = Bar->Top + 1; FillConsoleOutputCharacterA(StdOutput, - 0xCD, // '-', + CharDoubleHorizontalLine, // '-', Bar->Right - Bar->Left - 1, coPos, &Written); @@ -157,7 +157,7 @@ DrawThickBorder( coPos.X = Bar->Right; coPos.Y = Bar->Top + 1; FillConsoleOutputCharacterA(StdOutput, - 0xBB, // '+', + CharDoubleUpperRightCorner, // '+', 1, coPos, &Written); @@ -168,14 +168,14 @@ DrawThickBorder( coPos.X = Bar->Left; coPos.Y = i; FillConsoleOutputCharacterA(StdOutput, - 0xBA, // '|', + CharDoubleVerticalLine, // '|', 1, coPos, &Written); coPos.X = Bar->Right; FillConsoleOutputCharacterA(StdOutput, - 0xBA, //'|', + CharDoubleVerticalLine, //'|', 1, coPos, &Written); @@ -185,7 +185,7 @@ DrawThickBorder( coPos.X = Bar->Left; coPos.Y = Bar->Bottom; FillConsoleOutputCharacterA(StdOutput, - 0xC8, // '+', + CharDoubleLowerLeftCorner, // '+', 1, coPos, &Written); @@ -194,7 +194,7 @@ DrawThickBorder( coPos.X = Bar->Left + 1; coPos.Y = Bar->Bottom; FillConsoleOutputCharacterA(StdOutput, - 0xCD, // '-', + CharDoubleHorizontalLine, // '-', Bar->Right - Bar->Left - 1, coPos, &Written); @@ -203,7 +203,7 @@ DrawThickBorder( coPos.X = Bar->Right; coPos.Y = Bar->Bottom; FillConsoleOutputCharacterA(StdOutput, - 0xBC, // '+', + CharDoubleLowerRightCorner, // '+', 1, coPos, &Written); @@ -404,7 +404,7 @@ ProgressSetStep( { coPos.X = Bar->Left + 1; FillConsoleOutputCharacterA(StdOutput, - 0xDB, + CharBlock, Bar->Pos / 2, coPos, &Written); @@ -413,7 +413,7 @@ ProgressSetStep( if (NewPos & 1) { FillConsoleOutputCharacterA(StdOutput, - 0xDD, + CharHalfBlock, 1, coPos, &Written); diff --git a/base/setup/usetup/usetup.c b/base/setup/usetup/usetup.c index 4668dde86d0..e58638c1a7f 100644 --- a/base/setup/usetup/usetup.c +++ b/base/setup/usetup/usetup.c @@ -175,7 +175,7 @@ DrawBox(IN SHORT xLeft, coPos.X = xLeft; coPos.Y = yTop; FillConsoleOutputCharacterA(StdOutput, - 0xDA, // '+', + CharUpperLeftCorner, // '+', 1, coPos, &Written); @@ -184,7 +184,7 @@ DrawBox(IN SHORT xLeft, coPos.X = xLeft + 1; coPos.Y = yTop; FillConsoleOutputCharacterA(StdOutput, - 0xC4, // '-', + CharHorizontalLine, // '-', Width - 2, coPos, &Written); @@ -193,7 +193,7 @@ DrawBox(IN SHORT xLeft, coPos.X = xLeft + Width - 1; coPos.Y = yTop; FillConsoleOutputCharacterA(StdOutput, - 0xBF, // '+', + CharUpperRightCorner, // '+', 1, coPos, &Written); @@ -203,7 +203,7 @@ DrawBox(IN SHORT xLeft, { coPos.X = xLeft; FillConsoleOutputCharacterA(StdOutput, - 0xB3, // '|', + CharVerticalLine, // '|', 1, coPos, &Written); @@ -217,7 +217,7 @@ DrawBox(IN SHORT xLeft, coPos.X = xLeft + Width - 1; FillConsoleOutputCharacterA(StdOutput, - 0xB3, // '|', + CharVerticalLine, // '|', 1, coPos, &Written); @@ -227,7 +227,7 @@ DrawBox(IN SHORT xLeft, coPos.X = xLeft; coPos.Y = yTop + Height - 1; FillConsoleOutputCharacterA(StdOutput, - 0xC0, // '+', + CharLowerLeftCorner, // '+', 1, coPos, &Written); @@ -236,7 +236,7 @@ DrawBox(IN SHORT xLeft, coPos.X = xLeft + 1; coPos.Y = yTop + Height - 1; FillConsoleOutputCharacterA(StdOutput, - 0xC4, // '-', + CharHorizontalLine, // '-', Width - 2, coPos, &Written); @@ -245,7 +245,7 @@ DrawBox(IN SHORT xLeft, coPos.X = xLeft + Width - 1; coPos.Y = yTop + Height - 1; FillConsoleOutputCharacterA(StdOutput, - 0xD9, // '+', + CharLowerRightCorner, // '+', 1, coPos, &Written); @@ -375,21 +375,21 @@ PopupError(PCCH Text, coPos.Y = yTop + Height - 3; coPos.X = xLeft; FillConsoleOutputCharacterA(StdOutput, - 0xC3, // '+', + CharVertLineAndRightHorizLine, // '+', 1, coPos, &Written); coPos.X = xLeft + 1; FillConsoleOutputCharacterA(StdOutput, - 0xC4, // '-', + CharHorizontalLine, // '-', Width - 2, coPos, &Written); coPos.X = xLeft + Width - 1; FillConsoleOutputCharacterA(StdOutput, - 0xB4, // '+', + CharLeftHorizLineAndVertLine, // '+', 1, coPos, &Written); @@ -663,6 +663,12 @@ LanguagePage(PINPUT_RECORD Ir) /* Load the font */ SetConsoleCodePage(); + /* Redraw the list */ + DrawGenericList(&ListUi, + 2, 18, + xScreen - 3, + yScreen - 3); + /* Redraw language selection page in native language */ MUIDisplayPage(LANGUAGE_PAGE); } diff --git a/media/vgafonts/28606-8x8.bin b/media/vgafonts/28606-8x8.bin index 5ca8b873088..a9d387e9486 100644 Binary files a/media/vgafonts/28606-8x8.bin and b/media/vgafonts/28606-8x8.bin differ