reactos/rosapps/sysutils/utils/pice/module/hardware.h

166 lines
4.1 KiB
C

/*++
Copyright (c) 1998-2001 Klaus P. Gerlicher
Module Name:
hardwar.h
Abstract:
HEADER for hardware.c
Environment:
LINUX 2.2.X
Kernel mode only
Author:
Klaus P. Gerlicher
Revision History:
15-Nov-2000: general cleanup of source files
Copyright notice:
This file may be distributed under the terms of the GNU Public License.
--*/
typedef struct tagWindow
{
USHORT y,cy;
USHORT usCurX,usCurY;
BOOLEAN bScrollDisabled;
}WINDOW,*PWINDOW;
// pointer indirection table for output functions
typedef struct _OUTPUT_HANDLERS
{
void (*CopyLineTo) (USHORT dest,USHORT src);
void (*PrintGraf) (ULONG x,ULONG y,UCHAR c);
void (*Flush) (void);
void (*ClrLine) (ULONG line);
void (*InvertLine) (ULONG line);
void (*HatchLine) (ULONG line);
void (*PrintLogo) (BOOLEAN bShow);
void (*PrintCursor) (BOOLEAN bForce);
void (*SaveGraphicsState) (void);
void (*RestoreGraphicsState) (void);
void (*ShowCursor) (void);
void (*HideCursor) (void);
void (*SetForegroundColor) (ECOLORS);
void (*SetBackgroundColor) (ECOLORS);
}OUTPUT_HANDLERS,*POUTPUT_HANDLERS;
// pointer indirection table for input functions
typedef struct _INPUT_HANDLERS
{
UCHAR (*GetKeyPolled) (void);
void (*FlushKeyboardQueue) (void);
}INPUT_HANDLERS,*PINPUT_HANDLERS;
extern OUTPUT_HANDLERS ohandlers;
extern INPUT_HANDLERS ihandlers;
enum
{
REGISTER_WINDOW = 0 ,
DATA_WINDOW ,
SOURCE_WINDOW ,
OUTPUT_WINDOW ,
OUTPUT_WINDOW_UNBUFFERED
};
typedef enum _ETERMINALMODE
{
TERMINAL_MODE_HERCULES_GRAPHICS = 0 ,
TERMINAL_MODE_HERCULES_TEXT,
TERMINAL_MODE_VGA_TEXT,
TERMINAL_MODE_SERIAL,
TERMINAL_MODE_NONE
}ETERMINALMODE;
extern ETERMINALMODE eTerminalMode;
extern WINDOW wWindow[];
extern BOOLEAN bRev;
extern BOOLEAN bGrayed;
extern BOOLEAN bCursorEnabled;
// install and remove handler
BOOLEAN ConsoleInit(void);
void ConsoleShutdown(void);
// OUTPUT handler
void Print(USHORT Window,LPSTR p);
void SetBackgroundColor(ECOLORS c);
void SetForegroundColor(ECOLORS c);
void Clear(USHORT window);
void PutChar(LPSTR p,ULONG x,ULONG y);
void ClrLine(ULONG line);
void ShowCursor(void);
void HideCursor(void);
void EnableScroll(USHORT Window);
void DisableScroll(USHORT Window);
void CopyLineTo(USHORT dest,USHORT src);
void PrintLogo(BOOLEAN bShow);
void PrintCursor(BOOLEAN bForce);
void PrintGraf(ULONG x,ULONG y,UCHAR c);
void ScrollUp(USHORT Window);
void Home(USHORT Window);
void InvertLine(ULONG line);
void FillLine(ULONG line,UCHAR c);
void PrintTemplate(void);
void PrintCaption(void);
void ClrLineToEnd(USHORT Window,ULONG line,ULONG x);
void SuspendPrintRingBuffer(BOOLEAN bSuspend);
void HatchLine(ULONG line);
void SaveGraphicsState(void);
void RestoreGraphicsState(void);
void SetWindowGeometry(PVOID pWindow);
// INPUT handler
UCHAR GetKeyPolled(void);
void FlushKeyboardQueue(void);
BOOLEAN PrintRingBufferOffset(ULONG ulLines,ULONG ulOffset);
BOOLEAN PrintRingBufferHome(ULONG ulLines);
void PrintRingBuffer(ULONG ulLines);
ULONG LinesInRingBuffer(void);
void ReplaceRingBufferCurrent(LPSTR s);
void EmptyRingBuffer(void);
void CheckRingBuffer(void);
BOOLEAN AddToRingBuffer(LPSTR p);
void ResetColor(void);
extern ULONG GLOBAL_SCREEN_WIDTH;
extern ULONG GLOBAL_SCREEN_HEIGHT;
extern ULONG ulOutputLock;
#define Acquire_Output_Lock() \
{ \
save_flags(ulOutputLock); \
cli(); \
}
#define Release_Output_Lock() \
restore_flags(ulOutputLock);
#define NOT_IMPLEMENTED()
extern USHORT usCaptionColor;
#define COLOR_CAPTION usCaptionColor
extern USHORT usCaptionText;
#define COLOR_TEXT usCaptionText
extern USHORT usForegroundColor;
#define COLOR_FOREGROUND usForegroundColor
extern USHORT usBackgroundColor;
#undef COLOR_BACKGROUND
#define COLOR_BACKGROUND usBackgroundColor
extern USHORT usHiLiteColor;
#define COLOR_HILITE usHiLiteColor