summaryrefslogtreecommitdiff
path: root/EDK/MiniSetup/Legacy
diff options
context:
space:
mode:
Diffstat (limited to 'EDK/MiniSetup/Legacy')
-rw-r--r--EDK/MiniSetup/Legacy/Legacy.cif14
-rw-r--r--EDK/MiniSetup/Legacy/Legacy.mak131
-rw-r--r--EDK/MiniSetup/Legacy/Legacy.sdl445
-rw-r--r--EDK/MiniSetup/Legacy/legacy.c1622
-rw-r--r--EDK/MiniSetup/Legacy/legacy.h160
-rw-r--r--EDK/MiniSetup/Legacy/style.c725
-rw-r--r--EDK/MiniSetup/Legacy/style.h259
-rw-r--r--EDK/MiniSetup/Legacy/stylecommon.c1362
8 files changed, 4718 insertions, 0 deletions
diff --git a/EDK/MiniSetup/Legacy/Legacy.cif b/EDK/MiniSetup/Legacy/Legacy.cif
new file mode 100644
index 0000000..7da244b
--- /dev/null
+++ b/EDK/MiniSetup/Legacy/Legacy.cif
@@ -0,0 +1,14 @@
+<component>
+ name = "TSE Sources - Style - Legacy"
+ category = ModulePart
+ LocalRoot = "EDK\MiniSetup\Legacy"
+ RefName = "Legacy"
+[files]
+"Legacy.sdl"
+"Legacy.mak"
+"legacy.c"
+"legacy.h"
+"stylecommon.c"
+"style.h"
+"style.c"
+<endComponent>
diff --git a/EDK/MiniSetup/Legacy/Legacy.mak b/EDK/MiniSetup/Legacy/Legacy.mak
new file mode 100644
index 0000000..04fcd6f
--- /dev/null
+++ b/EDK/MiniSetup/Legacy/Legacy.mak
@@ -0,0 +1,131 @@
+##*****************************************************************##
+##*****************************************************************##
+##*****************************************************************##
+##** **##
+##** (C)Copyright 1985-2010, American Megatrends, Inc. **##
+##** **##
+##** All Rights Reserved. **##
+##** **##
+##** 5555 Oakbrook Pkwy , Norcross, GA 30071 **##
+##** **##
+##** Phone (770)-246-8600 **##
+##** **##
+##*****************************************************************##
+##*****************************************************************##
+##*****************************************************************##
+## $Archive: /Alaska/SOURCE/Modules/AMITSE2_0/AMITSE/Legacy/Legacy.mak $
+##
+## $Author: Arunsb $
+##
+## $Revision: 2 $
+##
+## $Date: 10/18/12 6:06a $
+##
+##*****************************************************************##
+##*****************************************************************##
+## Revision History
+## ----------------
+## $Log: /Alaska/SOURCE/Modules/AMITSE2_0/AMITSE/Legacy/Legacy.mak $
+#
+# 2 10/18/12 6:06a Arunsb
+# Updated for 2.16.1235 QA submission
+##
+## 2 10/10/12 12:42p Arunsb
+## Synched the source for v2.16.1232, backup with Aptio
+#
+# 1 3/28/11 11:52p Madhans
+# [TAG] EIP54968
+# [Category] Improvement
+# [Description] To Support different style modules in TSE generically
+# [Files] Ezport module updated. EzportPlus and Legacy Styles Modules
+# added.
+##
+## 1 9/16/10 6:37p Blaines
+##
+## 1 9/16/10 6:32p Blaines
+##
+## 5 2/19/10 8:15a Mallikarjunanv
+## updated year in copyright message
+##
+## 4 8/17/09 12:23p Presannar
+## Removed Include path to Core directory
+##
+## 3 6/24/09 6:10p Madhans
+## Made TSE_USE_EDK_LIBRARY=OFF to not to refer EDK module.
+##
+## 2 6/12/09 2:36p Blaines
+## Update coding standard
+##
+## 1 6/04/09 8:05p Madhans
+#
+# 1 4/28/09 11:15p Madhans
+# Tse 2.0 Code complete Checkin.
+##
+## 3 4/28/09 9:39p Madhans
+## Tse 2.0 Code complete Checkin.
+##
+## 2 4/24/09 9:35p Blaines
+##
+## 1 12/18/08 7:59p Madhans
+## Intial version of TSE Lite sources
+##
+##
+##*****************************************************************##
+##*****************************************************************##
+
+# MAK file for the eModule:TseLite
+
+TSE_STYLE_INCLUDES = \
+ -I $(TSE_STYLE_DIR) \
+!if "$(UEFI_SOURCES_SUPPORT)" == "1"
+ -I $(UEFISRC_DIR) \
+!endif
+ -I $(TSESRC_DIR) \
+ -I $(TSESRC_DIR)\AMILOGO \
+ -I $(TSELITESRC_DIR) \
+ -I $(TSEBIN_DIR) \
+ -I $(TSEBIN_DIR)\Inc \
+!if "$(TSE_BOARD_SOURCE_SUPPORT)" == "1"
+ -I $(TSE_BOARD_DIR)\
+!endif
+ -I $(PROJECT_DIR)\Include\Protocol \
+ -I $(PROJECT_DIR) \
+ -I $(PROJECT_DIR)\Include \
+ -I $(BUILD_DIR) \
+
+$(BUILD_DIR)\TseStyleLegacy.lib : TseStyleLib
+
+TseStyleLib : $(BUILD_DIR)\Legacy.mak TseStyleLibBinLegacy
+
+$(BUILD_DIR)\Legacy.mak : $(TSE_STYLE_DIR)\$(@B).cif $(TSE_STYLE_DIR)\$(@B).mak $(BUILD_RULES)
+ $(CIF2MAK) $(TSE_STYLE_DIR)\$(@B).cif $(CIF2MAK_DEFAULTS)
+
+!if "$(TSE_USE_EDK_LIBRARY)" == "1"
+TSE_DEFAULTS = $(EDK_DEFAULTS)
+!else
+TSE_DEFAULTS = $(BUILD_DEFAULTS)
+!endif
+
+TseStyleLibBinLegacy :
+ $(MAKE) /$(MAKEFLAGS) $(TSE_DEFAULTS)\
+ /f $(BUILD_DIR)\Legacy.mak all\
+ "MY_INCLUDES=$(TSE_STYLE_INCLUDES)"\
+ "UNI_INCLUDE_PATH=$(TSEBIN_DIR)"\
+ TYPE=LIBRARY \
+ "EXT_HEADERS=$(BUILD_DIR)\token.h"\
+ LIBRARY_NAME=$(BUILD_DIR)\TseStyleLegacy.lib\
+ "CFLAGS=$(CFLAGS) /DTSE_FOR_APTIO_4_50"
+
+##*****************************************************************##
+##*****************************************************************##
+##** **##
+##** (C)Copyright 1985-2010, American Megatrends, Inc. **##
+##** **##
+##** All Rights Reserved. **##
+##** **##
+##** 5555 Oakbrook Pkwy , Norcross, GA 30071 **##
+##** **##
+##** Phone (770)-246-8600 **##
+##** **##
+##*****************************************************************##
+##*****************************************************************##
diff --git a/EDK/MiniSetup/Legacy/Legacy.sdl b/EDK/MiniSetup/Legacy/Legacy.sdl
new file mode 100644
index 0000000..f83ca13
--- /dev/null
+++ b/EDK/MiniSetup/Legacy/Legacy.sdl
@@ -0,0 +1,445 @@
+TOKEN
+ Name = "TSE_STYLE_LEGACY_SUPPORT"
+ Value = "0"
+ Help = "Main switch to enable Legacy Style in TSE"
+ TokenType = Boolean
+ TargetEQU = Yes
+ TargetMAK = Yes
+ Master = Yes
+End
+
+TOKEN
+ Name = "SETUP_STYLE_LEGACY"
+ Value = "1"
+ Help = "Condition to support Legacy Style Sources"
+ TokenType = Boolean
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "TSE_STYLE_SOURCES_SUPPORT"
+ Value = "1"
+ Help = "Don't Edit."
+ TokenType = Boolean
+ TargetMAK = Yes
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "SETUP_STYLE_FULL_SCREEN"
+ Value = "1"
+ Help = "Condition to support full screen layout"
+ TokenType = Boolean
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "STYLE_FULL_MAX_ROWS"
+ Value = "31"
+ Help = "Maximum rows in full screen mode"
+ TokenType = Integer
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "STYLE_FULL_MAX_COLS"
+ Value = "100"
+ Help = "Maximum columns in full screen mode"
+ TokenType = Integer
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "STYLE_STD_MAX_ROWS"
+ Value = "24"
+ Help = "Maximum rows in standard mode"
+ TokenType = Integer
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "STYLE_STD_MAX_COLS"
+ Value = "80"
+ Help = "Maximum columns in Standard mode"
+ TokenType = Integer
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "PAGE_BGCOLOR"
+ Value = "EFI_BACKGROUND_BLUE"
+ Help = "Background Color of the main area (Main, Help, and Navigation Frames) in a page."
+ TokenType = Expression
+ TargetH = Yes
+ Range = "0x0-0x0f"
+End
+
+TOKEN
+ Name = "PAGE_FGCOLOR"
+ Value = "EFI_WHITE"
+ Help = "Foreground and Border Color of main area in a page (Default EFI_BLUE)"
+ TokenType = Expression
+ TargetH = Yes
+ Range = "0x0-0x0f"
+End
+
+TOKEN
+ Name = "TITLE_BGCOLOR"
+ Value = "PAGE_BGCOLOR"
+ Help = "Background Color of the Title bar frame."
+ TokenType = Expression
+ TargetH = Yes
+ Range = "0x0-0x0f"
+End
+
+TOKEN
+ Name = "TITLE_FGCOLOR"
+ Value = "PAGE_FGCOLOR"
+ Help = "Foreground Color of the Title bar frame"
+ TokenType = Expression
+ TargetH = Yes
+ Range = "0x0-0x0f"
+End
+
+TOKEN
+ Name = "MENU_BGCOLOR"
+ Value = "PAGE_BGCOLOR"
+ Help = "Background color of the Menu bar frame"
+ TokenType = Expression
+ TargetH = Yes
+ Range = "0x0-0x0f"
+End
+
+TOKEN
+ Name = "MENU_FGCOLOR"
+ Value = "PAGE_FGCOLOR"
+ Help = "Foreground Color of the Menu bar frame"
+ TokenType = Expression
+ TargetH = Yes
+ Range = "0x0-0x0f"
+End
+
+TOKEN
+ Name = "HELP_FGCOLOR"
+ Value = "EFI_YELLOW"
+ Help = "Foreground Color of the Help Frame (Default PAGE_FGCOLOR)"
+ TokenType = Expression
+ TargetH = Yes
+ Range = "0x0-0x0f"
+End
+
+TOKEN
+ Name = "HELPTITLE_FGCOLOR"
+ Value = "PAGE_FGCOLOR"
+ Help = "Foreground Color of the Help Title Frame"
+ TokenType = Expression
+ TargetH = Yes
+ Range = "0x0-0x0f"
+End
+
+TOKEN
+ Name = "NAV_FGCOLOR"
+ Value = "PAGE_FGCOLOR"
+ Help = "Foreground Color of the Navigation Frame"
+ TokenType = Expression
+ TargetH = Yes
+ Range = "0x0-0x0f"
+End
+
+TOKEN
+ Name = "SCROLLBAR_BGCOLOR"
+ Value = "PAGE_BGCOLOR"
+ Help = "Background color of the Scroll bar (Default PAGE_BGCOLOR)"
+ TokenType = Expression
+ TargetH = Yes
+ Range = "0x0-0x0f"
+End
+
+TOKEN
+ Name = "SCROLLBAR_FGCOLOR"
+ Value = "PAGE_FGCOLOR"
+ Help = "Foreground Color of the Scroll bar (Default PAGE_FGCOLOR)"
+ TokenType = Expression
+ TargetH = Yes
+ Range = "0x0-0x0f"
+End
+
+TOKEN
+ Name = "SCROLLBAR_UPARROW_BGCOLOR"
+ Value = "PAGE_BGCOLOR"
+ Help = "Background color of the Scroll bar Up-Arrow (Default PAGE_BGCOLOR)"
+ TokenType = Expression
+ TargetH = Yes
+ Range = "0x0-0x0f"
+End
+
+TOKEN
+ Name = "SCROLLBAR_UPARROW_FGCOLOR"
+ Value = "PAGE_FGCOLOR"
+ Help = "Foreground Color of the Scroll bar Up-Arrow (Default PAGE_FGCOLOR)"
+ TokenType = Expression
+ TargetH = Yes
+ Range = "0x0-0x0f"
+End
+
+TOKEN
+ Name = "SCROLLBAR_DOWNARROW_BGCOLOR"
+ Value = "PAGE_BGCOLOR"
+ Help = "Background color of the Scroll bar Down-Arrow (Default PAGE_BGCOLOR)"
+ TokenType = Expression
+ TargetH = Yes
+ Range = "0x0-0x0f"
+End
+
+TOKEN
+ Name = "SCROLLBAR_DOWNARROW_FGCOLOR"
+ Value = "PAGE_FGCOLOR"
+ Help = "Foreground Color of the Scroll bar Down-Arrow (Default PAGE_FGCOLOR)"
+ TokenType = Expression
+ TargetH = Yes
+ Range = "0x0-0x0f"
+End
+
+TOKEN
+ Name = "POPUP_BGCOLOR"
+ Value = "EFI_BACKGROUND_RED"
+ Help = "Background Color of Popup Windows, and Message Boxes (Default EFI_BACKGROUND_BLUE)"
+ TokenType = Expression
+ TargetH = Yes
+ Range = "0x0-0x0f"
+End
+
+TOKEN
+ Name = "POPUP_FGCOLOR"
+ Value = "EFI_WHITE"
+ Help = "Foreground Color of Popup Windows, and Message Boxes (Default EFI_WHITE)"
+ TokenType = Expression
+ TargetH = Yes
+ Range = "0x0-0x0f"
+End
+
+TOKEN
+ Name = "FOCUS_COLOR"
+ Value = "EFI_YELLOW"
+ Help = "Focused label and control text color (Default EFI_WHITE)"
+ TokenType = Expression
+ TargetH = Yes
+ Range = "0x0-0x0f"
+End
+
+TOKEN
+ Name = "LABEL_FOCUS_COLOR"
+ Value = "EFI_WHITE"
+ Help = "Focused label text color (Default same as FOCUS_COLOR)"
+ TokenType = Expression
+ TargetH = Yes
+ Range = "0x0-0x0f"
+End
+
+TOKEN
+ Name = "CONTROL_FOCUS_COLOR"
+ Value = "EFI_WHITE"
+ Help = "Focused control text color (Default same as FOCUS_COLOR)"
+ TokenType = Expression
+ TargetH = Yes
+ Range = "0x0-0x0f"
+End
+
+TOKEN
+ Name = "CONTROL_FOCUS_BGCOLOR"
+ Value = "EFI_BACKGROUND_RED"
+ Help = "Focused control background color (Default same as PAGE_BGCOLOR)"
+ TokenType = Expression
+ TargetH = Yes
+ Range = "0x0-0x0f"
+End
+
+TOKEN
+ Name = "NON_FOCUS_COLOR"
+ Value = "EFI_WHITE"
+ Help = "Non Focused label and control text color (Default PAGE_FGCOLOR)"
+ TokenType = Expression
+ TargetH = Yes
+ Range = "0x0-0x0f"
+End
+
+TOKEN
+ Name = "LABEL_NON_FOCUS_COLOR"
+ Value = "NON_FOCUS_COLOR"
+ Help = "Non Focused label text color (Default same as NON_FOCUS_COLOR)"
+ TokenType = Expression
+ TargetH = Yes
+ Range = "0x0-0x0f"
+End
+
+TOKEN
+ Name = "CONTROL_NON_FOCUS_COLOR"
+ Value = "EFI_YELLOW"
+ Help = "Non Focused control text color (Default same as NON_FOCUS_COLOR)"
+ TokenType = Expression
+ TargetH = Yes
+ Range = "0x0-0x0f"
+End
+
+TOKEN
+ Name = "PAGE_LINK_COLOR"
+ Value = "NON_FOCUS_COLOR"
+ Help = "Submenu text color (Default PAGE_FGCOLOR)"
+ TokenType = Expression
+ TargetH = Yes
+ Range = "0x0-0x0f"
+End
+
+TOKEN
+ Name = "EDIT_BGCOLOR"
+ Value = "EFI_BACKGROUND_BLUE"
+ Help = "Background color of focused edit controls"
+ TokenType = Expression
+ TargetH = Yes
+ Range = "0x0-0x0f"
+End
+
+TOKEN
+ Name = "EDIT_FGCOLOR"
+ Value = "EFI_WHITE"
+ Help = "Foreground color of focused edit controls"
+ TokenType = Expression
+ TargetH = Yes
+ Range = "0x0-0x0f"
+End
+
+TOKEN
+ Name = "TEXT_COLOR"
+ Value = "EFI_LIGHTGRAY"
+ Help = "Foreround color of text controls"
+ TokenType = Expression
+ TargetH = Yes
+ Range = "0x0-0x0f"
+End
+
+TOKEN
+ Name = "MEMO_COLOR"
+ Value = "TEXT_COLOR"
+ Help = "Foreground color of Memo controls"
+ TokenType = Expression
+ TargetH = Yes
+ Range = "0x0-0x0f"
+End
+
+TOKEN
+ Name = "FULL_STYLE_CONTROL_LEFT_MARGIN"
+ Value = "30"
+ Help = "Control column left margin in full screen mode"
+ TokenType = Integer
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "FULL_STYLE_CONTROL_LEFT_PAD"
+ Value = "2"
+ Help = "Control left padding in full screen mode"
+ TokenType = Integer
+ TargetH = Yes
+
+End
+
+TOKEN
+ Name = "STYLE_CONTROL_LEFT_MARGIN"
+ Value = "24"
+ Help = "Control column left margin"
+ TokenType = Integer
+ TargetH = Yes
+
+End
+
+TOKEN
+ Name = "STYLE_CONTROL_LEFT_PAD"
+ Value = "2"
+ Help = "Control left padding"
+ TokenType = Integer
+ TargetH = Yes
+
+End
+
+TOKEN
+ Name = "FULL_STYLE_LABEL_LEFT_MARGIN"
+ Value = "2"
+ Help = "Label column left margin in full screen mode"
+ TokenType = Expression
+ TargetH = Yes
+
+End
+
+TOKEN
+ Name = "STYLE_LABEL_LEFT_MARGIN"
+ Value = "2"
+ Help = "Label column left margin in normal screen mode"
+ TokenType = Expression
+ TargetH = Yes
+
+End
+
+TOKEN
+ Name = "STYLE_SCROLLBAR_ROLLOVER"
+ Value = "1"
+ Help = "Support rollover when the scroll limit has been reached"
+ TokenType = Boolean
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "STYLE_PAGE_FIRSTITEM_FOCUS"
+ Value = "0"
+ Help = "Reset focus to the first item when navigating to a new page. (Default 0 => Set focus to previously selected item)"
+ TokenType = Boolean
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "STYLE_SUBPAGE_FIRSTITEM_FOCUS"
+ Value = "0"
+ Help = "Reset focus to the first item when navigating back from submenu. (Default 0 => Set focus to previously selected item)"
+ TokenType = Boolean
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "STYLE_HOTKEY_FAILSAFE"
+ Value = "SCAN_F6"
+ Help = " Hot Key to load fail safe values"
+ TokenType = Expression
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "STYLE_SHADOW_SUPPORT"
+ Value = "1"
+ Help = " To enable/disable shadow support"
+ TokenType = Boolean
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "STYLE_SPACEKEY_INCREMENT"
+ Value = "1"
+ Help = " < need to add help >"
+ TokenType = Integer
+ TargetH = Yes
+End
+
+PATH
+ Name = "TSE_STYLE_DIR"
+End
+
+MODULE
+ Help = "Includes Legacy.mak to Project"
+ File = "Legacy.mak"
+End
+
+ELINK
+ Name = "$(BUILD_DIR)\TSEStyleLegacy.lib"
+ Parent = "$(TSE_STYLE_DIR)\TSEStyleLegacy$(ARCH).lib"
+ InvokeOrder = ReplaceParent
+End
+
+
diff --git a/EDK/MiniSetup/Legacy/legacy.c b/EDK/MiniSetup/Legacy/legacy.c
new file mode 100644
index 0000000..6c34aa1
--- /dev/null
+++ b/EDK/MiniSetup/Legacy/legacy.c
@@ -0,0 +1,1622 @@
+//*****************************************************************//
+//*****************************************************************//
+//*****************************************************************//
+//** **//
+//** (C)Copyright 1985-2011, American Megatrends, Inc. **//
+//** **//
+//** All Rights Reserved. **//
+//** **//
+//** 5555 Oakbrook Pkwy , Norcross, GA 30071 **//
+//** **//
+//** Phone: (770)-246-8600 **//
+//** **//
+//*****************************************************************//
+//*****************************************************************//
+//*****************************************************************//
+// $Archive: /Alaska/SOURCE/Modules/AMITSE2_0/AMITSE/Legacy/legacy.c $
+//
+// $Author: Premkumara $
+//
+// $Revision: 10 $
+//
+// $Date: 8/28/14 11:19a $
+//
+//*****************************************************************//
+//*****************************************************************//
+// Revision History
+// ----------------
+// $Log: /Alaska/SOURCE/Modules/AMITSE2_0/AMITSE/Legacy/legacy.c $
+//
+// 10 8/28/14 11:19a Premkumara
+// [TAG] EIP174031
+// [Category] Improvement
+// [Description] Removed TODO comments and added proper comments in those
+// places
+// [Files] commonoem.c, commonhelper.c, special.c, submenu.c,
+// minisetupext.c, uefi21wapper.c and legacy.c
+//
+// 9 2/11/13 6:01a Premkumara
+// [TAG] EIP112628
+// [Category] Bug Fix
+// [Severity] Important
+// [Symptom] (JP000E)SETUP_GO_TO_EXIT_PAGE_ON_EXIT_KEY does not work on
+// 4.6.2_TSE_2_15_1234
+// [RootCause] The Exit FormID value will change if any form is
+// generated before Exit page
+// [Solution] Handled Exit FormID from Binary and handling Exit FormID
+// from binary
+// [Files] Ezport.c, Ezport.sdl, Legacy.c, Legacy.sdl, EzportPlus.c,
+// EzportPlus.sdl
+//
+// 8 10/18/12 6:06a Arunsb
+// Updated for 2.16.1235 QA submission
+//
+// 2 10/10/12 12:42p Arunsb
+// Synched the source for v2.16.1232, backup with Aptio
+//
+// 7 12/01/11 5:40a Rajashakerg
+// [TAG] EIP74963
+// [Category] Improvement
+// [Description] MAX_MSGBOX_WIDTH cannot be overridden
+// [Files] AMITSE.sdl, CommonHelper.c, minisetup.h, legacy.c,
+// MessageBox.c, MessageBox.h, FormBrowser.c
+//
+// 6 11/21/11 10:39a Premkumara
+// [TAG] EIP72610
+// [Category] Improvement
+// [Description] Moving TSE_MULTILINE_CONTROLS to Binary
+// [Files] AMITSE-CommonHelper.c, AMITSE.sdl,
+// TSELITE-UefiAction.c, TseLite.sdl, Time.h, Text.c,
+// SubMenu.c, ResetButton.c, PopupString.c, PopupSel.h, PopupSel.c,
+// PopupPassword.c, OrderListBox.c, Numeric.c, Label.c, Frame.c, Edit.c,
+// Date.h, Date.c,
+// LEGACY-Legacy.c,
+// BOOTONLY- Minisetup.h
+//
+// 5 11/14/11 6:55p Blaines
+// [TAG] - EIP 75486
+// [Category]- Function Request
+// [Synopsis]- Support grayout condition for readonly controls.
+// [Description] - Display readonly controls as grayout, non-selectable.
+// [Files]
+// AMITSE.sdl, CommonHelper.c, Minisetupext.h, stylecommon.c, Legacy.c,
+// date.c, edit.c, label.c, memo.c, menu.c,, numeric.c, ordlistbox.c,
+// PopupPassword.c,
+// PopupSel.c, PopupString.c, ResetButton.c, SubMenu.c, Text.c, Time.c,
+// UefiAction.c, ctrlcond.c,
+//
+// 4 6/29/11 12:43p Rajashakerg
+// [TAG] EIP47086
+// [Category] New Feature
+// [Description] Right clicking from the Main page is not exiting from
+// BIOS setup.
+//
+// [Files] minisetup.h, Ezport\style.h,Ezport\EzportBin.sdl,
+// Ezport\EzportBin.mak, Ezport\ezport.c, Ezport\EzportBin.cif,
+// EzportPlus\style.h, EzportPlus\EzportPlusBin.sdl, EzportPlusBin.mak,
+// EzportPlus\EzportPlusBin.cif, EzportPlus\ezportplus.c, Legacy\style.h,
+// Legacy\EzportPlusBin.sdl, Legacy\LegacyBin.mak, Legacy\LegacyBin.cif,
+// Legacy\legacy.c, TseLiteBin.sdl, TseLite.cif, Memo.c, frame.c,
+// application.h, application.c, commonoem.h, CommonHelper.c
+//
+// 3 6/23/11 3:49p Rajashakerg
+// [TAG] EIP55762, 58925, 59971
+// [Category] New Feature
+// [Description] Support REF2,REF3 and REF4 in AMITSE
+// Support direct form navigation path
+// Improper layout of controls in the root page when Dynamic pages are
+// added using the Legacy Setup Style
+//
+// [Files] setupdata.h, CommonHelper.c, AMITSE.sdl, Legacy\Legacy.c,
+// Legacy\style.h, Legacy\style.h, frame.c, minisetupext.c,
+// minisetupext.h, numeric.c, page.c Popupstring.c, Hii.c,
+// Uefi21Wrapper.c, Parse.c Hii.c
+//
+// 2 3/29/11 12:13a Madhans
+// [TAG] EIP54968
+// [Category] Improvement
+// [Description] To Support different style modules in TSE generically
+// [Files] Ezport module updated. EzportPlus and Legacy Styles Modules
+// added.
+//
+// 1 3/28/11 11:51p Madhans
+// [TAG] EIP54968
+// [Category] Improvement
+// [Description] To Support different style modules in TSE generically
+// [Files] Ezport module updated. EzportPlus and Legacy Styles Modules
+// added.
+//
+// 1 9/16/10 6:37p Blaines
+//
+// 1 9/16/10 6:32p Blaines
+//
+// 12 6/14/10 7:07p Madhans
+// to avoid warnings
+//
+// 11 3/26/10 6:52p Madhans
+// Support to Map the do the Control Mapping from gTseControlMap Table. So
+// no changes need in Frame.c, With this feature gTseControlMap Can be
+// customized to add/customize the TSE controls.
+//
+// 10 2/19/10 8:15a Mallikarjunanv
+// updated year in copyright message
+//
+// 9 2/15/10 10:12p Madhans
+// To avoid warnings
+//
+// 8 1/09/10 6:11a Mallikarjunanv
+// Updated TSE2.01 Release sources with coding standards
+//
+// 7 8/24/09 5:15p Blaines
+// Fix issue setting title and helptitle background color after clear
+// screen
+//
+// 6 8/13/09 1:22p Blaines
+// Support BgColor for MAIN_FRAME, NAV_FRAME, and HELP_FRAME
+//
+// 5 8/04/09 6:57p Blaines
+// Add Support for Exit Page SDL tokens
+//
+// 3 6/23/09 6:54p Blaines
+// Coding standard update,
+// Remove spaces from file header to allow proper chm function list
+// creation.
+//
+// 2 6/12/09 2:36p Blaines
+// Update coding standard
+//
+// 1 6/04/09 8:05p Madhans
+//
+// 3 5/07/09 10:35a Madhans
+// Changes after Bin module
+//
+// 9 5/05/09 3:20p Blaines
+//
+// 8 5/04/09 6:52p Blaines
+// Support customizable Help and Nav frame text Foreground color
+//
+// 7 5/01/09 9:25p Blaines
+//
+// 6 4/30/09 9:54p Blaines
+//
+// 4 4/28/09 9:39p Madhans
+// Tse 2.0 Code complete Checkin.
+//
+// 3 4/24/09 9:35p Blaines
+//
+// 1 12/18/08 7:59p Madhans
+// Intial version of TSE Lite sources
+//*****************************************************************//
+//*****************************************************************//
+//<AMI_FHDR_START>
+//
+// Name: alternate1.c
+//
+// Description: Main file for alternate1 style module.
+//
+//<AMI_FHDR_END>
+//**********************************************************************
+#include "minisetup.h"
+#include "Legacy.h"
+
+extern STYLECOLORS Colors ;
+extern AMI_IFR_MENU gMenuData ;
+
+extern UINTN gLabelLeftMargin ;
+extern UINTN gControlLeftMargin ;
+extern UINTN gControlLeftPad ;
+extern UINTN gControlRightAreaWidth ;
+static CALLBACK_SUBMENU gMenuCallbackData = { { CALLBACK_TYPE_MENU, sizeof(CALLBACK_MENU) }, 0 };
+static CALLBACK_SUBMENU gSubmenuCallbackData = { { CALLBACK_TYPE_SUBMENU, sizeof(CALLBACK_SUBMENU) }, 0 };
+static CALLBACK_VARIABLE gVariableCallbackData = { { CALLBACK_TYPE_VARIABLE, sizeof(CALLBACK_VARIABLE) }, 0, 0, 0, NULL };
+static CALLBACK_PASSWORD gPasswordCallbackData = { { CALLBACK_TYPE_PASSWORD, sizeof(CALLBACK_PASSWORD) }, 0, 0, 0, NULL, TRUE };
+
+VOID _FrameSubmenuCallback( FRAME_DATA *frame, SUBMENU_DATA *submenu, VOID *cookie );
+VOID _FrameMenuCallback( FRAME_DATA *frame, MENU_DATA *menu, VOID *cookie );
+
+BOOLEAN gotoExitOnEscKey(EFI_GUID *exitFormGuid, UINT16 *pageClass, UINT16 *pageSubclass, UINT16 *pageFormID);//EIP-112628 GotoExitPageOnEscKey
+
+#if SETUP_STYLE_LEGACY
+
+static FRAME_INFO _gStyleLegacyMainFrames[] =
+{
+// {FrameType Drawable Border, BorderType, Width, Height, Top, Left, FGColor, BGColor }
+ { TITLE_FRAME, TRUE, FALSE, 0, 80, 1, 0, 0, TITLE_FGCOLOR, TITLE_BGCOLOR }, // Title
+ { MAIN_FRAME, TRUE, FALSE, 0, 78, 15, 2, 1, PAGE_FGCOLOR, PAGE_BGCOLOR }, // Main
+ { HELP_FRAME, TRUE, FALSE, 0, 76, 1, 21, 1, HELP_FGCOLOR, PAGE_BGCOLOR }, // Help text
+ { NAV_FRAME, TRUE, FALSE, 0, 76, 2, 18, 2, NAV_FGCOLOR, PAGE_BGCOLOR } // Navigation
+};
+
+static FRAME_INFO _gStyleLegacySubFrames[] =
+{
+// { FrameType Drawable Border, BorderType, Width, Height, Top, Left, FGColor, BGColor }
+
+ { TITLE_FRAME, TRUE, FALSE, 0, 80, 1, 0, 0, TITLE_FGCOLOR, TITLE_BGCOLOR}, // Title
+ { SUBTITLE_FRAME, TRUE, FALSE, 0, 80, 1, 1, 0, MENU_FGCOLOR, MENU_BGCOLOR }, // Subtitle
+ { MAIN_FRAME, TRUE, FALSE, 0, 50, 19, 3, 1, PAGE_FGCOLOR, PAGE_BGCOLOR }, // Main
+ { HELPTITLE_FRAME, TRUE, FALSE, 0, 23, 1, 3, 56, HELPTITLE_FGCOLOR, PAGE_BGCOLOR }, // Help title
+ { HELP_FRAME, TRUE, FALSE, 0, 23, 16, 5, 56, HELP_FGCOLOR, PAGE_BGCOLOR }, // Help text
+ { NAV_FRAME, TRUE, FALSE, 0, 80, 2, 22, 0, NAV_FGCOLOR, PAGE_BGCOLOR }, // Navigation
+};
+
+#if SETUP_STYLE_FULL_SCREEN
+static FRAME_INFO _gStyleLegacyFullMainFrames[] =
+{
+// {FrameType Drawable Border, BorderType, Width, Height, Top, Left, FGColor, BGColor }
+ { TITLE_FRAME, TRUE, FALSE, 0, 100, 1, 0, 0, TITLE_FGCOLOR, TITLE_BGCOLOR }, // Title
+ { MAIN_FRAME, TRUE, FALSE, 0, 98, 19, 2, 1, PAGE_FGCOLOR, PAGE_BGCOLOR }, // Main
+ { HELP_FRAME, TRUE, FALSE, 0, 95, 1, 28, 1, HELP_FGCOLOR, PAGE_BGCOLOR }, // Help text
+ { NAV_FRAME, TRUE, FALSE, 0, 95, 2, 25, 2, NAV_FGCOLOR, PAGE_BGCOLOR } // Navigation
+};
+
+static FRAME_INFO _gStyleLegacyFullSubFrames[] =
+{
+// { FrameType Drawable Border, BorderType, Width, Height, Top, Left, FGColor, BGColor }
+ { TITLE_FRAME, TRUE, FALSE, 0, 100, 1, 0, 0, TITLE_FGCOLOR, TITLE_BGCOLOR}, // Title
+ { SUBTITLE_FRAME, TRUE, FALSE, 0, 100, 1, 1, 0, MENU_FGCOLOR, MENU_BGCOLOR }, // Subtitle
+ { MAIN_FRAME, TRUE, FALSE, 0, 63, 25, 3, 1, PAGE_FGCOLOR, PAGE_BGCOLOR }, // Main
+ { HELPTITLE_FRAME, TRUE, FALSE, 0, 29, 1, 3, 70, HELPTITLE_FGCOLOR, PAGE_BGCOLOR }, // Help title
+ { HELP_FRAME, TRUE, FALSE, 0, 29, 21, 5, 70, HELP_FGCOLOR, PAGE_BGCOLOR }, // Help text
+ { NAV_FRAME, TRUE, FALSE, 0, 100, 2, 29, 0, NAV_FGCOLOR, PAGE_BGCOLOR }, // Navigation
+};
+#endif
+
+FRAME_INFO *_gStyleMainFrames = _gStyleLegacyMainFrames ;
+FRAME_INFO *_gStyleSubFrames = _gStyleLegacySubFrames ;
+
+INT16 gTabIndex = 0 ;
+
+AMITSE_CONTROL_MAP gTseControlMap[] =
+{
+// ControlType ControlMethods CallbackSuppored CallbackFunction CallbackContext
+ { CONTROL_TYPE_MENU, (CONTROL_METHODS*)&gMenu, TRUE, (VOID*)(UINTN)&_FrameMenuCallback, (VOID*)(UINTN)&gMenuCallbackData},
+ { CONTROL_TYPE_SUBMENU, (CONTROL_METHODS*)&gSubMenu,TRUE, (VOID*)(UINTN)&_FrameSubmenuCallback, (VOID*) &gSubmenuCallbackData},
+ { CONTROL_TYPE_LABEL, (CONTROL_METHODS*)&gLabel, TRUE, (VOID*)(UINTN)&StyleLabelCallback, (VOID*) NULL},
+ { CONTROL_TYPE_TEXT, (CONTROL_METHODS*)&gText, FALSE,(VOID*)NULL, (VOID*) NULL},
+ { CONTROL_TYPE_POPUP_STRING, (CONTROL_METHODS*)&gPopupString, TRUE, (VOID*)(UINTN)&_FrameVariableCallback, (VOID*) &gVariableCallbackData},
+ { CONTROL_TYPE_DATE, (CONTROL_METHODS*)&gDate, FALSE, (VOID*)NULL, (VOID*) NULL},
+ { CONTROL_TYPE_TIME, (CONTROL_METHODS*)&gTime, FALSE, (VOID*)NULL, (VOID*) NULL},
+ { CONTROL_TYPE_POPUPSEL, (CONTROL_METHODS*)&gPopupSel, TRUE, (VOID*)(UINTN)&_FrameVariableCallback, (VOID*) &gVariableCallbackData},
+ // Checkbox is just popup sel
+ { CONTROL_TYPE_CHECKBOX, (CONTROL_METHODS*)&gPopupSel, TRUE, (VOID*)(UINTN)&_FrameVariableCallback, (VOID*) &gVariableCallbackData},
+ { CONTROL_TYPE_MEMO, (CONTROL_METHODS*)&gMemo, FALSE, (VOID*)NULL, (VOID*)NULL},
+ { CONTROL_TYPE_NUMERIC, (CONTROL_METHODS*)&gNumeric, TRUE, (VOID*)(UINTN)&_FrameVariableCallback, (VOID*) &gVariableCallbackData},
+ { CONTROL_TYPE_ORDERED_LIST, (CONTROL_METHODS*)&gOrdListBox, TRUE, (VOID*)(UINTN)&_FrameVariableCallback, (VOID*) &gVariableCallbackData},
+ { CONTROL_TYPE_PASSWORD, (CONTROL_METHODS*)&gPopupPassword, TRUE, (VOID*)(UINTN)&_FramePasswordCallback, (VOID*)&gPasswordCallbackData},
+ { CONTROL_TYPE_ACTION, (CONTROL_METHODS*)&gUefiAction, TRUE, (VOID*)(UINTN) &StyleLabelCallback, (VOID*) NULL},
+ { CONTROL_TYPE_RESET, (CONTROL_METHODS*)&gResetButton, TRUE, (VOID*)(UINTN) &StyleLabelCallback, (VOID*) NULL},//EIP:56413 Updated the Reset Button Control information
+ // CONTROL_TYPE_NULL need to be last member
+ { CONTROL_TYPE_NULL, (CONTROL_METHODS*)NULL, FALSE, (VOID*)NULL, (VOID*) NULL}
+};
+
+
+
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+// Procedure: LegacyPageHandleAction
+//
+// Description: function to handle the page actions
+//
+// Input: PAGE_DATA *page, ACTION_DATA *action
+//
+// Output: status
+//
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+EFI_STATUS LegacyPageHandleAction( PAGE_DATA *page, ACTION_DATA *action )
+{
+ UINT32 i;
+ EFI_STATUS Status = EFI_UNSUPPORTED;
+
+//EIP# 58925
+ UINT32 stackIndex = 0xFFFFFFFF;
+ UINT16 parentPgID = 0;
+//EIP# 58925
+ // On printScreen HotKey, Just return Unsupported and It will handed by Application Hotkey Handler.
+ if( ( action->Input.Type == ACTION_TYPE_KEY ) &&
+ (TsePrintScreenEventSupport(action->Input.Data.AmiKey.Key.ScanCode) ) )
+ {
+ Status = EFI_UNSUPPORTED;
+ goto DONE;
+
+ }
+/*
+#if TSE_PRN_SCRN_EVENT_SUPPORT
+ if (( action->Input.Type == ACTION_TYPE_KEY ) && ( action->Input.Data.AmiKey.Key.ScanCode == TSE_PRN_SCRN_KEY_SCAN ))
+ return EFI_UNSUPPORTED;
+#endif
+*/
+ for ( i = 0; i < page->FrameCount; i++ )
+ {
+ if ( gFrame.HandleAction( page->FrameList[StyleFrameIndexOf(i)], action ) == EFI_SUCCESS )
+ {
+ Status = EFI_SUCCESS;
+ goto DONE;
+ }
+ }
+
+ for ( i = 0; i < page->HotKeyCount; i++ )
+ {
+ if ( gHotKey.HandleAction( page->HotKeyList[i], action ) == EFI_SUCCESS )
+ {
+ Status = EFI_SUCCESS;
+ goto DONE;
+ }
+ }
+
+ if(
+ (( action->Input.Type == ACTION_TYPE_KEY ) && (ControlActionAbort == MapControlKeysHook(action->Input.Data.AmiKey)))
+ || ((action->Input.Type == ACTION_TYPE_MOUSE) && (ControlActionAbort == MapControlMouseActionHook(&(action->Input.Data.MouseInfo))) /*(TSEMOUSE_RIGHT_CLICK == action->Input.Data.MouseInfo.ButtonStatus)*/)
+ )
+ {
+
+ //Commented for Legacy Style 07/07/10
+ //if ( page->PageData.PageParentID == 0 )
+ // return EFI_UNSUPPORTED;
+
+
+ if ( page->PageData.PageID != page->PageData.PageParentID )
+ {
+ // check for inconsistency here too.
+ if (CheckInconsistence((PAGE_INFO*)((UINTN)gApplicationData + gPages->PageList[page->PageData.PageID]))!= TRUE )
+ {
+ // reset focus to first control
+ FRAME_DATA *frame = page->FrameList[StyleFrameIndexOf(MAIN_FRAME)];
+ UINT32 i;
+
+ for ( i = 0; i < frame->ControlCount; i++ )
+ {
+ if ( _FrameSetControlFocus( frame, i ) )
+ {
+ frame->FirstVisibleCtrl = 0;
+ break;
+ }
+ }
+//EIP# 58925
+ if(IsLinkHistorySupport())
+ {
+ // tell application that we need to change pages
+ Status = GetParentFormID((UINT16)gApp->CurrentPage, &parentPgID, &stackIndex); //Gets the parent page of the current page
+ if(Status != EFI_SUCCESS)
+ gApp->CurrentPage = page->PageData.PageParentID;
+ else
+ gApp->CurrentPage = parentPgID; //Else set the current page to the parent page
+ }
+ else
+ {
+ gApp->CurrentPage = page->PageData.PageParentID;
+ }
+//EIP# 58925
+ gApp->CompleteRedraw = TRUE;
+ gApp->OnRedraw = SUBMENU_COMPLETE_REDRAW;
+ }
+
+ Status = EFI_SUCCESS;
+ }
+ }
+DONE:
+//EIP# 58925
+ if(IsLinkHistorySupport())
+ {
+ if(Status == EFI_SUCCESS){
+ SetParentFormID(page->PageData.PageID, (UINT16)gApp->CurrentPage);
+ }
+ }
+//EIP# 58925
+ return Status ;
+
+}
+//<AMI_PHDR_START>
+//--------------------------------------------------------------------------
+//
+// Name: LegacyFrameAddControl
+//
+// Description: Adds controls to the frame
+//
+// Input: FRAME_DATA *frame - Pointer to the frame data
+// CONTROL_INFO *controlData - Control date to be added
+//
+// Output: EFI_STATUS Status - EFI_SUCCESS if successful, else
+// EFI_UNSUPPORTED
+//
+//--------------------------------------------------------------------------
+//<AMI_PHDR_END>
+EFI_STATUS LegacyFrameAddControl( FRAME_DATA *frame, CONTROL_INFO *controlData )
+{
+ EFI_STATUS Status = EFI_UNSUPPORTED;
+ CONTROL_DATA **control;
+ POSITION_INFO *pos;
+ UINT16 count = (UINT16)frame->ControlCount;
+ UINT16 i;
+ BOOLEAN IsValidControl = FALSE;
+ PAGE_INFO *pageInfo=NULL;
+
+ gActiveFrame = frame;
+
+
+ if(controlData->ControlType == CONTROL_TYPE_SUBMENU)
+ {
+ pageInfo = (PAGE_INFO *)((UINTN)gApplicationData + gPages->PageList[controlData->ControlDestPageID]);
+
+ if(pageInfo->PageHandle == NULL)
+ {
+ frame->NullCount--;
+ return EFI_OUT_OF_RESOURCES;
+ }
+ }
+
+ control = MemReallocateZeroPool( frame->ControlList, count * sizeof(CONTROL_INFO *), (count + 1) * sizeof(CONTROL_INFO *) );
+
+ if ( control == NULL )
+ return EFI_OUT_OF_RESOURCES;
+
+ frame->ControlList = control;
+ control = &frame->ControlList[ count ];
+
+ for(i=0;gTseControlMap[i].ControlType != CONTROL_TYPE_NULL;i++)
+ {
+ if(gTseControlMap[i].ControlType == controlData->ControlType)
+ {
+ Status = gTseControlMap[i].ControlMethods->Create(control);
+ if ( ! EFI_ERROR(Status) )
+ {
+ if(gTseControlMap[i].CallbackSuppored )
+ gTseControlMap[i].ControlMethods->SetCallback(*control, frame,
+ (OBJECT_CALLBACK)(UINTN)gTseControlMap[i].CallbackFunction,
+ (VOID*)gTseControlMap[i].CallbackContext);
+ }
+ IsValidControl = TRUE;
+ }
+ }
+
+ if(!IsValidControl)
+ {
+ if(controlData->ControlType == CONTROL_TYPE_NULL )
+ frame->NullCount++;
+ return Status;
+ }
+
+ if ( ! EFI_ERROR( Status ) )
+ {
+ Status = (*control)->Methods->Initialize( *control, controlData );
+
+ if ( ! EFI_ERROR( Status ) )
+ {
+ UINT16 height = 1;
+ //EIP-72610 TSE_MULTILINE_CONTROLS moved to binary
+ if(IsTSEMultilineControlSupported())
+ {
+ Status = (*control)->Methods->GetControlHeight( *control, (VOID*)frame,&height);
+ height = height ? height:1;
+ }
+
+ if(frame->FrameData.FrameType == SUBTITLE_FRAME)
+ (*control)->Methods->SetDimensions( *control, frame->FrameData.Width , height );
+ else
+ (*control)->Methods->SetDimensions( *control, frame->FrameData.Width - (UINT8)gLabelLeftMargin - 2 , height );
+
+ (*control)->ParentFrameType = frame->FrameData.FrameType ;
+
+ frame->ControlCount++;
+ count++;
+
+ (*control)->Methods->SetPosition( *control, frame->FrameData.Left + (UINT8)gLabelLeftMargin, frame->FrameData.Top + count -1 );
+
+
+ if( EFI_ERROR( StyleHandleControlOverflow( frame, frame->ControlList[ count -1 ], (UINT16)frame->ControlCount )) )
+ {
+ frame->LastVisibleCtrl = frame->ControlCount-1;
+ }
+
+ // set position information
+ pos = MemReallocateZeroPool( frame->OrigPosition, (count-1) * sizeof(POSITION_INFO), (count ) * sizeof(POSITION_INFO) );
+ if ( pos != NULL )
+ {
+ pos[count-1].Left = (*control)->Left;
+ pos[count-1].Top = (*control)->Top;
+ frame->OrigPosition = pos;
+ }
+
+ MemFreePointer( (VOID **)&frame->CurrPosition );
+ frame->CurrPosition = EfiLibAllocateZeroPool( count * sizeof(POSITION_INFO) );
+
+ }
+
+ }
+ return Status;
+}
+//<AMI_PHDR_START>
+//--------------------------------------------------------------------------
+//
+// Name: LegacyFrameDrawScrollBar
+//
+// Description: Draws the scrollbar controls for the frame..
+//
+// Input: FRAME_DATA *frame - Pointer to the current frame
+// UINT32 FirstLine - FirstLine of the scrollbar
+// UINT32 LastLine - LastLine
+// UINT32 modVal - modVal
+// UINT32 sizeOfBar - Size of the Scrollbar
+// UINT32 numOfBlocks - Number of blocks
+// BOOLEAN bEraseScrollBar - flag to erase the scrollbar
+//
+// Output: EFI_STATUS status -
+// EFI_SUCCESS - If there exists a next page and the
+// function successfully loads it
+// EFI_OUT_PF_RESOURCES - If there are know previous page
+//
+//--------------------------------------------------------------------------
+//<AMI_PHDR_END>
+EFI_STATUS LegacyFrameDrawScrollBar (FRAME_DATA *frame, UINT32 FirstLine, UINT32 LastLine, UINT32 modVal, UINT32 sizeOfBar, UINT32 numOfBlocks, BOOLEAN bEraseScrollBar)
+{
+ UINT32 i, j ; //,FirstLine=0,LastLine=0, count,visibleControlCount = 0, modVal=0, sizeOfBar, numOfBlocks = 0;
+ CHAR16 ArrUp[2]={{GEOMETRICSHAPE_UP_TRIANGLE},{0x0000}},ArrDown[2]={{GEOMETRICSHAPE_DOWN_TRIANGLE},{0x0000}},ScrlSel[2]={{BLOCKELEMENT_FULL_BLOCK/*L'N'*/},{0x0000}},ScrlNSel[2]={{BLOCKELEMENT_LIGHT_SHADE/*L'S'*/},{0x0000}};
+
+
+ // draw scrollbar if necessary
+ if ( frame->BlankLine != NULL )
+ {
+ j = frame->FrameData.Top;
+ for ( i = 1; i < frame->FrameData.Height; i++, j++ )
+ {
+ // use this loop to draw the scrollbar
+ if(frame->UseScrollbar)
+ {
+ if(i==1)
+ DrawStringWithAttribute( frame->FrameData.Left + frame->FrameData.Width+2 , j, ArrUp,
+ StyleGetScrollBarUpArrowColor() );
+ else if(i==(UINT16)(frame->FrameData.Height - 1))
+ DrawStringWithAttribute( frame->FrameData.Left+ frame->FrameData.Width+2, j, ArrDown,
+ StyleGetScrollBarDownArrowColor() );
+ else
+ {
+ if( (j > FirstLine) && (j < LastLine) && ((sizeOfBar + modVal) != 0))
+ {
+ DrawStringWithAttribute( frame->FrameData.Left+ frame->FrameData.Width+2, j, ScrlSel,
+ StyleGetScrollBarColor() );
+ sizeOfBar--;
+ }
+ else
+ {
+ DrawStringWithAttribute( frame->FrameData.Left+ frame->FrameData.Width+2, j, ScrlNSel,
+ StyleGetScrollBarColor() );
+ }
+ }
+ }
+ else if (bEraseScrollBar == TRUE)
+ DrawStringWithAttribute( frame->FrameData.Left+ frame->FrameData.Width+2, j, L" ",
+ StyleGetScrollBarColor() );
+
+ }
+ bEraseScrollBar = FALSE;
+ }
+
+
+ return EFI_SUCCESS;
+}
+//<AMI_PHDR_START>
+//--------------------------------------------------------------------------
+//
+// Name: LegacyFrameDraw
+//
+// Description: Draws the controls for the given frame
+//
+// Input: FRAME_DATA *frame - Frame information to draw controls
+//
+// Output: EFI_STATUS - EFI_SUCCESS if successful, else EFI_ERROR
+//
+//--------------------------------------------------------------------------
+//<AMI_PHDR_END>
+EFI_STATUS LegacyFrameDraw( FRAME_DATA *frame )
+{
+ CONTROL_DATA **control;
+ UINT32 i, j,FirstLine=0,LastLine=0, count,visibleControlCount = 0, modVal=0, sizeOfBar, numOfBlocks = 0;
+ UINT16 CurrHeight, ControlTop;
+ UINT8 u8ChkResult;
+ EFI_STATUS Status = EFI_UNSUPPORTED;
+
+ BOOLEAN bCurrNotFocused = FALSE,bEraseScrollBar=FALSE;
+
+ if((frame->FrameData.FrameType != MAIN_FRAME) || ( frame->PageID != 0 ))
+ {
+ Status = FrameDraw(frame );
+ return Status;
+ }
+
+
+ if(StyleFrameDrawable(frame))
+ return EFI_UNSUPPORTED;
+
+ if ( frame->ControlCount == 0 )
+ return EFI_UNSUPPORTED;
+
+ //If there is an active control send draw only for that
+ if(frame->CurrentControl == FRAME_NONE_FOCUSED)
+ {
+ control = NULL;
+ bCurrNotFocused = TRUE; // Non is focused
+ }
+ else
+ control = &frame->ControlList[frame->CurrentControl];
+
+ if ( control != NULL )
+ {
+ //If a control is active only draw that
+ if( (*control)->ControlActive == TRUE )
+ {
+ (*control)->Methods->Draw( *control );
+ return EFI_SUCCESS;
+ }
+
+ if(COND_NONE == CheckControlCondition( &((*control)->ControlData) ))
+ {
+ // Set the Focus to current control
+ if((*control)->Methods->SetFocus(*control,TRUE) != EFI_SUCCESS)
+ {
+ frame->CurrentControl = FRAME_NONE_FOCUSED;
+ bCurrNotFocused = TRUE; // Non is focused
+ }
+ }
+ }
+
+ //There is no active control we have to draw all in the view.
+
+ // First, clear the frame.
+ if ( frame->BlankLine != NULL )
+ {
+ j = frame->FrameData.Top;
+ for ( i = 1; i < frame->FrameData.Height; i++, j++ )
+ {
+ DrawStringWithAttribute( frame->FrameData.Left, j, frame->BlankLine, frame->FrameData.FGColor | frame->FrameData.BGColor );
+ }
+ }
+
+ //Set position for all controls begining from FirstVisibleControl.
+ //In the process calculate the correct LastVisibleControl.
+ control = frame->ControlList;
+
+ control = control+ frame->FirstVisibleCtrl;
+ CurrHeight = frame->FrameData.Top;
+ frame->LastVisibleCtrl = frame->FirstVisibleCtrl;
+
+ for ( i = frame->FirstVisibleCtrl; i < frame->ControlCount; i++, control++ )
+ {
+ ControlTop = CurrHeight;
+
+ //Check conditional
+ u8ChkResult = CheckControlCondition( &((*control)->ControlData) );
+
+ if(u8ChkResult == COND_NONE || u8ChkResult == COND_GRAYOUT)
+ {
+ //Control is drawn increament height
+ CurrHeight = CurrHeight + (*control)->Height;
+ if((frame->ControlCount > 1) && ((frame->FrameData.Top +frame->FrameData.Height) < CurrHeight+1 ))
+ {
+ break;
+ }
+ else
+ {
+ frame->LastVisibleCtrl = i;
+ }
+ }
+
+ if(u8ChkResult != COND_NONE)
+ {
+ //Control grayed out or suppressed
+ if(frame->CurrentControl == i)
+ {
+ //Current control cant be focused
+ (*control)->Methods->SetFocus(*control,FALSE);
+ bCurrNotFocused = TRUE;
+ }
+ }
+
+ //(*control)->Methods->SetPosition( *control, (*control)->Left, ControlTop);
+ }
+
+ //Current control can not be focused? Find another one to focus.
+ if(bCurrNotFocused)
+ {
+ control = frame->ControlList;
+ control = control+ frame->FirstVisibleCtrl;
+
+ for ( i = frame->FirstVisibleCtrl; i <= frame->LastVisibleCtrl; i++, control++ )
+ {
+ if ( (*control)->Methods->SetFocus( *control, TRUE ) == EFI_SUCCESS )
+ {
+ frame->CurrentControl = i;
+ break;
+ }
+ }
+
+ if(i > frame->LastVisibleCtrl)
+ frame->CurrentControl = FRAME_NONE_FOCUSED;
+ }
+
+ //Draw controls in the set positions
+ control = frame->ControlList;
+ control = control+ frame->FirstVisibleCtrl;
+ for ( i = frame->FirstVisibleCtrl; i <= frame->LastVisibleCtrl; i++, control++ )
+ {
+ (*control)->Methods->Draw( *control );
+ }
+
+ CurrHeight = frame->FrameData.Top;
+ for (count = 0; count < frame->ControlCount; count++)
+ {
+ u8ChkResult = COND_NONE;
+
+ //EIP 75486 Support grayout condition for readonly controls
+ u8ChkResult = CheckControlCondition( &(frame->ControlList[count]->ControlData) );
+
+ if((COND_NONE == u8ChkResult) || (COND_GRAYOUT == u8ChkResult))
+ {
+ visibleControlCount++ ;
+ CurrHeight = CurrHeight + frame->ControlList[count]->Height;
+ }
+ }
+
+ // if already have a Scroll bar and due some changes (some controls may bedisabled) we don't need a scroll bar in this frame.
+ if((frame->UseScrollbar) && ((frame->FrameData.Top + frame->FrameData.Height) >= CurrHeight+1))
+ {
+ bEraseScrollBar = TRUE;
+ frame->UseScrollbar = FALSE;
+ }
+
+ // if we don't have a Scroll bar and due some changes (some controls may be enabled) we need a scroll bar in this frame.
+ if((frame->ControlCount > 1) && (!frame->UseScrollbar) && ((frame->FrameData.Top + frame->FrameData.Height) < CurrHeight+1))
+ {
+ frame->UseScrollbar = TRUE;
+ }
+
+ if(visibleControlCount==0)visibleControlCount=1;
+ FirstLine = (frame->FrameData.Height* frame->FirstVisibleCtrl/visibleControlCount )+ frame->FrameData.Top;
+ LastLine = (frame->FrameData.Height* frame->LastVisibleCtrl/visibleControlCount )+ frame->FrameData.Top;
+
+ numOfBlocks = frame->FrameData.Height - 2;
+ sizeOfBar = ((frame->FrameData.Height -1) * numOfBlocks) / visibleControlCount;
+ modVal = ((((frame->FrameData.Height -1) * numOfBlocks) % visibleControlCount)* numOfBlocks) > (numOfBlocks/2) ? 1 : 0;
+
+ // draw scrollbar if necessary
+ StyleDrawScrollBar(frame, FirstLine, LastLine, modVal, sizeOfBar, numOfBlocks, bEraseScrollBar);
+
+ FlushLines( frame->FrameData.Top, frame->FrameData.Top + frame->FrameData.Height );
+
+ return EFI_SUCCESS;
+}
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+// Procedure: LegacyMsgBoxInitialize
+//
+// Description: Function to Initialize Message Box, which uses the Popup functions.
+//
+// Input: MSGBOX_DATA *msgbox, VOID *data
+//
+// Output: status
+//
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+EFI_STATUS LegacyMsgBoxInitialize( MSGBOX_DATA *msgbox, VOID *data )
+{
+ EFI_STATUS Status = EFI_UNSUPPORTED;
+ UINT16 Length =0 ;
+ VOID *buff;
+ CONTROL_INFO MemoCtrlData;
+ MEMO_DATA *memo;
+ UINT8 Color ;
+
+ UINT16 titleToken;
+ VOID* TextHandle =((AMI_IFR_MSGBOX*)(((CONTROL_INFO*)data)->ControlPtr))->TextHandle;
+
+ // initializes the heigth and width
+ Status = gPopup.Initialize( msgbox, data );
+ if (EFI_ERROR(Status))
+ return Status;
+
+ Status = StyleGetMessageboxColor(msgbox->MsgBoxCatagory, &Color) ;
+
+ if ( EFI_ERROR( Status ) == EFI_SUCCESS)
+ {
+ msgbox->FGColor = Color & 0x0f ;
+ msgbox->BGColor = Color & 0xf0 ;
+ }else
+ // add extra initialization here...
+ SetControlColorsHook( NULL, NULL, NULL , NULL, NULL , NULL, NULL ,
+ NULL , NULL, NULL,NULL ,
+ NULL,NULL ,&(msgbox->FGColor),&(msgbox->BGColor) );
+
+ msgbox->FGColor = Colors.PopupFGColor ;
+ msgbox->BGColor = Colors.PopupBGColor ;
+
+ msgbox->Container = NULL;
+
+ msgbox->Border =TRUE;
+
+ titleToken = (UINT16)(((AMI_IFR_MSGBOX*)(msgbox->ControlData.ControlPtr))->Title);
+ if ( titleToken != 0 ) {
+ msgbox->Title = HiiGetString(msgbox->ControlData.ControlHandle, titleToken);
+ if ( msgbox->Title == NULL )
+ return EFI_OUT_OF_RESOURCES;
+ }
+
+ Length = (UINT16)HiiMyGetMultiLineStringLength(msgbox->ControlData.ControlHandle, (UINT16)(((AMI_IFR_MSGBOX*)(msgbox->ControlData.ControlPtr))->Text));
+
+ if ( ( msgbox->Title != NULL) && ( Length < (TestPrintLength( msgbox->Title )/ (NG_SIZE)) ) )
+ Length = (UINT16)(TestPrintLength( msgbox->Title ) / (NG_SIZE));
+
+ msgbox->Width = (UINT16)(Length + 4);
+
+ if(( msgbox->MsgBoxType == MSGBOX_TYPE_NULL ) && ( msgbox->Legend != NULL ))
+ {
+ if ( msgbox->Width < (UINT16)(TestPrintLength( msgbox->Legend )/ (NG_SIZE)) )
+ msgbox->Width = (UINT16)(TestPrintLength( msgbox->Legend ) / (NG_SIZE)) + 8;
+ }
+//EIP74963 : MAX_MSGBOX_WIDTH macro changed as token and handled from binary
+ if ( msgbox->Width > GetMsgboxWidth())
+ msgbox->Width = GetMsgboxWidth();
+
+ msgbox->ScreenBuf = SaveScreen();
+
+ // initialize memo control
+ memo = msgbox->Memo;
+
+ buff = UefiCreateSubTitleTemplate(((AMI_IFR_MSGBOX*)(msgbox->ControlData.ControlPtr))->Text );
+
+
+ MemSet( &MemoCtrlData, sizeof(MemoCtrlData), 0 );
+ MemoCtrlData.ControlPtr = (VOID*)buff;
+ MemoCtrlData.ControlHandle = TextHandle;
+ MemoCtrlData.ControlFlags.ControlVisible = TRUE;
+ gMemo.Initialize(memo,(VOID *)&(MemoCtrlData));
+ memo->Width = msgbox->Width - 2;
+ gMemo.GetControlHeight( memo, NULL, &msgbox->Height );
+ msgbox->Height += 4;
+
+ gMemo.SetAttributes(memo,msgbox->FGColor ,msgbox->BGColor);
+ gMemo.SetDimensions( memo, msgbox->Width-2 , msgbox->Height-3 );
+ gMemo.SetJustify( memo, JUSTIFY_CENTER );
+
+ return Status;
+}
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+// Procedure: LegacySubMenuInitialize
+//
+// Description: this function uses the initialize function of control
+// and initializes the submenu.
+//
+// Input: SUBMENU_DATA *submenu, VOID *data
+//
+// Output: status
+//
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+EFI_STATUS LegacySubMenuInitialize( SUBMENU_DATA *submenu, VOID *data )
+{
+ EFI_STATUS Status = EFI_UNSUPPORTED;
+ //PAGE_INFO *pageInfo=NULL;
+ //PAGE_DATA *Page ;
+
+ Status = gControl.Initialize( submenu, data );
+ if (EFI_ERROR(Status))
+ return Status;
+
+
+
+ // add extra initialization here...
+ submenu->ControlData.ControlHelp = UefiGetHelpField((VOID *)submenu->ControlData.ControlPtr); //refPtr->Help;
+ submenu->ControlFocus = FALSE;
+ submenu->LabelMargin = (UINT8)gControlLeftMargin;
+
+ // initialize default colors
+ SetControlColorsHook(&(submenu->BGColor), &(submenu->FGColor),
+ NULL, NULL,
+ &(submenu->SelBGColor), &(submenu->SelFGColor),
+ &(submenu->NSelBGColor), &(submenu->NSelFGColor),
+ NULL,&(submenu->LabelFGColor) ,
+ &(submenu->NSelLabelFGColor),
+ NULL,NULL,
+ NULL,NULL );
+
+
+ //if((submenu->SubMenuType==0) && (submenu->ControlData.ControlPageID!=0))
+ // submenu->SelFGColor = FOCUS_COLOR ;
+
+
+
+/*
+
+ if(submenu->SubMenuType==0)
+ {
+ Page = gApp->PageList[gApp->CurrentPage];
+
+ if(Page->PageData.PageTitle == STRING_TOKEN(STR_EXIT))
+ {
+ submenu->SelFGColor = FOCUS_COLOR ;
+
+ }
+ }
+*/
+
+/*
+ if((submenu->SubMenuType==0) && (submenu->ControlData.ControlPageID!=0))
+ {
+ pageInfo = (PAGE_INFO *)((UINTN)gApplicationData + gPages->PageList[submenu->ControlData.ControlPageID]);
+
+ if(pageInfo->PageTitle == STRING_TOKEN(STR_EXIT))
+ {
+ submenu->SelFGColor = FOCUS_COLOR ;
+
+ }
+ }
+*/
+
+
+
+#if SETUP_STYLE_LEGACY
+ submenu->SubMenuType = (UINT8)(submenu->ControlData.ControlPageID != 0);
+#endif
+
+ return Status;
+}
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+// Procedure: LegacySubMenuDraw
+//
+// Description: function to draw a sub-menu.
+//
+// Input: SUBMENU_DATA *submenu
+//
+// Output: status
+//
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+EFI_STATUS LegacySubMenuDraw( SUBMENU_DATA *submenu )
+{
+ CHAR16 *text=NULL,*text1;
+ UINTN length;
+ EFI_STATUS Status = EFI_SUCCESS;
+// UINT8 ColorSubMenu = submenu->NSelFGColor;
+ UINT8 ColorLabel = (submenu->ControlFocus) ? submenu->LabelFGColor : submenu->NSelLabelFGColor ;
+ UINT32 PageNum ;
+
+ PageNum = gApp->CurrentPage ;
+
+ // check conditional ptr if necessary
+ //EIP 75486 Support grayout condition for readonly controls
+ //if( submenu->ControlData.ControlConditionalPtr != 0x0)
+ //{
+ switch( CheckControlCondition( &submenu->ControlData ) )
+ {
+ case COND_NONE:
+ break;
+ case COND_GRAYOUT:
+ Status = EFI_WARN_WRITE_FAILURE;
+ ColorLabel = CONTROL_GRAYOUT_COLOR;
+ break;
+ default:
+ return EFI_UNSUPPORTED;
+ break;
+ }
+ //}
+
+ text1 = HiiGetString( submenu->ControlData.ControlHandle, UefiGetPromptField((VOID *)(submenu->ControlData.ControlPtr)));
+ if ( text1 == NULL )
+ return EFI_OUT_OF_RESOURCES;
+ // XXX check to see if text1 is not NULL
+ length = (3 + (TestPrintLength( text1 ) / (NG_SIZE))) * sizeof(CHAR16);
+ text = EfiLibAllocateZeroPool( length );
+ if ( text == NULL )
+ return EFI_OUT_OF_RESOURCES;
+
+ if((submenu->SubMenuType == 0)&&( PageNum == 0 ))
+ SPrint( text, length, L"%s", text1 );
+ else if(submenu->SubMenuType == 2)
+ SPrint( text, length, L"%s", text1 );
+ else
+ SPrint( text, length, L"%c %s", GEOMETRICSHAPE_RIGHT_TRIANGLE, text1 );
+
+
+ //SPrint( text, length, L"%c %s", (submenu->SubMenuType == 2)?L' ':GEOMETRICSHAPE_RIGHT_TRIANGLE, text1 );
+
+ //SPrint( text, length, ((submenu->SubMenuType == 0)&&( PageNum == 0 ))?L"%c%s":L"%c %s", ((submenu->SubMenuType == 2)||( PageNum == 0 ))?L' ':GEOMETRICSHAPE_RIGHT_TRIANGLE, text1 );
+
+ //SPrint( text, length, ((submenu->SubMenuType == 0)&&( PageNum == 0 ))?L"%c%s":L"%c %s", ((submenu->SubMenuType == 2)||( PageNum == 0 ))?L' ':GEOMETRICSHAPE_RIGHT_TRIANGLE, text1 );
+ MemFreePointer( (VOID **)&text1 );
+
+ if ( submenu->SubMenuType != 1 )
+ {
+ //EIP-72610 TSE_MULTILINE_CONTROLS moved to binary
+ if(submenu->Height>1 && IsTSEMultilineControlSupported())
+ {
+ DrawMultiLineStringWithAttribute( submenu->Left , submenu->Top,
+ (UINTN)(submenu->Width-2),(UINTN) submenu->Height,
+ &text[2], (UINT8)( (submenu->ControlFocus) ?
+ submenu->SelBGColor | ColorLabel /*submenu->SelFGColor*/ :
+ submenu->NSelBGColor | ColorLabel /*ColorSubMenu*/ ) );
+ if(submenu->SubMenuType != 2)
+ {
+ text[2]=0;
+ DrawStringWithAttribute( submenu->Left - 2, submenu->Top, (CHAR16*)text,
+ (UINT8)( (submenu->ControlFocus) ?
+ submenu->SelBGColor | ColorLabel /*submenu->SelFGColor*/ :
+ submenu->NSelBGColor | ColorLabel /*ColorSubMenu*/ ) );
+ }
+ }
+ else
+ {
+
+ if(submenu->SubMenuType==0 && !submenu->ControlFocus && ColorLabel != CONTROL_GRAYOUT_COLOR)
+ ColorLabel = StyleGetPageLinkColor();
+
+
+ if( PageNum == 0 )
+ {
+ if((TestPrintLength( text ) / (NG_SIZE)) > (UINTN)((submenu->Width/2)-2))
+ EfiStrCpy( &text[HiiFindStrPrintBoundary(text,(UINTN)((submenu->Width/2)-5))],L"...");
+
+ }else{
+
+
+ if((TestPrintLength( text ) / (NG_SIZE)) > (UINTN)(submenu->Width-2))
+ EfiStrCpy( &text[HiiFindStrPrintBoundary(text,(UINTN)(submenu->Width-5))],L"...");
+
+ }
+
+ DrawStringWithAttribute( submenu->Left, submenu->Top, (CHAR16*)text,
+ (UINT8)( (submenu->ControlFocus) ?
+ submenu->SelBGColor | submenu->SelFGColor :
+ submenu->NSelBGColor | ColorLabel ) );
+ }
+ }
+ else
+ {
+ if((TestPrintLength( text ) / (NG_SIZE)) > (UINTN)(submenu->Width-2))
+ EfiStrCpy( &text[HiiFindStrPrintBoundary(text,(UINTN)(submenu->Width-5))],L"...");
+
+ text1 = HiiGetString( gHiiHandle, STRING_TOKEN(STR_SUBMENU_OPTION) );
+ if ( text1 != NULL )
+ {
+ DrawStringWithAttribute( submenu->Left - 2, submenu->Top, (CHAR16*)text,
+ EFI_BACKGROUND_BLUE | EFI_WHITE );
+ MemFreePointer( (VOID **)&text );
+
+ length = (3 + (TestPrintLength( text1 ) / (NG_SIZE))) * sizeof(CHAR16);
+ text = EfiLibAllocatePool( length );
+ if ( text != NULL )
+ {
+ SPrint( text, length, L"[%s]", text1 );
+
+ if ((TestPrintLength( text ) / (NG_SIZE)) > (UINTN)(submenu->Width-2))
+ EfiStrCpy( &text[HiiFindStrPrintBoundary(text,(UINTN)(submenu->Width-5))],L"...");
+
+ DrawStringWithAttribute( submenu->Left + submenu->LabelMargin , submenu->Top, text,
+ (UINT8)( (submenu->ControlFocus) ?
+ submenu->SelBGColor | submenu->SelFGColor :
+ submenu->NSelBGColor | submenu->NSelFGColor ) );
+
+ //if ( submenu->ControlFocus )
+ // DrawStringWithAttribute( submenu->Left + submenu->LabelMargin + 1,
+ // submenu->Top, text1, (UINT8)(submenu->SelBGColor | submenu->SelFGColor) );
+ }
+ }
+ }
+
+ MemFreePointer( (VOID **)&text );
+ MemFreePointer( (VOID **)&text1 );
+
+ FlushLines( submenu->Top, submenu->Top );
+
+ return Status;
+}
+
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+// Procedure: OverRideStyleInit
+//
+// Description: Function to initialize style
+//
+// Input: VOID
+//
+// Output: VOID
+//
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+VOID OverRideStyleInit( VOID )
+{
+ VOID *data = NULL ;
+ data = (UINT8 *)gApplicationData + gPages->PageList[0] ;
+
+ if( ((PAGE_INFO*)data)->PageHandle == 0)
+ ((PAGE_INFO*)data)->PageHandle = gHiiHandle ;
+
+
+ gLabelLeftMargin = STYLE_LABEL_LEFT_MARGIN ;
+ gControlLeftMargin = STYLE_CONTROL_LEFT_MARGIN ;
+ gControlLeftPad = STYLE_CONTROL_LEFT_PAD ;
+
+
+ #if SETUP_STYLE_FULL_SCREEN
+ if ( gMaxCols == STYLE_FULL_MAX_COLS )
+ {
+ _gStyleMainFrames = _gStyleLegacyFullMainFrames ;
+ _gStyleSubFrames = _gStyleLegacyFullSubFrames ;
+
+ gLabelLeftMargin = FULL_STYLE_LABEL_LEFT_MARGIN ;
+ gControlLeftMargin = FULL_STYLE_CONTROL_LEFT_MARGIN ;
+ gControlLeftPad = FULL_STYLE_CONTROL_LEFT_PAD ;
+
+ }
+ #endif
+
+
+}
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+// Procedure: StyleFrameIndexOf
+//
+// Description: Function to get frame index
+//
+// Input: UINT32 frameType
+//
+// Output: UINT32 index
+//
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+UINT32 StyleFrameIndexOf( UINT32 frameType )
+{
+ UINT32 FrameCount ;
+ UINT32 i, PageNum ;
+
+ PageNum = gApp->CurrentPage ;
+
+
+ if ( PageNum == 0 )
+ FrameCount = sizeof(_gStyleLegacyMainFrames) / sizeof(FRAME_INFO);
+ else
+ FrameCount = sizeof(_gStyleLegacySubFrames) / sizeof(FRAME_INFO);
+
+
+ for ( i = 0; i < FrameCount; i++ )
+ {
+ if ( PageNum == 0 )
+ {
+ if( _gStyleMainFrames[i].FrameType == frameType )
+ {
+ return i ;
+ break ;
+ }
+ }else{
+
+ if( _gStyleSubFrames[i].FrameType == frameType )
+ {
+ return i ;
+ break ;
+ }
+
+ }
+
+ }
+
+ return i ;
+
+}
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+// Procedure: StyleGetPageFrames
+//
+// Description: Function to number of frames
+//
+// Input: UINT32 page
+//
+// Output: UINT32 number of frames
+//
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+UINT32 StyleGetPageFrames( UINT32 page )
+{
+ if ( page == 0 )
+ return sizeof(_gStyleLegacyMainFrames) / sizeof(FRAME_INFO);
+
+ return sizeof(_gStyleLegacySubFrames) / sizeof(FRAME_INFO);
+}
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+// Procedure: OverRideStyleDrawPageBorder
+//
+// Description: Function to draw page border
+//
+// Input: UINT32 page
+//
+// Output: VOID
+//
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+VOID OverRideStyleDrawPageBorder( UINT32 page )
+{
+ CHAR16 *line;
+ UINT8 lineNumber;
+
+ UINT8 start, end, col;
+
+ PAGE_DATA *Page=NULL ;
+ FRAME_DATA *fHelptitle=NULL, *fHelp=NULL ;
+
+ Page = gApp->PageList[page];
+
+ fHelptitle = Page->FrameList[StyleFrameIndexOf(HELPTITLE_FRAME)];
+ fHelp = Page->FrameList[StyleFrameIndexOf(HELP_FRAME)];
+
+
+
+
+
+ line = EfiLibAllocateZeroPool( (gMaxCols + 1) * sizeof(CHAR16) );
+ if ( line == NULL )
+ return;
+
+ ClearScreenWithoutFlush( EFI_BACKGROUND_BLUE | EFI_WHITE );
+
+ MemFillUINT16Buffer( &line[1], gMaxCols - 2, L' ' );
+ line[0] = line[gMaxCols - 1] = BOXDRAW_DOUBLE_VERTICAL;
+
+ if ( page == 0 )
+ {
+ start = 2;
+ end = (UINT8)(gMaxRows - 2);
+ }
+ else
+ {
+ start = 3;
+ end = (UINT8)(gMaxRows - 3);
+ }
+
+ for ( lineNumber = start; lineNumber < end; lineNumber++ )
+ DrawString( 0, lineNumber, line );
+
+ MemFillUINT16Buffer( &line[1], gMaxCols - 2, BOXDRAW_DOUBLE_HORIZONTAL );
+ // top line
+ line[0] = BOXDRAW_DOUBLE_DOWN_RIGHT;
+ line[gMaxCols - 1] = BOXDRAW_DOUBLE_DOWN_LEFT;
+ DrawString( 0, start - 1, line );
+
+ // bottom line
+ line[0] = BOXDRAW_DOUBLE_UP_RIGHT;
+ line[gMaxCols - 1] = BOXDRAW_DOUBLE_UP_LEFT;
+ DrawString( 0, end, line );
+
+ MemFillUINT16Buffer( &line[1], gMaxCols - 2, BOXDRAW_HORIZONTAL );
+
+ if ( page == 0 )
+ {
+ line[0] = BOXDRAW_VERTICAL_DOUBLE_RIGHT;
+ line[gMaxCols - 1] = BOXDRAW_VERTICAL_DOUBLE_LEFT;
+ DrawString( 0, gMaxRows - 4, line );
+ line[gMaxCols / 2] = BOXDRAW_UP_HORIZONTAL;
+ DrawString( 0, gMaxRows - 7, line );
+
+ line[0] = BOXDRAW_DOWN_HORIZONTAL_DOUBLE;
+ line[1] = L'\0';
+ DrawString( gMaxCols / 2, 1, line );
+ }
+ else
+ {
+ // dividing line
+ line[0] = BOXDRAW_VERTICAL_RIGHT;
+ line[fHelp->FrameData.Width + 2] = BOXDRAW_VERTICAL_DOUBLE_LEFT;
+ line[fHelp->FrameData.Width + 3] = L'\0';
+ DrawString( fHelp->FrameData.Left - 2, 4, line );
+ line[0] = BOXDRAW_DOWN_HORIZONTAL_DOUBLE;
+ line[1] = L'\0';
+ DrawString( fHelp->FrameData.Left - 2, 2, line );
+ line[0] = BOXDRAW_UP_HORIZONTAL_DOUBLE;
+ DrawString( fHelp->FrameData.Left - 2, gMaxRows - 3, line );
+
+ }
+
+ // center divider
+ line[0] = BOXDRAW_VERTICAL;
+
+ if ( page == 0 )
+ {
+ start = 2;
+ end = (UINT8)(gMaxRows - 7);
+ col = (UINT8)(gMaxCols / 2);
+ }
+ else
+ {
+ start = 5;
+ end = (UINT8)(gMaxRows - 3);
+ col = fHelp->FrameData.Left - 2;
+ }
+ for ( lineNumber = start; lineNumber < end; lineNumber++ )
+ DrawString( col, lineNumber, line );
+
+ if ( page != 0 )
+ DrawString( fHelp->FrameData.Left - 2, 3, line );
+
+ FlushLines( 0, gMaxRows - 1 );
+
+ gBS->FreePool( line );
+
+}
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+// Procedure: OverRideStyleGetFrameInitData
+//
+// Description: Function to get frame initialization data
+//
+// Input: UINT32 page, UINT32 frame
+//
+// Output: VOID*
+//
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+VOID *OverRideStyleGetFrameInitData( UINT32 page, UINT32 frame )
+{
+ if ( page == 0 )
+ return &_gStyleMainFrames[frame];
+
+ return &_gStyleSubFrames[frame];
+
+}
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+// Procedure: OverRideComponent
+//
+// Description: Function to override component or control functionality
+//
+// Input: VOID
+//
+// Output: VOID
+//
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+VOID OverRideComponent(VOID)
+{
+ gMsgBox.Initialize = LegacyMsgBoxInitialize ;
+ gSubMenu.Initialize = LegacySubMenuInitialize ;
+ gSubMenu.Draw = LegacySubMenuDraw ;
+ gFrame.Draw = LegacyFrameDraw ; // Override framedraw
+ gFrame.AddControl = LegacyFrameAddControl ; // Override FrameAddControl
+ gPage.HandleAction = LegacyPageHandleAction ; // Override FrameAddControl
+
+}
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+// Procedure: StyleFrameAddTitle
+//
+// Description: Function to add frame title
+//
+// Input: FRAME_DATA *frame, UINT32 frameType, CONTROL_INFO * dummy
+//
+// Output: EFI_STATUS
+//
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+EFI_STATUS StyleFrameAddTitle( FRAME_DATA *frame, UINT32 frameType,CONTROL_INFO * dummy )
+{
+ return EFI_UNSUPPORTED;
+}
+
+#endif /* SETUP_STYLE_LEGACY */
+
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+// Procedure: HandleEscKey
+//
+// Description: Function to handle ESC Hotkey action
+//
+// Input: APPLICATION_DATA *app, HOTKEY_DATA *hotkey, VOID *cookie
+//
+// Output: VOID
+//
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+VOID LegacyHandleEscKey( APPLICATION_DATA *app, HOTKEY_DATA *hotkey, VOID *cookie )
+{
+ UINT16 pageClass = 0, pageSubclass = 0, pageFormID = 0;
+ EFI_GUID ExitPageGuid;
+
+
+ if(FormBrowserHandleValid())
+ app->Quit = TRUE;
+
+ else if ( gotoExitOnEscKey (&ExitPageGuid, &pageClass, &pageSubclass, &pageFormID) )//EIP-112628 GotoExitPageOnEscKey
+ {
+ UINT32 i=0;
+ PAGE_INFO *pageInfo;
+
+ for ( i = 0; i < gPages->PageCount; i++ )
+ {
+ pageInfo = (PAGE_INFO *)((UINTN)gApplicationData + gPages->PageList[i]);
+ if (
+ ( EfiCompareGuid(&ExitPageGuid,&(gPageIdInfo[pageInfo->PageIdIndex].PageGuid)) ) &&
+ ( pageClass == gPageIdInfo[pageInfo->PageIdIndex].PageClass ) &&
+ ( pageSubclass == gPageIdInfo[pageInfo->PageIdIndex].PageSubClass ) &&
+ ( pageFormID == pageInfo->PageFormID )
+ )
+ {
+ gApp->CurrentPage = i; // Page found go to exit page
+ gApp->CompleteRedraw = TRUE;
+ gApp->Fixed = FALSE;
+ break;
+ }
+ }
+ if(i >= gPages->PageCount) //Page not found exit application
+ app->Quit = ExitApplication();
+ }
+
+ else
+ app->Quit = ExitApplication();
+}
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+// Procedure: HandleSaveExitKey
+//
+// Description: Function to handle Save and Exit Hotkey action
+//
+// Input: APPLICATION_DATA *app, HOTKEY_DATA *hotkey, VOID *cookie
+//
+// Output: VOID
+//
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+VOID LegacyHandleSaveExitKey( APPLICATION_DATA *app, HOTKEY_DATA *hotkey, VOID *cookie )
+{
+ app->Quit = SaveAndExit();
+}
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+// Procedure: HandlePrevValuesKey
+//
+// Description: Function to handle Load Previous value Hotkey action
+//
+// Input: APPLICATION_DATA *app, HOTKEY_DATA *hotkey, VOID *cookie
+//
+// Output: VOID
+//
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+VOID LegacyHandlePrevValuesKey( APPLICATION_DATA *app, HOTKEY_DATA *hotkey, VOID *cookie )
+{
+ //if ( app->CurrentPage != 0 )
+ LoadPreviousValues( TRUE );
+}
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+// Procedure: HandleFailsafeKey
+//
+// Description: Function to handle Load Failsafe values Hotkey action
+//
+// Input: APPLICATION_DATA *app, HOTKEY_DATA *hotkey, VOID *cookie
+//
+// Output: VOID
+//
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+VOID LegacyHandleFailsafeKey( APPLICATION_DATA *app, HOTKEY_DATA *hotkey, VOID *cookie )
+{
+ //if ( app->CurrentPage != 0 )
+ LoadFailsafeDefaults();
+}
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+// Procedure: HandleOptimalKey
+//
+// Description: Function to handle Load Optimal values Hotkey action
+//
+// Input: APPLICATION_DATA *app, HOTKEY_DATA *hotkey, VOID *cookie
+//
+// Output: VOID
+//
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+VOID LegacyHandleOptimalKey( APPLICATION_DATA *app, HOTKEY_DATA *hotkey, VOID *cookie )
+{
+ //if ( app->CurrentPage != 0 )
+ LoadOptimalDefaults();
+}
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+// Procedure: HandleHelpKey
+//
+// Description: Function to handle Help Hotkey action
+//
+// Input: APPLICATION_DATA *app, HOTKEY_DATA *hotkey, VOID *cookie
+//
+// Output: VOID
+//
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+VOID LegacyHandleHelpKey( APPLICATION_DATA *app, HOTKEY_DATA *hotkey, VOID *cookie )
+{
+ //if ( app->CurrentPage != 0 )
+ ShowHelpMessageBox();
+}
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+// Procedure: HandlePrnScrnKey
+//
+// Description: Function to handle print screen Hotkey action
+//
+// Input: APPLICATION_DATA *app, HOTKEY_DATA *hotkey, VOID *cookie
+//
+// Output: VOID
+//
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+VOID LegacyHandlePrnScrnKey( APPLICATION_DATA *app, HOTKEY_DATA *hotkey, VOID *cookie )
+{
+ TseHotkeyPrintScreenSupport();
+}
+
+//EIP:47086 - Right clicking from the Main page is not exiting from BIOS setup.
+//EIP:47086 START
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+// Procedure: LegacyMainFrameHandlewithMouse
+//
+// Description: Function to handle Main Frame with Mouse
+//
+// Input: APPLICATION_DATA *app, HOTCLICK_DATA *hotkey, VOID *cookie
+//
+// Output: VOID
+//
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+VOID LegacyMainFrameHandlewithMouse( APPLICATION_DATA *app, HOTCLICK_DATA *hotclick, VOID *cookie )
+{
+ if(app->Action->Input.Data.MouseInfo.ButtonStatus == TSEMOUSE_RIGHT_CLICK)
+ app->Quit = ExitApplication();
+}
+
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+// Procedure: LegacyHelpFrameHandlewithMouse
+//
+// Description: Function to handle Help Frame with Mouse
+//
+// Input: APPLICATION_DATA *app, HOTCLICK_DATA *hotkey, VOID *cookie
+//
+// Output: VOID
+//
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+VOID LegacyHelpFrameHandlewithMouse( APPLICATION_DATA *app, HOTCLICK_DATA *hotclick, VOID *cookie )
+{
+
+}
+
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+// Procedure: LegacyNavFrameHandlewithMouse
+//
+// Description: Function to handle Navigation Frame with Mouse
+//
+// Input: APPLICATION_DATA *app, HOTCLICK_DATA *hotkey, VOID *cookie
+//
+// Output: VOID
+//
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+VOID LegacyNavFrameHandlewithMouse( APPLICATION_DATA *app, HOTCLICK_DATA *hotclick, VOID *cookie )
+{
+
+}
+//EIP:47086 END
+
+
+//*****************************************************************//
+//*****************************************************************//
+//** **//
+//** (C)Copyright 1985-2011, American Megatrends, Inc. **//
+//** **//
+//** All Rights Reserved. **//
+//** **//
+//** 5555 Oakbrook Pkwy , Norcross, GA 30071 **//
+//** **//
+//** Phone: (770)-246-8600 **//
+//** **//
+//*****************************************************************//
+//*****************************************************************//
diff --git a/EDK/MiniSetup/Legacy/legacy.h b/EDK/MiniSetup/Legacy/legacy.h
new file mode 100644
index 0000000..b615152
--- /dev/null
+++ b/EDK/MiniSetup/Legacy/legacy.h
@@ -0,0 +1,160 @@
+//*****************************************************************//
+//*****************************************************************//
+//*****************************************************************//
+//** **//
+//** (C)Copyright 1985-2010, American Megatrends, Inc. **//
+//** **//
+//** All Rights Reserved. **//
+//** **//
+//** 5555 Oakbrook Pkwy , Norcross, GA 30071 **//
+//** **//
+//** Phone (770)-246-8600 **//
+//** **//
+//*****************************************************************//
+//*****************************************************************//
+//*****************************************************************//
+// $Archive: /Alaska/SOURCE/Modules/AMITSE2_0/AMITSE/Legacy/legacy.h $
+//
+// $Author: Arunsb $
+//
+// $Revision: 2 $
+//
+// $Date: 10/18/12 6:06a $
+//
+//*****************************************************************//
+//*****************************************************************//
+// Revision History
+// ----------------
+// $Log: /Alaska/SOURCE/Modules/AMITSE2_0/AMITSE/Legacy/legacy.h $
+//
+// 2 10/18/12 6:06a Arunsb
+// Updated for 2.16.1235 QA submission
+//
+// 2 10/10/12 12:42p Arunsb
+// Synched the source for v2.16.1232, backup with Aptio
+//
+// 1 3/28/11 11:52p Madhans
+// [TAG] EIP54968
+// [Category] Improvement
+// [Description] To Support different style modules in TSE generically
+// [Files] Ezport module updated. EzportPlus and Legacy Styles Modules
+// added.
+//
+// 1 9/16/10 6:37p Blaines
+//
+// 1 9/16/10 6:32p Blaines
+//
+// 6 2/19/10 8:15a Mallikarjunanv
+// updated year in copyright message
+//
+// 5 1/09/10 6:12a Mallikarjunanv
+// Updated TSE2.01 Release sources with coding standards
+//
+// 4 8/24/09 5:15p Blaines
+// Fix issue setting title and helptitle background color after clear
+// screen
+//
+// 3 8/18/09 6:34p Blaines
+// Support additional date styles
+//
+// 2 6/12/09 2:36p Blaines
+// Update coding standard
+//
+// 1 6/04/09 8:05p Madhans
+//
+// 3 5/07/09 10:35a Madhans
+// Changes after Bin module
+//
+// 2 4/29/09 9:02p Madhans
+// Bug Fixes after unit Testing..
+//
+// 1 4/28/09 11:14p Madhans
+// Tse 2.0 Code complete Checkin.
+//
+// 3 4/28/09 9:39p Madhans
+// Tse 2.0 Code complete Checkin.
+//
+// 2 4/24/09 9:35p Blaines
+//
+// 1 12/18/08 7:59p Madhans
+// Intial version of TSE Lite sources
+//*****************************************************************//
+//*****************************************************************//
+//<AMI_FHDR_START>
+//
+// Name: alternate1.h
+//
+// Description: Main header file for alternate1 style module.
+//
+//<AMI_FHDR_END>
+//**********************************************************************
+#ifndef _LEGACY_H_
+#define _LEGACY_H_
+
+#if SETUP_STYLE_LEGACY
+
+VOID OverRideStyleInit( VOID );
+VOID OverRideStyleDrawPageBorder( UINT32 page );
+VOID *OverRideStyleGetFrameInitData( UINT32 page, UINT32 frame );
+
+#if SETUP_STYLE_FULL_SCREEN
+ #define STYLE_MAX_COLS STYLE_FULL_MAX_COLS
+ #define STYLE_MAX_ROWS STYLE_FULL_MAX_ROWS
+#else
+ #define STYLE_MAX_COLS STYLE_STD_MAX_COLS
+ #define STYLE_MAX_ROWS STYLE_STD_MAX_ROWS
+#endif
+
+#define MAIN_FULL_Y 3
+#define MAIN_Y 3
+#define MAIN_FULL_W 98
+#define MAIN_W 78
+
+
+//#define STYLE_CONTROL_LEFT_PAD ((UINT8)4)
+//#define STYLE_CONTROL_RIGHT_AREA_WIDTH 28
+//#define STYLE_CONTROL_LEFT_MARGIN ((UINT8)28)
+#define STYLE_CLEAR_SCREEN_COLOR (EFI_BACKGROUND_BLUE | EFI_WHITE)
+//#define FULL_STYLE_CONTROL_LEFT_MARGIN 37
+//#define FULL_STYLE_CONTROL_LEFT_PAD 2
+#define FULL_STYLE_CONTROL_RIGHT_AREA_WIDTH ((UINT8)FULL_VERTICAL_MAIN_DIVIDER - FULL_STYLE_CONTROL_LEFT_MARGIN - FULL_STYLE_CONTROL_LEFT_PAD)
+#define FULL_STYLE_LABEL_LEFT_MARGIN 2
+#define STYLE_LABEL_LEFT_MARGIN 2
+#define EFI_BACKGROUND_WHITE (EFI_WHITE << 4)
+//#define STYLE_CLEAR_SCREEN_COLOR (HELPTITLE_BGCOLOR | EFI_WHITE)
+
+
+// Style Overrides...
+#define STYLE_OVERRIDE_INIT
+#define STYLE_OVERRIDE_PAGE_BORDER
+#define STYLE_OVERRIDE_FRAME_INIT_DATA
+#define STYLE_OVERRIDE_CONTROL_OVERFLOW
+#define STYLE_OVERRIDE_INITIALIZE_FRAME
+#define STYLE_OVERRIDE_INITIALIZE_OEM_FRAME
+#define STYLE_OVERRIDE_NAV_TOKEN
+#define STYLE_OVERRIDE_ADD_CONTROLS
+#define STYLE_OVERRIDE_FIRST_PAGE
+#define STYLE_OVERRIDE_VERSION_STRING
+#define STYLE_OVERRIDE_FRAME_DRAWABLE
+#define STYLE_COMPONENT_OVERRIDE
+#define STYLE_OVERRIDE_HANDLE_KEY
+#define STYLE_OVERRIDE_LABEL_CALLBACK
+#define MENU_COMPLETE_REDRAW 1
+#define SUBMENU_COMPLETE_REDRAW 2
+#define STYLE_OVERRIDE_SCROLLBAR
+#endif /* SETUP_STYLE_LEGACY */
+
+#endif /* _LEGACY_H_ */
+//*****************************************************************//
+//*****************************************************************//
+//** **//
+//** (C)Copyright 1985-2010, American Megatrends, Inc. **//
+//** **//
+//** All Rights Reserved. **//
+//** **//
+//** 5555 Oakbrook Pkwy , Norcross, GA 30071 **//
+//** **//
+//** Phone: (770)-246-8600 **//
+//** **//
+//*****************************************************************//
+//*****************************************************************//
diff --git a/EDK/MiniSetup/Legacy/style.c b/EDK/MiniSetup/Legacy/style.c
new file mode 100644
index 0000000..293e836
--- /dev/null
+++ b/EDK/MiniSetup/Legacy/style.c
@@ -0,0 +1,725 @@
+//*****************************************************************//
+//*****************************************************************//
+//*****************************************************************//
+//** **//
+//** (C)Copyright 1985-2011, American Megatrends, Inc. **//
+//** **//
+//** All Rights Reserved. **//
+//** **//
+//** 5555 Oakbrook Pkwy , Norcross, GA 30071 **//
+//** **//
+//** Phone: (770)-246-8600 **//
+//** **//
+//*****************************************************************//
+//*****************************************************************//
+//*****************************************************************//
+// $Archive: /Alaska/SOURCE/Modules/AMITSE2_0/AMITSE/Legacy/style.c $
+//
+// $Author: Premkumara $
+//
+// $Revision: 5 $
+//
+// $Date: 5/02/14 4:04a $
+//
+//*****************************************************************//
+//*****************************************************************//
+// Revision History
+// ----------------
+// $Log: /Alaska/SOURCE/Modules/AMITSE2_0/AMITSE/Legacy/style.c $
+//
+// 5 5/02/14 4:04a Premkumara
+// [TAG] EIP151966
+// [Category] Improvement
+// [Description] Added the implementation for getting the BIOS build
+// year dynamically
+// from TimeStamp.h file and updated the Build year in copyright message
+// in both Setup and POST.
+// [Files] style.c,style.c,style.c,notify.c,minisetupext.c,CommonHelper
+// .c,
+// AmiTSEStr.uni,AMITSE.mak
+//
+// 4 10/18/12 6:06a Arunsb
+// Updated for 2.16.1235 QA submission
+//
+// 2 10/10/12 12:42p Arunsb
+// Synched the source for v2.16.1232, backup with Aptio
+//
+// 3 6/23/11 3:48p Rajashakerg
+// [TAG] EIP55762, 58925, 59971
+// [Category] New Feature
+// [Description] Support REF2,REF3 and REF4 in AMITSE
+// Support direct form navigation path
+// Improper layout of controls in the root page when Dynamic pages are
+// added using the Legacy Setup Style
+//
+// [Files] setupdata.h, CommonHelper.c, AMITSE.sdl, Legacy\Legacy.c,
+// Legacy\style.h, Legacy\style.h, frame.c, minisetupext.c,
+// minisetupext.h, numeric.c, page.c Popupstring.c, Hii.c,
+// Uefi21Wrapper.c, Parse.c Hii.c
+//
+// 2 6/23/11 5:44a Rajashakerg
+// [TAG] EIP63073
+// [Category] New Feature
+// [Description] Source modules in TSE should get the version details
+// from binary in run time not at build time
+// [Files] CommonHelper.c, minisetupext.c, notify.c, Ezport\style.c,
+// EzportPlus\style.c, Legacy\style.c
+//
+// 1 3/28/11 11:52p Madhans
+// [TAG] EIP54968
+// [Category] Improvement
+// [Description] To Support different style modules in TSE generically
+// [Files] Ezport module updated. EzportPlus and Legacy Styles Modules
+// added.
+//
+// 1 9/16/10 6:37p Blaines
+//
+// 1 9/16/10 6:32p Blaines
+//
+// 6 2/19/10 8:15a Mallikarjunanv
+// updated year in copyright message
+//
+// 5 2/04/10 11:16p Madhans
+// Navgation help for Mouse Added
+//
+// 4 1/09/10 6:13a Mallikarjunanv
+// Updated TSE2.01 Release sources with coding standards
+//
+// 3 6/23/09 6:54p Blaines
+// Coding standard update,
+// Remove spaces from file header to allow proper chm function list
+// creation.
+//
+// 2 6/12/09 2:36p Blaines
+// Update coding standard
+//
+// 1 6/04/09 8:05p Madhans
+//
+// 3 5/07/09 10:35a Madhans
+// Changes after Bin module
+//
+// 2 4/29/09 9:02p Madhans
+// Bug Fixes after unit Testing..
+//
+// 1 4/28/09 11:15p Madhans
+// Tse 2.0 Code complete Checkin.
+//
+// 1 4/28/09 9:39p Madhans
+// Tse 2.0 Code complete Checkin.
+//
+// 1 12/18/08 7:59p Madhans
+// Intial version of TSE Lite sources
+//*****************************************************************//
+//*****************************************************************//
+//<AMI_FHDR_START>
+//
+// Name: style.c
+//
+// Description: Contains style override functions.
+//
+//<AMI_FHDR_END>
+//**********************************************************************
+#include "minisetup.h"
+
+extern UINT8 gVerticalMainDivider ;
+extern UINT8 gHorizontalHelpDivider ;
+extern UINT16 gStrNavToken;
+
+VOID _StyleAddSpacing( FRAME_DATA *frame );
+VOID GetTseBuildVersion(UINTN *TseMajor, UINTN *TseMinor, UINTN *TseBuild);
+VOID GetTseBuildYear(UINT16 *TseBuildYear);//EIP 151966 : Use BIOS build year for copyright message
+
+#if SETUP_STYLE_LEGACY
+
+
+
+STYLECOLORS Colors =
+{
+ TEXT_COLOR, //EFI_WHITE, //FGColor
+ PAGE_BGCOLOR, //BGColor
+ NON_FOCUS_COLOR, //EFI_BLUE, //secondary FGcolor
+ PAGE_BGCOLOR, //secondary BGColor
+ CONTROL_FOCUS_COLOR, //EFI_WHITE, //SelFGColor
+ PAGE_BGCOLOR, //SelBGColor
+ CONTROL_NON_FOCUS_COLOR, //EFI_BLUE, //NSelFGColor
+ PAGE_BGCOLOR, //NSelBGColor
+ PAGE_BGCOLOR, //LabelBGColor
+ LABEL_FOCUS_COLOR, //EFI_WHITE, //LabelFGColor
+ LABEL_NON_FOCUS_COLOR, //EFI_BLUE, //NSelLabelFGColor
+ EDIT_BGCOLOR, //EditBGColor
+ EDIT_FGCOLOR, //EFI_WHITE, //EditFGColor
+ POPUP_FGCOLOR, //popupFGColor
+ POPUP_BGCOLOR //popupBGColor
+};
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+// Procedure: OverRideStyleLabelCallback
+//
+// Description: Function to set label callback
+//
+// Input: FRAME_DATA *frame, LABEL_DATA *label, VOID *cookie
+//
+// Output: VOID
+//
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+VOID OverRideStyleLabelCallback( FRAME_DATA *frame, LABEL_DATA *label, VOID *cookie )
+{
+ UINT16 token = 0 ;
+
+ if ( frame->PageID != 0 )
+ return ;
+
+ token = ((AMI_IFR_LABEL *)label->ControlData.ControlPtr)->Text;
+
+ switch(token)
+ {
+ case STRING_TOKEN(STR_LOAD_FAILSAFE):
+ LoadFailsafeDefaults();
+ break;
+
+ case STRING_TOKEN(STR_LOAD_OPTIMAL):
+ _SubMenuAmiCallback( RESTORE_DEFAULTS_VALUE );
+ //LoadOptimalDefaults();
+ break;
+
+ case STRING_TOKEN(STR_SAVE_EXIT):
+ _SubMenuAmiCallback( SAVE_AND_EXIT_VALUE );
+ //HandleSaveAndExit();
+ break;
+
+ case STRING_TOKEN(STR_EXIT):
+ _SubMenuAmiCallback( DISCARD_AND_EXIT_VALUE );
+ //HandleExitApplication();
+ break;
+
+ case STRING_TOKEN(STR_SAVE_RESET):
+ _SubMenuAmiCallback( SAVE_AND_RESET_VALUE );
+ //HandleSaveAndReset();
+ break;
+
+ case STRING_TOKEN(STR_RESET):
+ _SubMenuAmiCallback( DISCARD_AND_RESET_VALUE );
+ //HandleResetSys();
+ break;
+ }
+}
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+// Procedure: OverRideStyleFrameHandleKey
+//
+// Description: Function to handle action key
+//
+// Input: FRAME_DATA *frame, EFI_INPUT_KEY Key
+//
+// Output: STATUS
+//
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+EFI_STATUS OverRideStyleFrameHandleKey( FRAME_DATA *frame, EFI_INPUT_KEY Key )
+{
+ EFI_STATUS Status = EFI_UNSUPPORTED;
+ INT32 prevControl = frame->CurrentControl;
+
+ INT32 thisControl = prevControl;
+ INT32 lastControl = frame->ControlCount - 1;
+ CONTROL_DATA *control;
+
+ if ( frame->PageID != 0 )
+ return Status;
+
+ if ( frame->ControlCount == 0 )
+ return Status;
+
+ switch ( Key.ScanCode )
+ {
+ case SCAN_LEFT:
+ if ( thisControl - gTabIndex >= 0 )
+ thisControl -= gTabIndex;
+ else if ( thisControl + gTabIndex <= lastControl )
+ thisControl += gTabIndex;
+ break;
+ case SCAN_RIGHT:
+ if ( thisControl + gTabIndex <= lastControl )
+ thisControl += gTabIndex;
+ else if ( thisControl - gTabIndex >= 0 )
+ thisControl -= gTabIndex;
+ break;
+ default:
+ return Status;
+ }
+
+ control = frame->ControlList[prevControl];
+ control->Methods->SetFocus( control, FALSE );
+
+ if ( _FrameSetControlFocus( frame, thisControl ) )
+ {
+ Status = EFI_SUCCESS;
+ frame->CurrentControl = thisControl;
+ }
+
+ return Status;
+
+}
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+// Procedure: OverRideStyleHandleControlOverflow
+//
+// Description: Function to handle contro overflow
+//
+// Input: FRAME_DATA *frame, CONTROL_DATA *control, UINT16 count
+//
+// Output: VOID
+//
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+EFI_STATUS OverRideStyleHandleControlOverflow( FRAME_DATA *frame, CONTROL_DATA *control, UINT16 count )
+{
+ EFI_STATUS Status = EFI_UNSUPPORTED;
+ UINT8 top, left;
+ CONTROL_DATA *tempcontrol;
+ UINT16 i=0,Height=0;
+
+ if ( frame->PageID != 0 )
+ {
+ // Add scrollbar if not present linking it with the frame 0 thorugh a callback
+ for(i = 0; i < count; i++)
+ {
+ tempcontrol = (CONTROL_DATA*)(frame->ControlList[i]);
+ if( (Height + tempcontrol->Height ) < frame->FrameData.Height )
+ {
+ Height = Height + tempcontrol->Height;
+ frame->LastVisibleCtrl = i;
+ }
+ else
+ {
+// frame->UseScrollbar = TRUE;
+ Status = EFI_SUCCESS;
+ break;
+ }
+ }
+ return Status;
+ }
+
+ frame->UseScrollbar = FALSE;
+ Status = EFI_SUCCESS;
+
+ //_StyleAddSpacing( frame );
+
+ //Double Space layout
+ count = count*2 ;// + (UINT16)(frame->NullCount) ;
+ left = frame->FrameData.Left + (UINT8)gLabelLeftMargin;
+ top = frame->FrameData.Top + (UINT8)(count - 2) ;
+
+ if(count > frame->FrameData.Height)
+ {
+ left = frame->FrameData.Left + (UINT8)gControlLeftPad + (UINT8)(gMaxCols / 2);
+ top = frame->FrameData.Top + (UINT8)(count - 1 - frame->FrameData.Height) ;
+ }else
+ gTabIndex = frame->ControlCount ;
+
+ control->Methods->SetPosition( control, left, top );
+//EIP# 59971 Start
+ count = frame->ControlCount ;
+
+ //If the double spaced layout exceeds the left + right columns,
+ //reflow the layout using single spacing.
+ if((count*2) > (frame->FrameData.Height*2))
+ {
+ CONTROL_DATA **Control=NULL;
+ Control = frame->ControlList;
+ top = frame->FrameData.Top ;
+ left = frame->FrameData.Left + (UINT8)gLabelLeftMargin;
+
+ //Update the column tab index
+ gTabIndex = (UINT32)((frame->ControlCount)/2) ;
+
+ //Update using single space layout
+ for(i = 0; i< frame->ControlCount; i++, Control++ )
+ {
+ (*Control)->Methods->SetPosition( *Control, left, top );
+ frame->LastVisibleCtrl = i ;
+ top++;
+
+ if( top > (frame->FrameData.Top + gTabIndex))
+ {
+ left = frame->FrameData.Left + (UINT8)gControlLeftPad +(UINT8)(gMaxCols / 2);
+ top = frame->FrameData.Top ;
+ }
+ }
+ }
+//EIP# 59971 End
+ frame->LastVisibleCtrl = frame->ControlCount -1;
+ Status = EFI_SUCCESS;
+ return Status;
+
+}
+
+static AMI_IFR_MENU gMenuData = {CONTROL_TYPE_MENU,2};
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+// Procedure: OverRideStyleInitializeFrame
+//
+// Description: Function to initialize frame
+//
+// Input: FRAME_DATA *frame, UINT32 frameType, PAGE_INFO *data
+//
+// Output: VOID
+//
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+EFI_STATUS OverRideStyleInitializeFrame( FRAME_DATA *frame, UINT32 frameType, PAGE_INFO *data )
+{
+ EFI_STATUS Status = EFI_INVALID_PARAMETER;
+ UINT8 justify = JUSTIFY_LEFT /*, BORDER=(frame->FrameData.Border==TRUE)?1:0*/ ;
+ STYLECOLORS saveColors ;
+
+ //CONTROL_INFO dummy;
+
+ UINT32 FrameType = frame->FrameData.FrameType ;
+
+ saveColors = Colors ;
+
+ //Allows controls to match the Background Color of the Frame
+ Colors.BGColor = frame->FrameData.BGColor ;
+ Colors.SecBGColor = frame->FrameData.BGColor ;
+ Colors.SelBGColor = frame->FrameData.BGColor ;
+ Colors.NSelBGColor = frame->FrameData.BGColor ;
+ Colors.LabelBGColor = frame->FrameData.BGColor ;
+ //Colors.EditBGColor = frame->FrameData.BGColor ;
+ Colors.PopupBGColor = frame->FrameData.BGColor ;
+
+ switch ( FrameType )
+ {
+ case MAIN_FRAME:
+
+ if ( frame->PageID == 0 )
+ {
+ Colors.SelFGColor = EFI_WHITE ;
+ Colors.SelBGColor = EFI_BACKGROUND_RED ;
+ Colors.NSelFGColor = EFI_YELLOW ;
+ Colors.NSelLabelFGColor = EFI_YELLOW ;
+ Colors.LabelFGColor = EFI_WHITE ;
+ Colors.PopupFGColor = POPUP_FGCOLOR ;
+ Colors.PopupBGColor = POPUP_BGCOLOR ;
+ }else{
+
+ if(LABEL_FOCUS_COLOR != FOCUS_COLOR)
+ Colors.LabelFGColor = LABEL_FOCUS_COLOR ;
+
+ if(CONTROL_FOCUS_COLOR != FOCUS_COLOR)
+ Colors.SelFGColor = CONTROL_FOCUS_COLOR;
+
+ if(LABEL_NON_FOCUS_COLOR != NON_FOCUS_COLOR)
+ Colors.NSelLabelFGColor = LABEL_NON_FOCUS_COLOR ;
+
+ if(CONTROL_NON_FOCUS_COLOR != NON_FOCUS_COLOR)
+ Colors.NSelFGColor = CONTROL_NON_FOCUS_COLOR ;
+
+ Colors.SelBGColor = CONTROL_FOCUS_BGCOLOR ;
+ Colors.EditBGColor = CONTROL_FOCUS_BGCOLOR ;
+ }
+
+ Status = _FrameAddControls( frame, data );
+ break;
+
+ case TITLE_FRAME:
+ case SUBTITLE_FRAME:
+ case HELPTITLE_FRAME:
+ justify = JUSTIFY_CENTER;
+ case HELP_FRAME:
+ if ( frame->PageID == 0 )
+ justify = JUSTIFY_CENTER;
+ case NAV_FRAME:
+ if ( FrameType == NAV_FRAME)
+ justify = JUSTIFY_CENTER;
+ Status = _FrameAddTitle( frame, FrameType, data );
+ if ( ! EFI_ERROR( Status ) )
+ {
+ MEMO_DATA *memo = (MEMO_DATA *)frame->ControlList[0];
+ gMemo.SetJustify( memo, justify );
+ }
+ break;
+ case SCROLLBAR_FRAME:
+ // not implemented at this time
+ Status = EFI_SUCCESS;
+ break;
+ default:
+ break;
+ }
+
+ // initialize frame scroll colors
+ frame->FrameData.ScrlFGColor = (frame->FrameData.FGColor == 0) ? Colors.SecFGColor:frame->FrameData.FGColor ;
+ frame->FrameData.ScrlBGColor = (frame->FrameData.BGColor == 0) ? Colors.SecBGColor : frame->FrameData.BGColor ;
+
+
+
+ Colors = saveColors;
+
+ // initialize frame scroll colors
+ frame->FrameData.ScrlFGColor = SCROLLBAR_FGCOLOR ;
+ frame->FrameData.ScrlBGColor = SCROLLBAR_BGCOLOR ;
+ frame->FrameData.ScrlUpFGColor = SCROLLBAR_UPARROW_FGCOLOR ;
+ frame->FrameData.ScrlUpBGColor = SCROLLBAR_UPARROW_BGCOLOR ;
+ frame->FrameData.ScrlDnFGColor = SCROLLBAR_DOWNARROW_FGCOLOR ;
+ frame->FrameData.ScrlDnBGColor = SCROLLBAR_DOWNARROW_BGCOLOR ;
+
+ return Status;
+
+}
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+// Procedure: OverRideStyleGetNavToken
+//
+// Description: Function to get navigation frame token
+//
+// Input: UINT32 page number
+//
+// Output: UINT16 token
+//
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+UINT16 OverRideStyleGetNavToken( UINT32 page )
+{
+ return gStrNavToken;
+}
+
+
+
+static AMI_IFR_LABEL gFailSafeLabel = { 0, 0, STRING_TOKEN(STR_LOAD_FAILSAFE), STRING_TOKEN(STR_LOAD_FAILSAFE_HELP) };
+static AMI_IFR_LABEL gOptimalLabel = { 0, 0, STRING_TOKEN(STR_LOAD_OPTIMAL), STRING_TOKEN(STR_LOAD_OPTIMAL_HELP) };
+static AMI_IFR_LABEL gSaveExitLabel = { 0, 0, STRING_TOKEN(STR_SAVE_EXIT), STRING_TOKEN(STR_SAVE_EXIT_HELP) };
+static AMI_IFR_LABEL gExitLabel = { 0, 0, STRING_TOKEN(STR_EXIT), STRING_TOKEN(STR_EXIT_HELP) };
+static AMI_IFR_LABEL gSaveResetLabel = { 0, 0, STRING_TOKEN(STR_SAVE_RESET), STRING_TOKEN(STR_SAVE_RESET_HELP) };
+static AMI_IFR_LABEL gResetLabel = { 0, 0, STRING_TOKEN(STR_RESET), STRING_TOKEN(STR_RESET_HELP) };
+
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+// Procedure: OverRideStyleAddAdditionalControls
+//
+// Description: Function to add additional controls
+//
+// Input: FRAME_DATA *frame, UINT32 controlNumber, BOOLEAN focus
+//
+// Output: EFI_STATUS
+//
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+EFI_STATUS OverRideStyleAddAdditionalControls( FRAME_DATA *frame, UINT32 controlNumber, BOOLEAN focus )
+{
+ EFI_STATUS Status = EFI_SUCCESS;
+ CONTROL_DATA **control;
+ UINT8 top=0, left=0;
+ UINT16 i=0, count = 0;
+
+
+ if ( frame->PageID != 0 )
+ return Status;
+
+
+// _StyleAddSpacing( frame );
+ Status = _StyleAddControl( frame, CONTROL_TYPE_LABEL, &gFailSafeLabel, &controlNumber, &focus );
+ if ( EFI_ERROR( Status ) )
+ return Status;
+
+ _StyleAddSpacing( frame );
+ Status = _StyleAddControl( frame, CONTROL_TYPE_LABEL, &gOptimalLabel, &controlNumber, &focus );
+ if ( EFI_ERROR( Status ) )
+ return Status;
+
+ _StyleAddSpacing( frame );
+ Status = _StyleAddControl( frame, CONTROL_TYPE_LABEL, &gSaveExitLabel, &controlNumber, &focus );
+ if ( EFI_ERROR( Status ) )
+ return Status;
+
+ _StyleAddSpacing( frame );
+ Status = _StyleAddControl( frame, CONTROL_TYPE_LABEL, &gExitLabel, &controlNumber, &focus );
+ if ( EFI_ERROR( Status ) )
+ return Status;
+
+ _StyleAddSpacing( frame );
+ Status = _StyleAddControl( frame, CONTROL_TYPE_LABEL, &gSaveResetLabel, &controlNumber, &focus );
+ if ( EFI_ERROR( Status ) )
+ return Status;
+
+ _StyleAddSpacing( frame );
+ Status = _StyleAddControl( frame, CONTROL_TYPE_LABEL, &gResetLabel, &controlNumber, &focus );
+
+ control = frame->ControlList;
+ count = frame->ControlCount ;
+
+ //Note: Initially, the root page layout of controls is from top->bottom left->right column with single spacing.
+ //If the initial layout spans more than the left and right column, update the layout using no spacing.
+
+ return Status;
+
+}
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+// Procedure: OverRideStyleSelectFirstDisplayPage
+//
+// Description: Function to set first page display
+//
+// Input: VOID
+//
+// Output: VOID
+//
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+VOID OverRideStyleSelectFirstDisplayPage( VOID )
+{
+ gApp->CurrentPage = 0;
+}
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+// Procedure: OverRideStyleUpdateVersionString
+//
+// Description: Function to update version string
+//
+// Input: VOID
+//
+// Output: VOID
+//
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+VOID OverRideStyleUpdateVersionString( VOID )
+{
+ CHAR16 *string = NULL, *newString = NULL;
+ UINTN length, TseMajor,TseMinor, TseBuild;
+ UINT16 TseBuildYear=0;
+ UINTN i;
+
+ for ( i = 0; i < gLangCount; i++ )
+ {
+ string = HiiGetStringLanguage( gHiiHandle, STRING_TOKEN(STR_MAIN_COPYRIGHT), gLanguages[i].Unicode );
+ if ( string == NULL )
+ return;
+
+ length = EfiStrLen(string) + 10;
+ newString = EfiLibAllocateZeroPool( length * sizeof(CHAR16) );
+ if ( newString != NULL )
+ {
+ //EIP 63073 : Source modules in TSE should get the version details from binary in run time not at build time
+ GetTseBuildVersion(&TseMajor,&TseMinor,&TseBuild);
+ //EIP 151966 : Use BIOS build year for copyright message
+ GetTseBuildYear(&TseBuildYear);
+ SPrint( newString, length * sizeof(CHAR16), string, TseMajor, TseMinor, TseBuild,TseBuildYear );
+ HiiChangeStringLanguage( gHiiHandle, STRING_TOKEN(STR_MAIN_COPYRIGHT), gLanguages[i].Unicode, newString );
+ }
+
+ MemFreePointer( (VOID **)&newString );
+ MemFreePointer( (VOID **)&string );
+ //EIP 151966 : Use BIOS build year for copyright message
+ string = HiiGetStringLanguage( gHiiHandle, STRING_TOKEN(STR_MAIN_TITLE), gLanguages[i].Unicode );
+ if ( string == NULL )
+ return;
+ length = EfiStrLen(string) + 10;
+ newString = EfiLibAllocateZeroPool( length * sizeof(CHAR16) );
+ if ( newString != NULL )
+ {
+ //EIP 151966 : Use BIOS build year for copyright message
+ GetTseBuildYear(&TseBuildYear);
+ SPrint( newString, length * sizeof(CHAR16), string, TseBuildYear );
+ HiiChangeStringLanguage( gHiiHandle, STRING_TOKEN(STR_MAIN_TITLE), gLanguages[i].Unicode, newString );
+ }
+ MemFreePointer( (VOID **)&newString );
+ MemFreePointer( (VOID **)&string );
+ }
+}
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+// Procedure: OverRideStyleFrameDrawable
+//
+// Description: Function to determine if frame is drawable
+//
+// Input: FRAME_DATA *frame
+//
+// Output: EFI_STATUS
+//
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+EFI_STATUS OverRideStyleFrameDrawable( FRAME_DATA *frame )
+{
+ EFI_STATUS Status = EFI_SUCCESS;
+
+ if(!frame->FrameData.Drawable){
+ Status = EFI_UNSUPPORTED;
+ }
+ return Status ;
+}
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+// Procedure: _StyleAddSpacing
+//
+// Description: Function to add spacing
+//
+// Input: FRAME_DATA *frame
+//
+// Output: VOID
+//
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+VOID _StyleAddSpacing( FRAME_DATA *frame )
+{
+ _StyleAddControl( frame, CONTROL_TYPE_NULL, NULL, NULL, NULL );
+ //if ( frame->ControlCount == 7 )
+ // _StyleAddControl( frame, CONTROL_TYPE_NULL, NULL, NULL, NULL );
+}
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+// Procedure: _StyleAddControl
+//
+// Description: Function to add controls
+//
+// Input: FRAME_DATA *frame, UINT16 type, VOID *data, UINT32 *controlNumber, BOOLEAN *focus
+//
+// Output: EFI_STATUS
+//
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+EFI_STATUS _StyleAddControl( FRAME_DATA *frame, UINT16 type, VOID *data, UINT32 *controlNumber, BOOLEAN *focus )
+{
+ EFI_STATUS Status;
+ CONTROL_INFO dummy;
+
+ MemSet( &dummy, sizeof(dummy), 0 );
+ dummy.ControlHandle = (VOID*)(UINTN)INVALID_HANDLE;
+
+ dummy.ControlType = type;
+ dummy.ControlPtr = (VOID*)data;
+ dummy.ControlFlags.ControlVisible = TRUE;
+
+ Status = gFrame.AddControl( frame, &dummy );
+ if ( EFI_ERROR( Status ) )
+ return Status;
+
+ if ( type != CONTROL_TYPE_NULL )
+ {
+ if ( ! *focus )
+ {
+ if ( _FrameSetControlFocus( frame, *controlNumber ) )
+ {
+ frame->CurrentControl = *controlNumber;
+ *focus = TRUE;
+ }
+ }
+
+ (*controlNumber)++;
+ }
+
+ return Status;
+}
+#endif
+//*****************************************************************//
+//*****************************************************************//
+//** **//
+//** (C)Copyright 1985-2011, American Megatrends, Inc. **//
+//** **//
+//** All Rights Reserved. **//
+//** **//
+//** 5555 Oakbrook Pkwy , Norcross, GA 30071 **//
+//** **//
+//** Phone: (770)-246-8600 **//
+//** **//
+//*****************************************************************//
+//*****************************************************************//
diff --git a/EDK/MiniSetup/Legacy/style.h b/EDK/MiniSetup/Legacy/style.h
new file mode 100644
index 0000000..bef8e19
--- /dev/null
+++ b/EDK/MiniSetup/Legacy/style.h
@@ -0,0 +1,259 @@
+//*****************************************************************//
+//*****************************************************************//
+//*****************************************************************//
+//** **//
+//** (C)Copyright 1985-2011, American Megatrends, Inc. **//
+//** **//
+//** All Rights Reserved. **//
+//** **//
+//** 5555 Oakbrook Pkwy , Norcross, GA 30071 **//
+//** **//
+//** Phone (770)-246-8600 **//
+//** **//
+//*****************************************************************//
+//*****************************************************************//
+//*****************************************************************//
+// $Archive: /Alaska/SOURCE/Modules/AMITSE2_0/AMITSE/Legacy/style.h $
+//
+// $Author: Arunsb $
+//
+// $Revision: 4 $
+//
+// $Date: 10/18/12 6:06a $
+//
+//*****************************************************************//
+//*****************************************************************//
+// Revision History
+// ----------------
+// $Log: /Alaska/SOURCE/Modules/AMITSE2_0/AMITSE/Legacy/style.h $
+//
+// 4 10/18/12 6:06a Arunsb
+// Updated for 2.16.1235 QA submission
+//
+// 2 10/10/12 12:42p Arunsb
+// Synched the source for v2.16.1232, backup with Aptio
+//
+// 3 6/29/11 12:41p Rajashakerg
+// [TAG] EIP47086
+// [Category] New Feature
+// [Description] Right clicking from the Main page is not exiting from
+// BIOS setup.
+//
+// [Files] minisetup.h, Ezport\style.h,Ezport\EzportBin.sdl,
+// Ezport\EzportBin.mak, Ezport\ezport.c, Ezport\EzportBin.cif,
+// EzportPlus\style.h, EzportPlus\EzportPlusBin.sdl, EzportPlusBin.mak,
+// EzportPlus\EzportPlusBin.cif, EzportPlus\ezportplus.c, Legacy\style.h,
+// Legacy\EzportPlusBin.sdl, Legacy\LegacyBin.mak, Legacy\LegacyBin.cif,
+// Legacy\legacy.c, TseLiteBin.sdl, TseLite.cif, Memo.c, frame.c,
+// application.h, application.c, commonoem.h, CommonHelper.c
+//
+// 2 6/23/11 3:47p Rajashakerg
+// [TAG] EIP55762, 58925, 59971
+// [Category] New Feature
+// [Description] Support REF2,REF3 and REF4 in AMITSE
+// Support direct form navigation path
+// Improper layout of controls in the root page when Dynamic pages are
+// added using the Legacy Setup Style
+// [Files] setupdata.h, CommonHelper.c, AMITSE.sdl, Legacy\Legacy.c,
+// Legacy\style.h, Legacy\style.h, frame.c, minisetupext.c,
+// minisetupext.h, numeric.c, page.c Popupstring.c, Hii.c,
+// Uefi21Wrapper.c, Parse.c Hii.c
+//
+// 1 3/28/11 11:52p Madhans
+// [TAG] EIP54968
+// [Category] Improvement
+// [Description] To Support different style modules in TSE generically
+// [Files] Ezport module updated. EzportPlus and Legacy Styles Modules
+// added.
+//
+// 1 9/16/10 6:37p Blaines
+//
+// 1 9/16/10 6:32p Blaines
+//
+// 10 3/31/10 11:40a Blaines
+// Remove the hook StyleFrameAddControl
+//
+// 9 3/23/10 5:10p Blaines
+// Add new style module hooks
+//
+// 8 2/26/10 1:30p Madhans
+// To avoid build issues with EDK.
+//
+// 7 2/19/10 8:15a Mallikarjunanv
+// updated year in copyright message
+//
+// 6 2/05/10 6:04p Madhans
+// Mouse action override from Style Module.
+//
+// 5 8/19/09 11:13a Blaines
+// Update OEM Override prototypes
+//
+// 4 8/18/09 6:35p Blaines
+// Support additional date styles
+//
+// 3 8/17/09 12:23p Presannar
+// Removed References to Tiano.h
+//
+// 2 6/12/09 2:36p Blaines
+// Update coding standard
+//
+// 1 6/04/09 8:05p Madhans
+//
+// 4 5/20/09 3:37p Blaines
+// Add functions to access date format and Scroll behavior
+//
+// 3 5/18/09 12:18p Blaines
+// Fix Help Frame text scroll
+// Add OEM Style override prototype declarations
+//
+// 2 5/07/09 10:35a Madhans
+// Changes after Bin module
+//
+// 1 4/28/09 11:15p Madhans
+// Tse 2.0 Code complete Checkin.
+//
+// 3 4/24/09 9:35p Blaines
+//
+// 1 12/18/08 7:58p Madhans
+// Intial version of TSE Lite sources
+//*****************************************************************//
+//*****************************************************************//
+//<AMI_FHDR_START>
+//
+// Name: style.h
+//
+// Description: Style override prototypes.
+//
+//<AMI_FHDR_END>
+//**********************************************************************
+//#define SETUP_STYLE_FULL_SCREEN 1
+//#define SETUP_GO_TO_EXIT_PAGE_ON_EXIT_KEY 0
+
+#ifndef _STYLE_H_
+#define _STYLE_H_
+
+#if TSE_USE_EDK_LIBRARY
+#include "Tiano.h"
+#else
+#include "Efi.h"
+#endif
+
+//#define SETUP_STYLE_LEGACY 1
+#include "legacy.h"
+#include "page.h"
+#include "frame.h"
+
+extern INT16 gTabIndex ;
+EFI_STATUS LegacyFrameDrawScrollBar (FRAME_DATA *frame, UINT32 FirstLine, UINT32 LastLine, UINT32 modVal, UINT32 sizeOfBar, UINT32 numOfBlocks, BOOLEAN bEraseScrollBar);
+EFI_STATUS StyleGetMessageboxColor( UINT8 MessageBoxType, UINT8 *Color);
+EFI_STATUS StyleControlColor(FRAME_DATA *frame, STYLECOLORS *Colors);
+EFI_STATUS OverRideControlColor(FRAME_DATA *frame, STYLECOLORS *Colors);
+VOID StyleInit( VOID );
+VOID StyleExit( VOID );
+VOID StyleDrawPageBorder( UINT32 page );
+UINT32 StyleGetPageFrames( UINT32 page );
+UINT32 StyleFrameIndexOf( UINT32 frameType );
+VOID StyleBeforeFrame( FRAME_DATA *frame ) ;
+EFI_STATUS StyleFrameDrawable( FRAME_DATA *frame );
+VOID StyleUpdateFrameStrings(PAGE_DATA *page);
+VOID * StyleGetFrameInitData( UINT32 page, UINT32 frame );
+
+EFI_STATUS StyleFrameHandleMouse( FRAME_DATA *frame, MOUSE_INFO MouseInfo);
+EFI_STATUS StyleFrameHandleTimer( FRAME_DATA *frame, ACTION_DATA *action );
+EFI_STATUS StyleFrameHandleKey( FRAME_DATA *frame, EFI_INPUT_KEY Key );
+EFI_STATUS StyleHandleControlOverflow( FRAME_DATA *frame, CONTROL_DATA *control, UINT16 count );
+EFI_STATUS StyleInitializeFrame( FRAME_DATA *frame, UINT32 frameType, PAGE_INFO *data );
+UINT16 StyleGetNavToken( UINT32 page );
+EFI_STATUS StyleAddAdditionalControls( FRAME_DATA *frame, UINT32 controlNumber, BOOLEAN focus );
+
+//EFI_STATUS StyleMenuCallback( FRAME_DATA *frame, MENU_DATA *menu, CALLBACK_MENU *data );
+VOID StyleLabelCallback( FRAME_DATA *frame, LABEL_DATA *label, VOID *cookie );
+
+EFI_STATUS _StyleAddControl( FRAME_DATA *frame, UINT16 type, VOID *data, UINT32 *number, BOOLEAN *focus );
+UINT16 StyleLanguagePage( SUBMENU_DATA *submenu );
+UINT16 StyleBootManagerPage( SUBMENU_DATA *submenu );
+BOOLEAN StyleHelpAreaScrollable(VOID);
+VOID StylePageItemFocus(PAGE_DATA *page, FRAME_DATA *frame );
+VOID StyleSubPageItemFocus(PAGE_DATA *page, FRAME_DATA *frame );
+BOOLEAN StyleGetShadowSupport(VOID);
+VOID StyleDrawScrollBar(FRAME_DATA *frame, UINT32 FirstLine, UINT32 LastLine, UINT32 modVal,
+ UINT32 sizeOfBar, UINT32 numOfBlocks, BOOLEAN bEraseScrollBar);
+
+VOID StyleDrawHelpScrollBar( MEMO_DATA *memo, UINT16 height);
+
+
+VOID StyleSelectFirstDisplayPage( VOID );
+VOID StyleAddExtraPagesData( VOID );
+EFI_STATUS StyleGetSpecialColor( UINT16 ControlType, UINT8 *Color);
+UINTN StyleGetDateFormat(VOID);
+BOOLEAN StyleShowDay(VOID);
+BOOLEAN StyleGetScrollBehavior(VOID) ;
+
+VOID StyleFrameSetControlPositions(FRAME_DATA *frame, UINT32 *pOtherEnd);
+extern HOTKEY_TEMPLATE gHotKeyInfo[];
+extern HOTCLICK_TEMPLATE gHotClickInfo[];//EIP:47086 - Right clicking from the Main page is not exiting from BIOS setup.
+extern UINT32 gHotKeyCount;
+extern UINT32 gHotClickCount;//EIP:47086 - Right clicking from the Main page is not exiting from BIOS setup.
+//extern UINT8 gLabelLeftMargin ;
+//extern UINT8 gControlLeftMargin ;
+//extern FRAME_INFO _gStyleStandardSubFrames[] ;
+extern UINT32 gSubFrameCount ;
+extern EFI_STATUS FrameDrawScrollBar (FRAME_DATA *frame, UINT32 FirstLine, UINT32 LastLine, UINT32 modVal, UINT32 sizeOfBar, UINT32 numOfBlocks, BOOLEAN bEraseScrollBar);
+EFI_STATUS StyleFrameAddTitle( FRAME_DATA *frame, UINT32 frameType,CONTROL_INFO * dummy );
+
+
+//Common Overrides
+VOID OverRideStyleLabelCallback(FRAME_DATA *frame, LABEL_DATA *label, VOID *cookie );
+EFI_STATUS OverRideStyleFrameHandleKey(FRAME_DATA *frame, EFI_INPUT_KEY Key);
+EFI_STATUS OverRideStyleHandleControlOverflow( FRAME_DATA *frame, CONTROL_DATA *control, UINT16 count );
+EFI_STATUS OverRideStyleInitializeFrame( FRAME_DATA *frame, UINT32 frameType, PAGE_INFO *data );
+UINT16 OverRideStyleGetNavToken( UINT32 page );
+EFI_STATUS OverRideStyleAddAdditionalControls( FRAME_DATA *frame, UINT32 controlNumber, BOOLEAN focus );
+VOID OverRideStyleSelectFirstDisplayPage( VOID );
+VOID OverRideStyleUpdateVersionString( VOID );
+EFI_STATUS OverRideStyleFrameDrawable( FRAME_DATA *frame );
+VOID OverRideComponent(VOID);
+
+//Oem Overrides
+UINTN OEMStyleGetDateFormat(VOID);
+EFI_STATUS OEMGetSpecialColor(UINT16 ControlType, UINT8 *Color);
+VOID OEMStyleBeforeFrame( FRAME_DATA *frame );
+VOID OEMStyleUpdateFrameStrings( PAGE_DATA *page );
+EFI_STATUS OEMStyleFrameDrawable( FRAME_DATA *frame );
+VOID OEMStyleInit( VOID );
+VOID OEMStyleExit( VOID );
+VOID OEMStyleDrawPageBorder( UINT32 page );
+VOID OEMDrawScrollBar(FRAME_DATA *frame, UINT32 FirstLine, UINT32 LastLine, UINT32 modVal, UINT32 sizeOfBar, UINT32 numOfBlocks, BOOLEAN bEraseScrollBar);
+VOID OEMDrawHelpScrollBar( MEMO_DATA *memo, UINT16 height);
+VOID *OEMStyleGetFrameInitData( UINT32 page, UINT32 frame );
+EFI_STATUS OEMStyleFrameHandleKey( FRAME_DATA *frame, EFI_INPUT_KEY Key );
+EFI_STATUS OEMStyleHandleControlOverflow( FRAME_DATA *frame, CONTROL_DATA *control, UINT16 count );
+EFI_STATUS OEMStyleInitializeFrame( FRAME_DATA *frame, UINT32 frameType, PAGE_INFO *data );
+UINT16 OEMStyleGetNavToken( UINT32 page );
+EFI_STATUS OEMStyleAddAdditionalControls( FRAME_DATA *frame, UINT32 controlNumber, BOOLEAN focus );
+UINT16 OEMStyleLanguagePage( SUBMENU_DATA *submenu );
+UINT16 OEMStyleBootManagerPage( SUBMENU_DATA *submenu );
+VOID OEMStyleLabelCallback( FRAME_DATA *frame, LABEL_DATA *label, VOID *cookie );
+VOID OEMStyleSelectFirstDisplayPage( VOID );
+VOID OEMStyleAddExtraPagesData(VOID);
+UINTN OEMStyleGetTextMode( UINTN Rows, UINTN Cols );
+VOID OEMStyleUpdateVersionString( VOID );
+VOID OEMStyleFrameSetControlPositions(FRAME_DATA *frame, UINT32 *pOtherEnd);
+VOID OEMOverRideComponent(VOID);
+VOID OEMStylePageItemFocus(PAGE_DATA *page, FRAME_DATA *frame );
+VOID OEMStyleSubPageItemFocus(PAGE_DATA *page, FRAME_DATA *frame );
+
+#endif /* _STYLE_H_ */
+//*****************************************************************//
+//*****************************************************************//
+//** **//
+//** (C)Copyright 1985-2011, American Megatrends, Inc. **//
+//** **//
+//** All Rights Reserved. **//
+//** **//
+//** 5555 Oakbrook Pkwy , Norcross, GA 30071 **//
+//** **//
+//** Phone: (770)-246-8600 **//
+//** **//
+//*****************************************************************//
+//*****************************************************************//
diff --git a/EDK/MiniSetup/Legacy/stylecommon.c b/EDK/MiniSetup/Legacy/stylecommon.c
new file mode 100644
index 0000000..86f0d3d
--- /dev/null
+++ b/EDK/MiniSetup/Legacy/stylecommon.c
@@ -0,0 +1,1362 @@
+//*****************************************************************//
+//*****************************************************************//
+//*****************************************************************//
+//** **//
+//** (C)Copyright 1985-2013, American Megatrends, Inc. **//
+//** **//
+//** All Rights Reserved. **//
+//** **//
+//** 5555 Oakbrook Pkwy , Norcross, GA 30071 **//
+//** **//
+//** Phone: (770)-246-8600 **//
+//** **//
+//*****************************************************************//
+//*****************************************************************//
+//*****************************************************************//
+// $Archive: /Alaska/SOURCE/Modules/AMITSE2_0/AMITSE/Legacy/stylecommon.c $
+//
+// $Author: Rajashakerg $
+//
+// $Revision: 12 $
+//
+// $Date: 3/16/13 2:20a $
+//
+//*****************************************************************//
+//*****************************************************************//
+// Revision History
+// ----------------
+// $Log: /Alaska/SOURCE/Modules/AMITSE2_0/AMITSE/Legacy/stylecommon.c $
+//
+// 12 3/16/13 2:20a Rajashakerg
+// [TAG] EIP111479
+// [Category] Bug Fix
+// [Severity] Normal
+// [Symptom] BIOS dialog box is crashed with special
+// monitor(160,53,1280*1024)
+// [RootCause] DesiredTextMode was not set properly.
+// [Solution] Provided proper mode number while setting text mode.
+// [Files] postmgmtext.c, Ezport\stylecommon.c,
+// EzportPlus\stylecommon.c, Legacy\stylecommon.c
+//
+// 11 2/10/13 11:55p Rajashakerg
+// [TAG] EIP104521
+// [Category] Improvement
+// [Description] Customer needs AMITSE modification to popup boxes so
+// highlighted choices can be seen via VT100 console redirection
+// [Files] AMITSE.sdl, CommonHelper.c, Ezport\stylecommon.c,
+// EzportPlus\stylecommon.c, Legacy\stylecommon.c
+//
+// 10 10/18/12 6:06a Arunsb
+// Updated for 2.16.1235 QA submission
+//
+// 3 10/10/12 12:42p Arunsb
+// Synched the source for v2.16.1232, backup with Aptio
+//
+// 8 9/17/12 6:26a Rajashakerg
+// Updated EIP changes for 2.16 release.
+//
+// 6 8/29/12 4:27p Arunsb
+// [TAG] EIP94702
+// [Description] Support for Native Resolution in POST/BOOT
+// [Files] amitse.sdl, commonhelper.c, commonoem.c, boot.c, logo.c,
+// notify.c, postmgmt.c, tselite\minisetupext.c, ezport/stylecommon.c,
+// ezportplus/stylecommon.c andlegacy/stylecommon.c
+//
+// 5 4/03/12 3:03a Premkumara
+// [TAG] EIP84150
+// [Category] Bug Fix
+// [Severity] Normal
+// [Symptom] All the timers for mouse drivers before exiting from setup
+// is not stopped
+// [RootCause] MouseDestroy() is not called StopPointingDevice()
+// function to stop Mouse device
+// [Solution] StopPointingDevice() function is called in MouseDestroy()
+// function
+// [Files] Mouse.c, Protocol.c, Ezport/StyleCommon.c,
+// EzportPlus/StyleCommon.c, Legacy/StyleCommon.c, Minisetupext.c
+//
+// 4 11/28/11 1:34a Premkumara
+// [TAG] EIP75384
+// [Category] Improvement
+// [Description] Suppress the warnings from static code analyzer
+// [Files] UefiWapper.c, Hii.c, Expression.c, CtrlCond.c, PopupSel.c,
+// Minisetupext.c, Menu.c, Date.c, Ezport\Stylecommon.c,
+// EzportPlus\StyleCommon.c,
+//
+// 3 11/14/11 6:55p Blaines
+// [TAG] - EIP 75486
+// [Category]- Function Request
+// [Synopsis]- Support grayout condition for readonly controls.
+// [Description] - Display readonly controls as grayout, non-selectable.
+// [Files]
+// AMITSE.sdl, CommonHelper.c, Minisetupext.h, stylecommon.c, Legacy.c,
+// date.c, edit.c, label.c, memo.c, menu.c,, numeric.c, ordlistbox.c,
+// PopupPassword.c,
+// PopupSel.c, PopupString.c, ResetButton.c, SubMenu.c, Text.c, Time.c,
+// UefiAction.c, ctrlcond.c,
+//
+// 2 11/09/11 10:04a Premkumara
+// [TAG] EIP74375
+// [Category] Improvement
+// [Description] Control STYLE_HELP_AREA_SCROLLBAR from binary
+// [Files] CommonHelper.c, AMITSE.sdl, StyleHook.h,
+// Legacy\StyleCommon.c, Legacy.sdl,
+// EzportPlus\StyleCommon.c, EzportPlus.sdl, Ezport\StyleCommon.c,
+// Ezport.sdl
+//
+// 1 3/28/11 11:52p Madhans
+// [TAG] EIP54968
+// [Category] Improvement
+// [Description] To Support different style modules in TSE generically
+// [Files] Ezport module updated. EzportPlus and Legacy Styles Modules
+// added.
+//
+// 1 9/16/10 6:37p Blaines
+//
+// 1 9/16/10 6:32p Blaines
+//
+// 10 3/31/10 11:40a Blaines
+// Remove the hook StyleFrameAddControl
+//
+// 9 3/23/10 5:10p Blaines
+// Add new style module hooks
+//
+// 8 2/19/10 8:15a Mallikarjunanv
+// updated year in copyright message
+//
+// 7 2/05/10 6:04p Madhans
+// Mouse action override from Style Module.
+//
+// 6 11/09/09 4:44a Mallikarjunanv
+// Eip-30111 : fixed the issue to update the help if
+// STYLE_PAGE_FIRSTITEM_FOCUS token enabled.
+//
+// 5 8/18/09 6:35p Blaines
+// Support additional date styles
+//
+// 4 8/13/09 1:24p Blaines
+// EIP #24980 Fix to properly display right area text;
+//
+//
+// 3 6/23/09 6:54p Blaines
+// Coding standard update,
+// Remove spaces from file header to allow proper chm function list
+// creation.
+//
+// 2 6/12/09 2:36p Blaines
+// Update coding standard
+//
+// 1 6/04/09 8:05p Madhans
+//
+// 4 5/20/09 3:37p Blaines
+// Add functions to access date format and Scroll behavior
+//
+// 3 5/18/09 12:18p Blaines
+// Fix Help Frame text scroll
+// Add OEM Style override prototype declarations
+//
+// 2 5/07/09 10:35a Madhans
+// Changes after Bin module
+//
+// 1 4/28/09 11:15p Madhans
+// Tse 2.0 Code complete Checkin.
+//
+// 4 4/28/09 9:39p Madhans
+// Tse 2.0 Code complete Checkin.
+//
+// 3 4/24/09 9:35p Blaines
+//
+// 1 12/18/08 7:59p Madhans
+// Intial version of TSE Lite sources
+//*****************************************************************//
+//*****************************************************************//
+//<AMI_FHDR_START>
+//
+// Name: stylecommon.c
+//
+// Description: Contains generic or default style functions.
+//
+//<AMI_FHDR_END>
+//**********************************************************************
+#include "minisetup.h"
+
+#if SETUP_STYLE_LEGACY
+
+
+VOID _StyleControlSubmenu( CONTROL_INFO *control, UINT16 pageID, VOID *ref );
+VOID UpdatePageFocusedItemHelp(PAGE_DATA *page);
+//<AMI_PHDR_START>
+//--------------------------------------------------------------------------
+//
+// Name: StyleControlColor
+//
+// Description: Adds controls to the frame
+//
+// Input: FRAME_DATA *frame - Pointer to the frame data
+// STYLECOLORS Colors - Color scheme
+//
+// Output: EFI_STATUS Status - EFI_SUCCESS if successful, else
+// EFI_UNSUPPORTED
+//
+//--------------------------------------------------------------------------
+//<AMI_PHDR_END>
+EFI_STATUS StyleControlColor(FRAME_DATA *frame, STYLECOLORS *Colors)
+{
+ //The goal here is to allow controls to match the BGColor of their frame.
+ //Normally this is handled in StyleInitializeFrame(), before controls are added to the frame.
+ //But this function is called dynamically during runtime (after pages/frames/controls are styled)
+ //Since controls derive their colors from [STYLECOLORS Colors],
+ //we'll temporarly modify it before controls are added to this frame, then restore it.
+
+ EFI_STATUS Status = EFI_SUCCESS;
+
+ #ifdef STYLE_OEM_CONTROL_COLOR
+ Status = OEMControlColor(frame, Colors);
+ #else
+ #ifdef STYLE_CONTROL_COLOR
+ Status = OverRideControlColor(frame, Colors);
+ #else
+
+
+ if(LABEL_FOCUS_COLOR != FOCUS_COLOR)
+ Colors->LabelFGColor = LABEL_FOCUS_COLOR ;
+
+ if(CONTROL_FOCUS_COLOR != FOCUS_COLOR)
+ Colors->SelFGColor = CONTROL_FOCUS_COLOR;
+
+ if(LABEL_NON_FOCUS_COLOR != NON_FOCUS_COLOR)
+ Colors->NSelLabelFGColor = LABEL_NON_FOCUS_COLOR ;
+
+ if(CONTROL_NON_FOCUS_COLOR != NON_FOCUS_COLOR)
+ Colors->NSelFGColor = CONTROL_NON_FOCUS_COLOR ;
+
+ Colors->SelBGColor = CONTROL_FOCUS_BGCOLOR ;
+ Colors->EditBGColor = CONTROL_FOCUS_BGCOLOR ;
+
+
+ #endif
+
+ #endif
+
+ return Status ;
+}
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+// Procedure: StyleGetSpecialColor
+//
+// Description: Function to get control special color
+//
+// Input: UINT16 ControlType, UINT8 *Color
+//
+// Output: status
+//
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+EFI_STATUS StyleGetSpecialColor( UINT16 ControlType, UINT8 *Color)
+{
+ EFI_STATUS Status = EFI_SUCCESS;;
+
+ #ifdef STYLE_OEM_CONTROL_COLOR
+ Status = OEMGetSpecialColor(ControlType, Color);
+ #else
+
+
+ switch ( ControlType )
+ {
+ case CONTROL_TYPE_MEMO:
+ if (Color !=NULL) *Color = MEMO_COLOR ;
+ break;
+
+ case CONTROL_TYPE_TEXT:
+ if (Color !=NULL) *Color = TEXT_COLOR ;
+ break;
+
+ default:
+ Status = EFI_UNSUPPORTED;;
+ break;
+ }
+ #endif
+
+ return Status ;
+}
+
+VOID GetMessageboxColorHook(UINT8 **Color);
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+// Procedure: StyleGetMessageboxColor
+//
+// Description: Function to get control Messagebox color
+//
+// Input: UINT16 ControlType, UINT8 *Color
+//
+// Output: status
+//
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+EFI_STATUS StyleGetMessageboxColor( UINT8 MessageBoxType, UINT8 *Color)
+{
+ EFI_STATUS Status = EFI_SUCCESS;;
+
+ if(Color == NULL)
+ return Status ;
+
+
+ switch ( MessageBoxType )
+ {
+ case MSGBOX_EX_CATAGORY_HELP:
+ *Color = POPUP_BGCOLOR | POPUP_FGCOLOR ;
+ break;
+
+ case MSGBOX_EX_CATAGORY_QUERY:
+ *Color = EFI_BACKGROUND_BLUE | EFI_WHITE ;
+ break;
+
+ case MSGBOX_EX_CATAGORY_SUCCESS:
+ *Color = EFI_BACKGROUND_GREEN | EFI_WHITE ;
+ break;
+
+ case MSGBOX_EX_CATAGORY_WARNING:
+ *Color = EFI_BACKGROUND_RED | EFI_WHITE ;
+ break;
+
+ case MSGBOX_EX_CATAGORY_ERROR:
+ *Color = EFI_BACKGROUND_RED | EFI_WHITE ;
+ break;
+
+ case MSGBOX_EX_CATAGORY_PROGRESS:
+ *Color = EFI_BACKGROUND_LIGHTGRAY | EFI_WHITE ;
+ break;
+
+ case MSGBOX_EX_CATAGORY_HALT:
+ *Color = EFI_BACKGROUND_LIGHTGRAY | EFI_WHITE ;
+ break;
+
+ case MSGBOX_EX_CATAGORY_NORMAL:
+
+ default:
+ *Color = EFI_BACKGROUND_BLUE | EFI_WHITE ;
+
+ break;
+ }
+
+ GetMessageboxColorHook(&Color);
+ return Status ;
+}
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+// Procedure: StyleBeforeFrame
+//
+// Description: Function to alter frame styling before frame is drawn
+//
+// Input: FRAME_DATA *frame
+//
+// Output: VOID
+//
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+VOID StyleBeforeFrame( FRAME_DATA *frame )
+{
+ #ifdef STYLE_OEM_BEFORE_FRAME
+ OEMStyleBeforeFrame(frame);
+ #else
+ #ifdef STYLE_OVERRIDE_BEFORE_FRAME // from alternate1.h
+ OverRideStyleBeforeFrame(frame ); // From alternate1.c
+ #endif
+
+ #endif
+}
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+// Procedure: StyleUpdateFrameStrings
+//
+// Description: Function to update frame strings
+//
+// Input: PAGE_DATA *page
+//
+// Output: VOID
+//
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+VOID StyleUpdateFrameStrings( PAGE_DATA *page )
+{
+ #ifdef STYLE_OEM_FRAME_TOKEN // SDL
+ OEMStyleUpdateFrameStrings(page); // OEM
+ #else
+ #ifdef STYLE_OVERRIDE_FRAME_TOKEN // from Ezport.h
+ OverRideStyleUpdateFrameStrings(page ); // From ezport.c
+ #endif
+ #endif
+}
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+// Procedure: StyleFrameDrawable
+//
+// Description: Function to determine if frame is drawable
+//
+// Input: FRAME_DATA *frame
+//
+// Output: EFI_STATUS
+//
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+EFI_STATUS StyleFrameDrawable( FRAME_DATA *frame )
+{
+ EFI_STATUS Status = EFI_SUCCESS;
+
+ #ifdef STYLE_OEM_FRAME_DRAWABLE // SDL
+ Status = OEMStyleFrameDrawable(frame); // OEM
+ #else
+ #ifdef STYLE_OVERRIDE_FRAME_DRAWABLE // from Ezport.h
+ Status = OverRideStyleFrameDrawable(frame ); // From ezport.c
+ #endif
+ #endif
+
+ return Status ;
+}
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+// Procedure: StyleInit
+//
+// Description: Function to initialize style
+//
+// Input: VOID
+//
+// Output: VOID
+//
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+VOID StyleInit( VOID )
+{
+ SetDesiredTextMode();
+ OverRideStyleInit(); // From ezport.c
+
+#ifdef STYLE_OEM_INIT // SDL
+ OEMStyleInit(); // OEM
+#endif
+ MouseInit(); //EIP-84150
+}
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+// Procedure: StyleExit
+//
+// Description: Function to do style initialization on exit
+//
+// Input: VOID
+//
+// Output: VOID
+//
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+VOID StyleExit( VOID )
+{
+ #ifdef STYLE_OEM_STYLE_EXIT // SDL
+ OEMStyleExit(); // OEM
+ #else
+ #ifdef STYLE_OVERRIDE_EXIT // from Ezport.h
+ OverRideStyleExit(); // From ezport.c
+ #endif
+ #endif
+ MouseDestroy(); //EIP-84150
+}
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+// Procedure: StyleDrawPageBorder
+//
+// Description: Function to draw the page border
+//
+// Input: UINT32 page number
+//
+// Output: VOID
+//
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+VOID StyleDrawPageBorder( UINT32 page )
+{
+ #ifdef STYLE_OEM_PAGE_BORDER // SDL
+ OEMStyleDrawPageBorder(page); // OEM
+ #else
+ #ifdef STYLE_OVERRIDE_PAGE_BORDER // from Ezport.h
+ OverRideStyleDrawPageBorder(page); // From ezport.c
+ #else
+ ClearScreen( EFI_BACKGROUND_BLUE | EFI_WHITE );
+ #endif
+ #endif
+
+}
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+// Procedure: StyleDrawScrollBar
+//
+// Description: Function to draw the frame scrollbar
+//
+// Input: FRAME_DATA *frame, UINT32 FirstLine, UINT32 LastLine, UINT32 modVal, UINT32 sizeOfBar, UINT32 numOfBlocks, BOOLEAN bEraseScrollBar
+//
+// Output: VOID
+//
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+VOID StyleDrawScrollBar(FRAME_DATA *frame, UINT32 FirstLine, UINT32 LastLine, UINT32 modVal,
+ UINT32 sizeOfBar, UINT32 numOfBlocks, BOOLEAN bEraseScrollBar)
+{
+ #ifdef STYLE_OEM_SCROLLBAR
+ OEMDrawScrollBar(frame, FirstLine, LastLine, modVal, sizeOfBar, numOfBlocks, bEraseScrollBar);
+ #else
+ #ifdef STYLE_OVERRIDE_SCROLLBAR
+ LegacyFrameDrawScrollBar(frame, FirstLine, LastLine, modVal, sizeOfBar, numOfBlocks, bEraseScrollBar);
+ #else
+ FrameDrawScrollBar(frame, FirstLine, LastLine, modVal, sizeOfBar, numOfBlocks, bEraseScrollBar);
+ #endif
+ #endif
+
+}
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+// Procedure: StyleDrawHelpScrollBar
+//
+// Description: Function to draw the help frame scrollbar
+//
+// Input: MEMO_DATA *memo, UINT16 height
+//
+// Output: VOID
+//
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+VOID StyleDrawHelpScrollBar( MEMO_DATA *memo, UINT16 height)
+{
+ #ifdef STYLE_OEM_DRAW_HELP_SCROLLBAR
+ OEMDrawHelpScrollBar(memo, height);
+ #else
+ #ifdef STYLE_OVERRIDE_HELP_SCROLLBAR
+ OverRideDrawHelpScrollBar(memo, height);
+ #else
+ if(IsHelpAreaScrollBarSupport())
+ MemoDrawScrollBar(memo, height);
+ #endif
+ #endif
+
+}
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+// Procedure: StyleGetFrameInitData
+//
+// Description: Function to get frame initialization data
+//
+// Input: UINT32 page number, UINT32 frame number
+//
+// Output: VOID
+//
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+VOID *StyleGetFrameInitData( UINT32 page, UINT32 frame )
+{
+ #ifdef STYLE_OEM_FRAME_INIT_DATA
+ return OEMStyleGetFrameInitData(page, frame);
+ #else
+ #ifdef STYLE_OVERRIDE_FRAME_INIT_DATA // from Ezport.h
+ return OverRideStyleGetFrameInitData(page, frame); // From ezport.c
+ #else
+ return NULL;
+ #endif
+ #endif
+
+}
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+// Procedure: StyleFrameHandleKey
+//
+// Description: Function to handle frame action keys
+//
+// Input: FRAME_DATA *frame, EFI_INPUT_KEY Key
+//
+// Output: EFI_STATUS
+//
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+EFI_STATUS StyleFrameHandleKey( FRAME_DATA *frame, EFI_INPUT_KEY Key )
+{
+ EFI_STATUS Status = EFI_UNSUPPORTED;;
+
+ #ifdef STYLE_OEM_HANDLE_KEY // SDL
+ Status = OEMStyleFrameHandleKey(frame, Key); // OEM
+ #else
+ #ifdef STYLE_OVERRIDE_HANDLE_KEY // from Ezport.h
+ Status = OverRideStyleFrameHandleKey(frame, Key); // From ezport.c
+ #endif
+ #endif
+
+ return Status ;
+}
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+// Procedure: StyleFrameHandleMouse
+//
+// Description: Function to handle frame using mouse
+//
+// Input: FRAME_DATA *frame,
+// MOUSE_INFO MouseInfo
+//
+// Output: EFI_STATUS
+//
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+EFI_STATUS StyleFrameHandleMouse( FRAME_DATA *frame, MOUSE_INFO MouseInfo)
+{
+ EFI_STATUS Status = EFI_UNSUPPORTED;;
+
+ #ifdef STYLE_OEM_HANDLE_MOUSE
+ Status = OEMStyleFrameHandleMouse(frame, MouseInfo);
+ #else
+ #ifdef STYLE_OVERRIDE_HANDLE_MOUSE
+ Status = OverRideStyleFrameHandleMouse(frame, MouseInfo);
+ #endif
+ #endif
+
+ return Status ;
+}
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+// Procedure: StyleFrameHandleTimer
+//
+// Description: Function to handle frame timer action
+//
+// Input: FRAME_DATA *frame, ACTION_DATA *action
+//
+// Output: EFI_STATUS
+//
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+EFI_STATUS StyleFrameHandleTimer( FRAME_DATA *frame, ACTION_DATA *action )
+{
+ EFI_STATUS Status = EFI_UNSUPPORTED;;
+
+ #ifdef STYLE_OEM_HANDLE_TIMER
+ Status = OEMStyleFrameHandleTimer(frame, action);
+ #else
+ #ifdef STYLE_OVERRIDE_HANDLE_TIMER
+ Status = OverRideStyleFrameHandleTimer(frame, action);
+ #endif
+ #endif
+
+ return Status ;
+}
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+// Procedure: StyleHandleControlOverflow
+//
+// Description: Function to handle control overflow
+//
+// Input: FRAME_DATA *frame, CONTROL_DATA *control, UINT16 count
+//
+// Output: EFI_STATUS
+//
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+EFI_STATUS StyleHandleControlOverflow( FRAME_DATA *frame, CONTROL_DATA *control, UINT16 count )
+{
+ EFI_STATUS Status = EFI_OUT_OF_RESOURCES;
+
+ #ifdef STYLE_OEM_CONTROL_OVERFLOW
+ Status = OEMStyleHandleControlOverflow(frame, control, count );
+ #else
+ #ifdef STYLE_OVERRIDE_CONTROL_OVERFLOW
+ Status = OverRideStyleHandleControlOverflow(frame, control, count );
+ #endif
+ #endif
+
+ return Status ;
+
+}
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+// Procedure: StyleInitializeFrame
+//
+// Description: Function to Initialize frame
+//
+// Input: FRAME_DATA *frame, UINT32 frameType, PAGE_INFO *data
+//
+// Output: EFI_STATUS
+//
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+EFI_STATUS StyleInitializeFrame( FRAME_DATA *frame, UINT32 frameType, PAGE_INFO *data )
+{
+ EFI_STATUS Status = EFI_SUCCESS;;
+
+ #ifdef STYLE_OEM_INITIALIZE_FRAME
+ Status = OEMStyleInitializeFrame(frame, frameType, data );
+ #else
+ #ifdef STYLE_OVERRIDE_INITIALIZE_FRAME
+ Status = OverRideStyleInitializeFrame(frame, frameType, data); //style.c
+ #endif
+ #endif
+
+ return Status ;
+
+}
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+// Procedure: StyleGetNavToken
+//
+// Description: Function to get navigation token
+//
+// Input: UINT32 page
+//
+// Output: UINT16 token number
+//
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+UINT16 StyleGetNavToken( UINT32 page )
+{
+ UINT16 i=0 ;
+
+ #ifdef STYLE_OEM_NAV_TOKEN
+ i = OEMStyleGetNavToken(page );
+ #else
+ #ifdef STYLE_OVERRIDE_NAV_TOKEN
+ i = OverRideStyleGetNavToken(page);
+ #endif
+ #endif
+
+ return i ;
+}
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+// Procedure: StyleAddAdditionalControls
+//
+// Description: Function to add additinal controls
+//
+// Input: FRAME_DATA *frame, UINT32 controlNumber, BOOLEAN focus
+//
+// Output: EFI_STATUS
+//
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+EFI_STATUS StyleAddAdditionalControls( FRAME_DATA *frame, UINT32 controlNumber, BOOLEAN focus )
+{
+ EFI_STATUS Status = EFI_SUCCESS;
+
+ #ifdef STYLE_OEM_ADD_CONTROLS
+ Status = OEMStyleAddAdditionalControls(frame, controlNumber, focus );
+ #else
+ #ifdef STYLE_OVERRIDE_ADD_CONTROLS
+ Status = OverRideStyleAddAdditionalControls(frame, controlNumber, focus);
+ #endif
+ #endif
+
+ return Status ;
+}
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+// Procedure: StyleLanguagePage
+//
+// Description: Function to set Language page
+//
+// Input: SUBMENU_DATA *submenu
+//
+// Output: UINT16 page number
+//
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+UINT16 StyleLanguagePage( SUBMENU_DATA *submenu )
+{
+ UINT16 i = 0 ;
+
+ #ifdef STYLE_OEM_LANGUAGE_PAGE
+ i = OEMStyleLanguagePage(submenu );
+ #else
+ #ifdef STYLE_OVERRIDE_LANGUAGE_PAGE
+ i = OverRideStyleLanguagePage(submenu);
+ #endif
+ #endif
+
+ return i ;
+}
+
+
+
+static UINT16 _gBootManagerPageID = 0;
+/*static*/ UINT16 _gHDOrderPageID = 0;
+/*static*/ UINT16 _gCDOrderPageID = 0;
+/*static*/ UINT16 _gFDOrderPageID = 0;
+/*static*/ UINT16 _gNetOrderPageID = 0;
+/*static*/ UINT16 _gBevOrderPageID = 0;
+
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+// Procedure: StyleBootManagerPage
+//
+// Description: Function to set boot manager page
+//
+// Input: SUBMENU_DATA *submenu
+//
+// Output: UINT16 page number
+//
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+UINT16 StyleBootManagerPage( SUBMENU_DATA *submenu )
+{
+ UINT16 i = 0 ;
+
+ #ifdef STYLE_OEM_BM_PAGE
+ i = OEMStyleBootManagerPage(submenu );
+ #else
+ #ifdef STYLE_OVERRIDE_BM_PAGE
+ i = OverRideStyleBootManagerPage(submenu);
+ #endif
+ #endif
+
+ return i ;
+}
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+// Procedure: StyleLabelCallback
+//
+// Description: Function to set label callback
+//
+// Input: FRAME_DATA *frame, LABEL_DATA *label, VOID *cookie
+//
+// Output: VOID
+//
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+VOID StyleLabelCallback( FRAME_DATA *frame, LABEL_DATA *label, VOID *cookie )
+{
+ #ifdef STYLE_OEM_LABEL_CALLBACK
+ OEMStyleLabelCallback(frame, label, cookie );
+ #else
+ #ifdef STYLE_OVERRIDE_LABEL_CALLBACK
+ OverRideStyleLabelCallback(frame, label, cookie );
+ #endif
+ #endif
+}
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+// Procedure: StyleSelectFirstDisplayPage
+//
+// Description: Function to set the first display page
+//
+// Input: VOID
+//
+// Output: VOID
+//
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+VOID StyleSelectFirstDisplayPage( VOID )
+{
+ #ifdef STYLE_OEM_FIRST_PAGE
+ OEMStyleSelectFirstDisplayPage();
+ #else
+ #ifdef STYLE_OVERRIDE_FIRST_PAGE
+ OverRideStyleSelectFirstDisplayPage();
+ #endif
+ #endif
+}
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+// Procedure: StyleAddExtraPagesData
+//
+// Description: Function to add extra pages
+//
+// Input: VOID
+//
+// Output: VOID
+//
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+VOID StyleAddExtraPagesData(VOID)
+{
+ #ifdef STYLE_OEM_ADD_EXTRA_PAGES
+ OEMStyleAddExtraPagesData();
+ #else
+ #ifdef STYLE_OVERRIDE_ADD_EXTRA_PAGES
+ OverRideStyleAddExtraPagesData();
+ #endif
+ #endif
+}
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+// Procedure: StyleGetTextMode
+//
+// Description: Function to get text mode
+//
+// Input: UINTN Rows, UINTN Cols
+//
+// Output: UNNTN mode
+//
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+UINTN StyleGetTextMode( UINTN Rows, UINTN Cols )
+{
+ EFI_STATUS Status;
+ INT32 i;
+ UINTN ModeRows, ModeCols;
+
+ #ifdef STYLE_OEM_GET_TEXT_MODE
+ i = OEMStyleGetTextMode( Rows, Cols );
+ #else
+ #ifdef STYLE_OVERRIDE_GET_TEXT_MODE
+ i = OverRideStyleGetTextMode( Rows, Cols);
+ #else
+ // Default Implementation
+ for ( i = 0; i < gST->ConOut->Mode->MaxMode; i++ )
+ {
+ Status = gST->ConOut->QueryMode( gST->ConOut, i, &ModeCols, &ModeRows );
+ if ( EFI_ERROR( Status ) )
+ continue;
+
+ if ( ( Cols == ModeCols ) && ( Rows == ModeRows ) )
+ return i;
+ }
+
+ // return MaxMode if the mode wasn't found
+ #endif
+ #endif
+
+ return i;
+}
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+// Procedure: StyleUpdateVersionString
+//
+// Description: Function to set the version string
+//
+// Input: VOID
+//
+// Output: VOID
+//
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+VOID StyleUpdateVersionString( VOID )
+{
+ #ifdef STYLE_OEM_VERSION_STRING
+ OEMStyleUpdateVersionString();
+ #else
+ #ifdef STYLE_OVERRIDE_VERSION_STRING
+ OverRideStyleUpdateVersionString();
+ #endif
+ #endif
+}
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+// Procedure: StyleFrameSetControlPositions
+//
+// Description: Function to set control positioning in a frame
+//
+// Input: FRAME_DATA *frame, UINT32 *pOtherEnd
+//
+// Output: VOID
+//
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+VOID StyleFrameSetControlPositions(FRAME_DATA *frame, UINT32 *pOtherEnd)
+{
+ UINT32 u32Height = 0;
+ UINT32 i;
+ CONTROL_DATA *control;
+ UINT8 u8ChkResult;
+
+ #ifdef STYLE_OEM_FRAME_CONTROL_POSITION
+ OEMStyleFrameSetControlPositions(frame, pOtherEnd);
+ #else
+ #ifdef STYLE_OVERRIDE_FRAME_CONTROL_POSITION
+ OverRideStyleFrameSetControlPositions(frame, pOtherEnd);
+ #else
+ if(frame->PageID != 0 )
+ {
+ //Move reference end variable based on action
+ if(pOtherEnd == &(frame->LastVisibleCtrl))
+ {
+ i = frame->FirstVisibleCtrl;
+ }
+ else
+ {
+ i = frame->LastVisibleCtrl;
+ }
+
+ //Calculate other end variable
+ while( (pOtherEnd == &(frame->LastVisibleCtrl)) ? (i < frame->ControlCount) : TRUE )
+ {
+ control = frame->ControlList[i];
+
+ //EIP 75486 Support grayout condition for readonly controls
+ u8ChkResult = CheckControlCondition( &(control->ControlData) );
+
+ if((COND_NONE == u8ChkResult) || (COND_GRAYOUT == u8ChkResult))
+ {
+ if( (u32Height + control->Height) < frame->FrameData.Height )
+ {
+ *pOtherEnd = i;
+ u32Height += control->Height;
+ }
+ else
+ break; //We cant accommodate
+ }
+
+ if(pOtherEnd == &(frame->LastVisibleCtrl))
+ i++;
+ else
+ {
+ // i>=0 in while loop will result in infinite loop
+ // break statement should be introduced inside
+ if (i == 0)
+ break;
+ i--;
+ }
+ }
+ }
+ else
+ {
+ // frame is double sided in alternate1, let it be drawn
+ frame->FirstVisibleCtrl=0;
+ frame->LastVisibleCtrl = frame->ControlCount -1;
+ }
+
+ #endif
+ #endif
+
+}
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+// Procedure: StyleOverRideComponent
+//
+// Description: Function to override component or control functionality
+//
+// Input: VOID
+//
+// Output: VOID
+//
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+VOID StyleOverRideComponent(VOID)
+{
+ #ifdef STYLE_OEM_COMPONENT_OVERRIDE // SDL
+ OEMOverRideComponent(); // OEM
+ #else
+ #ifdef STYLE_COMPONENT_OVERRIDE // from Ezport.h
+ OverRideComponent(); // From ezport.c
+ #endif
+ #endif
+}
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+// Procedure: _StyleControlSubmenu
+//
+// Description: Function to initialize submenu control
+//
+// Input: CONTROL_INFO control, UINT16 pageID, VOID *ref
+//
+// Output: VOID
+//
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+VOID _StyleControlSubmenu( CONTROL_INFO *control, UINT16 pageID, VOID *ref )
+{
+ control->ControlHandle = gHiiHandle;
+ control->ControlType = CONTROL_TYPE_SUBMENU;
+ control->ControlFlags.ControlVisible = TRUE;
+ control->ControlPtr = (VOID*)ref;
+ control->ControlPageID = pageID;
+ control->ControlDestPageID = 0;
+}
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+// Procedure: StyleHelpAreaScrollable
+//
+// Description: Function to get Help area scroll support
+//
+// Input: VOID
+//
+// Output: BOOLEAN
+//
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+BOOLEAN StyleHelpAreaScrollable(VOID)
+{
+ if(IsHelpAreaScrollBarSupport())
+ return TRUE ;
+ else
+ return FALSE;
+}
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+// Procedure: StyleGetShadowSupport
+//
+// Description: Function to get shadow support
+//
+// Input: VOID
+//
+// Output: BOOLEAN
+//
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+BOOLEAN StyleGetShadowSupport(VOID)
+{
+ if(STYLE_SHADOW_SUPPORT)
+ return TRUE ;
+ else
+ return FALSE;
+}
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+// Procedure: StyleGetScrollBehavior
+//
+// Description: Function to get scroll behavior
+//
+// Input: VOID
+//
+// Output: BOOLEAN
+//
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+BOOLEAN StyleGetScrollBehavior(VOID)
+{
+ return STYLE_SCROLLBAR_ROLLOVER ; // 0 - Item Limit, 1 - Rollover
+
+}
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+// Procedure: StyleGetDateFormat
+//
+// Description: Function to get date format
+//
+// Input: VOID
+//
+// Output: BOOLEAN
+//
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+UINTN StyleGetDateFormat(VOID)
+{
+ #ifdef STYLE_OEM_DATE_FOMAT
+ return OEMStyleGetDateFormat();
+ #else
+ return STYLE_DATE_FORMAT;
+ #endif
+}
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+// Procedure: StyleShowDay
+//
+// Description: Function to show day in date format
+//
+// Input: VOID
+//
+// Output: BOOLEAN
+//
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+BOOLEAN StyleShowDay(VOID)
+{
+ return STYLE_SHOW_DAY ;
+
+}
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+// Procedure: StyleGetStdMaxRows
+//
+// Description: Function to max number of columns
+//
+// Input: VOID
+//
+// Output: STYLE_STD_MAX_ROWS
+//
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+UINTN StyleGetStdMaxRows(VOID)
+{
+ return STYLE_STD_MAX_ROWS;
+}
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+// Procedure: StyleGetStdMaxCols
+//
+// Description: Function to get max number of rows
+//
+// Input: VOID
+//
+// Output: STYLE_STD_MAX_COLS
+//
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+UINTN StyleGetStdMaxCols(VOID)
+{
+ return STYLE_STD_MAX_COLS;
+}
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+// Procedure: StyleGetClearScreenColor
+//
+// Description: Function to Get Clear Screen Color
+//
+// Input: VOID
+//
+// Output: STYLE_CLEAR_SCREEN_COLOR
+//
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+UINTN StyleGetClearScreenColor(VOID)
+{
+ return STYLE_CLEAR_SCREEN_COLOR;
+}
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+// Procedure: StyleGetPageLinkColor
+//
+// Description: Function to PageLink (Submenu) color
+//
+// Input: VOID
+//
+// Output: PAGE_LINK_FGCOLOR
+//
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+UINT8 StyleGetPageLinkColor(VOID)
+{
+ UINT32 PageNum = gApp->CurrentPage ;
+
+ if( PageNum == 0 )
+ return EFI_YELLOW;
+ else
+ return PAGE_LINK_COLOR;
+}
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+// Procedure: StyleGetScrollBarColor
+//
+// Description: Function to get scrollbar color
+//
+// Input: VOID
+//
+// Output: FGCOLOR|BGCOLOR
+//
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+UINT8 StyleGetScrollBarColor(VOID)
+{
+ return (SCROLLBAR_FGCOLOR | SCROLLBAR_BGCOLOR) ;
+}
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+// Procedure: StyleGetScrollBarUpArrowColor
+//
+// Description: Function to get scrollbar UpArrow Color
+//
+// Input: VOID
+//
+// Output: FGCOLOR|BGCOLOR
+//
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+UINT8 StyleGetScrollBarUpArrowColor(VOID)
+{
+ return (SCROLLBAR_UPARROW_FGCOLOR | SCROLLBAR_UPARROW_BGCOLOR) ;
+}
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+// Procedure: StyleGetScrollBarDownArrowColor
+//
+// Description: Function to get scrollbar downarrow color
+//
+// Input: VOID
+//
+// Output: FGCOLOR|BGCOLOR
+//
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+UINT8 StyleGetScrollBarDownArrowColor(VOID)
+{
+ return (SCROLLBAR_DOWNARROW_FGCOLOR | SCROLLBAR_DOWNARROW_BGCOLOR) ;
+}
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+// Procedure: StylePageItemFocus
+//
+// Description: This function is called whenever a user navigates to a new page.
+// OEMs may use this hook to set item focus.
+// The default behavior sets focus to the previously focused page item.
+//
+// Input: PAGE_DATA *page, FRAME_DATA *frame
+//
+// Output: VOID
+//
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+VOID StylePageItemFocus(PAGE_DATA *page, FRAME_DATA *frame )
+{
+
+ #ifdef STYLE_OEM_PAGE_ITEM_FOCUS
+ OEMStylePageItemFocus(page, frame);
+ #else
+ #ifdef STYLE_OVERRIDE_PAGE_ITEM_FOCUS
+ OverRideStylePageItemFocus(page, frame);
+ #else
+ if(STYLE_PAGE_FIRSTITEM_FOCUS)
+ {
+ UINT32 i;
+ for ( i = 0; i < frame->ControlCount; i++ )
+ {
+
+ if ( _FrameSetControlFocus( frame, i ) )
+ {
+ frame->FirstVisibleCtrl = 0;
+ break;
+ }
+ }
+ ///Eip:30111 fix - Update the Help based on the Focussed Item
+ UpdatePageFocusedItemHelp(page);
+ }
+ #endif
+ #endif
+}
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+// Procedure: StyleSubPageItemFocus
+//
+// Description: This function is called whenever a user returns (or navigates back)
+// from a submenu page causing a complete page redraw. OEMs may use this hook to set item focus.
+// The default behavior sets focus to the previously focused page item.
+//
+// Input: PAGE_DATA *page, FRAME_DATA *frame
+//
+// Output: VOID
+//
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+VOID StyleSubPageItemFocus(PAGE_DATA *page, FRAME_DATA *frame )
+{
+ #ifdef STYLE_OEM_SUBPAGE_ITEM_FOCUS // SDL
+ OEMStyleSubPageItemFocus(page, frame); // OEM
+ #else
+ #ifdef STYLE_OVERRIDE_SUBPAGE_ITEM_FOCUS // from Ezport.h
+ OverRideStyleSubPageItemFocus(page, frame); // From ezport.c
+ #else
+ if(STYLE_SUBPAGE_FIRSTITEM_FOCUS)
+ {
+ UINT32 i;
+
+ for ( i = 0; i < frame->ControlCount; i++ )
+ {
+ if ( _FrameSetControlFocus( frame, i ) )
+ {
+ frame->FirstVisibleCtrl = 0;
+ break;
+ }
+ }
+ }
+ #endif
+ #endif
+}
+#endif
+//*****************************************************************//
+//*****************************************************************//
+//** **//
+//** (C)Copyright 1985-2013, American Megatrends, Inc. **//
+//** **//
+//** All Rights Reserved. **//
+//** **//
+//** 5555 Oakbrook Pkwy , Norcross, GA 30071 **//
+//** **//
+//** Phone: (770)-246-8600 **//
+//** **//
+//*****************************************************************//
+//*****************************************************************//