Home | History | Annotate | Download | only in HexEdit
      1 /** @file
      2   data types that are used by editor
      3 
      4   Copyright (c) 2005 - 2011, 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 _HEDITOR_TYPE_H_
     16 #define _HEDITOR_TYPE_H_
     17 
     18 #include "UefiShellDebug1CommandsLib.h"
     19 #include "EditTitleBar.h"
     20 
     21 #define EFI_EDITOR_LINE_LIST  SIGNATURE_32 ('e', 'e', 'l', 'l')
     22 
     23 #define ASCII_POSITION        ((0x10 * 3) + 12)
     24 
     25 
     26 typedef struct {
     27   UINTN Row;
     28   UINTN Column;
     29 } HEFI_EDITOR_POSITION;
     30 
     31 typedef
     32 EFI_STATUS
     33 (*HEFI_MENU_ITEM_FUNCTION) (
     34   VOID
     35   );
     36 
     37 typedef struct {
     38   CHAR16                  Name[50];
     39   CHAR16                  Key[3];
     40   HEFI_MENU_ITEM_FUNCTION Function;
     41 } HMENU_ITEMS;
     42 
     43 typedef struct _HEFI_EDITOR_LINE {
     44   UINTN           Signature;
     45   UINT8           Buffer[0x10];
     46   UINTN           Size;                             // unit is Unicode
     47   LIST_ENTRY  Link;
     48 } HEFI_EDITOR_LINE;
     49 
     50 typedef struct _HEFI_EDITOR_MENU_ITEM {
     51   CHAR16                  NameToken;
     52   CHAR16                  FunctionKeyToken;
     53   HEFI_MENU_ITEM_FUNCTION Function;
     54 } HEFI_EDITOR_MENU_ITEM;
     55 
     56 typedef struct {
     57   UINT32  Foreground : 4;
     58   UINT32  Background : 4;
     59 } HEFI_EDITOR_COLOR_ATTRIBUTES;
     60 
     61 typedef union {
     62   HEFI_EDITOR_COLOR_ATTRIBUTES  Colors;
     63   UINTN                         Data;
     64 } HEFI_EDITOR_COLOR_UNION;
     65 
     66 typedef struct {
     67   UINTN Columns;
     68   UINTN Rows;
     69 } HEFI_EDITOR_TEXT_MODE;
     70 
     71 
     72 typedef struct {
     73   CHAR16  *Name;
     74 
     75   UINTN   BlockSize;
     76   UINTN   Size;
     77   UINTN   Offset;
     78 } HEFI_EDITOR_DISK_IMAGE;
     79 
     80 typedef struct {
     81   EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL *IoFncs;
     82 
     83   UINTN                           Offset;
     84   UINTN                           Size;
     85 } HEFI_EDITOR_MEM_IMAGE;
     86 
     87 typedef struct {
     88   CHAR16  *FileName;
     89   UINTN   Size;                                     // file size
     90   BOOLEAN ReadOnly;                                 // file is read-only or not
     91 } HEFI_EDITOR_FILE_IMAGE;
     92 
     93 typedef struct {
     94   LIST_ENTRY                      *ListHead;        // list head of lines
     95   HEFI_EDITOR_LINE                *Lines;           // lines of current file
     96   UINTN                           NumLines;         // number of lines
     97   HEFI_EDITOR_LINE                *CurrentLine;     // current line cursor is at
     98   HEFI_EDITOR_POSITION            DisplayPosition;  // cursor position in screen
     99   HEFI_EDITOR_POSITION            MousePosition;    // mouse position in screen
    100   HEFI_EDITOR_POSITION            BufferPosition;   // cursor position in buffer
    101   UINTN                           LowVisibleRow;    // the lowest visible row of file position
    102   BOOLEAN                         HighBits;         // cursor is at the high4 bits or low4 bits
    103   BOOLEAN                         Modified;         // BUFFER is modified or not
    104   EDIT_FILE_TYPE                  BufferType;
    105 
    106   HEFI_EDITOR_FILE_IMAGE          *FileImage;
    107   HEFI_EDITOR_DISK_IMAGE          *DiskImage;
    108   HEFI_EDITOR_MEM_IMAGE           *MemImage;
    109 
    110 } HEFI_EDITOR_BUFFER_IMAGE;
    111 
    112 typedef struct {
    113   HEFI_EDITOR_BUFFER_IMAGE    *BufferImage;
    114 
    115   HEFI_EDITOR_COLOR_UNION     ColorAttributes;
    116   HEFI_EDITOR_POSITION        ScreenSize;           // row number and column number
    117   BOOLEAN                     MouseSupported;
    118   EFI_SIMPLE_POINTER_PROTOCOL *MouseInterface;
    119   INT32                       MouseAccumulatorX;
    120   INT32                       MouseAccumulatorY;
    121 
    122   UINTN                       SelectStart;          // starting from 1
    123   UINTN                       SelectEnd;            // starting from 1
    124 } HEFI_EDITOR_GLOBAL_EDITOR;
    125 
    126 #endif
    127