REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3737 Apply uncrustify changes to .c/.h files in the ShellPkg package Cc: Andrew Fish <afish@apple.com> Cc: Leif Lindholm <leif@nuviainc.com> Cc: Michael D Kinney <michael.d.kinney@intel.com> Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com> Reviewed-by: Ray Ni <ray.ni@intel.com>
		
			
				
	
	
		
			227 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			227 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /** @file
 | |
|   Implements statusbar interface functions.
 | |
| 
 | |
|   Copyright (c) 2005 - 2018, Intel Corporation. All rights reserved. <BR>
 | |
|   SPDX-License-Identifier: BSD-2-Clause-Patent
 | |
| 
 | |
| **/
 | |
| 
 | |
| #include "EditStatusBar.h"
 | |
| #include "UefiShellDebug1CommandsLib.h"
 | |
| 
 | |
| CHAR16   *StatusString;
 | |
| BOOLEAN  StatusBarNeedRefresh;
 | |
| BOOLEAN  StatusStringChanged;
 | |
| 
 | |
| /**
 | |
|   Initialization function for Status Bar.
 | |
| 
 | |
|   @retval EFI_SUCCESS           The operation was successful.
 | |
|   @retval EFI_OUT_OF_RESOURCES  A memory allocation failed.
 | |
|   @sa StatusBarSetStatusString
 | |
| **/
 | |
| EFI_STATUS
 | |
| StatusBarInit (
 | |
|   VOID
 | |
|   )
 | |
| {
 | |
|   //
 | |
|   // initialize the statusbar
 | |
|   //
 | |
|   StatusString         = NULL;
 | |
|   StatusBarNeedRefresh = TRUE;
 | |
|   StatusStringChanged  = FALSE;
 | |
| 
 | |
|   //
 | |
|   // status string set to ""
 | |
|   //
 | |
|   return (StatusBarSetStatusString (L""));
 | |
| }
 | |
| 
 | |
| /**
 | |
|   Cleanup function for the status bar.
 | |
| **/
 | |
| VOID
 | |
| StatusBarCleanup (
 | |
|   VOID
 | |
|   )
 | |
| {
 | |
|   //
 | |
|   // free the status string and backvar's status string
 | |
|   //
 | |
|   SHELL_FREE_NON_NULL (StatusString);
 | |
| }
 | |
| 
 | |
| typedef struct {
 | |
|   UINT32    Foreground : 4;
 | |
|   UINT32    Background : 3;
 | |
| } STATUS_BAR_COLOR_ATTRIBUTES;
 | |
| 
 | |
| typedef union {
 | |
|   STATUS_BAR_COLOR_ATTRIBUTES    Colors;
 | |
|   UINTN                          Data;
 | |
| } STATUS_BAR_COLOR_UNION;
 | |
| 
 | |
| /**
 | |
|   Cause the status bar to refresh it's printing on the screen.
 | |
| 
 | |
|   @param[in] EditorFirst      TRUE to indicate the first launch of the editor.
 | |
|                               FALSE otherwise.
 | |
|   @param[in] LastRow          LastPrintable row.
 | |
|   @param[in] LastCol          Last printable column.
 | |
|   @param[in] FileRow          Row in the file.
 | |
|   @param[in] FileCol          Column in the file.
 | |
|   @param[in] InsertMode       TRUE to indicate InsertMode.  FALSE otherwise.
 | |
| 
 | |
|   @retval EFI_SUCCESS         The operation was successful.
 | |
| **/
 | |
| EFI_STATUS
 | |
| StatusBarRefresh (
 | |
|   IN BOOLEAN  EditorFirst,
 | |
|   IN UINTN    LastRow,
 | |
|   IN UINTN    LastCol,
 | |
|   IN UINTN    FileRow,
 | |
|   IN UINTN    FileCol,
 | |
|   IN BOOLEAN  InsertMode
 | |
|   )
 | |
| {
 | |
|   STATUS_BAR_COLOR_UNION  Orig;
 | |
|   STATUS_BAR_COLOR_UNION  New;
 | |
| 
 | |
|   if (!StatusStringChanged && StatusBarNeedRefresh) {
 | |
|     StatusBarSetStatusString (L"\0");
 | |
|   }
 | |
| 
 | |
|   //
 | |
|   // when it's called first time after editor launch, so refresh is mandatory
 | |
|   //
 | |
|   if (!StatusBarNeedRefresh && !StatusStringChanged) {
 | |
|     return EFI_SUCCESS;
 | |
|   }
 | |
| 
 | |
|   //
 | |
|   // back up the screen attributes
 | |
|   //
 | |
|   Orig.Data             = gST->ConOut->Mode->Attribute;
 | |
|   New.Data              = 0;
 | |
|   New.Colors.Foreground = Orig.Colors.Background & 0xF;
 | |
|   New.Colors.Background = Orig.Colors.Foreground & 0x7;
 | |
| 
 | |
|   gST->ConOut->EnableCursor (gST->ConOut, FALSE);
 | |
|   gST->ConOut->SetAttribute (gST->ConOut, New.Data & 0x7F);
 | |
| 
 | |
|   //
 | |
|   // clear status bar
 | |
|   //
 | |
|   EditorClearLine (LastRow, LastCol, LastRow);
 | |
| 
 | |
|   //
 | |
|   // print row, column fields
 | |
|   //
 | |
|   if ((FileRow != (UINTN)(-1)) && (FileCol != (UINTN)(-1))) {
 | |
|     ShellPrintEx (
 | |
|       0,
 | |
|       (INT32)(LastRow) - 1,
 | |
|       L" %d,%d       %s",
 | |
|       FileRow,
 | |
|       FileCol,
 | |
|       StatusString
 | |
|       );
 | |
|   } else {
 | |
|     ShellPrintEx (
 | |
|       0,
 | |
|       (INT32)(LastRow) - 1,
 | |
|       L"  %s",
 | |
|       StatusString
 | |
|       );
 | |
|   }
 | |
| 
 | |
|   //
 | |
|   // print insert mode field
 | |
|   //
 | |
|   if (InsertMode) {
 | |
|     ShellPrintEx ((INT32)(LastCol) - 21, (INT32)(LastRow) - 1, L"|%s|   Help: Ctrl-E", L"INS");
 | |
|   } else {
 | |
|     ShellPrintEx ((INT32)(LastCol) - 21, (INT32)(LastRow) - 1, L"|%s|   Help: Ctrl-E", L"OVR");
 | |
|   }
 | |
| 
 | |
|   //
 | |
|   // restore the old screen attributes
 | |
|   //
 | |
|   gST->ConOut->SetAttribute (gST->ConOut, Orig.Data);
 | |
| 
 | |
|   //
 | |
|   // restore position in edit area
 | |
|   //
 | |
|   gST->ConOut->EnableCursor (gST->ConOut, TRUE);
 | |
| 
 | |
|   StatusBarNeedRefresh = FALSE;
 | |
|   StatusStringChanged  = FALSE;
 | |
| 
 | |
|   return EFI_SUCCESS;
 | |
| }
 | |
| 
 | |
| /**
 | |
|   Set the status string text part.
 | |
| 
 | |
|   @param[in] Str                The string to use.
 | |
| 
 | |
|   @retval EFI_SUCCESS           The operation was successful.
 | |
|   @retval EFI_OUT_OF_RESOURCES  A memory allocation failed.
 | |
| **/
 | |
| EFI_STATUS
 | |
| StatusBarSetStatusString (
 | |
|   IN CHAR16  *Str
 | |
|   )
 | |
| {
 | |
|   StatusStringChanged = TRUE;
 | |
| 
 | |
|   //
 | |
|   // free the old status string
 | |
|   //
 | |
|   SHELL_FREE_NON_NULL (StatusString);
 | |
|   StatusString = CatSPrint (NULL, L"%s", Str);
 | |
|   if (StatusString == NULL) {
 | |
|     return EFI_OUT_OF_RESOURCES;
 | |
|   }
 | |
| 
 | |
|   return EFI_SUCCESS;
 | |
| }
 | |
| 
 | |
| /**
 | |
|   Function to retrieve the current status string.
 | |
| 
 | |
|   @return The string that is used.
 | |
| **/
 | |
| CONST CHAR16 *
 | |
| StatusBarGetString (
 | |
|   VOID
 | |
|   )
 | |
| {
 | |
|   return (StatusString);
 | |
| }
 | |
| 
 | |
| /**
 | |
|   Function to set the need refresh boolean to TRUE.
 | |
| **/
 | |
| VOID
 | |
| StatusBarSetRefresh (
 | |
|   VOID
 | |
|   )
 | |
| {
 | |
|   StatusBarNeedRefresh = TRUE;
 | |
| }
 | |
| 
 | |
| /**
 | |
|   Function to get the need refresh boolean to TRUE.
 | |
| 
 | |
|   @retval TRUE    The status bar needs to be refreshed.
 | |
| **/
 | |
| BOOLEAN
 | |
| StatusBarGetRefresh (
 | |
|   VOID
 | |
|   )
 | |
| {
 | |
|   return (StatusBarNeedRefresh);
 | |
| }
 |