git-svn-id: svn://db.shs.com.ru/pip@257 12ceb7fc-bf1f-11e4-8940-5bc7170c53b5
This commit is contained in:
@@ -240,12 +240,11 @@ void PIScreen::SystemConsole::print() {
|
|||||||
#define BACKGROUND_MASK (BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE)
|
#define BACKGROUND_MASK (BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE)
|
||||||
WORD PIScreen::SystemConsole::attributes(const PIScreenTypes::Cell & c) {
|
WORD PIScreen::SystemConsole::attributes(const PIScreenTypes::Cell & c) {
|
||||||
WORD attr = PRIVATE->dattr;
|
WORD attr = PRIVATE->dattr;
|
||||||
bool inv = ((c.format.flags & Inverse) == Inverse);
|
if (c.format.flags & Bold) attr |= FOREGROUND_INTENSITY;
|
||||||
if (c.format.flags & Bold) attr |= (inv ? BACKGROUND_INTENSITY : FOREGROUND_INTENSITY);
|
else attr &= ~FOREGROUND_INTENSITY;
|
||||||
else attr &= ~(inv ? BACKGROUND_INTENSITY : FOREGROUND_INTENSITY);
|
|
||||||
if (c.format.flags & Underline) attr |= COMMON_LVB_UNDERSCORE;
|
if (c.format.flags & Underline) attr |= COMMON_LVB_UNDERSCORE;
|
||||||
else 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 Black: attr = (attr & ~FOREGROUND_MASK); break;
|
||||||
case Red: attr = (attr & ~FOREGROUND_MASK) | FOREGROUND_RED; break;
|
case Red: attr = (attr & ~FOREGROUND_MASK) | FOREGROUND_RED; break;
|
||||||
case Green: attr = (attr & ~FOREGROUND_MASK) | FOREGROUND_GREEN; 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 Yellow: attr = (attr & ~FOREGROUND_MASK) | FOREGROUND_RED | FOREGROUND_GREEN; break;
|
||||||
case White: attr = attr | FOREGROUND_MASK; 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 Black: attr = (attr & ~BACKGROUND_MASK); break;
|
||||||
case Red: attr = (attr & ~BACKGROUND_MASK) | BACKGROUND_RED; break;
|
case Red: attr = (attr & ~BACKGROUND_MASK) | BACKGROUND_RED; break;
|
||||||
case Green: attr = (attr & ~BACKGROUND_MASK) | BACKGROUND_GREEN; 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 Yellow: attr = (attr & ~BACKGROUND_MASK) | BACKGROUND_RED | BACKGROUND_GREEN; break;
|
||||||
case White: attr = attr | BACKGROUND_MASK; 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;
|
return attr;
|
||||||
}
|
}
|
||||||
#undef FOREGROUND_MASK
|
#undef FOREGROUND_MASK
|
||||||
|
|||||||
Reference in New Issue
Block a user