/** @file data types that are used by editor Copyright (c) 2005 - 2018, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #ifndef _HEDITOR_TYPE_H_ #define _HEDITOR_TYPE_H_ #include "UefiShellDebug1CommandsLib.h" #include "EditTitleBar.h" #define EFI_EDITOR_LINE_LIST SIGNATURE_32 ('e', 'e', 'l', 'l') #define ASCII_POSITION ((0x10 * 3) + 12) typedef struct { UINTN Row; UINTN Column; } HEFI_EDITOR_POSITION; typedef EFI_STATUS (*HEFI_MENU_ITEM_FUNCTION) ( VOID ); typedef struct { CHAR16 Name[50]; CHAR16 Key[3]; HEFI_MENU_ITEM_FUNCTION Function; } HMENU_ITEMS; typedef struct _HEFI_EDITOR_LINE { UINTN Signature; UINT8 Buffer[0x10]; UINTN Size; // unit is Unicode LIST_ENTRY Link; } HEFI_EDITOR_LINE; typedef struct _HEFI_EDITOR_MENU_ITEM { CHAR16 NameToken; CHAR16 FunctionKeyToken; HEFI_MENU_ITEM_FUNCTION Function; } HEFI_EDITOR_MENU_ITEM; typedef struct { UINT32 Foreground : 4; UINT32 Background : 4; } HEFI_EDITOR_COLOR_ATTRIBUTES; typedef union { HEFI_EDITOR_COLOR_ATTRIBUTES Colors; UINTN Data; } HEFI_EDITOR_COLOR_UNION; typedef struct { UINTN Columns; UINTN Rows; } HEFI_EDITOR_TEXT_MODE; typedef struct { CHAR16 *Name; UINTN BlockSize; UINTN Size; UINTN Offset; } HEFI_EDITOR_DISK_IMAGE; typedef struct { EFI_CPU_IO2_PROTOCOL *IoFncs; UINTN Offset; UINTN Size; } HEFI_EDITOR_MEM_IMAGE; typedef struct { CHAR16 *FileName; UINTN Size; // file size BOOLEAN ReadOnly; // file is read-only or not } HEFI_EDITOR_FILE_IMAGE; typedef struct { LIST_ENTRY *ListHead; // list head of lines HEFI_EDITOR_LINE *Lines; // lines of current file UINTN NumLines; // number of lines HEFI_EDITOR_LINE *CurrentLine; // current line cursor is at HEFI_EDITOR_POSITION DisplayPosition; // cursor position in screen HEFI_EDITOR_POSITION MousePosition; // mouse position in screen HEFI_EDITOR_POSITION BufferPosition; // cursor position in buffer UINTN LowVisibleRow; // the lowest visible row of file position BOOLEAN HighBits; // cursor is at the high4 bits or low4 bits BOOLEAN Modified; // BUFFER is modified or not EDIT_FILE_TYPE BufferType; HEFI_EDITOR_FILE_IMAGE *FileImage; HEFI_EDITOR_DISK_IMAGE *DiskImage; HEFI_EDITOR_MEM_IMAGE *MemImage; } HEFI_EDITOR_BUFFER_IMAGE; typedef struct { HEFI_EDITOR_BUFFER_IMAGE *BufferImage; HEFI_EDITOR_COLOR_UNION ColorAttributes; HEFI_EDITOR_POSITION ScreenSize; // row number and column number EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *TextInputEx; BOOLEAN MouseSupported; EFI_SIMPLE_POINTER_PROTOCOL *MouseInterface; INT32 MouseAccumulatorX; INT32 MouseAccumulatorY; UINTN SelectStart; // starting from 1 UINTN SelectEnd; // starting from 1 } HEFI_EDITOR_GLOBAL_EDITOR; #endif