mirror of
https://github.com/reactos/reactos.git
synced 2025-07-04 06:41:23 +00:00
[CONSRV]
- Add a macro which specifies how much space chars a TAB is. - Implement BELL ANSI character handling (basic) and add temporary DPRINTs to see who is called (by the way, Beep() functions seems not to work correctly). svn path=/branches/ros-csrss/; revision=58253
This commit is contained in:
parent
bb519801e2
commit
03d1c009f0
4 changed files with 44 additions and 28 deletions
|
@ -9,6 +9,16 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#define CSR_DEFAULT_CURSOR_SIZE 25
|
#define CSR_DEFAULT_CURSOR_SIZE 25
|
||||||
|
#define CURSOR_BLINK_TIME 500
|
||||||
|
#define DEFAULT_ATTRIB (FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED)
|
||||||
|
|
||||||
|
#ifndef WM_APP
|
||||||
|
#define WM_APP 0x8000
|
||||||
|
#endif
|
||||||
|
#define PM_CREATE_CONSOLE (WM_APP + 1)
|
||||||
|
#define PM_DESTROY_CONSOLE (WM_APP + 2)
|
||||||
|
#define PM_CONSOLE_BEEP (WM_APP + 3)
|
||||||
|
|
||||||
|
|
||||||
/************************************************************************
|
/************************************************************************
|
||||||
* Screen buffer structure represents the win32 screen buffer object. *
|
* Screen buffer structure represents the win32 screen buffer object. *
|
||||||
|
|
|
@ -17,6 +17,8 @@
|
||||||
|
|
||||||
/* GLOBALS ********************************************************************/
|
/* GLOBALS ********************************************************************/
|
||||||
|
|
||||||
|
#define TAB_WIDTH 8
|
||||||
|
|
||||||
#define ConioInitRect(Rect, top, left, bottom, right) \
|
#define ConioInitRect(Rect, top, left, bottom, right) \
|
||||||
do { \
|
do { \
|
||||||
((Rect)->Top) = top; \
|
((Rect)->Top) = top; \
|
||||||
|
@ -131,10 +133,22 @@ ConioWriteConsole(PCONSOLE Console, PCONSOLE_SCREEN_BUFFER Buff,
|
||||||
|
|
||||||
for (i = 0; i < Length; i++)
|
for (i = 0; i < Length; i++)
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
|
* If we are in processed mode, interpret special characters and
|
||||||
|
* display them correctly. Otherwise, just put them into the buffer.
|
||||||
|
*/
|
||||||
if (Buff->Mode & ENABLE_PROCESSED_OUTPUT)
|
if (Buff->Mode & ENABLE_PROCESSED_OUTPUT)
|
||||||
{
|
{
|
||||||
|
/* --- CR --- */
|
||||||
|
if (Buffer[i] == '\r')
|
||||||
|
{
|
||||||
|
Buff->CurrentX = 0;
|
||||||
|
UpdateRect.Left = min(UpdateRect.Left, (LONG)Buff->CurrentX);
|
||||||
|
UpdateRect.Right = max(UpdateRect.Right, (LONG)Buff->CurrentX);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
/* --- LF --- */
|
/* --- LF --- */
|
||||||
if (Buffer[i] == '\n')
|
else if (Buffer[i] == '\n')
|
||||||
{
|
{
|
||||||
Buff->CurrentX = 0;
|
Buff->CurrentX = 0;
|
||||||
ConioNextLine(Buff, &UpdateRect, &ScrolledLines);
|
ConioNextLine(Buff, &UpdateRect, &ScrolledLines);
|
||||||
|
@ -160,30 +174,19 @@ ConioWriteConsole(PCONSOLE Console, PCONSOLE_SCREEN_BUFFER Buff,
|
||||||
Ptr = ConioCoordToPointer(Buff, Buff->CurrentX, Buff->CurrentY);
|
Ptr = ConioCoordToPointer(Buff, Buff->CurrentX, Buff->CurrentY);
|
||||||
Ptr[0] = ' ';
|
Ptr[0] = ' ';
|
||||||
Ptr[1] = Buff->DefaultAttrib;
|
Ptr[1] = Buff->DefaultAttrib;
|
||||||
UpdateRect.Left = min(UpdateRect.Left, (LONG) Buff->CurrentX);
|
UpdateRect.Left = min(UpdateRect.Left, (LONG)Buff->CurrentX);
|
||||||
UpdateRect.Right = max(UpdateRect.Right, (LONG) Buff->CurrentX);
|
UpdateRect.Right = max(UpdateRect.Right, (LONG)Buff->CurrentX);
|
||||||
}
|
}
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
/* --- CR --- */
|
|
||||||
else if (Buffer[i] == '\r')
|
|
||||||
{
|
|
||||||
Buff->CurrentX = 0;
|
|
||||||
UpdateRect.Left = min(UpdateRect.Left, (LONG) Buff->CurrentX);
|
|
||||||
UpdateRect.Right = max(UpdateRect.Right, (LONG) Buff->CurrentX);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
/* --- TAB --- */
|
/* --- TAB --- */
|
||||||
else if (Buffer[i] == '\t')
|
else if (Buffer[i] == '\t')
|
||||||
{
|
{
|
||||||
UINT EndX;
|
UINT EndX;
|
||||||
|
|
||||||
UpdateRect.Left = min(UpdateRect.Left, (LONG)Buff->CurrentX);
|
UpdateRect.Left = min(UpdateRect.Left, (LONG)Buff->CurrentX);
|
||||||
EndX = (Buff->CurrentX + 8) & ~7;
|
EndX = (Buff->CurrentX + TAB_WIDTH) & ~(TAB_WIDTH - 1);
|
||||||
if (EndX > Buff->MaxX)
|
EndX = min(EndX, Buff->MaxX);
|
||||||
{
|
|
||||||
EndX = Buff->MaxX;
|
|
||||||
}
|
|
||||||
Ptr = ConioCoordToPointer(Buff, Buff->CurrentX, Buff->CurrentY);
|
Ptr = ConioCoordToPointer(Buff, Buff->CurrentX, Buff->CurrentY);
|
||||||
while (Buff->CurrentX < EndX)
|
while (Buff->CurrentX < EndX)
|
||||||
{
|
{
|
||||||
|
@ -191,7 +194,7 @@ ConioWriteConsole(PCONSOLE Console, PCONSOLE_SCREEN_BUFFER Buff,
|
||||||
*Ptr++ = Buff->DefaultAttrib;
|
*Ptr++ = Buff->DefaultAttrib;
|
||||||
Buff->CurrentX++;
|
Buff->CurrentX++;
|
||||||
}
|
}
|
||||||
UpdateRect.Right = max(UpdateRect.Right, (LONG) Buff->CurrentX - 1);
|
UpdateRect.Right = max(UpdateRect.Right, (LONG)Buff->CurrentX - 1);
|
||||||
if (Buff->CurrentX == Buff->MaxX)
|
if (Buff->CurrentX == Buff->MaxX)
|
||||||
{
|
{
|
||||||
if (Buff->Mode & ENABLE_WRAP_AT_EOL_OUTPUT)
|
if (Buff->Mode & ENABLE_WRAP_AT_EOL_OUTPUT)
|
||||||
|
@ -206,9 +209,16 @@ ConioWriteConsole(PCONSOLE Console, PCONSOLE_SCREEN_BUFFER Buff,
|
||||||
}
|
}
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
/* --- BEL ---*/
|
||||||
|
else if (Buffer[i] == '\a')
|
||||||
|
{
|
||||||
|
DPRINT1("Bell\n");
|
||||||
|
SendNotifyMessage(Console->hWindow, PM_CONSOLE_BEEP, 0, 0);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
UpdateRect.Left = min(UpdateRect.Left, (LONG)Buff->CurrentX);
|
UpdateRect.Left = min(UpdateRect.Left, (LONG)Buff->CurrentX);
|
||||||
UpdateRect.Right = max(UpdateRect.Right, (LONG) Buff->CurrentX);
|
UpdateRect.Right = max(UpdateRect.Right, (LONG)Buff->CurrentX);
|
||||||
Ptr = ConioCoordToPointer(Buff, Buff->CurrentX, Buff->CurrentY);
|
Ptr = ConioCoordToPointer(Buff, Buff->CurrentX, Buff->CurrentY);
|
||||||
Ptr[0] = Buffer[i];
|
Ptr[0] = Buffer[i];
|
||||||
if (Attrib)
|
if (Attrib)
|
||||||
|
|
|
@ -65,15 +65,6 @@ typedef struct _GUI_CONSOLE_DATA
|
||||||
POINT OldCursor;
|
POINT OldCursor;
|
||||||
} GUI_CONSOLE_DATA, *PGUI_CONSOLE_DATA;
|
} GUI_CONSOLE_DATA, *PGUI_CONSOLE_DATA;
|
||||||
|
|
||||||
#ifndef WM_APP
|
|
||||||
#define WM_APP 0x8000
|
|
||||||
#endif
|
|
||||||
#define PM_CREATE_CONSOLE (WM_APP + 1)
|
|
||||||
#define PM_DESTROY_CONSOLE (WM_APP + 2)
|
|
||||||
|
|
||||||
#define CURSOR_BLINK_TIME 500
|
|
||||||
#define DEFAULT_ATTRIB (FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED)
|
|
||||||
|
|
||||||
static BOOL ConsInitialized = FALSE;
|
static BOOL ConsInitialized = FALSE;
|
||||||
static HWND NotifyWnd;
|
static HWND NotifyWnd;
|
||||||
|
|
||||||
|
@ -2065,6 +2056,11 @@ GuiConsoleWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case PM_CONSOLE_BEEP:
|
||||||
|
DPRINT1("Beep !!\n");
|
||||||
|
Beep(800, 200);
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
Result = DefWindowProcW(hWnd, msg, wParam, lParam);
|
Result = DefWindowProcW(hWnd, msg, wParam, lParam);
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -296,7 +296,7 @@ TuiWriteStream(PCONSOLE Console, SMALL_RECT* Region, LONG CursorStartX, LONG Cur
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (! WriteFile(ConsoleDeviceHandle, Buffer, Length, &BytesWritten, NULL))
|
if (!WriteFile(ConsoleDeviceHandle, Buffer, Length, &BytesWritten, NULL))
|
||||||
{
|
{
|
||||||
DPRINT1("Error writing to BlueScreen\n");
|
DPRINT1("Error writing to BlueScreen\n");
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue