topical media & game development

talk show tell print

lib-of-vs-libs-QTDevWin-CIncludes-AppleGuide.h / h



  /*
       File:       AppleGuide.h
   
       Contains:   Apple Guide Interfaces.
   
       Version:    Technology: Mac OS 8
                   Release:    QuickTime 6.0.2
   
       Copyright:  (c) 1994-2001 by Apple Computer, Inc., all rights reserved.
   
       Bugs?:      For bug reports, consult the following page on
                   the World Wide Web:
   
                       http://developer.apple.com/bugreporter/
   
  */
  ifndef __APPLEGUIDE__
  define __APPLEGUIDE__
  
  ifndef __MACTYPES__
  include <MacTypes.h>
  endif
  
  ifndef __APPLEEVENTS__
  include <AppleEvents.h>
  endif
  
  ifndef __FILES__
  include <Files.h>
  endif
  
  if PRAGMA_ONCE
  #pragma once
  endif
  
  ifdef __cplusplus
  extern "C" {
  endif
  
  if PRAGMA_IMPORT
  #pragma import on
  endif
  
  if PRAGMA_STRUCT_ALIGN
      #pragma options align=mac68k
  #elif PRAGMA_STRUCT_PACKPUSH
      #pragma pack(push, 2)
  #elif PRAGMA_STRUCT_PACK
      #pragma pack(2)
  endif
  
  /* Types*/
  typedef UInt32                          AGRefNum;
  typedef UInt32                          AGCoachRefNum;
  typedef UInt32                          AGContextRefNum;
  
  struct AGAppInfo {
      AEEventID                       eventId;
      long                            refCon;
      void *                          contextObj;                 /* private system field*/
  };
  typedef struct AGAppInfo                AGAppInfo;
  typedef AGAppInfo *                     AGAppInfoPtr;
  typedef AGAppInfoPtr *                  AGAppInfoHdl;
  typedef CALLBACK_API( OSErr , CoachReplyProcPtr )(Rect *pRect, Ptr name, long refCon);
  typedef CALLBACK_API( OSErr , ContextReplyProcPtr )(Ptr pInputData, Size inputDataSize, Ptr *ppOutputData, Size *pOutputDataSize, AGAppInfoHdl hAppInfo);
  typedef STACK_UPP_TYPE(CoachReplyProcPtr)                       CoachReplyUPP;
  typedef STACK_UPP_TYPE(ContextReplyProcPtr)                     ContextReplyUPP;
  if OPAQUE_UPP_TYPES
  if CALL_NOT_IN_CARBON
      EXTERN_API(CoachReplyUPP)
      NewCoachReplyUPP               (CoachReplyProcPtr       userRoutine);
  
      EXTERN_API(ContextReplyUPP)
      NewContextReplyUPP             (ContextReplyProcPtr     userRoutine);
  
      EXTERN_API(void)
      DisposeCoachReplyUPP           (CoachReplyUPP           userUPP);
  
      EXTERN_API(void)
      DisposeContextReplyUPP         (ContextReplyUPP         userUPP);
  
      EXTERN_API(OSErr)
      InvokeCoachReplyUPP            (Rect *                  pRect,
                                      Ptr                     name,
                                      long                    refCon,
                                      CoachReplyUPP           userUPP);
  
      EXTERN_API(OSErr)
      InvokeContextReplyUPP          (Ptr                     pInputData,
                                      Size                    inputDataSize,
                                      Ptr *                   ppOutputData,
                                      Size *                  pOutputDataSize,
                                      AGAppInfoHdl            hAppInfo,
                                      ContextReplyUPP         userUPP);
  
  endif  /* CALL_NOT_IN_CARBON */
  
  else
      enum { uppCoachReplyProcInfo = 0x00000FE0 };                    /* pascal 2_bytes Func(4_bytes, 4_bytes, 4_bytes) */
      enum { uppContextReplyProcInfo = 0x0000FFE0 };                  /* pascal 2_bytes Func(4_bytes, 4_bytes, 4_bytes, 4_bytes, 4_bytes) */
      #define NewCoachReplyUPP(userRoutine)                           (CoachReplyUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppCoachReplyProcInfo, GetCurrentArchitecture())
      #define NewContextReplyUPP(userRoutine)                         (ContextReplyUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppContextReplyProcInfo, GetCurrentArchitecture())
      #define DisposeCoachReplyUPP(userUPP)                           DisposeRoutineDescriptor(userUPP)
      #define DisposeContextReplyUPP(userUPP)                         DisposeRoutineDescriptor(userUPP)
      #define InvokeCoachReplyUPP(pRect, name, refCon, userUPP)       (OSErr)CALL_THREE_PARAMETER_UPP((userUPP), uppCoachReplyProcInfo, (pRect), (name), (refCon))
      #define InvokeContextReplyUPP(pInputData, inputDataSize, ppOutputData, pOutputDataSize, hAppInfo, userUPP)  (OSErr)CALL_FIVE_PARAMETER_UPP((userUPP), uppContextReplyProcInfo, (pInputData), (inputDataSize), (ppOutputData), (pOutputDataSize), (hAppInfo))
  endif
  /* support for pre-Carbon UPP routines: NewXXXProc and CallXXXProc */
  define NewCoachReplyProc(userRoutine)                          NewCoachReplyUPP(userRoutine)
  define NewContextReplyProc(userRoutine)                        NewContextReplyUPP(userRoutine)
  define CallCoachReplyProc(userRoutine, pRect, name, refCon)    InvokeCoachReplyUPP(pRect, name, refCon, userRoutine)
  define CallContextReplyProc(userRoutine, pInputData, inputDataSize, ppOutputData, pOutputDataSize, hAppInfo) InvokeContextReplyUPP(pInputData, inputDataSize, ppOutputData, pOutputDataSize, hAppInfo, userRoutine)
  /* Constants*/
  
  enum {
      kAGDefault                  = 0,
      kAGFrontDatabase            = 1,
      kAGNoMixin                  = (-1)
  };
  
  enum {
      kAGViewFullHowdy            = 1,                            /* Full-size Howdy*/
      kAGViewTopicAreas           = 2,                            /* Full-size Topic Areas*/
      kAGViewIndex                = 3,                            /* Full-size Index Terms*/
      kAGViewLookFor              = 4,                            /* Full-size Look-For (Search)*/
      kAGViewSingleHowdy          = 5,                            /* Single-list-size Howdy*/
      kAGViewSingleTopics         = 6                             /* Single-list-size Topics*/
  };
  
  enum {
      kAGFileMain                 = FOUR_CHAR_CODE('poco'),
      kAGFileMixin                = FOUR_CHAR_CODE('mixn')
  };
  
  /* To test against AGGetAvailableDBTypes*/
  enum {
      kAGDBTypeBitAny             = 0x00000001,
      kAGDBTypeBitHelp            = 0x00000002,
      kAGDBTypeBitTutorial        = 0x00000004,
      kAGDBTypeBitShortcuts       = 0x00000008,
      kAGDBTypeBitAbout           = 0x00000010,
      kAGDBTypeBitOther           = 0x00000080
  };
  
  typedef UInt16                          AGStatus;
  /* Returned by AGGetStatus*/
  enum {
      kAGIsNotRunning             = 0,
      kAGIsSleeping               = 1,
      kAGIsActive                 = 2
  };
  
  /* Flags used in AGOpen, AGOpenWithSearch, AGOpenWithView*/
  enum {
      kHelpViewerSearchAll        = (1 << 0)
  };
  
  typedef UInt16                          AGWindowKind;
  /* Returned by AGGetFrontWindowKind*/
  enum {
      kAGNoWindow                 = 0,
      kAGAccessWindow             = 1,
      kAGPresentationWindow       = 2
  };
  
  /* Error Codes*/
  
  /* Not an enum, because other OSErrs are valid.*/
  typedef SInt16                          AGErr;
  /* Apple Guide error codes*/
  enum {
                                                                  /* -------------------- Apple event reply codes*/
      kAGErrUnknownEvent          = -2900,
      kAGErrCantStartup           = -2901,
      kAGErrNoAccWin              = -2902,
      kAGErrNoPreWin              = -2903,
      kAGErrNoSequence            = -2904,
      kAGErrNotOopsSequence       = -2905,
      kAGErrReserved06            = -2906,
      kAGErrNoPanel               = -2907,
      kAGErrContentNotFound       = -2908,
      kAGErrMissingString         = -2909,
      kAGErrInfoNotAvail          = -2910,
      kAGErrEventNotAvailable     = -2911,
      kAGErrCannotMakeCoach       = -2912,
      kAGErrSessionIDsNotMatch    = -2913,
      kAGErrMissingDatabaseSpec   = -2914,
      kAGMissingSequenceMap       = -2915,                        /* -------------------- Coach's Chalkboard reply codes*/
      kAGErrItemNotFound          = -2925,
      kAGErrBalloonResourceNotFound = -2926,
      kAGErrChalkResourceNotFound = -2927,
      kAGErrChdvResourceNotFound  = -2928,
      kAGErrAlreadyShowing        = -2929,
      kAGErrBalloonResourceSkip   = -2930,
      kAGErrItemNotVisible        = -2931,
      kAGErrReserved32            = -2932,
      kAGErrNotFrontProcess       = -2933,
      kAGErrMacroResourceNotFound = -2934,                        /* -------------------- API reply codes*/
      kAGErrAppleGuideNotAvailable = -2951,
      kAGErrCannotInitCoach       = -2952,
      kAGErrCannotInitContext     = -2953,
      kAGErrCannotOpenAliasFile   = -2954,
      kAGErrNoAliasResource       = -2955,
      kAGErrDatabaseNotAvailable  = -2956,
      kAGErrDatabaseNotOpen       = -2957,
      kAGErrMissingAppInfoHdl     = -2958,
      kAGErrMissingContextObject  = -2959,
      kAGErrInvalidRefNum         = -2960,
      kAGErrDatabaseOpen          = -2961,
      kAGErrInsufficientMemory    = -2962
  };
  
  /* Events*/
  
  /* Not an enum because we want to make assignments.*/
  typedef UInt32                          AGEvent;
  /* Handy events for AGGeneral.*/
  enum {
                                                                  /* Panel actions (Require a presentation window).*/
      kAGEventDoCoach             = FOUR_CHAR_CODE('doco'),
      kAGEventDoHuh               = FOUR_CHAR_CODE('dhuh'),
      kAGEventGoNext              = FOUR_CHAR_CODE('gonp'),
      kAGEventGoPrev              = FOUR_CHAR_CODE('gopp'),
      kAGEventHidePanel           = FOUR_CHAR_CODE('pahi'),
      kAGEventReturnBack          = FOUR_CHAR_CODE('gobk'),
      kAGEventShowPanel           = FOUR_CHAR_CODE('pash'),
      kAGEventTogglePanel         = FOUR_CHAR_CODE('patg')
  };
  
  /* Functions*/
  
  /*
     AGClose
     Close the database associated with the AGRefNum.
  */
  
  if CALL_NOT_IN_CARBON
  EXTERN_API( AGErr )
  AGClose                         (AGRefNum *             refNum)                             TWOWORDINLINE(0x7011, 0xAA6E);
  
  /*
     AGGeneral
     Cause various events to happen.
  */
  
  EXTERN_API( AGErr )
  AGGeneral                       (AGRefNum               refNum,
                                   AGEvent                theEvent)                           TWOWORDINLINE(0x700D, 0xAA6E);
  
  /*
     AGGetAvailableDBTypes
     Return the database types available for this application.
  */
  
  EXTERN_API( UInt32 )
  AGGetAvailableDBTypes           (void)                                                      TWOWORDINLINE(0x7008, 0xAA6E);
  
  /*
     AGGetFrontWindowKind
     Return the kind of the front window.
  */
  
  EXTERN_API( AGWindowKind )
  AGGetFrontWindowKind            (AGRefNum               refNum)                             TWOWORDINLINE(0x700C, 0xAA6E);
  
  /*
     AGGetFSSpec
     Return the FSSpec for the AGRefNum.
  */
  
  EXTERN_API( AGErr )
  AGGetFSSpec                     (AGRefNum               refNum,
                                   FSSpec *               fileSpec)                           TWOWORDINLINE(0x700F, 0xAA6E);
  
  /*
     AGGetStatus
     Return the status of Apple Guide.
  */
  
  EXTERN_API( AGStatus )
  AGGetStatus                     (void)                                                      TWOWORDINLINE(0x7009, 0xAA6E);
  
  /*
     AGInstallCoachHandler
     Install a Coach object location query handler.
  */
  
  EXTERN_API( AGErr )
  AGInstallCoachHandler           (CoachReplyUPP          coachReplyProc,
                                   long                   refCon,
                                   AGCoachRefNum *        resultRefNum)                       TWOWORDINLINE(0x7012, 0xAA6E);
  
  /*
     AGInstallContextHandler
     Install a context check query handler.
  */
  
  EXTERN_API( AGErr )
  AGInstallContextHandler         (ContextReplyUPP        contextReplyProc,
                                   AEEventID              eventID,
                                   long                   refCon,
                                   AGContextRefNum *      resultRefNum)                       TWOWORDINLINE(0x7013, 0xAA6E);
  
  /*
     AGIsDatabaseOpen
     Return true if the database associated with the AGRefNum is open.
  */
  
  EXTERN_API( Boolean )
  AGIsDatabaseOpen                (AGRefNum               refNum)                             TWOWORDINLINE(0x7006, 0xAA6E);
  
  /*
     AGOpen
     Open a guide database.
  */
  
  EXTERN_API( AGErr )
  AGOpen                          (ConstFSSpecPtr         fileSpec,
                                   UInt32                 flags,
                                   Handle                 mixinControl,
                                   AGRefNum *             resultRefNum)                       TWOWORDINLINE(0x7001, 0xAA6E);
  
  /*
     AGOpenWithSearch
     Open a guide database and preset a search string.
  */
  
  EXTERN_API( AGErr )
  AGOpenWithSearch                (ConstFSSpecPtr         fileSpec,
                                   UInt32                 flags,
                                   Handle                 mixinControl,
                                   ConstStr255Param       searchString,
                                   AGRefNum *             resultRefNum)                       TWOWORDINLINE(0x7002, 0xAA6E);
  
  /*
     AGOpenWithSequence
     Open a guide database and display a presentation window sequence.
  */
  
  EXTERN_API( AGErr )
  AGOpenWithSequence              (ConstFSSpecPtr         fileSpec,
                                   UInt32                 flags,
                                   Handle                 mixinControl,
                                   short                  sequenceID,
                                   AGRefNum *             resultRefNum)                       TWOWORDINLINE(0x7004, 0xAA6E);
  
  /*
     AGOpenWithView
     Open a guide database and override the default view.
  */
  
  EXTERN_API( AGErr )
  AGOpenWithView                  (ConstFSSpecPtr         fileSpec,
                                   UInt32                 flags,
                                   Handle                 mixinControl,
                                   short                  viewNum,
                                   AGRefNum *             resultRefNum)                       TWOWORDINLINE(0x7005, 0xAA6E);
  
  /*
     AGQuit
     Make Apple Guide quit.
  */
  
  EXTERN_API( AGErr )
  AGQuit                          (void)                                                      TWOWORDINLINE(0x7010, 0xAA6E);
  
  /*
     AGRemoveCoachHandler
     Remove the Coach object location query handler.
  */
  
  EXTERN_API( AGErr )
  AGRemoveCoachHandler            (AGCoachRefNum *        resultRefNum)                       TWOWORDINLINE(0x7014, 0xAA6E);
  
  /*
     AGRemoveContextHandler
     Remove the context check query handler.
  */
  
  EXTERN_API( AGErr )
  AGRemoveContextHandler          (AGContextRefNum *      resultRefNum)                       TWOWORDINLINE(0x7015, 0xAA6E);
  
  /*
     AGStart
     Start up Apple Guide in the background.
  */
  
  EXTERN_API( AGErr )
  AGStart                         (void)                                                      TWOWORDINLINE(0x700A, 0xAA6E);
  
  /* typedef's*/
  
  endif  /* CALL_NOT_IN_CARBON */
  
  typedef FSSpec                          AGFileFSSpecType;
  typedef short                           AGFileSelectorCountType;
  typedef short                           AGFileSelectorIndexType;
  typedef OSType                          AGFileSelectorType;
  typedef long                            AGFileSelectorValueType;
  typedef short                           AGFileDBType;
  typedef Str63                           AGFileDBMenuNamePtr;
  typedef short                           AGFileDBScriptType;
  typedef short                           AGFileDBRegionType;
  typedef short                           AGFileMajorRevType;
  typedef short                           AGFileMinorRevType;
  typedef short                           AGFileCountType;
  /* Database types (for AGFileDBType parameter).*/
  enum {
      kAGFileDBTypeAny            = 0,
      kAGFileDBTypeHelp           = 1,
      kAGFileDBTypeTutorial       = 2,
      kAGFileDBTypeShortcuts      = 3,
      kAGFileDBTypeAbout          = 4,
      kAGFileDBTypeOther          = 8
  };
  
  if CALL_NOT_IN_CARBON
  EXTERN_API( OSErr )
  AGFileGetDBMenuName             (const FSSpec *         fileSpec,
                                   Str63                  menuItemNameString);
  
  /* Get the database type.*/
  EXTERN_API( OSErr )
  AGFileGetDBType                 (const FSSpec *         fileSpec,
                                   AGFileDBType *         databaseType);
  
  /*
     Get the version of the software
     that created this database.
  */
  EXTERN_API( OSErr )
  AGFileGetDBVersion              (const FSSpec *         fileSpec,
                                   AGFileMajorRevType *   majorRev,
                                   AGFileMinorRevType *   minorRev);
  
  /* Get the database script and region information.*/
  EXTERN_API( OSErr )
  AGFileGetDBCountry              (const FSSpec *         fileSpec,
                                   AGFileDBScriptType *   script,
                                   AGFileDBRegionType *   region);
  
  /* Return the number of selectors in database.*/
  EXTERN_API( AGFileSelectorCountType )
  AGFileGetSelectorCount          (const FSSpec *         fileSpec);
  
  /*
     Get the i-th database selector (1 to AGFileSelectorCountType)
     and its value.
  */
  EXTERN_API( OSErr )
  AGFileGetSelector               (const FSSpec *         fileSpec,
                                   AGFileSelectorIndexType  selectorNumber,
                                   AGFileSelectorType *   selector,
                                   AGFileSelectorValueType * value);
  
  /* Return true if database is mixin.*/
  EXTERN_API( Boolean )
  AGFileIsMixin                   (const FSSpec *         fileSpec);
  
  /*
     Return the number of database files
     of the specified databaseType and main/mixin.
     Any file creator is acceptible,
     but type must be kAGFileMain or kAGFileMixin.
  */
  EXTERN_API( AGFileCountType )
  AGFileGetDBCount                (short                  vRefNum,
                                   long                   dirID,
                                   AGFileDBType           databaseType,
                                   Boolean                wantMixin);
  
  /*
     Get the FSSpec for the dbIndex-th database
     of the specified databaseType and main/mixin.
     Any file creator is acceptible,
     but type must be kAGFileMain or kAGFileMixin.
  */
  EXTERN_API( OSErr )
  AGFileGetIndDB                  (short                  vRefNum,
                                   long                   dirID,
                                   AGFileDBType           databaseType,
                                   Boolean                wantMixin,
                                   short                  dbIndex,
                                   FSSpec *               fileSpec);
  
  /*
     This selector must match with the application
     creator in order for this file to appear in the 
     application's Help menu. Ignored for mixin files
     because they never appear in the Help menu anyway.
     If empty (zeros), will appear in the Help menu
     of any host application.
  */
  EXTERN_API( OSErr )
  AGFileGetHelpMenuAppCreator     (const FSSpec *         fileSpec,
                                   OSType *               helpMenuAppCreator);
  
  /*
     This selector must match in the main and mixin
     files in order for the mixin to mix-in with the main.
     Empty (zeros) selectors are valid matches.
     A '****' selector will mix-in with any main.
  */
  EXTERN_API( OSErr )
  AGFileGetMixinMatchSelector     (const FSSpec *         fileSpec,
                                   OSType *               mixinMatchSelector);
  
  /*
     This is the text of the balloon for the
     Help menu item for this database.
  */
  EXTERN_API( OSErr )
  AGFileGetHelpMenuBalloonText    (const FSSpec *         fileSpec,
                                   Str255                 helpMenuBalloonString);
  
  EXTERN_API( OSErr )
  AGGetSystemDB                   (AGFileDBType           databaseType,
                                   Boolean                wantMixin,
                                   FSSpec *               pFileSpec);
  
  endif  /* CALL_NOT_IN_CARBON */
  
  if PRAGMA_STRUCT_ALIGN
      #pragma options align=reset
  #elif PRAGMA_STRUCT_PACKPUSH
      #pragma pack(pop)
  #elif PRAGMA_STRUCT_PACK
      #pragma pack()
  endif
  
  ifdef PRAGMA_IMPORT_OFF
  #pragma import off
  #elif PRAGMA_IMPORT
  #pragma import reset
  endif
  
  ifdef __cplusplus
  }
  endif
  
  endif /* __APPLEGUIDE__ */
  
  


(C) Æliens 04/09/2009

You may not copy or print any of this material without explicit permission of the author or the publisher. In case of other copyright issues, contact the author.