+extern EFI_DRIVER_BINDING_PROTOCOL gGraphicsConsoleDriverBinding;\r
+extern EFI_NARROW_GLYPH gUsStdNarrowGlyphData[];\r
+\r
+\r
+//\r
+// User can define valid graphic resolution here\r
+// e.g. 640x480, 800x600, 1024x768...\r
+//\r
+#define CURRENT_HORIZONTAL_RESOLUTION 800\r
+#define CURRENT_VERTICAL_RESOLUTION 600\r
+\r
+typedef union {\r
+ EFI_NARROW_GLYPH NarrowGlyph;\r
+ EFI_WIDE_GLYPH WideGlyph;\r
+} GLYPH_UNION;\r
+\r
+//\r
+// Device Structure\r
+//\r
+#define GRAPHICS_CONSOLE_DEV_SIGNATURE SIGNATURE_32 ('g', 's', 't', 'o')\r
+\r
+typedef struct {\r
+ UINTN Columns;\r
+ UINTN Rows;\r
+ INTN DeltaX;\r
+ INTN DeltaY;\r
+ UINT32 GopWidth;\r
+ UINT32 GopHeight;\r
+ UINT32 GopModeNumber;\r
+} GRAPHICS_CONSOLE_MODE_DATA;\r
+\r
+#define GRAPHICS_MAX_MODE 4\r
+\r
+typedef struct {\r
+ UINTN Signature;\r
+ EFI_GRAPHICS_OUTPUT_PROTOCOL *GraphicsOutput;\r
+ EFI_UGA_DRAW_PROTOCOL *UgaDraw;\r
+ EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL SimpleTextOutput;\r
+ EFI_SIMPLE_TEXT_OUTPUT_MODE SimpleTextOutputMode;\r
+ GRAPHICS_CONSOLE_MODE_DATA ModeData[GRAPHICS_MAX_MODE];\r
+ EFI_GRAPHICS_OUTPUT_BLT_PIXEL *LineBuffer;\r
+ EFI_HII_HANDLE HiiHandle;\r
+} GRAPHICS_CONSOLE_DEV;\r
+\r
+#define GRAPHICS_CONSOLE_CON_OUT_DEV_FROM_THIS(a) \\r
+ CR (a, GRAPHICS_CONSOLE_DEV, SimpleTextOutput, GRAPHICS_CONSOLE_DEV_SIGNATURE)\r
+\r