/** @file Declares editor types. Copyright (c) 2005 - 2018, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #ifndef _EDITOR_TYPE_H_ #define _EDITOR_TYPE_H_ #include "UefiShellDebug1CommandsLib.h" #include "EditTitleBar.h" #include "EditMenuBar.h" #define MIN_POOL_SIZE 125 #define MAX_STRING_LENGTH 127 typedef struct { UINTN Row; UINTN Column; } EFI_EDITOR_POSITION; typedef EFI_STATUS (*EFI_MENU_ITEM_FUNCTION) ( VOID ); typedef enum { NewLineTypeDefault, NewLineTypeLineFeed, NewLineTypeCarriageReturn, NewLineTypeCarriageReturnLineFeed, NewLineTypeLineFeedCarriageReturn, NewLineTypeUnknown } EE_NEWLINE_TYPE; #define LINE_LIST_SIGNATURE SIGNATURE_32 ('e', 'e', 'l', 'l') typedef struct _EFI_EDITOR_LINE { UINTN Signature; CHAR16 *Buffer; UINTN Size; // unit is Unicode UINTN TotalSize; // unit is Unicode, exclude CHAR_NULL EE_NEWLINE_TYPE Type; LIST_ENTRY Link; } EFI_EDITOR_LINE; typedef struct { UINT32 Foreground : 4; UINT32 Background : 4; } EFI_EDITOR_COLOR_ATTRIBUTES; typedef union { EFI_EDITOR_COLOR_ATTRIBUTES Colors; UINTN Data; } EFI_EDITOR_COLOR_UNION; typedef struct { UINTN Columns; UINTN Rows; } EFI_EDITOR_TEXT_MODE; typedef struct { CHAR16 *FileName; // file name current edited in editor EDIT_FILE_TYPE FileType; // Unicode file or ASCII file LIST_ENTRY *ListHead; // list head of lines EFI_EDITOR_LINE *Lines; // lines of current file UINTN NumLines; // total line numbers EFI_EDITOR_POSITION DisplayPosition; // cursor position in screen EFI_EDITOR_POSITION FilePosition; // cursor position in file EFI_EDITOR_POSITION MousePosition; // mouse position in screen // file position of first byte displayed on screen // EFI_EDITOR_POSITION LowVisibleRange; BOOLEAN FileModified; // file is modified or not BOOLEAN ModeInsert; // input mode INS or OVR BOOLEAN ReadOnly; // file is read-only or not EFI_EDITOR_LINE *CurrentLine; // current line cursor is at } EFI_EDITOR_FILE_BUFFER; typedef struct { EFI_EDITOR_FILE_BUFFER *FileBuffer; EFI_EDITOR_COLOR_UNION ColorAttributes; EFI_EDITOR_POSITION ScreenSize; // row number and column number EFI_EDITOR_LINE *CutLine; // clip board EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *TextInputEx; BOOLEAN MouseSupported; EFI_SIMPLE_POINTER_PROTOCOL *MouseInterface; INT32 MouseAccumulatorX; INT32 MouseAccumulatorY; } EFI_EDITOR_GLOBAL_EDITOR; #endif