git-svn-id: svn://db.shs.com.ru/pip@257 12ceb7fc-bf1f-11e4-8940-5bc7170c53b5

This commit is contained in:
2016-09-07 09:15:17 +00:00
parent 10a8742995
commit 5bc69bcf59

View File

@@ -240,12 +240,11 @@ void PIScreen::SystemConsole::print() {
#define BACKGROUND_MASK (BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE)
WORD PIScreen::SystemConsole::attributes(const PIScreenTypes::Cell & c) {
WORD attr = PRIVATE->dattr;
bool inv = ((c.format.flags & Inverse) == Inverse);
if (c.format.flags & Bold) attr |= (inv ? BACKGROUND_INTENSITY : FOREGROUND_INTENSITY);
else attr &= ~(inv ? BACKGROUND_INTENSITY : FOREGROUND_INTENSITY);
if (c.format.flags & Bold) attr |= FOREGROUND_INTENSITY;
else attr &= ~FOREGROUND_INTENSITY;
if (c.format.flags & Underline) attr |= COMMON_LVB_UNDERSCORE;
else attr &= ~COMMON_LVB_UNDERSCORE;
switch (inv ? c.format.color_back : c.format.color_char) {
switch (c.format.color_char) {
case Black: attr = (attr & ~FOREGROUND_MASK); break;
case Red: attr = (attr & ~FOREGROUND_MASK) | FOREGROUND_RED; break;
case Green: attr = (attr & ~FOREGROUND_MASK) | FOREGROUND_GREEN; break;
@@ -255,7 +254,7 @@ WORD PIScreen::SystemConsole::attributes(const PIScreenTypes::Cell & c) {
case Yellow: attr = (attr & ~FOREGROUND_MASK) | FOREGROUND_RED | FOREGROUND_GREEN; break;
case White: attr = attr | FOREGROUND_MASK; break;
}
switch (inv ? c.format.color_char : c.format.color_back) {
switch (c.format.color_back) {
case Black: attr = (attr & ~BACKGROUND_MASK); break;
case Red: attr = (attr & ~BACKGROUND_MASK) | BACKGROUND_RED; break;
case Green: attr = (attr & ~BACKGROUND_MASK) | BACKGROUND_GREEN; break;
@@ -265,6 +264,12 @@ WORD PIScreen::SystemConsole::attributes(const PIScreenTypes::Cell & c) {
case Yellow: attr = (attr & ~BACKGROUND_MASK) | BACKGROUND_RED | BACKGROUND_GREEN; break;
case White: attr = attr | BACKGROUND_MASK; break;
}
if ((c.format.flags & Inverse) == Inverse) {
uchar f = c.format.flags & 0xFF;
c.format.flags &= 0xFFFFFF00;
f = (f << 4) | (f >> 4);
c.format.flags |= f;
}
return attr;
}
#undef FOREGROUND_MASK