[CONSRV] Deduplicate GetScreenBufferSizeUnits(), SmallRectToRect() and ConsoleInput. Rename ConsoleList and InsertConsole(). #179

This commit is contained in:
Amine Khaldi 2017-12-08 23:04:48 +01:00
parent 9d91a2e8ce
commit 6429bfcd8f
7 changed files with 46 additions and 79 deletions

View file

@ -14,15 +14,6 @@
#define NDEBUG #define NDEBUG
#include <debug.h> #include <debug.h>
/* GLOBALS ********************************************************************/
typedef struct ConsoleInput_t
{
LIST_ENTRY ListEntry;
INPUT_RECORD InputEvent;
} ConsoleInput;
/* PRIVATE FUNCTIONS **********************************************************/ /* PRIVATE FUNCTIONS **********************************************************/
// ConDrvAddInputEvents // ConDrvAddInputEvents

View file

@ -23,7 +23,7 @@
static ULONG CurrentConsoleID = 0; static ULONG CurrentConsoleID = 0;
/* Linked list of consoles */ /* Linked list of consoles */
static LIST_ENTRY ConsoleList; static LIST_ENTRY ConDrvConsoleList;
static RTL_RESOURCE ListLock; static RTL_RESOURCE ListLock;
#define ConDrvLockConsoleListExclusive() \ #define ConDrvLockConsoleListExclusive() \
@ -37,7 +37,7 @@ static RTL_RESOURCE ListLock;
static NTSTATUS static NTSTATUS
InsertConsole(IN PCONSOLE Console) ConDrvInsertConsole(IN PCONSOLE Console)
{ {
ASSERT(Console); ASSERT(Console);
@ -45,7 +45,7 @@ InsertConsole(IN PCONSOLE Console)
ConDrvLockConsoleListExclusive(); ConDrvLockConsoleListExclusive();
DPRINT("Insert in the list\n"); DPRINT("Insert in the list\n");
InsertTailList(&ConsoleList, &Console->ListEntry); InsertTailList(&ConDrvConsoleList, &Console->ListEntry);
// FIXME: Move this code to the caller function!! // FIXME: Move this code to the caller function!!
/* Get a new console ID */ /* Get a new console ID */
@ -152,7 +152,7 @@ ConDrvInitConsoleSupport(VOID)
DPRINT("CONSRV: ConDrvInitConsoleSupport()\n"); DPRINT("CONSRV: ConDrvInitConsoleSupport()\n");
/* Initialize the console list and its lock */ /* Initialize the console list and its lock */
InitializeListHead(&ConsoleList); InitializeListHead(&ConDrvConsoleList);
RtlInitializeResource(&ListLock); RtlInitializeResource(&ListLock);
} }
@ -248,7 +248,7 @@ ConDrvInitConsole(OUT PCONSOLE* NewConsole,
DPRINT("Console initialized\n"); DPRINT("Console initialized\n");
/* All went right, so add the console to the list */ /* All went right, so add the console to the list */
Status = InsertConsole(Console); Status = ConDrvInsertConsole(Console);
if (!NT_SUCCESS(Status)) if (!NT_SUCCESS(Status))
{ {
/* Fail */ /* Fail */

View file

@ -54,6 +54,11 @@ typedef struct _CONSOLE_PROCESS_DATA
// LPTHREAD_START_ROUTINE ImeRoutine; // LPTHREAD_START_ROUTINE ImeRoutine;
} CONSOLE_PROCESS_DATA, *PCONSOLE_PROCESS_DATA; } CONSOLE_PROCESS_DATA, *PCONSOLE_PROCESS_DATA;
typedef struct ConsoleInput_t
{
LIST_ENTRY ListEntry;
INPUT_RECORD InputEvent;
} ConsoleInput;
// Helper for code refactoring // Helper for code refactoring
// #define USE_NEW_CONSOLE_WAY // #define USE_NEW_CONSOLE_WAY

View file

@ -20,7 +20,6 @@
#include "font.h" #include "font.h"
#include "guiterm.h" #include "guiterm.h"
#include "conwnd.h"
#include "resource.h" #include "resource.h"
/* GLOBALS ********************************************************************/ /* GLOBALS ********************************************************************/
@ -172,28 +171,6 @@ UnRegisterConWndClass(HINSTANCE hInstance)
return !!UnregisterClassW(GUI_CONWND_CLASS, hInstance); return !!UnregisterClassW(GUI_CONWND_CLASS, hInstance);
} }
/* NOTE: Also used in guiterm.c */
/* static */ VOID
GetScreenBufferSizeUnits(IN PCONSOLE_SCREEN_BUFFER Buffer,
IN PGUI_CONSOLE_DATA GuiData,
OUT PUINT WidthUnit,
OUT PUINT HeightUnit)
{
ASSERT(Buffer && GuiData && WidthUnit && HeightUnit);
if (GetType(Buffer) == TEXTMODE_BUFFER)
{
*WidthUnit = GuiData->CharWidth ;
*HeightUnit = GuiData->CharHeight;
}
else /* if (GetType(Buffer) == GRAPHICS_BUFFER) */
{
*WidthUnit = 1;
*HeightUnit = 1;
}
}
static VOID static VOID
AppendMenuItems(HMENU hMenu, AppendMenuItems(HMENU hMenu,
const GUICONSOLE_MENUITEM *Items) const GUICONSOLE_MENUITEM *Items)
@ -742,20 +719,6 @@ OnFocus(PGUI_CONSOLE_DATA GuiData, BOOL SetFocus)
DPRINT("TODO: Destroy console caret\n"); DPRINT("TODO: Destroy console caret\n");
} }
static VOID
SmallRectToRect(PGUI_CONSOLE_DATA GuiData, PRECT Rect, PSMALL_RECT SmallRect)
{
PCONSOLE_SCREEN_BUFFER Buffer = GuiData->ActiveBuffer;
UINT WidthUnit, HeightUnit;
GetScreenBufferSizeUnits(Buffer, GuiData, &WidthUnit, &HeightUnit);
Rect->left = (SmallRect->Left - Buffer->ViewOrigin.X) * WidthUnit ;
Rect->top = (SmallRect->Top - Buffer->ViewOrigin.Y) * HeightUnit;
Rect->right = (SmallRect->Right + 1 - Buffer->ViewOrigin.X) * WidthUnit ;
Rect->bottom = (SmallRect->Bottom + 1 - Buffer->ViewOrigin.Y) * HeightUnit;
}
VOID VOID
GetSelectionBeginEnd(PCOORD Begin, PCOORD End, GetSelectionBeginEnd(PCOORD Begin, PCOORD End,
PCOORD SelectionAnchor, PCOORD SelectionAnchor,

View file

@ -56,13 +56,6 @@ UnRegisterConWndClass(HINSTANCE hInstance);
/* FUNCTIONS ******************************************************************/ /* FUNCTIONS ******************************************************************/
/* NOTE: Defined in conwnd.c */
VOID
GetScreenBufferSizeUnits(IN PCONSOLE_SCREEN_BUFFER Buffer,
IN PGUI_CONSOLE_DATA GuiData,
OUT PUINT WidthUnit,
OUT PUINT HeightUnit);
VOID VOID
GuiConsoleMoveWindow(PGUI_CONSOLE_DATA GuiData) GuiConsoleMoveWindow(PGUI_CONSOLE_DATA GuiData)
{ {
@ -78,20 +71,6 @@ GuiConsoleMoveWindow(PGUI_CONSOLE_DATA GuiData)
} }
} }
static VOID
SmallRectToRect(PGUI_CONSOLE_DATA GuiData, PRECT Rect, PSMALL_RECT SmallRect)
{
PCONSOLE_SCREEN_BUFFER Buffer = GuiData->ActiveBuffer;
UINT WidthUnit, HeightUnit;
GetScreenBufferSizeUnits(Buffer, GuiData, &WidthUnit, &HeightUnit);
Rect->left = (SmallRect->Left - Buffer->ViewOrigin.X) * WidthUnit ;
Rect->top = (SmallRect->Top - Buffer->ViewOrigin.Y) * HeightUnit;
Rect->right = (SmallRect->Right + 1 - Buffer->ViewOrigin.X) * WidthUnit ;
Rect->bottom = (SmallRect->Bottom + 1 - Buffer->ViewOrigin.Y) * HeightUnit;
}
static VOID static VOID
DrawRegion(PGUI_CONSOLE_DATA GuiData, DrawRegion(PGUI_CONSOLE_DATA GuiData,
SMALL_RECT* Region) SMALL_RECT* Region)

View file

@ -14,6 +14,42 @@
#include "guisettings.h" #include "guisettings.h"
#include "conwnd.h" #include "conwnd.h"
extern inline
VOID
GetScreenBufferSizeUnits(IN PCONSOLE_SCREEN_BUFFER Buffer,
IN PGUI_CONSOLE_DATA GuiData,
OUT PUINT WidthUnit,
OUT PUINT HeightUnit)
{
ASSERT(Buffer && GuiData && WidthUnit && HeightUnit);
if (GetType(Buffer) == TEXTMODE_BUFFER)
{
*WidthUnit = GuiData->CharWidth ;
*HeightUnit = GuiData->CharHeight;
}
else /* if (GetType(Buffer) == GRAPHICS_BUFFER) */
{
*WidthUnit = 1;
*HeightUnit = 1;
}
}
extern inline
VOID
SmallRectToRect(PGUI_CONSOLE_DATA GuiData, PRECT Rect, PSMALL_RECT SmallRect)
{
PCONSOLE_SCREEN_BUFFER Buffer = GuiData->ActiveBuffer;
UINT WidthUnit, HeightUnit;
GetScreenBufferSizeUnits(Buffer, GuiData, &WidthUnit, &HeightUnit);
Rect->left = (SmallRect->Left - Buffer->ViewOrigin.X) * WidthUnit ;
Rect->top = (SmallRect->Top - Buffer->ViewOrigin.Y) * HeightUnit;
Rect->right = (SmallRect->Right + 1 - Buffer->ViewOrigin.X) * WidthUnit ;
Rect->bottom = (SmallRect->Bottom + 1 - Buffer->ViewOrigin.Y) * HeightUnit;
}
VOID VOID
GuiConsoleMoveWindow(PGUI_CONSOLE_DATA GuiData); GuiConsoleMoveWindow(PGUI_CONSOLE_DATA GuiData);

View file

@ -40,13 +40,6 @@
ASSERT((ULONG_PTR)dWChar != (ULONG_PTR)sChar); \ ASSERT((ULONG_PTR)dWChar != (ULONG_PTR)sChar); \
MultiByteToWideChar((Console)->InputCodePage, 0, (sChar), 1, (dWChar), 1) MultiByteToWideChar((Console)->InputCodePage, 0, (sChar), 1, (dWChar), 1)
typedef struct ConsoleInput_t
{
LIST_ENTRY ListEntry;
INPUT_RECORD InputEvent;
} ConsoleInput;
/* PRIVATE FUNCTIONS **********************************************************/ /* PRIVATE FUNCTIONS **********************************************************/
#if 0 #if 0