/** @file
|
data types that are used by editor
|
|
Copyright (c) 2005 - 2018, Intel Corporation. All rights reserved. <BR>
|
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
|