home *** CD-ROM | disk | FTP | other *** search
/ Mac-Source 1994 July / Mac-Source_July_1994.iso / C and C++ / Libraries / TransSkel / Interface / TransSkel.h next >
Encoding:
C/C++ Source or Header  |  1994-02-20  |  10.2 KB  |  281 lines  |  [TEXT/KAHL]

  1. /*
  2.  * prototypes for TransSkel public routines
  3.  *
  4.  * Written for THINK C 6.0.1.
  5.  *
  6.  * Assumes that compiler understands nested prototypes.
  7.  *
  8.  * You must have THINK C Language Extensions turned on in the
  9.  * Edit/Options.../Language Settings dialog (so that the "pascal" keyword
  10.  * is recognized, for one thing).
  11.  *
  12.  * for:            TransSkel 3.11
  13.  * last edit:    20 Feb 94
  14.  */
  15.  
  16. # ifndef    __TRANSSKEL_H__
  17.  
  18. # define    __TRANSSKEL_H__
  19.  
  20. # define    skelMajorRelease    3
  21. # define    skelMinorRelease    11
  22.  
  23.  
  24. /* window property numbers */
  25.  
  26. # define    skelWPropAll            0        /* pseudo-property */
  27. # define    skelWPropModeless        1        /* modeless dialog */
  28. # define    skelWPropModal            2        /* modal dialog */
  29. # define    skelWPropTool            3        /* tool window */
  30. # define    skelWPropMovableModal    4        /* movable modal dialog */
  31. # define    skelWPropHelp            5        /* help window */
  32. # define    skelWPropText            6        /* text window */
  33. # define    skelWPropDisplayWind    7        /* TransDisplay window */
  34. # define    skelWPropEditWind        8        /* TransEdit window */
  35. # define    skelWPropApplBase        256        /* general-use prop num base */
  36.  
  37.  
  38. /* SkelQuery() query selectors */
  39.  
  40. # define    skelQVersion        1            /* TransSkel version */
  41. # define    skelQSysVersion        2            /* System software version */
  42. # define    skelQHasWNE            3            /* whether has WaitNextEvent() */
  43. # define    skelQMBarHeight        4            /* menu bar height */
  44. # define    skelQHas64KROM        5            /* whether has 64K ROM */
  45. # define    skelQHasColorQD        6            /* whether has Color QuickDraw */
  46. # define    skelQInForeground    7            /* whether in foreground */
  47. # define    skelQHasGestalt        8            /* whether has Gestalt() */
  48. # define    skelQHasAppleEvents    9            /* whether has Apple Events */
  49. # define    skelQQDVersion        10            /* QuickDraw version */
  50. # define    skelQGrayRgn        11            /* Desktop region */
  51.  
  52.  
  53. /* window property types */
  54.  
  55. typedef struct SkelWindProperty    SkelWindProperty, **SkelWindPropHandle;
  56.  
  57. struct SkelWindProperty
  58. {
  59.     short                skelWPropType;
  60.     long                skelWPropData;
  61.     SkelWindPropHandle    skelWPropNext;
  62. };
  63.  
  64.  
  65. /* initialization parameters */
  66.  
  67. typedef struct SkelInitParams SkelInitParams, *SkelInitParamsPtr;
  68.  
  69. struct SkelInitParams
  70. {
  71.     short            skelMoreMasters;
  72.     GrowZoneProcPtr skelGzProc;
  73.     ResumeProcPtr    skelResumeProc;
  74.     Size            skelStackAdjust;
  75. };
  76.  
  77.  
  78. /*
  79.  * typedefs for pointers to various sorts of functions used by TransSkel
  80.  * routines.
  81.  */
  82.  
  83. typedef pascal void (*SkelIdleProcPtr) (void);
  84. typedef    pascal Boolean (*SkelEventHookProcPtr) (EventRecord *);
  85. typedef pascal void (*SkelSuspendResumeProcPtr) (Boolean inForeground);
  86. typedef pascal void (*SkelClipCvtProcPtr) (Boolean inForeground);
  87. typedef pascal void (*SkelAEHandlerProcPtr) (EventRecord *);
  88. typedef    pascal void (*SkelDlogItemProcPtr) (DialogPtr d, short item);
  89.  
  90.  
  91. /* ------------- */
  92. /* Core routines */
  93. /* ------------- */
  94.  
  95. /* initialization/termination routines */
  96.  
  97. pascal void SkelGetInitParams (SkelInitParamsPtr initParams);
  98. pascal void SkelInit (SkelInitParamsPtr initParams);
  99. pascal void SkelCleanup (void);
  100.  
  101. /* event-loop-related routines */
  102.  
  103. pascal void SkelEventLoop (void);
  104. pascal void SkelStopEventLoop (void);
  105. pascal void SkelRouteEvent (EventRecord *theEvent);
  106. pascal void SkelActivate (WindowPtr w, Boolean active);
  107. pascal void SkelClose (WindowPtr w);
  108. pascal EventRecord *SkelGetCurrentEvent (void);
  109. pascal short SkelGetModifiers (void);
  110. pascal void SkelSetEventMask (short mask);
  111. pascal short SkelGetEventMask (void);
  112. pascal void SkelSetDlogMask (short mask);
  113. pascal short SkelGetDlogMask (void);
  114. pascal void SkelSetIdle (SkelIdleProcPtr p);
  115. pascal SkelIdleProcPtr SkelGetIdle (void);
  116. pascal void SkelSetEventHook (SkelEventHookProcPtr p);
  117. pascal SkelEventHookProcPtr SkelGetEventHook (void);
  118. pascal void SkelSetSuspendResume (SkelSuspendResumeProcPtr p);
  119. pascal SkelSuspendResumeProcPtr SkelGetSuspendResume (void);
  120. pascal void SkelSetClipCvt (SkelClipCvtProcPtr p);
  121. pascal SkelClipCvtProcPtr SkelGetClipCvt (void);
  122. pascal void SkelSetWaitTimes (long fgTime, long bgTime);
  123. pascal void SkelGetWaitTimes (long *pFgTime, long *pBgTime);
  124.  
  125. pascal void SkelSetAEHandler (SkelAEHandlerProcPtr p);
  126. pascal SkelAEHandlerProcPtr SkelGetAEHandler (void);
  127.  
  128.  
  129. /* window handling routines */
  130.  
  131. typedef    pascal void (*SkelWindMouseProcPtr) (Point where, long when, short modifiers);
  132. /*
  133.  * Key handler needs special treatment because for prototyped functions
  134.  * (which TransSkel uses), THINK C passes character arguments in the *high*
  135.  * byte of a two-byte stack value.  To make sure the values are passed in the
  136.  * low byte from either C or Pascal key handlers, the first two arguments are
  137.  * passed in shorts.  The Pascal key procedure should
  138.  * look like this:
  139.  *     procedure Key (c: char; code: Integer; modifiers: Integer);
  140.  */
  141. typedef    pascal void (*SkelWindKeyProcPtr) (short c, short code, short modifiers);
  142. typedef    pascal void (*SkelWindUpdateProcPtr) (Boolean resized);
  143. typedef    pascal void (*SkelWindActivateProcPtr) (Boolean active);
  144. typedef    pascal void (*SkelWindCloseProcPtr) (void);
  145. typedef    pascal void (*SkelWindClobberProcPtr) (void);
  146. typedef    pascal void (*SkelWindIdleProcPtr) (void);
  147.  
  148. typedef    pascal void (*SkelWindEventProcPtr) (short item, EventRecord *event);
  149.  
  150. typedef    pascal void (*SkelWindZoomProcPtr) (WindowPtr w, short zoomDir);
  151.  
  152. pascal Boolean SkelWindow (WindowPtr w,
  153.                     SkelWindMouseProcPtr pMouse,
  154.                     SkelWindKeyProcPtr pKey,
  155.                     SkelWindUpdateProcPtr pUpdate,
  156.                     SkelWindActivateProcPtr pActivate,
  157.                     SkelWindCloseProcPtr pClose,
  158.                     SkelWindClobberProcPtr pClobber,
  159.                     SkelWindIdleProcPtr pIdle,
  160.                     Boolean idleFrontOnly);
  161. pascal Boolean SkelDialog (DialogPtr dlog,
  162.                     SkelWindEventProcPtr pEvent,
  163.                     SkelWindCloseProcPtr pClose,
  164.                     SkelWindClobberProcPtr pClobber);
  165. pascal void SkelRmveWind (WindowPtr w);
  166. pascal void SkelRmveDlog (DialogPtr dlog);
  167. pascal Boolean SkelWindowRegistered (WindowPtr w);
  168. pascal void SkelSetGrowBounds (WindowPtr w,
  169.                             short hLo, short vLo,
  170.                             short hHi, short vHi);
  171. pascal void SkelSetZoom (WindowPtr w, SkelWindZoomProcPtr pZoom);
  172. pascal SkelWindZoomProcPtr SkelGetZoom (WindowPtr w);
  173. pascal Boolean SkelGetRectDevice (Rect *rp, GDHandle *gd, Rect *devRect, Boolean *isMain);
  174. pascal Boolean SkelGetWindowDevice (WindowPtr w, GDHandle *gd, Rect *devRect);
  175. pascal void SkelGetWindContentRect (WindowPtr w, Rect *rp);
  176. pascal void SkelGetWindStructureRect (WindowPtr w, Rect *rp);
  177. pascal short SkelGetWindTitleHeight (WindowPtr w);
  178.  
  179. pascal Boolean SkelAddWindProp (WindowPtr w, short propType, long propData);
  180. pascal void SkelRmveWindProp (WindowPtr w, short propType);
  181. pascal SkelWindPropHandle SkelGetWindProp (WindowPtr w, short propType);
  182.  
  183.  
  184. /* menu handling routines */
  185.  
  186. typedef    pascal void (*SkelMenuSelectProcPtr) (short item);
  187. typedef    pascal void (*SkelMenuClobberProcPtr) (MenuHandle m);
  188. typedef pascal void (*SkelMenuHookProcPtr) (void);
  189.  
  190. pascal Boolean SkelMenu (MenuHandle m,
  191.                     SkelMenuSelectProcPtr pSelect,
  192.                     SkelMenuClobberProcPtr pClobber,
  193.                     Boolean subMenu,
  194.                     Boolean drawBar);
  195. pascal void SkelRmveMenu (MenuHandle m);
  196.  
  197. pascal void SkelSetMenuHook (SkelMenuHookProcPtr p);
  198. pascal SkelMenuHookProcPtr SkelGetMenuHook (void);
  199.  
  200.  
  201. /* environment information routines */
  202.  
  203. pascal long SkelQuery (short selector);
  204. pascal Boolean SkelTrapAvailable (short theTrap);
  205.  
  206.  
  207. /* ------------------ */
  208. /* Auxiliary routines */
  209. /* ------------------ */
  210.  
  211. # define    skelAppleMenuID        128
  212.  
  213. pascal void SkelApple (StringPtr items, SkelMenuSelectProcPtr pSelect);
  214.  
  215. pascal void SkelDoEvents (short mask);
  216. pascal void SkelDoUpdates (void);
  217.  
  218. pascal ModalFilterProcPtr SkelDlogFilter (ModalFilterProcPtr filter, Boolean doReturn);
  219. pascal ModalFilterYDProcPtr SkelDlogFilterYD (ModalFilterYDProcPtr filter, Boolean doReturn);
  220. pascal void SkelRmveDlogFilter (void);
  221. pascal void SkelDlogDefaultItem (short item);
  222. pascal void SkelDlogCancelItem (short item);
  223.  
  224. pascal Boolean SkelCmdPeriod (EventRecord *evt);
  225.  
  226.  
  227. /* -------------------- */
  228. /* Convenience routines */
  229. /* -------------------- */
  230.  
  231. /* positioning types for SkelGetReferenceRect()/SkelPositionWindow() */
  232.  
  233. # define    skelPositionNone            0    /* leave as is */
  234. # define    skelPositionOnMainDevice    1    /* position on main device */
  235. # define    skelPositionOnParentWindow    2    /* position on FrontWindow() */
  236. # define    skelPositionOnParentDevice    3    /* position on FrontWindow()'s device */
  237.  
  238. pascal void SkelGetMainDeviceRect (Rect *r);
  239. pascal void SkelPositionRect (Rect *refRect, Rect *r, Fixed hRatio, Fixed vRatio);
  240. pascal void SkelGetReferenceRect (Rect *r, short positionType);
  241. pascal void SkelPositionWindow (WindowPtr w, short positionType, Fixed hRatio, Fixed vRatio);
  242. pascal Boolean SkelTestRectVisible (Rect *r);
  243.  
  244. /* alert presentation routines */
  245.  
  246. pascal short SkelAlert (short alrtResNum, ModalFilterProcPtr filter, short positionType);
  247. pascal void SkelSetAlertPosRatios (Fixed hRatio, Fixed vRatio);
  248. pascal void SkelGetAlertPosRatios (Fixed *hRatio, Fixed *vRatio);
  249.  
  250. /* control manipulation routines */
  251.  
  252. pascal Boolean SkelHiliteControl (ControlHandle ctrl, short hilite);
  253. pascal void SkelDrawButtonOutline (ControlHandle ctrl);
  254. pascal void SkelEraseButtonOutline (ControlHandle ctrl);
  255. pascal void SkelFlashButton (ControlHandle ctrl);
  256. pascal short SkelToggleCtlValue (ControlHandle ctrl);
  257.  
  258. /* dialog item manipulation routines */
  259.  
  260. pascal ControlHandle SkelGetDlogCtl (DialogPtr d, short item);
  261. pascal Boolean SkelSetDlogCtlHilite (DialogPtr d, short item, short hilite);
  262. pascal short SkelGetDlogCtlHilite (DialogPtr d, short item);
  263. pascal void SkelSetDlogCtlValue (DialogPtr d, short item, short value);
  264. pascal short SkelGetDlogCtlValue (DialogPtr d, short item);
  265. pascal short SkelToggleDlogCtlValue (DialogPtr d, short item);
  266. pascal void SkelSetDlogCtlRefCon (DialogPtr d, short item, long value);
  267. pascal long SkelGetDlogCtlRefCon (DialogPtr d, short item);
  268. pascal void SkelSetDlogStr (DialogPtr d, short item, StringPtr str);
  269. pascal void SkelGetDlogStr (DialogPtr d, short item, StringPtr str);
  270. pascal void SkelSetDlogRect (DialogPtr d, short item, Rect *r);
  271. pascal void SkelGetDlogRect (DialogPtr d, short item, Rect *r);
  272. pascal void SkelSetDlogProc (DialogPtr d, short item, SkelDlogItemProcPtr p);
  273. pascal SkelDlogItemProcPtr SkelGetDlogProc (DialogPtr d, short item);
  274. pascal void SkelSetDlogType (DialogPtr d, short item, short type);
  275. pascal short SkelGetDlogType (DialogPtr d, short item);
  276. pascal void SkelSetDlogRadioButtonSet (DialogPtr dlog, short first, short last, short choice);
  277. pascal void SkelSetDlogButtonOutliner (DialogPtr d, short item);
  278.  
  279. pascal void SkelPause (long ticks);
  280.  
  281. # endif /* __TRANSSKEL_H__ */