https://git.reactos.org/?p=reactos.git;a=commitdiff;h=3c5a56ed93b0f6a002e4a…
commit 3c5a56ed93b0f6a002e4a2f605c012308c5117b1
Author: Katayama Hirofumi MZ <katayama.hirofumi.mz(a)gmail.com>
AuthorDate: Sat Oct 8 07:46:00 2022 +0900
Commit: GitHub <noreply(a)github.com>
CommitDate: Sat Oct 8 07:46:00 2022 +0900
[USETUP][VGAFONTS] Improve Romanian character display (#4750)
- Modify media/vgafonts/28606-8x8.bin Romanian VGA font to display special
characters.
- Add global variables for special characters "Char..." for Romanian VGA
font.
- Toggle the global variables "Char..." in SetConsoleCodePage function.
CORE-18446
---
base/setup/usetup/consup.c | 2 +-
base/setup/usetup/genlist.c | 20 +++++------
base/setup/usetup/mui.c | 81 +++++++++++++++++++++++++++++++++++++++++--
base/setup/usetup/mui.h | 21 +++++++++++
base/setup/usetup/partlist.c | 56 +++++++++++++++++-------------
base/setup/usetup/progress.c | 36 +++++++++----------
base/setup/usetup/usetup.c | 28 +++++++++------
media/vgafonts/28606-8x8.bin | Bin 2048 -> 2048 bytes
8 files changed, 178 insertions(+), 66 deletions(-)
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 <debug.h>
+/* 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