File: TextEdit.h

package info (click to toggle)
xcircuit 2.0a6-3
  • links: PTS
  • area: main
  • in suites: slink
  • size: 1,960 kB
  • ctags: 3,202
  • sloc: ansic: 30,529; makefile: 51; sh: 2
file content (263 lines) | stat: -rw-r--r-- 7,866 bytes parent folder | download | duplicates (11)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
/*************************************<+>*************************************
 *****************************************************************************
 **
 **   File:        TextEdit.h
 **
 **   Project:     X Widgets
 **
 **   Description: TextEdit widget public include file
 **
 *****************************************************************************
 **   
 **   Copyright (c) 1988 by Hewlett-Packard Company
 **   Copyright (c) 1987, 1988 by Digital Equipment Corporation, Maynard,
 **             Massachusetts, and the Massachusetts Institute of Technology,
 **             Cambridge, Massachusetts
 **   
 **   Permission to use, copy, modify, and distribute this software 
 **   and its documentation for any purpose and without fee is hereby 
 **   granted, provided that the above copyright notice appear in all 
 **   copies and that both that copyright notice and this permission 
 **   notice appear in supporting documentation, and that the names of 
 **   Hewlett-Packard, Digital or  M.I.T.  not be used in advertising or 
 **   publicity pertaining to distribution of the software without 
 **   written prior permission.
 **   
 **   DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
 **   ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
 **   DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
 **   ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
 **   WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
 **   ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
 **   SOFTWARE.
 **   
 *****************************************************************************
 *************************************<+>*************************************/

#ifndef _XwTextEdit_h
#define _XwTextEdit_h

#define XwSetArg(arg, n, v) \
     { Arg *_XwSetArgTmp = &(arg) ;\
       _XwSetArgTmp->name = (n) ;\
       _XwSetArgTmp->value = (XtArgVal) (v) ;}

#include <X11/StringDefs.h>



/*************************************************************************
*
*  Structures used in TextEdit function calls
*
*************************************************************************/

extern WidgetClass XwtexteditWidgetClass;
/* synonym added for consistent naming conventions */
extern WidgetClass XwtextEditWidgetClass;

typedef struct _XwTextEditClassRec *XwTextEditWidgetClass;
typedef struct _XwTextEditRec      *XwTextEditWidget;

typedef long XwTextPosition;

typedef enum {XwsdLeft, XwsdRight} XwScanDirection;
typedef enum 
  {XwstPositions, XwstWhiteSpace, XwstEOL, XwstLast} XwScanType;

typedef struct {
  int           firstPos;
  int           length;
  unsigned char *ptr;
  } XwTextBlock, *XwTextBlockPtr;

typedef enum {XwtextRead, XwtextAppend, XwtextEdit} XwEditType;
typedef enum
     {XweditDone, XweditError, XweditPosError, XweditReject} XwEditResult;

typedef struct {
    XtResource      *resources;
    Cardinal        resource_num;
    int		    (*read)();
    XwEditResult    (*replace)();
    XwTextPosition  (*getLastPos)();
    int		    (*setLastPos)();
    XwTextPosition  (*scan)();
    XwEditType      (*editType)();
    Boolean         (*check_data)();
    void            (*destroy)();
    int		    *data;       
    } XwTextSource, *XwTextSourcePtr;

/* this wouldn't be here if source and display (still called
   sink here) were properly separated, classed and subclassed
   */

typedef short TextFit ;
#define tfNoFit			0x01
#define tfIncludeTab		0x02
#define tfEndText		0x04
#define tfNewline		0x08
#define tfWrapWhiteSpace	0x10
#define tfWrapAny		0x20

typedef struct {
    XwTextEditWidget parent;
    XFontStruct *font;
    int foreground;
    XtResource *resources;
    Cardinal resource_num;
    int (*display)();
    int (*insertCursor)();
    int (*clearToBackground)();
    int (*findPosition)();
    TextFit (*textFitFn)();
    int (*findDistance)();
    int (*resolve)();
    int (*maxLines)();
    int (*maxHeight)();
    Boolean (*check_data)();
    void (*destroy)();
    int LineLastWidth ;
    XwTextPosition LineLastPosition ;
    int *data;
    } XwTextSink, *XwTextSinkPtr;

/*************************************************************************
*
* Support for Verification Callbacks
*
*************************************************************************/

typedef enum {motionVerify, modVerify, leaveVerify} XwVerifyOpType;

typedef struct {
  XEvent		*xevent;
  XwVerifyOpType	operation;
  Boolean		doit;
  XwTextPosition	currInsert, newInsert;
  XwTextPosition	startPos, endPos;
  XwTextBlock		*text;
} XwTextVerifyCD, *XwTextVerifyPtr;


/* Class record constants */

typedef enum {XwstringSrc, XwdiskSrc, XwprogDefinedSrc} XwSourceType;

/* other stuff */

#define wordBreak		0x01
#define scrollVertical		0x02
#define scrollHorizontal	0x04
#define scrollOnOverflow	0x08
#define resizeWidth		0x10
#define resizeHeight		0x20
#define editable		0x40

/****************************************************************************
*
*  Display control (grow, wrap, scroll, visible cursor)
*
****************************************************************************/

typedef enum {XwWrapOff, XwSoftWrap, XwHardWrap}  XwWrap ;
typedef enum {XwSourceForm, XwDisplayForm}        XwWrapForm ;
typedef enum {XwWrapAny, XwWrapWhiteSpace}        XwWrapBreak ;

/* Scroll options */
typedef int XwScroll ;

/* Grow options */
typedef int XwGrow ;

/*************************************************************************
*
*  External functions from TextEdit
*
*************************************************************************/

extern void XwTextClearBuffer();
   /* XwTextEditWidget w; */

extern unsigned char *XwTextCopyBuffer();
   /* XwTextEditWidget w */

extern unsigned char *XwTextCopySelection();
   /*   XwTextEditWidget w */

extern int XwTextReadSubString();
   /*   XwTextEditWidget w;
        XwTextPosition startpos,
	               endpos;
	unsigned char  *target;       Memory to copy into
	int            targetsize,    Memory size
	               targetused;    Memory used by copy      */

extern void XwTextUnsetSelection();
   /*   XwTextEditWidget w */

extern void XwTextSetSelection();
   /*   XwTextEditWidget           w;
        XwTextPosition left, right; */

extern XwEditResult XwTextReplace();
   /*    XwTextEditWidget    w;
         XwTextPosition      startPos, endPos;
         unsigned char       *string;  */

extern void XwTextRedraw();
   /*    XwTextEditWidget w  */

#define HAVE_XWTEXTRESIZE
extern void XwTextResize();
   /*    XwTextEditWidget w  */

extern void XwTextUpdate();
   /*  XwTextEditWidget w;
       Boolean status */
  
extern void XwTextInsert();
   /*   XwTextEditWidget  w       */
   /* unsigned char       *string */

extern XwTextPosition XwTextGetLastPos();
  /* XwTextEditWidget w; */

extern void XwTextGetSelectionPos();
   /* XwTextEditWidget w; */
   /* XwTextPosition *left, *right; */

extern void XwTextSetInsertPos();
   /* XwTextEditWidget w; */
   /* XwTextPosition position */

extern XwTextPosition XwTextGetInsertPos();
   /* XwTextEditWidget  widget */

extern void XwTextSetSource();
   /* XwTextEditWidget w; */
   /* XwTextSourcePtr source; */
   /* XwTextPosition startpos */

/*************************************************************************
*  
*  Extern Source and Sink Create/Destroy functions
*
*************************************************************************/

extern XwTextSink *XwAsciiSinkCreate();
    /* Widget    w       */
    /* ArgList   args    */
    /* Cardinal num_args */

extern XwTextSource *XwStringSourceCreate(); 
    /* Widget   parent;     */
    /* ArgList  args;    */
    /* int      argCount;   */

extern void XwStringSourceDestroy();
    /* XwTextSource *src */

#endif
/* DON'T ADD STUFF AFTER THIS #endif */