Author: weiden
Date: Sun Oct 28 23:52:21 2007
New Revision: 29941
URL:
http://svn.reactos.org/svn/reactos?rev=29941&view=rev
Log:
Fix console painting bugs
Modified:
trunk/reactos/subsystems/win32/csrss/win32csr/guiconsole.c
Modified: trunk/reactos/subsystems/win32/csrss/win32csr/guiconsole.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/csrss/win…
==============================================================================
--- trunk/reactos/subsystems/win32/csrss/win32csr/guiconsole.c (original)
+++ trunk/reactos/subsystems/win32/csrss/win32csr/guiconsole.c Sun Oct 28 23:52:21 2007
@@ -61,7 +61,7 @@
#define PM_DESTROY_CONSOLE (WM_APP + 2)
#define CURSOR_BLINK_TIME 500
-#define DEFAULT_ATTRIB (FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED |
FOREGROUND_INTENSITY)
+#define DEFAULT_ATTRIB (FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED)
static BOOL ConsInitialized = FALSE;
static HWND NotifyWnd;
@@ -115,6 +115,8 @@
RGB(255, 255, 255)
};
+#define GuiConsoleRGBFromAttribute(GuiData, Attribute) ((GuiData)->Colors[(Attribute)
& 0xF])
+
/* FUNCTIONS *****************************************************************/
static VOID FASTCALL
@@ -777,31 +779,6 @@
return (BOOL) DefWindowProcW(hWnd, WM_NCCREATE, 0, (LPARAM) Create);
}
-static COLORREF FASTCALL
-GuiConsoleRGBFromAttribute(BYTE Attribute)
-{
- int Red = (Attribute & 0x04 ? (Attribute & 0x08 ? 0xff : 0x80) : 0x00);
- int Green = (Attribute & 0x02 ? (Attribute & 0x08 ? 0xff : 0x80) : 0x00);
- int Blue = (Attribute & 0x01 ? (Attribute & 0x08 ? 0xff : 0x80) : 0x00);
-
- return RGB(Red, Green, Blue);
-}
-
-static VOID FASTCALL
-GuiConsoleSetTextColors(HDC Dc, BYTE Attribute, PCSRSS_SCREEN_BUFFER Buff, COLORREF
TextColor, COLORREF BkColor)
-{
- if (Attribute != Buff->DefaultAttrib)
- {
- SetTextColor(Dc, GuiConsoleRGBFromAttribute(Attribute & 0x0f));
- SetBkColor(Dc, GuiConsoleRGBFromAttribute((Attribute & 0xf0) >> 4));
- }
- else
- {
- SetTextColor(Dc, TextColor);
- SetBkColor(Dc, BkColor);
- }
-}
-
static VOID FASTCALL
GuiConsoleGetLogicalCursorPos(PCSRSS_SCREEN_BUFFER Buff, ULONG *CursorX, ULONG *CursorY)
{
@@ -905,11 +882,8 @@
RightChar = (rc->right + (GuiData->CharWidth - 1)) / GuiData->CharWidth -
1;
LastAttribute = Buff->Buffer[(TopLine * Buff->MaxX + LeftChar) * 2 + 1];
- GuiConsoleSetTextColors(hDC,
- LastAttribute,
- Buff,
- GuiData->ScreenText,
- GuiData->ScreenBackground);
+ SetTextColor(hDC, GuiConsoleRGBFromAttribute(GuiData, LastAttribute));
+ SetBkColor(hDC, GuiConsoleRGBFromAttribute(GuiData, LastAttribute >> 4));
EnterCriticalSection(&Buff->Header.Lock);
@@ -948,11 +922,8 @@
Attribute = *(From + 1);
if (Attribute != LastAttribute)
{
- GuiConsoleSetTextColors(hDC,
- Attribute,
- Buff,
- GuiData->ScreenText,
- GuiData->ScreenBackground);
+ SetTextColor(hDC, GuiConsoleRGBFromAttribute(GuiData, Attribute));
+ SetBkColor(hDC, GuiConsoleRGBFromAttribute(GuiData, Attribute
>> 4));
LastAttribute = Attribute;
}
}
@@ -992,7 +963,7 @@
if (*From != DEFAULT_ATTRIB)
{
- CursorBrush = CreateSolidBrush(GuiConsoleRGBFromAttribute(*From));
+ CursorBrush = CreateSolidBrush(GuiConsoleRGBFromAttribute(GuiData,
*From));
}
else
{
@@ -1253,8 +1224,8 @@
if (Console->ActiveBuffer == Buff)
{
- GuiData->ScreenText = GuiConsoleRGBFromAttribute(Buff->DefaultAttrib &
0x0f);
- GuiData->ScreenBackground = GuiConsoleRGBFromAttribute((Buff->DefaultAttrib
& 0xf0) >> 4);
+ GuiData->ScreenText = GuiConsoleRGBFromAttribute(GuiData,
Buff->DefaultAttrib);
+ GuiData->ScreenBackground = GuiConsoleRGBFromAttribute(GuiData,
Buff->DefaultAttrib >> 4);
}
return TRUE;