summaryrefslogtreecommitdiff
path: root/Include/Protocol/SimpleTextOut.h
blob: e4d95ef3f6518477cfd0368ec51b7c5b87514440 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
//**********************************************************************
//**********************************************************************
//**                                                                  **
//**        (C)Copyright 1985-2005, American Megatrends, Inc.         **
//**                                                                  **
//**                       All Rights Reserved.                       **
//**                                                                  **
//**             6145-F Northbelt Pkwy, Norcross, GA 30071            **
//**                                                                  **
//**                       Phone: (770)-246-8600                      **
//**                                                                  **
//**********************************************************************
//**********************************************************************

//**********************************************************************
// $Header: /Alaska/BIN/Core/Include/Protocol/SimpleTextOut.h 1     3/13/06 1:39a Felixp $
//
// $Revision: 1 $
//
// $Date: 3/13/06 1:39a $
//**********************************************************************
// Revision History
// ----------------
// $Log: /Alaska/BIN/Core/Include/Protocol/SimpleTextOut.h $
// 
// 1     3/13/06 1:39a Felixp
// 
// 2     10/26/05 5:08p Ambikas
// 
// 1     1/28/05 12:44p Felixp
// 
// 2     1/18/05 3:22p Felixp
// PrintDebugMessage renamed to Trace
// 
// 1     12/23/04 9:41a Felixp
// 
// 3     12/10/04 4:39p Robert
// Added #pragma pack(1) around the Simple text output mode datastructure
// 
// 2     11/08/04 3:15p Robert
// fixed a typedef for the for the EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL
// 
// 1     11/03/04 9:39p Felixp
// 
// 1     9/15/04 5:09p Markw
// 
//**********************************************************************
//<AMI_FHDR_START>
//
// Name:	SimpleTextOut.h 
//
// Description:	SIMPLE_TEXT_OUTPUT Protocol Definition
//
//<AMI_FHDR_END>
//**********************************************************************
#ifndef __SIMPLE_TEXT_OUPUT_PROTOCOL_H__
#define __SIMPLE_TEXT_OUPUT_PROTOCOL_H__
#ifdef __cplusplus
extern "C" {
#endif
#include <EFI.h>

#define EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL_GUID \
	{0x387477c2,0x69c7,0x11d2,0x8e,0x39,0x00,0xa0,0xc9,0x69,0x72,0x3b}

GUID_VARIABLE_DECLARATION(gEfiSimpleTextOutProtocolGuid,EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL_GUID);

//EFI.h contains forward declaration of EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL
//typedef struct _EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL;

//*******************************************************
// SIMPLE_TEXT_OUTPUT_MODE
//*******************************************************

#pragma pack(1)
typedef struct {
	INT32	MaxMode;
	INT32	Mode;
	INT32	Attribute;
	INT32	CursorColumn;
	INT32	CursorRow;
	BOOLEAN	CursorVisible;
} SIMPLE_TEXT_OUTPUT_MODE;

#pragma pack()
//*******************************************************
// UNICODE DRAWING CHARACTERS
//*******************************************************
#define BOXDRAW_HORIZONTAL					0x2500
#define BOXDRAW_VERTICAL					0x2502
#define BOXDRAW_DOWN_RIGHT					0x250c
#define BOXDRAW_DOWN_LEFT					0x2510
#define BOXDRAW_UP_RIGHT					0x2514
#define BOXDRAW_UP_LEFT						0x2518
#define BOXDRAW_VERTICAL_RIGHT				0x251c
#define BOXDRAW_VERTICAL_LEFT				0x2524
#define BOXDRAW_DOWN_HORIZONTAL				0x252c
#define BOXDRAW_UP_HORIZONTAL				0x2534
#define BOXDRAW_VERTICAL_HORIZONTAL			0x253c
#define BOXDRAW_DOUBLE_HORIZONTAL			0x2550
#define BOXDRAW_DOUBLE_VERTICAL				0x2551
#define BOXDRAW_DOWN_RIGHT_DOUBLE			0x2552
#define BOXDRAW_DOWN_DOUBLE_RIGHT			0x2553
#define BOXDRAW_DOUBLE_DOWN_RIGHT			0x2554
#define BOXDRAW_DOWN_LEFT_DOUBLE			0x2555
#define BOXDRAW_DOWN_DOUBLE_LEFT			0x2556
#define BOXDRAW_DOUBLE_DOWN_LEFT			0x2557
#define BOXDRAW_UP_RIGHT_DOUBLE				0x2558
#define BOXDRAW_UP_DOUBLE_RIGHT				0x2559
#define BOXDRAW_DOUBLE_UP_RIGHT				0x255a
#define BOXDRAW_UP_LEFT_DOUBLE				0x255b
#define BOXDRAW_UP_DOUBLE_LEFT				0x255c
#define BOXDRAW_DOUBLE_UP_LEFT				0x255d
#define BOXDRAW_VERTICAL_RIGHT_DOUBLE		0x255e
#define BOXDRAW_VERTICAL_DOUBLE_RIGHT		0x255f
#define BOXDRAW_DOUBLE_VERTICAL_RIGHT		0x2560
#define BOXDRAW_VERTICAL_LEFT_DOUBLE		0x2561
#define BOXDRAW_VERTICAL_DOUBLE_LEFT		0x2562
#define BOXDRAW_DOUBLE_VERTICAL_LEFT		0x2563
#define BOXDRAW_DOWN_HORIZONTAL_DOUBLE		0x2564
#define BOXDRAW_DOWN_DOUBLE_HORIZONTAL		0x2565
#define BOXDRAW_DOUBLE_DOWN_HORIZONTAL		0x2566
#define BOXDRAW_UP_HORIZONTAL_DOUBLE		0x2567
#define BOXDRAW_UP_DOUBLE_HORIZONTAL		0x2568
#define BOXDRAW_DOUBLE_UP_HORIZONTAL		0x2569
#define BOXDRAW_VERTICAL_HORIZONTAL_DOUBLE	0x256a
#define BOXDRAW_VERTICAL_DOUBLE_HORIZONTAL	0x256b
#define BOXDRAW_DOUBLE_VERTICAL_HORIZONTAL	0x256c
//*******************************************************
// EFI Required Block Elements Code Chart
//*******************************************************
#define BLOCKELEMENT_FULL_BLOCK				0x2588
#define BLOCKELEMENT_LIGHT_SHADE			0x2591
//*******************************************************
// EFI Required Geometric Shapes Code Chart
//*******************************************************
#define GEOMETRICSHAPE_UP_TRIANGLE			0x25b2
#define GEOMETRICSHAPE_RIGHT_TRIANGLE		0x25ba
#define GEOMETRICSHAPE_DOWN_TRIANGLE		0x25bc
#define GEOMETRICSHAPE_LEFT_TRIANGLE		0x25c4
//*******************************************************
// EFI Required Arrow shapes
//*******************************************************
#define ARROW_LEFT  0x2190
#define ARROW_UP    0x2191
#define ARROW_RIGHT 0x2192
#define ARROW_DOWN  0x2193
//*******************************************************
// Attributes
//*******************************************************
#define EFI_BLACK					0x00
#define EFI_BLUE					0x01
#define EFI_GREEN					0x02
#define EFI_CYAN					0x03
#define EFI_RED						0x04
#define EFI_MAGENTA					0x05
#define EFI_BROWN					0x06
#define EFI_LIGHTGRAY				0x07
#define EFI_BRIGHT					0x08
#define EFI_DARKGRAY				0x08
#define EFI_LIGHTBLUE				0x09
#define EFI_LIGHTGREEN				0x0A
#define EFI_LIGHTCYAN				0x0B
#define EFI_LIGHTRED				0x0C
#define EFI_LIGHTMAGENTA			0x0D
#define EFI_YELLOW					0x0E
#define EFI_WHITE					0x0F
#define EFI_BACKGROUND_BLACK		0x00
#define EFI_BACKGROUND_BLUE			0x10
#define EFI_BACKGROUND_GREEN		0x20
#define EFI_BACKGROUND_CYAN			0x30
#define EFI_BACKGROUND_RED			0x40
#define EFI_BACKGROUND_MAGENTA		0x50
#define EFI_BACKGROUND_BROWN		0x60
#define EFI_BACKGROUND_LIGHTGRAY	0x70
#define EFI_TEXT_ATTR(foreground,background) \
	((foreground) | ((background) << 4))


typedef EFI_STATUS (EFIAPI *EFI_TEXT_RESET) (
	IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL	*This,
	IN BOOLEAN						ExtendedVerification
);

typedef EFI_STATUS (EFIAPI *EFI_TEXT_STRING) (
	IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL	*This,
	IN CHAR16						*String
);

typedef EFI_STATUS (EFIAPI *EFI_TEXT_TEST_STRING) (
	IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL	*This,
	IN CHAR16						*String
);

typedef EFI_STATUS (EFIAPI *EFI_TEXT_QUERY_MODE) (
	IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL	*This,
	IN UINTN						ModeNumber,
	OUT UINTN						*Columns,
	OUT UINTN						*Rows
);

typedef EFI_STATUS (* EFIAPI EFI_TEXT_SET_MODE) (
	IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL	*This,
	IN UINTN						ModeNumber
);

typedef EFI_STATUS (EFIAPI *EFI_TEXT_SET_ATTRIBUTE) (
	IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL	*This,
	IN UINTN						Attribute
);

typedef EFI_STATUS (EFIAPI *EFI_TEXT_CLEAR_SCREEN) (
	IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL	*This
);

typedef EFI_STATUS (EFIAPI *EFI_TEXT_SET_CURSOR_POSITION) (
	IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL	*This,
	IN UINTN						Column,
	IN UINTN						Row
);

typedef EFI_STATUS (EFIAPI *EFI_TEXT_ENABLE_CURSOR) (
	IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL	*This,
	IN BOOLEAN						Visible
);


typedef struct _EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL {
	EFI_TEXT_RESET					Reset;
	EFI_TEXT_STRING					OutputString;
	EFI_TEXT_TEST_STRING			TestString;
	EFI_TEXT_QUERY_MODE				QueryMode;
	EFI_TEXT_SET_MODE				SetMode;
	EFI_TEXT_SET_ATTRIBUTE			SetAttribute;
	EFI_TEXT_CLEAR_SCREEN			ClearScreen;
	EFI_TEXT_SET_CURSOR_POSITION	SetCursorPosition;
	EFI_TEXT_ENABLE_CURSOR			EnableCursor;
	SIMPLE_TEXT_OUTPUT_MODE			*Mode;
	} EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL;


/****** DO NOT WRITE BELOW THIS LINE *******/
#ifdef __cplusplus
}
#endif
#endif
//**********************************************************************
//**                                                                  **
//**        (C)Copyright 1985-2005, American Megatrends, Inc.         **
//**                                                                  **
//**                       All Rights Reserved.                       **
//**                                                                  **
//**             6145-F Northbelt Pkwy, Norcross, GA 30071            **
//**                                                                  **
//**                       Phone: (770)-246-8600                      **
//**                                                                  **
//**********************************************************************
//**********************************************************************