📄 atbeditor.h
字号:
/*******************************************************************************
CONDAT (UK)
********************************************************************************
This software product is the property of Condat (UK) Ltd and may not be
disclosed to any third party without the express permission of the owner.
********************************************************************************
$Project name:
$Project code:
$Module:
$File: ATBEditor.h
$Revision:
$Author: Condat(UK)
$Date:
********************************************************************************
Description: Header file for ATB Editor component.
REQUIRES: ATBCommon.h, ATBDisplay.h
********************************************************************************
$History: ATBEditor.h
$End
*******************************************************************************/
#ifndef ATB_EDITOR_H
#define ATB_EDITOR_H
#ifndef DSPL_H
#include "dspl.h"
#endif
/**********************************************
* CONSTANTS
*
*********************************************/
enum
{
ED_CURSOR_NONE, /* No cursor, read only */
ED_CURSOR_BAR, /* Vertical bar thin */
ED_CURSOR_UNDERLINE, /* Underline-style cursor */
ED_CURSOR_BLOCK /* Highlights current character */
};
enum
{
ED_MODE_ALPHA = 0x01, /* Alphanumeric Multi-tap mode */
ED_MODE_OVERWRITE = 0x02, /* Overwrite mode */
ED_MODE_PREDTEXT = 0x04, /* Predictive text mode */
ED_MODE_FORMATTED = 0x08, /* Formatted input mode for WAP */
ED_MODE_HIDDEN = 0x10, /* Hidden mode - *'s appear in place */
ED_MODE_READONLY = 0x20, /* Read only mode */
ED_MODE_ALL = 0xFFFF /* Allows switching off of all modes */
};
/* Editor visibility */
enum
{
ED_INVISIBLE = 0, /* Editor is not displayed */
ED_VISIBLE = 1 /* Editor is displayed */
};
/* Editor updates */
#define ED_UPDATE_DEFAULT 0 /* Update everything by default */
#define ED_UPDATE_TRIVIAL 1 /* Trivial change - no scrolling or reformatting req.*/
#define ED_UPDATE_PARTIAL 2 /* Partial change */
#define ED_UPDATE_FULL 3 /* Full update required */
/**********************************************
* ED_RES
*
* Result of editor functions
*********************************************/
typedef enum
{
ED_OK,
ED_BAD_HANDLE,
ED_ERROR,
ED_DONE
}
ED_RES;
/**********************************************
* T_ED_CB
*
* Callback type
*********************************************/
typedef int (*T_ED_CB) (ULONG, void*);
/**********************************************
* EDITOR CONTROL CHARACTERS
*
*********************************************/
typedef enum
{
ctrlNone = 0, /* no valid edit control */
ctrlLeft, /* cursor left */
ctrlRight, /* cursor right */
ctrlUp, /* cursor up */
ctrlDown, /* cursor down */
ctrlTop, /* cursor to top of text */
ctrlBottom, /* cursor to end of text */
ctrlBack, /* backspace */
ctrlDel, /* delete */
ctrlEnter, /* return key */
ctrlEscape, /* escape key */
ctrlMax /* Highest control character */
} T_ED_CONTROLS;
/* This type indicates whether or not the cursor is within a fixed field */
enum
{
ENTRY_NOT_IN_FIELD = 0,
ENTRY_ENTERING_FIELD,
ENTRY_IN_FIELD
};
/* Output types for ATB_edit_FindPrev() */
enum
{
FINDPREV_NO_CHANGE,
FINDPREV_PREV_FOUND,
FINDPREV_FIRST_CHAR,
FINDPREV_LAST_CHAR
};
/**********************************************
* T_ED_ATTR
*
* Editor attributes, provided by user
*********************************************/
typedef struct
{
T_ATB_WIN_SIZE win_size; /* Editor position and size */
ULONG colour; /* Foreground and background colour */
UBYTE font; /* Character font */
USHORT cursor; /* cursor type */
USHORT mode; /* Edit Mode */
T_ATB_TEXT text; /* Edit buffer */
USHORT size; /* Buffer size */
char *FormatString; /* Formatting string for WAP formatted input */
T_DS_TEXTFORMAT startFormat; /* Text format to be applied to the start of text */
} T_ED_ATTR;
/**********************************************
* T_ED_LINE
*
* Information about a line of text in the editor
*********************************************/
typedef struct T_ED_LINE_TAG
{
UBYTE height; /* The height of the line */
USHORT pos; /* The position of the start of the line in the buffer */
T_DS_TEXTFORMAT format; /* The format attributes at the start of the line */
struct T_ED_LINE_TAG *next; /* The succeeding line */
} T_ED_LINE;
/**********************************************
* T_ED_CHAR
*
* Information about a character in the editor
*********************************************/
typedef struct
{
USHORT width; // The width of the character
USHORT height; // The height of the character
USHORT pos; // The position of the character
T_DS_TEXTFORMAT format; // The format attributes of the character
USHORT lineHeight; // Height of the line, so far
USHORT lineWidth; // Width of the current line (in pixels)
} T_ED_CHAR;
/**********************************************
* T_ED_CURSOR
*
* Information about cursor
*********************************************/
typedef struct
{
SHORT x; // Cursor X position, relative to top left corner of editor
SHORT y; // Cursor Y position, relative to top left corner of editor
SHORT width; // Size of cursor
SHORT height; // Height of cursor
USHORT attr; // Format attributes under the cursor
USHORT pos; /* cursor position */
SHORT line; // The line the cursor is on (with respect to the whole text)
} T_ED_CURSOR;
/**********************************************
* T_ED_DATA
*
* Main editor information
*********************************************/
typedef struct
{
T_ED_CB handler; /* event handler */
T_ED_ATTR *attr; /* editor attributes */
/* Various flags */
BOOL initialised; // TRUE if important values have been set up
BOOL display; /* Whether editor is hidden or not. */
UBYTE update; /* Which portions of the editor to update */
UBYTE multitap; /* Stores status of multi-tap */
UBYTE textcase; /* Case of text entry (upper, lower, numeric etc) */
/* Word wrap information */
T_ED_CURSOR cursor; /* Properties of cursor */
T_ED_CHAR thischar; /* Properties of current character */
T_ED_CHAR space; /* Properties of the last space */
T_ED_LINE *line; /* Properties of lines in editor */
BOOL startOfLine; /* TRUE indicates the start of a text line */
BOOL endOfLine; /* TRUE indicates end of a text line */
BOOL endOfText; /* TRUE indicates no more chars in text */
BOOL precedingEOL; /* Character preceding current character is an End Of Line */
BOOL precedingSpace; /* Character preceding current character is a space */
USHORT startPos; /* Character position, or start of current block */
USHORT numLines; /* Total number of lines in the editor */
SHORT winStartLine; /* The first line to be displayed in the current window */
USHORT linesPerScreen; /* No of lines that fit on current screen */
/* Display properties */
USHORT totalHeight; /* Total height (in pixels) of the whole text string */
USHORT viewHeight; /* The height visible in the editor */
USHORT viewStartPos; /* Start position of view in pixels */
/* WAP delimited input information */
SHORT formatIndex; // Position in formatting string
SHORT fieldIndex; // Position within a delimited field
/* Hidden input information */
T_ATB_TEXT *hiddenText; /* Hidden text is stored in this buffer */
} T_ED_DATA;
/**********************************************
* T_ED_CASE
*
* The case of the current text
*********************************************/
typedef enum
{
ED_CASE_UPPER, /* Upper case */
ED_CASE_LOWER, /* Lower case */
ED_CASE_CAPS, /* Capitalise starts of sentences */
ED_CASE_NUM /* Numbers */
} T_ED_CASE;
/**********************************************
* T_ED_CASE_PREF
*
* Preference for case input
*********************************************/
typedef enum
{
ED_CASEPREF_NONE, /* End of string - no case */
ED_CASEPREF_NUM, /* Any numeric character */
ED_CASEPREF_ALPHA_UC, /* Any symbolic or alphabetic uppercase character */
ED_CASEPREF_ALPHA_LC, /* Any symbolic or alphabetic lowercase character */
ED_CASEPREF_ALPHANUM, /* Any symbolic, numeric, or alphabetic character */
ED_CASEPREF_ALPHANUM_UC, /* Any symbolic, numeric, or alphabetic uppercase character */
ED_CASEPREF_ALPHANUM_LC /* Any symbolic, numeric, or alphabetic lowercase character */
} T_ED_CASE_PREF;
/**********************************************
* FUNCTION PROTOTYPES
*
*********************************************/
ED_RES ATB_edit_Init (T_ED_DATA *editor);
T_ED_DATA* ATB_edit_Create (T_ED_ATTR *editAttr, T_ED_CB callback);
ED_RES ATB_edit_Destroy (T_ED_DATA *editor);
ED_RES ATB_edit_Reset (T_ED_DATA *editor);
ED_RES ATB_edit_Show (T_ED_DATA *editor);
ED_RES ATB_edit_Refresh (T_ED_DATA *editor);
ED_RES ATB_edit_Hide (T_ED_DATA *editor);
ED_RES ATB_edit_Unhide (T_ED_DATA *editor);
ED_RES ATB_edit_Char (T_ED_DATA *editor, USHORT character, UBYTE update);
ED_RES ATB_edit_AsciiChar (T_ED_DATA *editor, char character, UBYTE update);
ED_RES ATB_edit_MultiTap(T_ED_DATA *editor, USHORT character, BOOL multitap);
ED_RES ATB_edit_AsciiMultiTap(T_ED_DATA *editor, char character, BOOL multitap);
ED_RES ATB_edit_MoveCursor (T_ED_DATA *editor, USHORT control, UBYTE update);
ED_RES ATB_edit_DeleteLeft (T_ED_DATA *editor, UBYTE update); /* SPR#2342 - SH */
ED_RES ATB_edit_DeleteRight (T_ED_DATA *editor, UBYTE update); /* SPR#2342 - SH */
ED_RES ATB_edit_ClearAll (T_ED_DATA *editor);
ED_RES ATB_edit_HiddenInit(T_ED_DATA *editor);
ED_RES ATB_edit_HiddenExit(T_ED_DATA *editor);
ED_RES ATB_edit_InsertString (T_ED_DATA *editor, T_ATB_TEXT *insText);/* Insert a word at the cursor pos */
USHORT ATB_edit_GetCursorChar(T_ED_DATA *editor, int offset);
BOOL ATB_edit_CapitaliseWord(T_ED_DATA *editor);
USHORT ATB_edit_FindCapital(USHORT small_char);
T_ED_LINE *ATB_edit_LineGet(T_ED_DATA *editor, SHORT lineNo);
void ATB_edit_SetAttr(T_ED_DATA *editor, T_ATB_WIN_SIZE *win_size, ULONG colour, UBYTE font, USHORT mode, USHORT cursor, T_ATB_TEXT *text, USHORT size);
UBYTE ATB_edit_Mode(T_ED_DATA *editor, USHORT mode);
void ATB_edit_SetMode(T_ED_DATA *editor, USHORT mode);
void ATB_edit_ResetMode(T_ED_DATA *editor, USHORT mode);
void ATB_edit_SetStyle(T_ED_DATA *editor, USHORT style);
UBYTE ATB_edit_GetCase(T_ED_DATA *editor);
void ATB_edit_SetCase(T_ED_DATA *editor, UBYTE textcase);
T_ED_CASE_PREF ATB_edit_GetCasePref(T_ED_DATA *editor);
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -