/** @file | |
Defines BufferImage - the view of the file that is visible at any point, | |
as well as the event handlers for editing the file | |
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 _LIB_BUFFER_IMAGE_H_ | |
#define _LIB_BUFFER_IMAGE_H_ | |
#include "HexEditor.h" | |
/** | |
Initialization function for HBufferImage | |
@retval EFI_SUCCESS The operation was successful. | |
@retval EFI_LOAD_ERROR A load error occured. | |
**/ | |
EFI_STATUS | |
HBufferImageInit ( | |
VOID | |
); | |
/** | |
Cleanup function for HBufferImage | |
@retval EFI_SUCCESS The operation was successful. | |
**/ | |
EFI_STATUS | |
HBufferImageCleanup ( | |
VOID | |
); | |
/** | |
Refresh function for HBufferImage. | |
@retval EFI_SUCCESS The operation was successful. | |
@retval EFI_LOAD_ERROR A Load error occured. | |
**/ | |
EFI_STATUS | |
HBufferImageRefresh ( | |
VOID | |
); | |
/** | |
Dispatch input to different handler | |
@param[in] Key The input key: | |
the keys can be: | |
ASCII KEY | |
Backspace/Delete | |
Direction key: up/down/left/right/pgup/pgdn | |
Home/End | |
INS | |
@retval EFI_SUCCESS The operation was successful. | |
@retval EFI_LOAD_ERROR A load error occured. | |
@retval EFI_OUT_OF_RESOURCES A Memory allocation failed. | |
**/ | |
EFI_STATUS | |
HBufferImageHandleInput ( | |
IN EFI_INPUT_KEY *Key | |
); | |
/** | |
Backup function for HBufferImage. Only a few fields need to be backup. | |
This is for making the file buffer refresh as few as possible. | |
@retval EFI_SUCCESS The operation was successful. | |
**/ | |
EFI_STATUS | |
HBufferImageBackup ( | |
VOID | |
); | |
/** | |
Read an image into a buffer friom a source. | |
@param[in] FileName Pointer to the file name. OPTIONAL and ignored if not FileTypeFileBuffer. | |
@param[in] DiskName Pointer to the disk name. OPTIONAL and ignored if not FileTypeDiskBuffer. | |
@param[in] DiskOffset Offset into the disk. OPTIONAL and ignored if not FileTypeDiskBuffer. | |
@param[in] DiskSize Size of the disk buffer. OPTIONAL and ignored if not FileTypeDiskBuffer. | |
@param[in] MemOffset Offset into the Memory. OPTIONAL and ignored if not FileTypeMemBuffer. | |
@param[in] MemSize Size of the Memory buffer. OPTIONAL and ignored if not FileTypeMemBuffer. | |
@param[in] BufferType The type of buffer to save. IGNORED. | |
@param[in] Recover TRUE for recovermode, FALSE otherwise. | |
@return EFI_SUCCESS The operation was successful. | |
**/ | |
EFI_STATUS | |
HBufferImageRead ( | |
IN CONST CHAR16 *FileName, | |
IN CONST CHAR16 *DiskName, | |
IN UINTN DiskOffset, | |
IN UINTN DiskSize, | |
IN UINTN MemOffset, | |
IN UINTN MemSize, | |
IN EDIT_FILE_TYPE BufferType, | |
IN BOOLEAN Recover | |
); | |
/** | |
Save the current image. | |
@param[in] FileName Pointer to the file name. OPTIONAL and ignored if not FileTypeFileBuffer. | |
@param[in] DiskName Pointer to the disk name. OPTIONAL and ignored if not FileTypeDiskBuffer. | |
@param[in] DiskOffset Offset into the disk. OPTIONAL and ignored if not FileTypeDiskBuffer. | |
@param[in] DiskSize Size of the disk buffer. OPTIONAL and ignored if not FileTypeDiskBuffer. | |
@param[in] MemOffset Offset into the Memory. OPTIONAL and ignored if not FileTypeMemBuffer. | |
@param[in] MemSize Size of the Memory buffer. OPTIONAL and ignored if not FileTypeMemBuffer. | |
@param[in] BufferType The type of buffer to save. IGNORED. | |
@return EFI_SUCCESS The operation was successful. | |
**/ | |
EFI_STATUS | |
HBufferImageSave ( | |
IN CHAR16 *FileName, | |
IN CHAR16 *DiskName, | |
IN UINTN DiskOffset, | |
IN UINTN DiskSize, | |
IN UINTN MemOffset, | |
IN UINTN MemSize, | |
IN EDIT_FILE_TYPE BufferType | |
); | |
/** | |
According to cursor's file position, adjust screen display. | |
@param[in] NewFilePosRow Row of file position ( start from 1 ). | |
@param[in] NewFilePosCol Column of file position ( start from 1 ). | |
@param[in] HighBits Cursor will on high4 bits or low4 bits. | |
**/ | |
VOID | |
HBufferImageMovePosition ( | |
IN UINTN NewFilePosRow, | |
IN UINTN NewFilePosCol, | |
IN BOOLEAN HighBits | |
); | |
/** | |
Create a new line and append it to the line list. | |
Fields affected: | |
NumLines | |
Lines | |
@retval NULL create line failed. | |
@return the line created. | |
**/ | |
HEFI_EDITOR_LINE * | |
HBufferImageCreateLine ( | |
VOID | |
); | |
/** | |
Free the current image. | |
@retval EFI_SUCCESS The operation was successful. | |
**/ | |
EFI_STATUS | |
HBufferImageFree ( | |
VOID | |
); | |
/** | |
Delete character from buffer. | |
@param[in] Pos Position, Pos starting from 0. | |
@param[in] Count The Count of characters to delete. | |
@param[out] DeleteBuffer The DeleteBuffer. | |
@retval EFI_SUCCESS Success | |
**/ | |
EFI_STATUS | |
HBufferImageDeleteCharacterFromBuffer ( | |
IN UINTN Pos, | |
IN UINTN Count, | |
OUT UINT8 *DeleteBuffer | |
); | |
/** | |
Add character to buffer, add before pos. | |
@param[in] Pos Position, Pos starting from 0. | |
@param[in] Count Count of characters to add. | |
@param[in] AddBuffer Add buffer. | |
@retval EFI_SUCCESS Success. | |
**/ | |
EFI_STATUS | |
HBufferImageAddCharacterToBuffer ( | |
IN UINTN Pos, | |
IN UINTN Count, | |
IN UINT8 *AddBuffer | |
); | |
/** | |
Change the raw buffer to a list of lines for the UI. | |
@param[in] Buffer The pointer to the buffer to fill. | |
@param[in] Bytes The size of the buffer in bytes. | |
@retval EFI_SUCCESS The operation was successful. | |
@retval EFI_OUT_OF_RESOURCES A memory allocation failed. | |
**/ | |
EFI_STATUS | |
HBufferImageBufferToList ( | |
IN VOID *Buffer, | |
IN UINTN Bytes | |
); | |
/** | |
Change the list of lines from the UI to a raw buffer. | |
@param[in] Buffer The pointer to the buffer to fill. | |
@param[in] Bytes The size of the buffer in bytes. | |
@retval EFI_SUCCESS The operation was successful. | |
**/ | |
EFI_STATUS | |
HBufferImageListToBuffer ( | |
IN VOID *Buffer, | |
IN UINTN Bytes | |
); | |
/** | |
Move the mouse in the image buffer. | |
@param[in] TextX The x-coordinate. | |
@param[in] TextY The y-coordinate. | |
**/ | |
VOID | |
HBufferImageAdjustMousePosition ( | |
IN INT32 TextX, | |
IN INT32 TextY | |
); | |
/** | |
Function to decide if a column number is stored in the high bits. | |
@param[in] Column The column to examine. | |
@param[out] FCol The actual column number. | |
@retval TRUE The actual column was in high bits and is now in FCol. | |
@retval FALSE There was not a column number in the high bits. | |
**/ | |
BOOLEAN | |
HBufferImageIsAtHighBits ( | |
IN UINTN Column, | |
OUT UINTN *FCol | |
); | |
/** | |
Get the size of the open buffer. | |
@retval The size in bytes. | |
**/ | |
UINTN | |
HBufferImageGetTotalSize ( | |
VOID | |
); | |
#endif |