[CONSRV] Deduplicate GetScreenBufferSizeUnits(), SmallRectToRect() and ConsoleInput...
[reactos.git] / win32ss / user / winsrv / consrv / frontends / gui / guiterm.h
index 3b252af..6272372 100644 (file)
 #include "guisettings.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
 GuiConsoleMoveWindow(PGUI_CONSOLE_DATA GuiData);