File: TransSkel1.h

package info (click to toggle)
xlispstat 3.52.14-1
  • links: PTS
  • area: main
  • in suites: potato
  • size: 7,560 kB
  • ctags: 12,676
  • sloc: ansic: 91,357; lisp: 21,759; sh: 1,525; makefile: 521; csh: 1
file content (334 lines) | stat: -rw-r--r-- 12,207 bytes parent folder | download | duplicates (4)
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
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
/*
 * prototypes for TransSkel public routines
 *
 * Written for THINK C 6.0.1.
 *
 * Assumes that compiler understands nested prototypes.
 *
 * You must have THINK C Language Extensions turned on in the
 * Edit/Options.../Language Settings dialog (so that the "pascal" keyword
 * is recognized, for one thing).
 *
 * for:			TransSkel 3.17
 * last edit:	01 Jun 94
 */

# ifndef	__TRANSSKEL_H__

# define	__TRANSSKEL_H__

#ifdef __MWERKS__
#define arrow qd.arrow
#define screenBits qd.screenBits
#define thePort qd.thePort
#define gray qd.gray
#endif /* __MWERKS__ */

#ifdef applec
# include       <Dialogs.h>
# include       <Events.h>
# include       <OSEvents.h>
# include       <Menus.h>
# include       <Memory.h>
# include       <DiskInit.h>
# include       <ToolUtils.h>
# include       <Fonts.h>
# include       <Desk.h>
# include       <Packages.h>
# include       <Resources.h>
# include       <Script.h>
# include       <Traps.h>
# include       <Scrap.h>
# include		<StandardFile.h>
# ifndef _Gestalt
#  define _Gestalt 0xA1AD /**** needed with 3.3.3? */
# endif
# define        nil                     0L
# define        arrow                   qd.arrow
# define		thePort					qd.thePort
# define		screenBits				qd.screenBits
# define		gray					qd.gray
# define        topLeft(r)              (((Point *) &(r))[0])
# define        botRight(r)             (((Point *) &(r))[1])
#endif /* applec */

# define	skelMajorRelease	3
# define	skelMinorRelease	17


/* window property numbers */

# define	skelWPropAll			0		/* pseudo-property */
# define	skelWPropModeless		1		/* modeless dialog */
# define	skelWPropModal			2		/* modal dialog */
# define	skelWPropTool			3		/* tool window */
# define	skelWPropMovableModal	4		/* movable modal dialog */
# define	skelWPropHelp			5		/* help window */
# define	skelWPropText			6		/* text window */
# define	skelWPropDisplayWind	7		/* TransDisplay window */
# define	skelWPropEditWind		8		/* TransEdit window */
# define	skelWPropApplBase		256		/* general-use prop num base */


/* SkelQuery() query selectors */

# define	skelQVersion		1			/* TransSkel version */
# define	skelQSysVersion		2			/* System software version */
# define	skelQHasWNE			3			/* whether has WaitNextEvent() */
# define	skelQMBarHeight		4			/* menu bar height */
# define	skelQHas64KROM		5			/* whether has 64K ROM */
# define	skelQHasColorQD		6			/* whether has Color QuickDraw */
# define	skelQInForeground	7			/* whether in foreground */
# define	skelQHasGestalt		8			/* whether has Gestalt() */
# define	skelQHasAppleEvents	9			/* whether has Apple Events */
# define	skelQQDVersion		10			/* QuickDraw version */
# define	skelQGrayRgn		11			/* Desktop region */


/* window property types */

typedef struct SkelWindProperty	SkelWindProperty, **SkelWindPropHandle;

struct SkelWindProperty
{
	short				skelWPropType;
	long				skelWPropData;
	SkelWindPropHandle	skelWPropNext;
};


/*
 * Initialization parameters
 *
 * SkelResumeProcPtr is the same as ResumeProcPtr, but the latter is
 * disappearing from Apple's header files because it's not supposed
 * to be used under System 7 anymore.
 */

typedef struct SkelInitParams SkelInitParams, *SkelInitParamsPtr;
typedef pascal void (*SkelResumeProcPtr)(void);

struct SkelInitParams
{
	short				skelMoreMasters;
	GrowZoneProcPtr		skelGzProc;
	SkelResumeProcPtr	skelResumeProc;
	Size				skelStackAdjust;
};


/*
 * typedefs for pointers to various sorts of functions used by TransSkel
 * routines.
 */

typedef pascal void (*SkelIdleProcPtr) (void);
typedef	pascal Boolean (*SkelEventHookProcPtr) (EventRecord *);
typedef pascal void (*SkelSuspendResumeProcPtr) (Boolean inForeground);
typedef pascal void (*SkelClipCvtProcPtr) (Boolean inForeground);
typedef pascal void (*SkelAEHandlerProcPtr) (EventRecord *);
typedef	pascal void (*SkelDlogItemProcPtr) (DialogPtr d, short item);


/* ------------- */
/* Core routines */
/* ------------- */

/* initialization/termination routines */

pascal void SkelGetInitParams (SkelInitParamsPtr initParams);
pascal void SkelInit (SkelInitParamsPtr initParams);
pascal void SkelCleanup (void);

/* event-loop-related routines */

pascal void SkelEventLoop (void);
pascal void SkelStopEventLoop (void);
pascal void SkelRouteEvent (EventRecord *evt);
pascal void SkelActivate (WindowPtr w, Boolean active);
pascal void SkelClose (WindowPtr w);
pascal EventRecord *SkelGetCurrentEvent (void);
pascal short SkelGetModifiers (void);
pascal void SkelSetEventMask (short mask);
pascal short SkelGetEventMask (void);
pascal void SkelSetDlogMask (short mask);
pascal short SkelGetDlogMask (void);
pascal void SkelSetIdle (SkelIdleProcPtr p);
pascal SkelIdleProcPtr SkelGetIdle (void);
pascal void SkelSetEventHook (SkelEventHookProcPtr p);
pascal SkelEventHookProcPtr SkelGetEventHook (void);
pascal void SkelSetSuspendResume (SkelSuspendResumeProcPtr p);
pascal SkelSuspendResumeProcPtr SkelGetSuspendResume (void);
pascal void SkelSetClipCvt (SkelClipCvtProcPtr p);
pascal SkelClipCvtProcPtr SkelGetClipCvt (void);
pascal void SkelSetWaitTimes (long fgTime, long bgTime);
pascal void SkelGetWaitTimes (long *pFgTime, long *pBgTime);

pascal void SkelSetAEHandler (SkelAEHandlerProcPtr p);
pascal SkelAEHandlerProcPtr SkelGetAEHandler (void);

pascal void SkelTriggerUpdate (WindowPtr w); /* added to force resize -- L. Tierney */


/* window handling routines */

typedef	pascal void (*SkelWindMouseProcPtr) (Point where, long when, short modifiers);
/*
 * Key handler needs special treatment because for prototyped functions
 * (which TransSkel uses), THINK C passes character arguments in the *high*
 * byte of a two-byte stack value.  To make sure the values are passed in the
 * low byte from either C or Pascal key handlers, the first two arguments are
 * passed in shorts.  The Pascal key procedure should
 * look like this:
 *     procedure Key (c: char; code: Integer; modifiers: Integer);
 */
typedef	pascal void (*SkelWindKeyProcPtr) (short c, short code, short modifiers);
typedef	pascal void (*SkelWindUpdateProcPtr) (Boolean resized);
typedef	pascal void (*SkelWindActivateProcPtr) (Boolean active);
typedef	pascal void (*SkelWindCloseProcPtr) (void);
typedef	pascal void (*SkelWindClobberProcPtr) (void);
typedef	pascal void (*SkelWindIdleProcPtr) (void);

typedef	pascal void (*SkelWindSelectProcPtr) (DialogPtr dlog, short item);

typedef	pascal void (*SkelWindZoomProcPtr) (WindowPtr w, short zoomDir);

pascal Boolean SkelWindow (WindowPtr w,
					SkelWindMouseProcPtr doMouse,
					SkelWindKeyProcPtr doKey,
					SkelWindUpdateProcPtr doUpdate,
					SkelWindActivateProcPtr doActivate,
					SkelWindCloseProcPtr doClose,
					SkelWindClobberProcPtr doClobber,
					SkelWindIdleProcPtr doIdle,
					Boolean idleFrontOnly);
pascal Boolean SkelDialog (DialogPtr dlog,
					ModalFilterProcPtr doFilter,
					SkelWindSelectProcPtr doSelect,
					SkelWindCloseProcPtr doClose,
					SkelWindClobberProcPtr doClobber);
pascal void SkelRmveWind (WindowPtr w);
pascal void SkelRmveDlog (DialogPtr dlog);
pascal Boolean SkelWindowRegistered (WindowPtr w);
pascal Boolean SkelIsDlog (WindowPtr w);
pascal Boolean SkelIsMMDlog (WindowPtr w);
pascal void SkelSetGrowBounds (WindowPtr w,
							short hLo, short vLo,
							short hHi, short vHi);
pascal void SkelSetZoom (WindowPtr w, SkelWindZoomProcPtr pZoom);
pascal SkelWindZoomProcPtr SkelGetZoom (WindowPtr w);
pascal Boolean SkelGetRectDevice (Rect *rp, GDHandle *gd, Rect *devRect, Boolean *isMain);
pascal Boolean SkelGetWindowDevice (WindowPtr w, GDHandle *gd, Rect *devRect);
pascal void SkelGetWindContentRect (WindowPtr w, Rect *rp);
pascal void SkelGetWindStructureRect (WindowPtr w, Rect *rp);
pascal short SkelGetWindTitleHeight (WindowPtr w);

pascal Boolean SkelAddWindProp (WindowPtr w, short propType, long propData);
pascal void SkelRmveWindProp (WindowPtr w, short propType);
pascal SkelWindPropHandle SkelGetWindProp (WindowPtr w, short propType);
pascal long SkelGetWindPropData (WindowPtr w, short propType);


/* menu handling routines */

/**** Added menu argument -- L. Tierney */
typedef	pascal void (*SkelMenuSelectProcPtr) (short item, short menu);
typedef	pascal void (*SkelMenuClobberProcPtr) (MenuHandle m);
typedef pascal void (*SkelMenuHookProcPtr) (void);

pascal Boolean SkelMenu (MenuHandle m,
					SkelMenuSelectProcPtr doSelect,
					SkelMenuClobberProcPtr doClobber,
					Boolean subMenu,
					Boolean drawBar);
pascal void SkelRmveMenu (MenuHandle m);

pascal void SkelSetMenuHook (SkelMenuHookProcPtr p);
pascal SkelMenuHookProcPtr SkelGetMenuHook (void);


/* environment information routines */

pascal long SkelQuery (short selector);
pascal Boolean SkelTrapAvailable (short theTrap);


/* ------------------ */
/* Auxiliary routines */
/* ------------------ */

# define	skelAppleMenuID		128

pascal void SkelApple (StringPtr items, SkelMenuSelectProcPtr pSelect);

pascal void SkelDoEvents (short mask);
pascal void SkelDoUpdates (void);

pascal ModalFilterUPP SkelDlogFilter (ModalFilterProcPtr filter, Boolean doReturn);
pascal ModalFilterYDProcPtr SkelDlogFilterYD (ModalFilterYDProcPtr filter, Boolean doReturn);
pascal void SkelRmveDlogFilter (void);
pascal void SkelDlogDefaultItem (short item);
pascal void SkelDlogCancelItem (short item);
pascal void SkelDlogTracksCursor (Boolean track);

pascal Boolean SkelCmdPeriod (EventRecord *evt);


/* -------------------- */
/* Convenience routines */
/* -------------------- */

/* positioning types for SkelGetReferenceRect()/SkelPositionWindow() */

# define	skelPositionNone			0	/* leave as is */
# define	skelPositionOnMainDevice	1	/* position on main device */
# define	skelPositionOnParentWindow	2	/* position on FrontWindow() */
# define	skelPositionOnParentDevice	3	/* position on FrontWindow()'s device */

pascal void SkelGetMainDeviceRect (Rect *r);
pascal void SkelPositionRect (Rect *refRect, Rect *r, Fixed hRatio, Fixed vRatio);
pascal void SkelGetReferenceRect (Rect *r, short positionType);
pascal void SkelPositionWindow (WindowPtr w, short positionType, Fixed hRatio, Fixed vRatio);
pascal Boolean SkelTestRectVisible (Rect *r);

/* alert presentation routines */

pascal short SkelAlert (short alrtResNum, ModalFilterProcPtr filter, short positionType);
pascal void SkelSetAlertPosRatios (Fixed hRatio, Fixed vRatio);
pascal void SkelGetAlertPosRatios (Fixed *hRatio, Fixed *vRatio);

/* control manipulation routines */

pascal Boolean SkelHiliteControl (ControlHandle ctrl, short hilite);
pascal void SkelDrawButtonOutline (ControlHandle ctrl);
pascal void SkelEraseButtonOutline (ControlHandle ctrl);
pascal void SkelFlashButton (ControlHandle ctrl);
pascal short SkelToggleCtlValue (ControlHandle ctrl);

/* dialog item manipulation routines */

pascal ControlHandle SkelGetDlogCtl (DialogPtr d, short item);
pascal Boolean SkelSetDlogCtlHilite (DialogPtr d, short item, short hilite);
pascal short SkelGetDlogCtlHilite (DialogPtr d, short item);
pascal void SkelSetDlogCtlValue (DialogPtr d, short item, short value);
pascal short SkelGetDlogCtlValue (DialogPtr d, short item);
pascal short SkelToggleDlogCtlValue (DialogPtr d, short item);
pascal void SkelSetDlogCtlRefCon (DialogPtr d, short item, long value);
pascal long SkelGetDlogCtlRefCon (DialogPtr d, short item);
pascal void SkelSetDlogStr (DialogPtr d, short item, StringPtr str);
pascal void SkelGetDlogStr (DialogPtr d, short item, StringPtr str);
pascal void SkelSetDlogRect (DialogPtr d, short item, Rect *r);
pascal void SkelGetDlogRect (DialogPtr d, short item, Rect *r);
pascal void SkelSetDlogProc (DialogPtr d, short item, SkelDlogItemProcPtr p);
pascal SkelDlogItemProcPtr SkelGetDlogProc (DialogPtr d, short item);
pascal void SkelSetDlogType (DialogPtr d, short item, short type);
pascal short SkelGetDlogType (DialogPtr d, short item);
pascal void SkelSetDlogRadioButtonSet (DialogPtr dlog, short first, short last, short choice);
pascal void SkelSetDlogButtonOutliner (DialogPtr d, short item);
pascal void SkelSetDlogCursor (DialogPtr d);
pascal Boolean SkelDlogMapKeyToButton (DialogPtr d, EventRecord *evt, short *item,
										short defaultItem, short cancelItem);

pascal void SkelPause (long ticks);

# endif /* __TRANSSKEL_H__ */