windows-nt/Source/XPSP1/NT/base/ntsetup/textmode/kernel/spvideo.h
2020-09-26 16:20:57 +08:00

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_