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