234 lines
4.6 KiB
C
234 lines
4.6 KiB
C
/*++
|
|
|
|
Copyright (c) 1993 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
spvideo.h
|
|
|
|
Abstract:
|
|
|
|
Public header file for text setup display support.
|
|
|
|
Author:
|
|
|
|
Ted Miller (tedm) 29-July-1993
|
|
|
|
Revision History:
|
|
|
|
--*/
|
|
|
|
|
|
#ifndef _SPVID_DEFN_
|
|
#define _SPVID_DEFN_
|
|
|
|
|
|
//
|
|
// Character attributes.
|
|
//
|
|
#define ATT_BLACK 0
|
|
#define ATT_BLUE 1
|
|
#define ATT_GREEN 2
|
|
#define ATT_CYAN 3
|
|
#define ATT_RED 4
|
|
#define ATT_MAGENTA 5
|
|
#define ATT_YELLOW 6
|
|
#define ATT_WHITE 7
|
|
#define ATT_INTENSE 8
|
|
|
|
#define ATT_FG_BLACK ATT_BLACK
|
|
#define ATT_FG_BLUE ATT_BLUE
|
|
#define ATT_FG_GREEN ATT_GREEN
|
|
#define ATT_FG_CYAN ATT_CYAN
|
|
#define ATT_FG_RED ATT_RED
|
|
#define ATT_FG_MAGENTA ATT_MAGENTA
|
|
#define ATT_FG_YELLOW ATT_YELLOW
|
|
#define ATT_FG_WHITE ATT_WHITE
|
|
|
|
#define ATT_BG_BLACK (ATT_BLACK << 4)
|
|
#define ATT_BG_BLUE (ATT_BLUE << 4)
|
|
#define ATT_BG_GREEN (ATT_GREEN << 4)
|
|
#define ATT_BG_CYAN (ATT_CYAN << 4)
|
|
#define ATT_BG_RED (ATT_RED << 4)
|
|
#define ATT_BG_MAGENTA (ATT_MAGENTA << 4)
|
|
#define ATT_BG_YELLOW (ATT_YELLOW << 4)
|
|
#define ATT_BG_WHITE (ATT_WHITE << 4)
|
|
|
|
#define ATT_FG_INTENSE ATT_INTENSE
|
|
#define ATT_BG_INTENSE (ATT_INTENSE << 4)
|
|
|
|
#define DEFAULT_ATTRIBUTE GetDefaultAttr()
|
|
#define DEFAULT_BACKGROUND GetDefaultBackground()
|
|
|
|
#define DEFAULT_STATUS_ATTRIBUTE GetDefaultStatusAttr()
|
|
#define DEFAULT_STATUS_BACKGROUND GetDefaultStatusBackground()
|
|
|
|
|
|
UCHAR
|
|
GetDefaultAttr(
|
|
void
|
|
);
|
|
|
|
UCHAR
|
|
GetDefaultBackground(
|
|
void
|
|
);
|
|
|
|
UCHAR
|
|
GetDefaultStatusAttr(
|
|
void
|
|
);
|
|
|
|
UCHAR
|
|
GetDefaultStatusBackground(
|
|
void
|
|
);
|
|
|
|
BOOLEAN
|
|
SpvidGetModeParams(
|
|
OUT PULONG XResolution,
|
|
OUT PULONG YResolution,
|
|
OUT PULONG BitsPerPixel,
|
|
OUT PULONG VerticalRefresh,
|
|
OUT PULONG InterlacedFlag
|
|
);
|
|
|
|
//
|
|
// Display routines.
|
|
//
|
|
|
|
VOID
|
|
SpvidInitialize0(
|
|
IN PLOADER_PARAMETER_BLOCK LoaderBlock
|
|
);
|
|
|
|
VOID
|
|
SpvidInitialize(
|
|
VOID
|
|
);
|
|
|
|
VOID
|
|
SpvidTerminate(
|
|
VOID
|
|
);
|
|
|
|
|
|
VOID
|
|
SpvidDisplayString(
|
|
IN PWSTR String,
|
|
IN UCHAR Attribute,
|
|
IN ULONG X,
|
|
IN ULONG Y
|
|
);
|
|
|
|
|
|
VOID
|
|
SpvidDisplayOemString(
|
|
IN PSTR String,
|
|
IN UCHAR Attribute,
|
|
IN ULONG X,
|
|
IN ULONG Y
|
|
);
|
|
|
|
|
|
VOID
|
|
SpvidClearScreenRegion(
|
|
IN ULONG X,
|
|
IN ULONG Y,
|
|
IN ULONG W,
|
|
IN ULONG H,
|
|
IN UCHAR Attribute
|
|
);
|
|
|
|
|
|
BOOLEAN
|
|
SpvidScrollUp(
|
|
IN ULONG TopLine,
|
|
IN ULONG BottomLine,
|
|
IN ULONG LineCount,
|
|
IN UCHAR FillAttribute
|
|
);
|
|
|
|
NTSTATUS
|
|
SpvidSwitchToTextmode(
|
|
VOID
|
|
);
|
|
|
|
//
|
|
// Structure used to contain global video vars. These are broken out
|
|
// like this because they are shared with the locale/lang-specific
|
|
// text setup module.
|
|
//
|
|
typedef struct _SP_VIDEO_VARS {
|
|
|
|
//
|
|
// Habdle to \device\video0
|
|
//
|
|
HANDLE hDisplay;
|
|
|
|
//
|
|
// The following are character values, and must be filled in
|
|
// in the display-specific initialization routine.
|
|
//
|
|
ULONG ScreenWidth,ScreenHeight;
|
|
|
|
//
|
|
// The display-specific subsystems fill these in with information
|
|
// that reflects the video mode they are using, and the video memory.
|
|
//
|
|
VIDEO_MEMORY_INFORMATION VideoMemoryInfo;
|
|
VIDEO_MODE_INFORMATION VideoModeInfo;
|
|
|
|
//
|
|
// Graphics mode information (if any)
|
|
//
|
|
VIDEO_MODE_INFORMATION GraphicsModeInfo;
|
|
|
|
//
|
|
// The display routines will be doing unicode to oem translations.
|
|
// We'll limit the length of a string that can be displayed at one time
|
|
// to the width of the screen. Theese two vars track a buffer
|
|
// we preallocate to hold translated text.
|
|
//
|
|
ULONG SpvCharTranslationBufferSize;
|
|
PUCHAR SpvCharTranslationBuffer;
|
|
|
|
//
|
|
// The following table maps each possible attribute to
|
|
// a corresponding bit pattern to be be placed into the
|
|
// frame buffer to generate that attribute.
|
|
// On palette managed displays, this table will be an
|
|
// identity mapping (ie, AttributeToColorValue[i] = i)
|
|
// so we can poke the attribute driectly into the
|
|
// frame buffer.
|
|
//
|
|
ULONG AttributeToColorValue[16];
|
|
|
|
//
|
|
// Upgrade graphics mode
|
|
//
|
|
BOOLEAN UpgradeGraphicsMode;
|
|
|
|
//
|
|
// Background Video buffer for upgrade graphics mode
|
|
//
|
|
PVOID VideoBuffer;
|
|
ULONG VideoBufferSize;
|
|
|
|
//
|
|
// Active video buffer
|
|
//
|
|
PVOID ActiveVideoBuffer;
|
|
} SP_VIDEO_VARS, *PSP_VIDEO_VARS;
|
|
|
|
extern SP_VIDEO_VARS VideoVars;
|
|
|
|
//
|
|
// bootfont.bin file image
|
|
//
|
|
|
|
extern PVOID BootFontImage;
|
|
extern ULONG BootFontImageLength;
|
|
|
|
#endif // ndef _SPVID_DEFN_
|