You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
127 lines
3.8 KiB
127 lines
3.8 KiB
4 years ago
|
/** @file
|
||
|
data types that are used by editor
|
||
|
|
||
|
Copyright (c) 2005 - 2018, Intel Corporation. All rights reserved. <BR>
|
||
|
This program and the accompanying materials
|
||
|
are licensed and made available under the terms and conditions of the BSD License
|
||
|
which accompanies this distribution. The full text of the license may be found at
|
||
|
http://opensource.org/licenses/bsd-license.php
|
||
|
|
||
|
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||
|
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||
|
|
||
|
**/
|
||
|
|
||
|
#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
|