Initial import of the CDE 2.1.30 sources from the Open Group.
This commit is contained in:
340
cde/lib/DtTerm/TermPrim/TermPrimData.h
Normal file
340
cde/lib/DtTerm/TermPrim/TermPrimData.h
Normal file
@@ -0,0 +1,340 @@
|
||||
/*
|
||||
* $XConsortium: TermPrimData.h /main/2 1996/10/30 13:00:24 cde-hp $";
|
||||
*/
|
||||
|
||||
/* *
|
||||
* (c) Copyright 1993, 1994 Hewlett-Packard Company *
|
||||
* (c) Copyright 1993, 1994 International Business Machines Corp. *
|
||||
* (c) Copyright 1993, 1994 Sun Microsystems, Inc. *
|
||||
* (c) Copyright 1993, 1994 Novell, Inc. *
|
||||
* (c) Copyright 1995 Digital Equipment Corporation *
|
||||
*/
|
||||
|
||||
#ifndef _Dt_TermPrimData_h
|
||||
#define _Dt_TermPrimData_h
|
||||
|
||||
#include "TermHeader.h"
|
||||
#include "TermPrimBuffer.h"
|
||||
#include "TermPrimParser.h"
|
||||
#include "TermPrimPendingText.h"
|
||||
#include "TermPrimRender.h"
|
||||
#include "TermPrimSelect.h"
|
||||
#include "TermPrimLineFont.h"
|
||||
#include <stdio.h>
|
||||
#include <limits.h>
|
||||
|
||||
#define NUM_FONTS 4
|
||||
#define KEYBOARD_LOCKED(kbdLocked) ((kbdLocked).escape || \
|
||||
(kbdLocked).xferPending || \
|
||||
(kbdLocked).error || \
|
||||
(kbdLocked).record)
|
||||
|
||||
typedef struct {
|
||||
Font fid;
|
||||
Pixel foreground;
|
||||
Pixel background;
|
||||
GC gc;
|
||||
} TermGC;
|
||||
|
||||
/*
|
||||
** There are 4 reasons that the keyboard could be locked...
|
||||
*/
|
||||
typedef struct _TermKbdLockStatus
|
||||
{
|
||||
Boolean escape; /* escape sequence (or auto lock) */
|
||||
Boolean xferPending; /* a transfer is pending */
|
||||
Boolean error; /* an error message is being displayed */
|
||||
Boolean record; /* we're in record mode */
|
||||
} TermKbdLockStatus;
|
||||
|
||||
|
||||
typedef struct _OnTheSpotData {
|
||||
short row;
|
||||
short column;
|
||||
short start;
|
||||
short end;
|
||||
short pre_len;
|
||||
short cursor;
|
||||
Boolean under_preedit;
|
||||
} OnTheSpotDataRec, *OnTheSpotData;
|
||||
|
||||
#define PreRow(w) ((w)->term.tpd->onthespot->row)
|
||||
#define PreColumn(w) ((w)->term.tpd->onthespot->column)
|
||||
#define PreStart(w) ((w)->term.tpd->onthespot->start)
|
||||
#define PreEnd(w) ((w)->term.tpd->onthespot->end)
|
||||
#define PreLen(w) ((w)->term.tpd->onthespot->pre_len)
|
||||
#define PreCursor(w) ((w)->term.tpd->onthespot->cursor)
|
||||
#define PreUnder(w) ((w)->term.tpd->onthespot->under_preedit)
|
||||
|
||||
|
||||
typedef struct termData {
|
||||
/*********************************************************************
|
||||
* Pty
|
||||
*/
|
||||
XtInputId ptyOutputId; /* pty master Xt output id */
|
||||
XtInputId ptyInputId; /* pty master Xt input id */
|
||||
|
||||
/*********************************************************************
|
||||
* Font
|
||||
*/
|
||||
TermFont termFont; /* passed in base term font */
|
||||
TermFont boldTermFont; /* passed in bold term font */
|
||||
TermFont defaultTermFont; /* default base term font */
|
||||
TermFont defaultBoldTermFont; /* default bold term font */
|
||||
#ifdef DKS
|
||||
unsigned char renderTermFontsNum; /* number of above fonts */
|
||||
unsigned char baseFontIndex; /* number of base font */
|
||||
unsigned char altFontIndex; /* number of alternate font */
|
||||
#endif /* DKS */
|
||||
short cellWidth; /* width of base font */
|
||||
short cellHeight; /* height of base font */
|
||||
short ascent; /* ascent of base font */
|
||||
|
||||
/*********************************************************************
|
||||
* Buffer
|
||||
*/
|
||||
TermBuffer termBuffer; /* character/enhancment buffer */
|
||||
short bufferRows; /* rows of term buffer memory */
|
||||
short bufferRowRatio; /* scaled ratio of term buffer
|
||||
* memory to term window
|
||||
*/
|
||||
|
||||
TermBuffer historyBuffer; /* history character buffer */
|
||||
short historyBufferRows; /* rows of term history buffer */
|
||||
|
||||
short leftMargin; /* left margin */
|
||||
short rightMargin; /* right margin */
|
||||
/*
|
||||
**
|
||||
*/
|
||||
short topRow; /* number of top row on screen */
|
||||
short cursorColumn; /* current cursor position, col */
|
||||
short cursorRow; /* current cursor position, row */
|
||||
short lastUsedRow; /* number of last used buffer row.
|
||||
* if == 0, no rows used, if == 1,
|
||||
* 1 row used, etc.
|
||||
*/
|
||||
short lastUsedHistoryRow;
|
||||
short offsetX; /* width of internal window
|
||||
* border. With Motif, this is
|
||||
* the width of the
|
||||
* highlightThickness and
|
||||
* shadowThickness.
|
||||
*/
|
||||
short offsetY; /* height of internal window
|
||||
* border (see above)
|
||||
*/
|
||||
|
||||
/*
|
||||
** Generic mode information...
|
||||
*/
|
||||
Boolean transmitFunctions; /* if true, transmit functions (A) */
|
||||
Boolean autoWrapRight; /* if true, wrap at right margin (C) */
|
||||
Boolean wrapRightAfterInsert; /* if true, wrap after insert */
|
||||
enum {
|
||||
WRAPbetweenMargins = 0,
|
||||
WRAPatRightMargin,
|
||||
WRAPpastRightMargin
|
||||
} wrapState; /* margin wrap state */
|
||||
|
||||
/*
|
||||
** Memory lock status...
|
||||
*/
|
||||
enum {
|
||||
SCROLL_LOCKoff = 0,
|
||||
SCROLL_LOCKon,
|
||||
SCROLL_LOCKprotect
|
||||
} scrollLockMode; /* memory lock mode */
|
||||
short scrollLockTopRow; /* bottom of top scroll lock region */
|
||||
short scrollLockBottomRow; /* top of bottom scroll lock region */
|
||||
|
||||
/* for mapOnOutput */
|
||||
time_t creationTime ;
|
||||
Boolean windowMapped;
|
||||
|
||||
/* pointer blanking */
|
||||
Boolean pointerFirst; /* for initialization */
|
||||
Boolean pointerOn; /* Is pointer on? */
|
||||
XtIntervalId pointerTimeoutID; /* ID of current timeout */
|
||||
Boolean pointerFrozen; /* Is pointer outside window? */
|
||||
Cursor noPointer; /* blank pointer pixmap */
|
||||
|
||||
/* logging */
|
||||
FILE *logStream; /* file pointer for logging */
|
||||
uid_t uid; /* user id of user */
|
||||
gid_t gid; /* group id of user */
|
||||
char *shell; /* users shell */
|
||||
|
||||
|
||||
/* these will go away when the associated files are updated...
|
||||
*/
|
||||
#define memoryLockRow scrollLockTopRow
|
||||
#define memoryLockMode scrollLockMode
|
||||
#define MEMORY_LOCKoff SCROLL_LOCKoff
|
||||
#define MEMORY_LOCKon SCROLL_LOCKon
|
||||
#define MEMORY_LOCKprotect SCROLL_LOCKprotect
|
||||
|
||||
|
||||
/*********************************************************************
|
||||
* Parser
|
||||
*/
|
||||
ParserContext context; /* context of the parser */
|
||||
Boolean parserNotInStartState;
|
||||
int mbCurMax; /* max bytes per char for locale*/
|
||||
unsigned char mbPartialChar[MB_LEN_MAX];
|
||||
/* partial multi-byte char */
|
||||
int mbPartialCharLen; /* length of above */
|
||||
|
||||
/*********************************************************************
|
||||
* Render GCs
|
||||
*/
|
||||
TermGC renderGC; /* GC for rendering text */
|
||||
TermGC renderReverseGC; /* GC for rendering text */
|
||||
TermGC clearGC; /* GC for clearing text */
|
||||
|
||||
/*********************************************************************
|
||||
* Cursor
|
||||
*/
|
||||
XtIntervalId cursorTimeoutId; /* cursor timeout id */
|
||||
TermGC cursorGC; /* GC for blinking cursor */
|
||||
enum {
|
||||
CURSORon,
|
||||
CURSORoff,
|
||||
CURSORblink
|
||||
} cursorState; /* state of cursor */
|
||||
Boolean cursorVisible; /* true if cursor is visible */
|
||||
|
||||
/*********************************************************************
|
||||
* Input Method
|
||||
*/
|
||||
Boolean IMHasFocus; /* true if IM has focus */
|
||||
/* The following are in character positions, not pixel positions...
|
||||
*/
|
||||
short IMCursorColumn; /* current IM cursor column */
|
||||
short IMCursorRow; /* current IM cursor row */
|
||||
|
||||
/*********************************************************************
|
||||
* Scroll
|
||||
*/
|
||||
/* the following data reflects the copy area in progress to be used
|
||||
* for filling in possible holes in exposure events...
|
||||
*/
|
||||
short scrollSrcX; /* x src coord of scrolled area */
|
||||
short scrollSrcY; /* y src coord of scrolled area */
|
||||
short scrollDestX; /* x dest coord of scrolled area*/
|
||||
short scrollDestY; /* y dest coord of scrolled area*/
|
||||
short scrollWidth; /* width of scrolled area */
|
||||
short scrollHeight; /* height of scrolled area */
|
||||
short scrollTopRow; /* row of scroll top */
|
||||
short scrollBottomRow; /* row of scroll bottom */
|
||||
Boolean *scrollRefreshRows; /* flags for rows that need to
|
||||
* be refreshed after a scroll
|
||||
*/
|
||||
|
||||
Boolean useHistoryBuffer; /* true if separate history buf */
|
||||
Boolean allowScrollBelowBuffer; /* true allows scrolling below
|
||||
* the terminal buffer
|
||||
*/
|
||||
|
||||
/* the following is for data for both any current scroll-in-progress
|
||||
* as well as any pending (queued) scroll...
|
||||
*/
|
||||
Boolean scrollInProgress; /* true if scroll in progresss */
|
||||
union {
|
||||
struct {
|
||||
short scrollLines; /* number of lines to scroll */
|
||||
short scrollsPending; /* number of scrolls pending */
|
||||
Boolean scrolled; /* true when scrolled, cleared
|
||||
* when updated
|
||||
*/
|
||||
} jump;
|
||||
struct {
|
||||
short pendingScrollLines; /* number of lines in pending */
|
||||
short pendingScrollTopRow; /* top row of pending scroll */
|
||||
short pendingScrollBottomRow;
|
||||
/* bottom row of pending scroll */
|
||||
Boolean pendingScroll; /* True if scroll queued up */
|
||||
} nojump;
|
||||
} scroll;
|
||||
|
||||
/* the following is for stuffing input data when we have turned off
|
||||
* input processing during a scroll...
|
||||
*/
|
||||
PendingText pendingRead; /* pending read data */
|
||||
Boolean readInProgress; /* True if now reading from pty */
|
||||
|
||||
/*
|
||||
** Set up a linked list of text chunks, data stored here is waiting
|
||||
** to be written.
|
||||
*/
|
||||
PendingText pendingWrite; /* pending write data */
|
||||
|
||||
/*
|
||||
** Keyboard state information...
|
||||
*/
|
||||
TermKbdLockStatus keyboardLocked; /* if true, keyboard is locked */
|
||||
DtTermInsertCharMode insertCharMode; /* insert char mode */
|
||||
Boolean autoLineFeed; /* if true, in auto LF mode */
|
||||
Boolean halfDuplex; /* if true, half duplex */
|
||||
|
||||
/*********************************************************************
|
||||
* Caps lock tracking
|
||||
*/
|
||||
Boolean capsLock; /* true == caps lock set */
|
||||
KeyCode *capsLockKeyCodes; /* keyboard's modifier keymap */
|
||||
short numCapsLockKeyCodes; /* number of caps lock modifiers*/
|
||||
|
||||
/*********************************************************************
|
||||
* kshmode tracking
|
||||
*/
|
||||
unsigned int metaMask; /* mod mask used for meta */
|
||||
|
||||
/*********************************************************************
|
||||
* STOP indicator tracking
|
||||
*/
|
||||
Boolean outputStopped; /* true == out from pty stopped */
|
||||
Boolean oneSecondPause; /* true == esc @ pause */
|
||||
|
||||
/*********************************************************************
|
||||
* Warning/error dialog
|
||||
*/
|
||||
Widget warningDialog; /* warning dialog */
|
||||
Boolean mapWarningDialog; /* map dialog when window mapped*/
|
||||
Boolean warningDialogMapped; /* true if dialog is mapped */
|
||||
enum {
|
||||
userMessage,
|
||||
memoryFull
|
||||
} warningDialogType;
|
||||
|
||||
/*********************************************************************
|
||||
* /etc/utmp stuff
|
||||
*/
|
||||
char *utmpId; /* id of /etc/utmp entry */
|
||||
#ifdef UTMPID_PROPERTY_NOTIFY
|
||||
enum {
|
||||
utmpIdInvalid = 0,
|
||||
utmpIdValidNotClear,
|
||||
utmpIdValid,
|
||||
utmpIdError
|
||||
} utmpIdState;
|
||||
#endif /* UTMPID_PROPERTY_NOTIFY */
|
||||
#ifdef UTMPID_PIPE_NOTIFY
|
||||
int utmpNotifyPipe[2];
|
||||
XtInputId utmpNotifyPipeInputId;
|
||||
XtInputId utmpNotifyPipeExceptId;
|
||||
#endif /* UTMPID_PIPE_NOTIFY */
|
||||
|
||||
/*
|
||||
** Selections...
|
||||
*/
|
||||
TermSelectInfo selectInfo;
|
||||
|
||||
/*
|
||||
** On the spot input method data
|
||||
*/
|
||||
OnTheSpotData onthespot;
|
||||
|
||||
} DtTermPrimDataRec, *DtTermPrimData;
|
||||
|
||||
|
||||
#endif /* _Dt_TermPrimData_h */
|
||||
Reference in New Issue
Block a user