blob: 63a1d549659b6bff9c3e0d844cd4c4999b88285d [file] [log] [blame]
/** @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