From 5bc69bcf59e3a6a16dfc346c7f7c878cd1c1bd04 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9F=D0=B5=D0=BB=D0=B8=D0=BF=D0=B5=D0=BD=D0=BA=D0=BE=20?= =?UTF-8?q?=D0=98=D0=B2=D0=B0=D0=BD?= Date: Wed, 7 Sep 2016 09:15:17 +0000 Subject: [PATCH] git-svn-id: svn://db.shs.com.ru/pip@257 12ceb7fc-bf1f-11e4-8940-5bc7170c53b5 --- src/console/piscreen.cpp | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/console/piscreen.cpp b/src/console/piscreen.cpp index 4d69e6e2..b2ae5ded 100644 --- a/src/console/piscreen.cpp +++ b/src/console/piscreen.cpp @@ -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