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__ */
|