271 lines
5.6 KiB
C
271 lines
5.6 KiB
C
/*++
|
||
|
||
Copyright (c) 1993 Microsoft Corporation
|
||
|
||
Module Name:
|
||
|
||
spvideop.h
|
||
|
||
Abstract:
|
||
|
||
Private header file for text setup display support.
|
||
|
||
Author:
|
||
|
||
Ted Miller (tedm) 29-July-1993
|
||
|
||
Revision History:
|
||
|
||
--*/
|
||
|
||
|
||
#ifndef _SPVIDP_DEFN_
|
||
#define _SPVIDP_DEFN_
|
||
|
||
|
||
//
|
||
// Globals that contain information about the font currently in use.
|
||
//
|
||
extern POEM_FONT_FILE_HEADER FontHeader;
|
||
|
||
extern ULONG FontBytesPerRow;
|
||
extern ULONG FontCharacterHeight;
|
||
extern ULONG FontCharacterWidth;
|
||
|
||
//
|
||
// These values are passed to us by setupldr and represent monitor config
|
||
// data from the monitor peripheral for the display we are supposed to use
|
||
// during setup. They are used only for non-vga displays.
|
||
//
|
||
extern PMONITOR_CONFIGURATION_DATA MonitorConfigData;
|
||
extern PCHAR MonitorFirmwareIdString;
|
||
|
||
//
|
||
// Routine to map or unmap video memory. Fills in or uses
|
||
// the VideoMemoryInfo global.
|
||
//
|
||
VOID
|
||
pSpvidMapVideoMemory(
|
||
IN BOOLEAN Map
|
||
);
|
||
|
||
typedef
|
||
VOID
|
||
(*SPVID_DISPLAY_STRING_ROUTINE) (
|
||
IN PSTR String,
|
||
IN UCHAR Attribute,
|
||
IN ULONG X, // 0-based coordinates (character units)
|
||
IN ULONG Y
|
||
);
|
||
|
||
typedef
|
||
VOID
|
||
(*SPVID_CLEAR_REGION_ROUTINE) (
|
||
IN ULONG X,
|
||
IN ULONG Y,
|
||
IN ULONG W,
|
||
IN ULONG H,
|
||
IN UCHAR Attribute
|
||
);
|
||
|
||
typedef
|
||
VOID
|
||
(*SPVID_SPECIFIC_INIT_ROUTINE) (
|
||
IN PVIDEO_MODE_INFORMATION VideoModes,
|
||
IN ULONG NumberOfModes,
|
||
IN ULONG ModeSize
|
||
);
|
||
|
||
typedef
|
||
VOID
|
||
(*SPVID_SPECIFIC_REINIT_ROUTINE) (
|
||
VOID
|
||
);
|
||
|
||
typedef
|
||
VOID
|
||
(*SPVID_SPECIFIC_TERMINATE_ROUTINE) (
|
||
VOID
|
||
);
|
||
|
||
typedef
|
||
BOOLEAN
|
||
(*SPVID_SPECIFIC_PALETTE_ROUTINE) (
|
||
VOID
|
||
);
|
||
|
||
typedef
|
||
BOOLEAN
|
||
(*SPVID_SPECIFIC_SCROLL_UP_ROUTINE) (
|
||
IN ULONG TopLine,
|
||
IN ULONG BottomLine,
|
||
IN ULONG LineCount,
|
||
IN UCHAR FillAttribute
|
||
);
|
||
|
||
typedef struct _VIDEO_FUNCTION_VECTOR {
|
||
SPVID_DISPLAY_STRING_ROUTINE DisplayStringRoutine;
|
||
SPVID_CLEAR_REGION_ROUTINE ClearRegionRoutine;
|
||
SPVID_SPECIFIC_INIT_ROUTINE SpecificInitRoutine;
|
||
SPVID_SPECIFIC_REINIT_ROUTINE SpecificReInitRoutine;
|
||
SPVID_SPECIFIC_TERMINATE_ROUTINE SpecificTerminateRoutine;
|
||
SPVID_SPECIFIC_PALETTE_ROUTINE SpecificInitPaletteRoutine;
|
||
SPVID_SPECIFIC_SCROLL_UP_ROUTINE SpecificScrollUpRoutine;
|
||
} VIDEO_FUNCTION_VECTOR, *PVIDEO_FUNCTION_VECTOR;
|
||
|
||
|
||
extern PVIDEO_FUNCTION_VECTOR VideoFunctionVector;
|
||
|
||
//
|
||
// Shorthand for accessing routines in the video function vector.
|
||
//
|
||
#define spvidSpecificInitialize(v,n,m) \
|
||
\
|
||
VideoFunctionVector->SpecificInitRoutine((v),(n),(m))
|
||
|
||
#define spvidSpecificReInitialize() \
|
||
\
|
||
VideoFunctionVector->SpecificReInitRoutine()
|
||
|
||
|
||
#define spvidSpecificTerminate() \
|
||
\
|
||
VideoFunctionVector->SpecificTerminateRoutine()
|
||
|
||
#define spvidSpecificClearRegion(x,y,w,h,a) \
|
||
\
|
||
VideoFunctionVector->ClearRegionRoutine((x),(y),(w),(h),(a))
|
||
|
||
#define spvidSpecificDisplayString(s,a,x,y) \
|
||
\
|
||
VideoFunctionVector->DisplayStringRoutine((s),(a),(x),(y))
|
||
|
||
#define spvidSpecificInitPalette() \
|
||
\
|
||
VideoFunctionVector->SpecificInitPaletteRoutine()
|
||
|
||
#define spvidSpecificScrollUp(t,b,c,a) \
|
||
\
|
||
VideoFunctionVector->SpecificScrollUpRoutine((t),(b),(c),(a))
|
||
|
||
|
||
//
|
||
// Frame buffer routines (spvidfb.c).
|
||
//
|
||
|
||
|
||
VOID
|
||
FrameBufferDisplayString(
|
||
IN PSTR String,
|
||
IN UCHAR Attribute,
|
||
IN ULONG X, // 0-based coordinates (character units)
|
||
IN ULONG Y
|
||
);
|
||
|
||
VOID
|
||
FrameBufferClearRegion(
|
||
IN ULONG X,
|
||
IN ULONG Y,
|
||
IN ULONG W,
|
||
IN ULONG H,
|
||
IN UCHAR Attribute
|
||
);
|
||
|
||
VOID
|
||
FrameBufferSpecificInit(
|
||
IN PVIDEO_MODE_INFORMATION VideoModes,
|
||
IN ULONG NumberOfModes,
|
||
IN ULONG ModeSize
|
||
);
|
||
|
||
VOID
|
||
FrameBufferSpecificReInit(
|
||
VOID
|
||
);
|
||
|
||
VOID
|
||
FrameBufferSpecificTerminate(
|
||
VOID
|
||
);
|
||
|
||
BOOLEAN
|
||
FrameBufferSpecificInitPalette(
|
||
VOID
|
||
);
|
||
|
||
BOOLEAN
|
||
FrameBufferSpecificScrollUp(
|
||
IN ULONG TopLine,
|
||
IN ULONG BottomLine,
|
||
IN ULONG LineCount,
|
||
IN UCHAR FillAttribute
|
||
);
|
||
|
||
extern VIDEO_FUNCTION_VECTOR FrameBufferVideoVector;
|
||
|
||
PVIDEO_MODE_INFORMATION
|
||
pFrameBufferDetermineModeToUse(
|
||
IN PVIDEO_MODE_INFORMATION VideoModes,
|
||
IN ULONG NumberOfModes,
|
||
IN ULONG ModeSize
|
||
);
|
||
|
||
|
||
//
|
||
// Textmode display routines (spvidvga.c).
|
||
//
|
||
|
||
|
||
VOID
|
||
VgaDisplayString(
|
||
IN PSTR String,
|
||
IN UCHAR Attribute,
|
||
IN ULONG X, // 0-based coordinates (character units)
|
||
IN ULONG Y
|
||
);
|
||
|
||
VOID
|
||
VgaClearRegion(
|
||
IN ULONG X,
|
||
IN ULONG Y,
|
||
IN ULONG W,
|
||
IN ULONG H,
|
||
IN UCHAR Attribute
|
||
);
|
||
|
||
VOID
|
||
VgaSpecificInit(
|
||
IN PVIDEO_MODE_INFORMATION VideoModes,
|
||
IN ULONG NumberOfModes,
|
||
IN ULONG ModeSize
|
||
);
|
||
|
||
VOID
|
||
VgaSpecificReInit(
|
||
VOID
|
||
);
|
||
|
||
|
||
VOID
|
||
VgaSpecificTerminate(
|
||
VOID
|
||
);
|
||
|
||
BOOLEAN
|
||
VgaSpecificInitPalette(
|
||
VOID
|
||
);
|
||
|
||
BOOLEAN
|
||
VgaSpecificScrollUp(
|
||
IN ULONG TopLine,
|
||
IN ULONG BottomLine,
|
||
IN ULONG LineCount,
|
||
IN UCHAR FillAttribute
|
||
);
|
||
|
||
extern VIDEO_FUNCTION_VECTOR VgaVideoVector;
|
||
|
||
|
||
#endif // ndef _SPVIDP_DEFN_
|
||
|