|
|
1.1 ! root 1: /* $Header: TextDisp.h,v 1.1 87/09/11 07:59:23 toddb Exp $ */ ! 2: /* ! 3: * sccsid: @(#)TextDisp.h 1.14 2/25/87 ! 4: */ ! 5: ! 6: /* ! 7: * Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts. ! 8: * ! 9: * All Rights Reserved ! 10: * ! 11: * Permission to use, copy, modify, and distribute this software and its ! 12: * documentation for any purpose and without fee is hereby granted, ! 13: * provided that the above copyright notice appear in all copies and that ! 14: * both that copyright notice and this permission notice appear in ! 15: * supporting documentation, and that the name of Digital Equipment ! 16: * Corporation not be used in advertising or publicity pertaining to ! 17: * distribution of the software without specific, written prior permission. ! 18: * ! 19: * ! 20: * DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ! 21: * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL ! 22: * DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ! 23: * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, ! 24: * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ! 25: * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS ! 26: * SOFTWARE. ! 27: */ ! 28: ! 29: /* File: TextDisp.h */ ! 30: ! 31: #define MAXCUT 30000 /* Maximum number of characters that can be cut. */ ! 32: ! 33: #define LF 0x0a ! 34: #define CR 0x0d ! 35: #define TAB 0x09 ! 36: #define BS 0x08 ! 37: #define SP 0x20 ! 38: #define DEL 0x7f ! 39: #define BSLASH '\\' ! 40: ! 41: #define EDITDONE 0 ! 42: #define EDITERROR 1 ! 43: #define POSITIONERROR 2 ! 44: ! 45: typedef enum {XtsdLeft, XtsdRight} ScanDirection; ! 46: typedef enum {XtstPositions, XtstWhiteSpace, XtstEOL, XtstParagraph, XtstFile} ScanType; ! 47: ! 48: typedef struct { ! 49: int firstPos; ! 50: int length; ! 51: char *ptr; ! 52: } XtTextBlock, *TextBlockPtr; ! 53: ! 54: typedef struct { ! 55: int (*read)(); ! 56: int (*replace)(); ! 57: XtTextPosition (*getLastPos)(); ! 58: int (*setLastPos)(); ! 59: XtTextPosition (*scan)(); ! 60: XtEditType (*editType)(); ! 61: int *data; ! 62: } XtTextSource, *TextSourcePtr; ! 63: ! 64: typedef struct { ! 65: Display *dpy; ! 66: int (*display)(); ! 67: int (*insertCursor)(); ! 68: int (*clearToBackground)(); ! 69: int (*findPosition)(); ! 70: int (*findDistance)(); ! 71: int (*resolve)(); ! 72: int (*maxLines)(); ! 73: int (*maxHeight)(); ! 74: int *data; ! 75: } XtTextSink, *TextSinkPtr; ! 76: ! 77: /* displayable text management data structures */ ! 78: ! 79: typedef struct { ! 80: XtTextPosition position; ! 81: Position x, y, endX; ! 82: } LineTableEntry, *LineTableEntryPtr; ! 83: ! 84: /* Line Tables are n+1 long - last position displayed is in last lt entry */ ! 85: typedef struct { ! 86: XtTextPosition top; /* Top of the displayed text. */ ! 87: int lines; /* How many lines in this table. */ ! 88: LineTableEntry *info; /* A dynamic array, one entry per line */ ! 89: } LineTable, *LineTablePtr; ! 90: ! 91: typedef enum {XtisOn, XtisOff} InsertState; ! 92: ! 93: typedef enum {XtselectNull, XtselectPosition, XtselectChar, XtselectWord, ! 94: XtselectLine, XtselectParagraph, XtselectAll} XtSelectType; ! 95: ! 96: typedef enum {XtsmTextSelect, XtsmTextExtend} SelectionMode; ! 97: ! 98: typedef enum {XtactionStart, XtactionAdjust, XtactionEnd} SelectionAction; ! 99: ! 100: typedef struct { ! 101: XtTextPosition left, right; ! 102: XtSelectType type; ! 103: } TextSelection; ! 104: ! 105: #define IsPositionVisible(ctx, pos) (pos >= ctx->lt.info[0].position && \ ! 106: pos <= ctx->lt.info[ctx->lt.lines].position) ! 107: ! 108: /* Private Text Definitions */ ! 109: ! 110: typedef int (*ActionProc)(); ! 111: ! 112: typedef XtSelectType SelectionArray[20]; ! 113: ! 114: typedef struct { ! 115: Display *dpy; ! 116: XtTextSource *source; ! 117: XtTextSink *sink; ! 118: LineTable lt; ! 119: XtTextPosition insertPos; ! 120: TextSelection s; ! 121: ScanDirection extendDir; ! 122: TextSelection origSel; /* the selection being modified */ ! 123: SelectionArray sarray; /* Array to cycle for selections. */ ! 124: Dimension width, height; /* Dimensions of the text subwindow */ ! 125: Dimension leftmargin; /* Width of left margin. */ ! 126: int options; /* wordbreak, scroll, etc. */ ! 127: unsigned short lasttime; /* timestamp of last processed action */ ! 128: unsigned short time; /* timestamp of last key or button action */ ! 129: Position x, y; /* x, y coords for key or button action */ ! 130: Window sbar; /* The vertical scroll bar (none = 0). */ ! 131: Window outer; /* Parent of scrollbar & text (if any) */ ! 132: Window w; /* Actual window containing text. */ ! 133: XtTextPosition *updateFrom; /* Array of start positions for update. */ ! 134: XtTextPosition *updateTo; /* Array of end positions for update. */ ! 135: int numranges; /* How many update ranges there are. */ ! 136: int maxranges; /* How many update ranges we've space for */ ! 137: Boolean showposition; /* True if we need to show the position. */ ! 138: XtTextPosition lastPos; /* Last position of source. */ ! 139: Window dialog; /* Window containing dialog, if any. */ ! 140: Dimension borderWidth; /* width of window border (if any) */ ! 141: XtEventsPtr eventTable; /* Table for translation mgr. */ ! 142: caddr_t state; /* translation manager state handle */ ! 143: Pixel border, background; /* window colors */ ! 144: GC gc; ! 145: Boolean hasfocus; /* TRUE if we currently have input focus. */ ! 146: } TextContext, *TextContextPtr;
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.