ShellPkg/[hex]edit: use SimpleTextInEx to read console
[mirror_edk2.git] / ShellPkg / Library / UefiShellDebug1CommandsLib / Edit / TextEditorTypes.h
1 /** @file
2 Declares editor types.
3
4 Copyright (c) 2005 - 2018, Intel Corporation. All rights reserved. <BR>
5 This program and the accompanying materials
6 are licensed and made available under the terms and conditions of the BSD License
7 which accompanies this distribution. The full text of the license may be found at
8 http://opensource.org/licenses/bsd-license.php
9
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
12
13 **/
14
15 #ifndef _EDITOR_TYPE_H_
16 #define _EDITOR_TYPE_H_
17
18 #include "UefiShellDebug1CommandsLib.h"
19 #include "EditTitleBar.h"
20 #include "EditMenuBar.h"
21
22 #define MIN_POOL_SIZE 125
23 #define MAX_STRING_LENGTH 127
24
25 typedef struct {
26 UINTN Row;
27 UINTN Column;
28 } EFI_EDITOR_POSITION;
29
30 typedef
31 EFI_STATUS
32 (*EFI_MENU_ITEM_FUNCTION) (
33 VOID
34 );
35
36 typedef enum {
37 NewLineTypeDefault,
38 NewLineTypeLineFeed,
39 NewLineTypeCarriageReturn,
40 NewLineTypeCarriageReturnLineFeed,
41 NewLineTypeLineFeedCarriageReturn,
42 NewLineTypeUnknown
43 } EE_NEWLINE_TYPE;
44
45 #define LINE_LIST_SIGNATURE SIGNATURE_32 ('e', 'e', 'l', 'l')
46 typedef struct _EFI_EDITOR_LINE {
47 UINTN Signature;
48 CHAR16 *Buffer;
49 UINTN Size; // unit is Unicode
50 UINTN TotalSize; // unit is Unicode, exclude CHAR_NULL
51 EE_NEWLINE_TYPE Type;
52 LIST_ENTRY Link;
53 } EFI_EDITOR_LINE;
54
55 typedef struct {
56 UINT32 Foreground : 4;
57 UINT32 Background : 4;
58 } EFI_EDITOR_COLOR_ATTRIBUTES;
59
60 typedef union {
61 EFI_EDITOR_COLOR_ATTRIBUTES Colors;
62 UINTN Data;
63 } EFI_EDITOR_COLOR_UNION;
64
65 typedef struct {
66 UINTN Columns;
67 UINTN Rows;
68 } EFI_EDITOR_TEXT_MODE;
69
70 typedef struct {
71 CHAR16 *FileName; // file name current edited in editor
72 EDIT_FILE_TYPE FileType; // Unicode file or ASCII file
73 LIST_ENTRY *ListHead; // list head of lines
74 EFI_EDITOR_LINE *Lines; // lines of current file
75 UINTN NumLines; // total line numbers
76 EFI_EDITOR_POSITION DisplayPosition; // cursor position in screen
77 EFI_EDITOR_POSITION FilePosition; // cursor position in file
78 EFI_EDITOR_POSITION MousePosition; // mouse position in screen
79 // file position of first byte displayed on screen
80 //
81 EFI_EDITOR_POSITION LowVisibleRange;
82
83 BOOLEAN FileModified; // file is modified or not
84 BOOLEAN ModeInsert; // input mode INS or OVR
85 BOOLEAN ReadOnly; // file is read-only or not
86 EFI_EDITOR_LINE *CurrentLine; // current line cursor is at
87 } EFI_EDITOR_FILE_BUFFER;
88
89 typedef struct {
90 EFI_EDITOR_FILE_BUFFER *FileBuffer;
91
92 EFI_EDITOR_COLOR_UNION ColorAttributes;
93 EFI_EDITOR_POSITION ScreenSize; // row number and column number
94 EFI_EDITOR_LINE *CutLine; // clip board
95 EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *TextInputEx;
96 BOOLEAN MouseSupported;
97 EFI_SIMPLE_POINTER_PROTOCOL *MouseInterface;
98 INT32 MouseAccumulatorX;
99 INT32 MouseAccumulatorY;
100
101 } EFI_EDITOR_GLOBAL_EDITOR;
102
103 #endif