1 /*************************************<+>************************************* 2 ***************************************************************************** 3 ** 4 ** File: DisplayP.h 5 ** 6 ** Project: X Widgets 7 ** 8 ** Description: Private include file for TextEdit widget ascii sink 9 ** 10 ***************************************************************************** 11 ** 12 ** Copyright (c) 1988 by Hewlett-Packard Company 13 ** Copyright (c) 1987, 1988 by Digital Equipment Corporation, Maynard, 14 ** Massachusetts, and the Massachusetts Institute of Technology, 15 ** Cambridge, Massachusetts 16 ** 17 ** Permission to use, copy, modify, and distribute this software 18 ** and its documentation for any purpose and without fee is hereby 19 ** granted, provided that the above copyright notice appear in all 20 ** copies and that both that copyright notice and this permission 21 ** notice appear in supporting documentation, and that the names of 22 ** Hewlett-Packard, Digital or M.I.T. not be used in advertising or 23 ** publicity pertaining to distribution of the software without 24 ** written prior permission. 25 ** 26 ** DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING 27 ** ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL 28 ** DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR 29 ** ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, 30 ** WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, 31 ** ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS 32 ** SOFTWARE. 33 ** 34 ***************************************************************************** 35 *************************************<+>*************************************/ 36 37 38 #ifndef _XwTextEditDisplayPrivate_h 39 #define _XwTextEditDisplayPrivate_h 40 41 /***************************************************************************** 42 * 43 * Constants 44 * 45 *****************************************************************************/ 46 47 #define INFINITE_WIDTH 32767 48 49 #define applyDisplay(method) (*(self->text.sink->method)) 50 51 /***************************************************************************** 52 * 53 * Displayable text management data structures (LineTable) 54 * 55 *****************************************************************************/ 56 57 #define RequiredCursorMargin 3 58 59 typedef struct { 60 XwTextPosition position, drawPos; 61 Position x, y, endX; 62 TextFit fit ; 63 } XwLineTableEntry, *XwLineTableEntryPtr; 64 65 /* Line Tables are n+1 long - last position displayed is in last lt entry */ 66 typedef struct { 67 XwTextPosition top; /* Top of the displayed text. */ 68 XwTextPosition lines; /* How many lines in this table. */ 69 XwLineTableEntry *info; /* A dynamic array, one entry per line */ 70 } XwLineTable, *XwLineTablePtr; 71 72 typedef enum {XwisOn, XwisOff} XwInsertState; 73 74 typedef enum {XwselectNull, XwselectPosition, XwselectChar, XwselectWord, 75 XwselectLine, XwselectParagraph, XwselectAll} XwSelectType; 76 77 typedef enum {XwsmTextSelect, XwsmTextExtend} XwSelectionMode; 78 79 typedef enum {XwactionStart, XwactionAdjust, XwactionEnd} XwSelectionAction; 80 81 typedef struct { 82 XwTextPosition left, right; 83 XwSelectType type; 84 } XwTextSelection; 85 86 #define IsPositionVisible(ctx, pos)\ 87 (pos >= ctx->text.lt.info[0].position && \ 88 pos <= ctx->text.lt.info[ctx->text.lt.lines].position) 89 90 91 #endif 92 /* DON'T ADD STUFF AFTER THIS #endif */ 93 94 95