topical media & game development

talk show tell print

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



  /*
       File:       QuickTimeVR.h
   
       Contains:   QuickTime VR interfaces
   
       Version:    Technology: QuickTime VR 5.0
                   Release:    QuickTime 6.0.2
   
       Copyright:  (c) 1997-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 __QUICKTIMEVR__
  define __QUICKTIMEVR__
  
  ifndef __CONDITIONALMACROS__
  include <ConditionalMacros.h>
  endif
  
  ifndef __DIALOGS__
  include <Dialogs.h>
  endif
  
  ifndef __MOVIES__
  include <Movies.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
  
  typedef struct OpaqueQTVRInstance*      QTVRInstance;
  
  /* Released API Version numbers */
  define kQTVRAPIMajorVersion05  (0x05)
  define kQTVRAPIMajorVersion02  (0x02)
  define kQTVRAPIMinorVersion00  (0x00)
  define kQTVRAPIMinorVersion01  (0x01)
  define kQTVRAPIMinorVersion10  (0x10)
  define kQTVRAPIMinorVersion20  (0x20)
  
  /* Version numbers for the API described in this header */
  define kQTVRAPIMajorVersion kQTVRAPIMajorVersion05
  define kQTVRAPIMinorVersion kQTVRAPIMinorVersion00
  
  enum {
      kQTVRControllerSubType      = FOUR_CHAR_CODE('ctyp'),
      kQTVRQTVRType               = FOUR_CHAR_CODE('qtvr'),
      kQTVRPanoramaType           = FOUR_CHAR_CODE('pano'),
      kQTVRObjectType             = FOUR_CHAR_CODE('obje'),
      kQTVROldPanoType            = FOUR_CHAR_CODE('STpn'),       /* Used in QTVR 1.0 release*/
      kQTVROldObjectType          = FOUR_CHAR_CODE('stna')        /* Used in QTVR 1.0 release*/
  };
  
  if TARGET_OS_MAC && !TARGET_API_MAC_OSX
  define kQTVRUnknownType '????'     /* Unknown node type */
  else
  define kQTVRUnknownType '\?\?\?\?' /* Unknown node type */
  endif  /* TARGET_OS_MAC && !TARGET_API_MAC_OSX */
  
  /* QTVR hot spot types*/
  enum {
      kQTVRHotSpotLinkType        = FOUR_CHAR_CODE('link'),
      kQTVRHotSpotURLType         = FOUR_CHAR_CODE('url '),
      kQTVRHotSpotUndefinedType   = FOUR_CHAR_CODE('undf')
  };
  
  /* Special Values for nodeID in QTVRGoToNodeID*/
  enum {
      kQTVRCurrentNode            = 0,
      kQTVRPreviousNode           = (long)0x80000000,
      kQTVRDefaultNode            = (long)0x80000001
  };
  
  /* Panorama correction modes used for the kQTVRImagingCorrection imaging property*/
  enum {
      kQTVRNoCorrection           = 0,
      kQTVRPartialCorrection      = 1,
      kQTVRFullCorrection         = 2
  };
  
  /* Imaging Modes used by QTVRSetImagingProperty, QTVRGetImagingProperty, QTVRUpdate, QTVRBeginUpdate*/
  
  typedef UInt32 QTVRImagingMode;
  enum {
      kQTVRStatic                 = 1,
      kQTVRMotion                 = 2,
      kQTVRCurrentMode            = 0,                            /* Special Value for QTVRUpdate*/
      kQTVRAllModes               = 100                           /* Special value for QTVRSetProperty*/
  };
  
  /* Imaging Properties used by QTVRSetImagingProperty, QTVRGetImagingProperty*/
  enum {
      kQTVRImagingCorrection      = 1,
      kQTVRImagingQuality         = 2,
      kQTVRImagingDirectDraw      = 3,
      kQTVRImagingCurrentMode     = 100                           /* Get Only*/
  };
  
  /* OR the above with kImagingDefaultValue to get/set the default value*/
  enum {
      kImagingDefaultValue        = (long)0x80000000
  };
  
  /* Transition Types used by QTVRSetTransitionProperty, QTVREnableTransition*/
  enum {
      kQTVRTransitionSwing        = 1
  };
  
  /* Transition Properties QTVRSetTransitionProperty*/
  enum {
      kQTVRTransitionSpeed        = 1,
      kQTVRTransitionDirection    = 2
  };
  
  /* Constraint values used to construct value returned by GetConstraintStatus*/
  enum {
      kQTVRUnconstrained          = 0L,
      kQTVRCantPanLeft            = 1L << 0,
      kQTVRCantPanRight           = 1L << 1,
      kQTVRCantPanUp              = 1L << 2,
      kQTVRCantPanDown            = 1L << 3,
      kQTVRCantZoomIn             = 1L << 4,
      kQTVRCantZoomOut            = 1L << 5,
      kQTVRCantTranslateLeft      = 1L << 6,
      kQTVRCantTranslateRight     = 1L << 7,
      kQTVRCantTranslateUp        = 1L << 8,
      kQTVRCantTranslateDown      = 1L << 9
  };
  
  /* Object-only mouse mode values used to construct value returned by QTVRGetCurrentMouseMode*/
  enum {
      kQTVRPanning                = 1L << 0,                      /* standard objects, "object only" controllers*/
      kQTVRTranslating            = 1L << 1,                      /* all objects*/
      kQTVRZooming                = 1L << 2,                      /* all objects*/
      kQTVRScrolling              = 1L << 3,                      /* standard object arrow scrollers and joystick object*/
      kQTVRSelecting              = 1L << 4                       /* object absolute controller*/
  };
  
  /* Properties for use with QTVRSetInteractionProperty/GetInteractionProperty*/
  enum {
      kQTVRInteractionMouseClickHysteresis = 1,                   /* pixels within which the mouse is considered not to have moved (UInt16)*/
      kQTVRInteractionMouseClickTimeout = 2,                      /* ticks after which a mouse click times out and turns into panning (UInt32)*/
      kQTVRInteractionPanTiltSpeed = 3,                           /* control the relative pan/tilt speed from 1 (slowest) to 10 (fastest). (UInt32) Default is 5;*/
      kQTVRInteractionZoomSpeed   = 4,                            /* control the relative zooming speed from 1 (slowest) to 10 (fastest). (UInt32) Default is 5;*/
      kQTVRInteractionTranslateOnMouseDown = 101,                 /* Holding MouseDown with this setting translates zoomed object movies (Boolean)*/
      kQTVRInteractionMouseMotionScale = 102,                     /* The maximum angle of rotation caused by dragging across the display window. (* float)*/
      kQTVRInteractionNudgeMode   = 103                           /* A QTVRNudgeMode: rotate, translate, or the same as the current mouse mode. Requires QTVR 2.1*/
  };
  
  /* OR the above with kQTVRInteractionDefaultValue to get/set the default value*/
  enum {
      kQTVRInteractionDefaultValue = (long)0x80000000
  };
  
  /* Geometry constants used in QTVRSetBackBufferPrefs, QTVRGetBackBufferSettings, QTVRGetBackBufferMemInfo*/
  enum {
      kQTVRUseMovieGeometry       = 0,
      kQTVRVerticalCylinder       = FOUR_CHAR_CODE('vcyl'),
      kQTVRHorizontalCylinder     = FOUR_CHAR_CODE('hcyl'),
      kQTVRCube                   = FOUR_CHAR_CODE('cube')
  };
  
  /* Resolution constants used in QTVRSetBackBufferPrefs, QTVRGetBackBufferSettings, QTVRGetBackBufferMemInfo*/
  enum {
      kQTVRDefaultRes             = 0,
      kQTVRFullRes                = 1L << 0,
      kQTVRHalfRes                = 1L << 1,
      kQTVRQuarterRes             = 1L << 2
  };
  
  /* QTVR-specific pixelFormat constants used in QTVRSetBackBufferPrefs, QTVRGetBackBufferSettings, QTVRGetBackBufferMemInfo*/
  enum {
      kQTVRUseMovieDepth          = 0
  };
  
  /* Cache Size Pref constants used in QTVRSetBackBufferPrefs, QTVRGetBackBufferSettings*/
  enum {
      kQTVRMinimumCache           = -1,
      kQTVRSuggestedCache         = 0,
      kQTVRFullCache              = 1
  };
  
  /* Angular units used by QTVRSetAngularUnits*/
  
  typedef UInt32 QTVRAngularUnits;
  enum {
      kQTVRDegrees                = 0,
      kQTVRRadians                = 1
  };
  
  /* Values for enableFlag parameter in QTVREnableHotSpot*/
  enum {
      kQTVRHotSpotID              = 0,
      kQTVRHotSpotType            = 1,
      kQTVRAllHotSpots            = 2
  };
  
  /* Values for viewParameter for QTVRSet/GetViewParameter*/
  enum {
      kQTVRPanAngle               = 0x0100,                       /* default units; &float, &float*/
      kQTVRTiltAngle              = 0x0101,                       /* default units; &float, &float*/
      kQTVRFieldOfViewAngle       = 0x0103,                       /* default units; &float, &float*/
      kQTVRViewCenter             = 0x0104,                       /* pixels (per object movies); &QTVRFloatPoint, &QTVRFloatPoint*/
      kQTVRHotSpotsVisible        = 0x0200                        /* Boolean, &Boolean*/
  };
  
  /* Values for flagsIn for QTVRSet/GetViewParameter*/
  enum {
      kQTVRValueIsRelative        = 1L << 0,                      /* Is the value absolute or relative to the current value?*/
      kQTVRValueIsRate            = 1L << 1,                      /* Is the value absolute or a rate of change to be applied?*/
      kQTVRValueIsUserPrefRelative = 1L << 2                      /* Is the value a percentage of the user rate pref?*/
  };
  
  /* Values for kind parameter in QTVRGet/SetConstraints, QTVRGetViewingLimits*/
  enum {
      kQTVRPan                    = 0,
      kQTVRTilt                   = 1,
      kQTVRFieldOfView            = 2,
      kQTVRViewCenterH            = 4,                            /* WrapAndConstrain only*/
      kQTVRViewCenterV            = 5                             /* WrapAndConstrain only*/
  };
  
  /* Values for setting parameter in QTVRSetAnimationSetting, QTVRGetAnimationSetting*/
  
  typedef UInt32 QTVRObjectAnimationSetting;
  enum {
                                                                  /* View Frame Animation Settings*/
      kQTVRPalindromeViewFrames   = 1,
      kQTVRStartFirstViewFrame    = 2,
      kQTVRDontLoopViewFrames     = 3,
      kQTVRPlayEveryViewFrame     = 4,                            /* Requires QTVR 2.1 (kQTVRAPIMajorVersion02 + kQTVRAPIMinorVersion10)*/
                                                                  /* View Animation Settings*/
      kQTVRSyncViewToFrameRate    = 16,
      kQTVRPalindromeViews        = 17,
      kQTVRPlayStreamingViews     = 18                            /* Requires QTVR 2.1 (kQTVRAPIMajorVersion02 + kQTVRAPIMinorVersion10)*/
  };
  
  typedef UInt32 QTVRControlSetting;
  enum {
      kQTVRWrapPan                = 1,
      kQTVRWrapTilt               = 2,
      kQTVRCanZoom                = 3,
      kQTVRReverseHControl        = 4,
      kQTVRReverseVControl        = 5,
      kQTVRSwapHVControl          = 6,
      kQTVRTranslation            = 7
  };
  
  typedef UInt32 QTVRViewStateType;
  enum {
      kQTVRDefault                = 0,
      kQTVRCurrent                = 2,
      kQTVRMouseDown              = 3
  };
  
  typedef UInt32 QTVRNudgeControl;
  enum {
      kQTVRRight                  = 0,
      kQTVRUpRight                = 45,
      kQTVRUp                     = 90,
      kQTVRUpLeft                 = 135,
      kQTVRLeft                   = 180,
      kQTVRDownLeft               = 225,
      kQTVRDown                   = 270,
      kQTVRDownRight              = 315
  };
  
  typedef UInt32 QTVRNudgeMode;
  enum {
      kQTVRNudgeRotate            = 0,
      kQTVRNudgeTranslate         = 1,
      kQTVRNudgeSameAsMouse       = 2
  };
  
  /* Flags to control elements of the QTVR control bar (set via mcActionSetFlags) */
  enum {
      mcFlagQTVRSuppressBackBtn   = 1L << 16,
      mcFlagQTVRSuppressZoomBtns  = 1L << 17,
      mcFlagQTVRSuppressHotSpotBtn = 1L << 18,
      mcFlagQTVRSuppressTranslateBtn = 1L << 19,
      mcFlagQTVRSuppressHelpText  = 1L << 20,
      mcFlagQTVRSuppressHotSpotNames = 1L << 21,
      mcFlagQTVRExplicitFlagSet   = 1L << 31                      /* bits 0->30 should be interpreted as "explicit on" for the corresponding suppression bits*/
  };
  
  /* Cursor types used in type field of QTVRCursorRecord*/
  enum {
      kQTVRUseDefaultCursor       = 0,
      kQTVRStdCursorType          = 1,
      kQTVRColorCursorType        = 2
  };
  
  /* Values for flags parameter in QTVRMouseOverHotSpot callback*/
  enum {
      kQTVRHotSpotEnter           = 0,
      kQTVRHotSpotWithin          = 1,
      kQTVRHotSpotLeave           = 2
  };
  
  /* Values for flags parameter in QTVRSetPrescreenImagingCompleteProc*/
  enum {
      kQTVRPreScreenEveryIdle     = 1L << 0                       /* Requires QTVR 2.1 (kQTVRAPIMajorVersion02 + kQTVRAPIMinorVersion10)*/
  };
  
  /* Values for flags field of areasOfInterest in QTVRSetBackBufferImagingProc*/
  enum {
      kQTVRBackBufferEveryUpdate  = 1L << 0,
      kQTVRBackBufferEveryIdle    = 1L << 1,
      kQTVRBackBufferAlwaysRefresh = 1L << 2,
      kQTVRBackBufferHorizontal   = 1L << 3                       /* Requires that backbuffer proc be long-rowBytes aware (gestaltQDHasLongRowBytes)*/
  };
  
  /* Values for flagsIn parameter in QTVRBackBufferImaging callback*/
  enum {
      kQTVRBackBufferRectVisible  = 1L << 0,
      kQTVRBackBufferWasRefreshed = 1L << 1
  };
  
  /* Values for flagsOut parameter in QTVRBackBufferImaging callback*/
  enum {
      kQTVRBackBufferFlagDidDraw  = 1L << 0,
      kQTVRBackBufferFlagLastFlag = 1L << 31
  };
  
  /* QTVRCursorRecord used in QTVRReplaceCursor*/
  
  struct QTVRCursorRecord {
      UInt16                          theType;                    /* field was previously named "type"*/
      SInt16                          rsrcID;
      Handle                          handle;
  };
  typedef struct QTVRCursorRecord         QTVRCursorRecord;
  
  struct QTVRFloatPoint {
      float                           x;
      float                           y;
  };
  typedef struct QTVRFloatPoint           QTVRFloatPoint;
  /* Struct used for areasOfInterest parameter in QTVRSetBackBufferImagingProc*/
  
  struct QTVRAreaOfInterest {
      float                           panAngle;
      float                           tiltAngle;
      float                           width;
      float                           height;
      UInt32                          flags;
  };
  typedef struct QTVRAreaOfInterest       QTVRAreaOfInterest;
  /*
    =================================================================================================
     Callback routines 
    -------------------------------------------------------------------------------------------------
  */
  
  typedef CALLBACK_API( OSErr , QTVRLeavingNodeProcPtr )(QTVRInstance qtvr, UInt32 fromNodeID, UInt32 toNodeID, Boolean *cancel, SInt32 refCon);
  typedef CALLBACK_API( OSErr , QTVREnteringNodeProcPtr )(QTVRInstance qtvr, UInt32 nodeID, SInt32 refCon);
  typedef CALLBACK_API( OSErr , QTVRMouseOverHotSpotProcPtr )(QTVRInstance qtvr, UInt32 hotSpotID, UInt32 flags, SInt32 refCon);
  typedef CALLBACK_API( OSErr , QTVRImagingCompleteProcPtr )(QTVRInstance qtvr, SInt32 refCon);
  typedef CALLBACK_API( OSErr , QTVRBackBufferImagingProcPtr )(QTVRInstance qtvr, Rect *drawRect, UInt16 areaIndex, UInt32 flagsIn, UInt32 *flagsOut, SInt32 refCon);
  typedef STACK_UPP_TYPE(QTVRLeavingNodeProcPtr)                  QTVRLeavingNodeUPP;
  typedef STACK_UPP_TYPE(QTVREnteringNodeProcPtr)                 QTVREnteringNodeUPP;
  typedef STACK_UPP_TYPE(QTVRMouseOverHotSpotProcPtr)             QTVRMouseOverHotSpotUPP;
  typedef STACK_UPP_TYPE(QTVRImagingCompleteProcPtr)              QTVRImagingCompleteUPP;
  typedef STACK_UPP_TYPE(QTVRBackBufferImagingProcPtr)            QTVRBackBufferImagingUPP;
  if OPAQUE_UPP_TYPES
      EXTERN_API(QTVRLeavingNodeUPP)
      NewQTVRLeavingNodeUPP          (QTVRLeavingNodeProcPtr  userRoutine);
  
      EXTERN_API(QTVREnteringNodeUPP)
      NewQTVREnteringNodeUPP         (QTVREnteringNodeProcPtr userRoutine);
  
      EXTERN_API(QTVRMouseOverHotSpotUPP)
      NewQTVRMouseOverHotSpotUPP     (QTVRMouseOverHotSpotProcPtr userRoutine);
  
      EXTERN_API(QTVRImagingCompleteUPP)
      NewQTVRImagingCompleteUPP      (QTVRImagingCompleteProcPtr userRoutine);
  
      EXTERN_API(QTVRBackBufferImagingUPP)
      NewQTVRBackBufferImagingUPP    (QTVRBackBufferImagingProcPtr userRoutine);
  
      EXTERN_API(void)
      DisposeQTVRLeavingNodeUPP      (QTVRLeavingNodeUPP      userUPP);
  
      EXTERN_API(void)
      DisposeQTVREnteringNodeUPP     (QTVREnteringNodeUPP     userUPP);
  
      EXTERN_API(void)
      DisposeQTVRMouseOverHotSpotUPP    (QTVRMouseOverHotSpotUPP userUPP);
  
      EXTERN_API(void)
      DisposeQTVRImagingCompleteUPP    (QTVRImagingCompleteUPP userUPP);
  
      EXTERN_API(void)
      DisposeQTVRBackBufferImagingUPP    (QTVRBackBufferImagingUPP userUPP);
  
      EXTERN_API(OSErr)
      InvokeQTVRLeavingNodeUPP       (QTVRInstance            qtvr,
                                      UInt32                  fromNodeID,
                                      UInt32                  toNodeID,
                                      Boolean *               cancel,
                                      SInt32                  refCon,
                                      QTVRLeavingNodeUPP      userUPP);
  
      EXTERN_API(OSErr)
      InvokeQTVREnteringNodeUPP      (QTVRInstance            qtvr,
                                      UInt32                  nodeID,
                                      SInt32                  refCon,
                                      QTVREnteringNodeUPP     userUPP);
  
      EXTERN_API(OSErr)
      InvokeQTVRMouseOverHotSpotUPP    (QTVRInstance          qtvr,
                                      UInt32                  hotSpotID,
                                      UInt32                  flags,
                                      SInt32                  refCon,
                                      QTVRMouseOverHotSpotUPP userUPP);
  
      EXTERN_API(OSErr)
      InvokeQTVRImagingCompleteUPP    (QTVRInstance           qtvr,
                                      SInt32                  refCon,
                                      QTVRImagingCompleteUPP  userUPP);
  
      EXTERN_API(OSErr)
      InvokeQTVRBackBufferImagingUPP    (QTVRInstance         qtvr,
                                      Rect *                  drawRect,
                                      UInt16                  areaIndex,
                                      UInt32                  flagsIn,
                                      UInt32 *                flagsOut,
                                      SInt32                  refCon,
                                      QTVRBackBufferImagingUPP userUPP);
  
  else
      enum { uppQTVRLeavingNodeProcInfo = 0x0000FFE0 };               /* pascal 2_bytes Func(4_bytes, 4_bytes, 4_bytes, 4_bytes, 4_bytes) */
      enum { uppQTVREnteringNodeProcInfo = 0x00000FE0 };              /* pascal 2_bytes Func(4_bytes, 4_bytes, 4_bytes) */
      enum { uppQTVRMouseOverHotSpotProcInfo = 0x00003FE0 };          /* pascal 2_bytes Func(4_bytes, 4_bytes, 4_bytes, 4_bytes) */
      enum { uppQTVRImagingCompleteProcInfo = 0x000003E0 };           /* pascal 2_bytes Func(4_bytes, 4_bytes) */
      enum { uppQTVRBackBufferImagingProcInfo = 0x0003FBE0 };         /* pascal 2_bytes Func(4_bytes, 4_bytes, 2_bytes, 4_bytes, 4_bytes, 4_bytes) */
      #define NewQTVRLeavingNodeUPP(userRoutine)                      (QTVRLeavingNodeUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppQTVRLeavingNodeProcInfo, GetCurrentArchitecture())
      #define NewQTVREnteringNodeUPP(userRoutine)                     (QTVREnteringNodeUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppQTVREnteringNodeProcInfo, GetCurrentArchitecture())
      #define NewQTVRMouseOverHotSpotUPP(userRoutine)                 (QTVRMouseOverHotSpotUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppQTVRMouseOverHotSpotProcInfo, GetCurrentArchitecture())
      #define NewQTVRImagingCompleteUPP(userRoutine)                  (QTVRImagingCompleteUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppQTVRImagingCompleteProcInfo, GetCurrentArchitecture())
      #define NewQTVRBackBufferImagingUPP(userRoutine)                (QTVRBackBufferImagingUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppQTVRBackBufferImagingProcInfo, GetCurrentArchitecture())
      #define DisposeQTVRLeavingNodeUPP(userUPP)                      DisposeRoutineDescriptor(userUPP)
      #define DisposeQTVREnteringNodeUPP(userUPP)                     DisposeRoutineDescriptor(userUPP)
      #define DisposeQTVRMouseOverHotSpotUPP(userUPP)                 DisposeRoutineDescriptor(userUPP)
      #define DisposeQTVRImagingCompleteUPP(userUPP)                  DisposeRoutineDescriptor(userUPP)
      #define DisposeQTVRBackBufferImagingUPP(userUPP)                DisposeRoutineDescriptor(userUPP)
      #define InvokeQTVRLeavingNodeUPP(qtvr, fromNodeID, toNodeID, cancel, refCon, userUPP)  (OSErr)CALL_FIVE_PARAMETER_UPP((userUPP), uppQTVRLeavingNodeProcInfo, (qtvr), (fromNodeID), (toNodeID), (cancel), (refCon))
      #define InvokeQTVREnteringNodeUPP(qtvr, nodeID, refCon, userUPP)  (OSErr)CALL_THREE_PARAMETER_UPP((userUPP), uppQTVREnteringNodeProcInfo, (qtvr), (nodeID), (refCon))
      #define InvokeQTVRMouseOverHotSpotUPP(qtvr, hotSpotID, flags, refCon, userUPP)  (OSErr)CALL_FOUR_PARAMETER_UPP((userUPP), uppQTVRMouseOverHotSpotProcInfo, (qtvr), (hotSpotID), (flags), (refCon))
      #define InvokeQTVRImagingCompleteUPP(qtvr, refCon, userUPP)     (OSErr)CALL_TWO_PARAMETER_UPP((userUPP), uppQTVRImagingCompleteProcInfo, (qtvr), (refCon))
      #define InvokeQTVRBackBufferImagingUPP(qtvr, drawRect, areaIndex, flagsIn, flagsOut, refCon, userUPP)  (OSErr)CALL_SIX_PARAMETER_UPP((userUPP), uppQTVRBackBufferImagingProcInfo, (qtvr), (drawRect), (areaIndex), (flagsIn), (flagsOut), (refCon))
  endif
  /* support for pre-Carbon UPP routines: NewXXXProc and CallXXXProc */
  define NewQTVRLeavingNodeProc(userRoutine)                     NewQTVRLeavingNodeUPP(userRoutine)
  define NewQTVREnteringNodeProc(userRoutine)                    NewQTVREnteringNodeUPP(userRoutine)
  define NewQTVRMouseOverHotSpotProc(userRoutine)                NewQTVRMouseOverHotSpotUPP(userRoutine)
  define NewQTVRImagingCompleteProc(userRoutine)                 NewQTVRImagingCompleteUPP(userRoutine)
  define NewQTVRBackBufferImagingProc(userRoutine)               NewQTVRBackBufferImagingUPP(userRoutine)
  define CallQTVRLeavingNodeProc(userRoutine, qtvr, fromNodeID, toNodeID, cancel, refCon) InvokeQTVRLeavingNodeUPP(qtvr, fromNodeID, toNodeID, cancel, refCon, userRoutine)
  define CallQTVREnteringNodeProc(userRoutine, qtvr, nodeID, refCon) InvokeQTVREnteringNodeUPP(qtvr, nodeID, refCon, userRoutine)
  define CallQTVRMouseOverHotSpotProc(userRoutine, qtvr, hotSpotID, flags, refCon) InvokeQTVRMouseOverHotSpotUPP(qtvr, hotSpotID, flags, refCon, userRoutine)
  define CallQTVRImagingCompleteProc(userRoutine, qtvr, refCon)  InvokeQTVRImagingCompleteUPP(qtvr, refCon, userRoutine)
  define CallQTVRBackBufferImagingProc(userRoutine, qtvr, drawRect, areaIndex, flagsIn, flagsOut, refCon) InvokeQTVRBackBufferImagingUPP(qtvr, drawRect, areaIndex, flagsIn, flagsOut, refCon, userRoutine)
  /*
    =================================================================================================
      QTVR Intercept Struct, Callback, Routine Descriptors 
    -------------------------------------------------------------------------------------------------
  */
  
  typedef UInt32 QTVRProcSelector;
  enum {
      kQTVRSetPanAngleSelector    = 0x2000,
      kQTVRSetTiltAngleSelector   = 0x2001,
      kQTVRSetFieldOfViewSelector = 0x2002,
      kQTVRSetViewCenterSelector  = 0x2003,
      kQTVRMouseEnterSelector     = 0x2004,
      kQTVRMouseWithinSelector    = 0x2005,
      kQTVRMouseLeaveSelector     = 0x2006,
      kQTVRMouseDownSelector      = 0x2007,
      kQTVRMouseStillDownSelector = 0x2008,
      kQTVRMouseUpSelector        = 0x2009,
      kQTVRTriggerHotSpotSelector = 0x200A,
      kQTVRGetHotSpotTypeSelector = 0x200B,                       /* Requires QTVR 2.1 (kQTVRAPIMajorVersion02 + kQTVRAPIMinorVersion10)*/
      kQTVRSetViewParameterSelector = 0x200C,                     /* Requires QTVR 5.0 (kQTVRAPIMajorVersion05 + kQTVRAPIMinorVersion00)*/
      kQTVRGetViewParameterSelector = 0x200D                      /* Requires QTVR 5.0 (kQTVRAPIMajorVersion05 + kQTVRAPIMinorVersion00)*/
  };
  
  struct QTVRInterceptRecord {
      SInt32                          reserved1;
      SInt32                          selector;
  
      SInt32                          reserved2;
      SInt32                          reserved3;
  
      SInt32                          paramCount;
      void *                          parameter[6];
  };
  typedef struct QTVRInterceptRecord      QTVRInterceptRecord;
  
  typedef QTVRInterceptRecord *           QTVRInterceptPtr;
  /* Prototype for Intercept Proc callback*/
  typedef CALLBACK_API( void , QTVRInterceptProcPtr )(QTVRInstance qtvr, QTVRInterceptPtr qtvrMsg, SInt32 refCon, Boolean *cancel);
  typedef STACK_UPP_TYPE(QTVRInterceptProcPtr)                    QTVRInterceptUPP;
  if OPAQUE_UPP_TYPES
      EXTERN_API(QTVRInterceptUPP)
      NewQTVRInterceptUPP            (QTVRInterceptProcPtr    userRoutine);
  
      EXTERN_API(void)
      DisposeQTVRInterceptUPP        (QTVRInterceptUPP        userUPP);
  
      EXTERN_API(void)
      InvokeQTVRInterceptUPP         (QTVRInstance            qtvr,
                                      QTVRInterceptPtr        qtvrMsg,
                                      SInt32                  refCon,
                                      Boolean *               cancel,
                                      QTVRInterceptUPP        userUPP);
  
  else
      enum { uppQTVRInterceptProcInfo = 0x00003FC0 };                 /* pascal no_return_value Func(4_bytes, 4_bytes, 4_bytes, 4_bytes) */
      #define NewQTVRInterceptUPP(userRoutine)                        (QTVRInterceptUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppQTVRInterceptProcInfo, GetCurrentArchitecture())
      #define DisposeQTVRInterceptUPP(userUPP)                        DisposeRoutineDescriptor(userUPP)
      #define InvokeQTVRInterceptUPP(qtvr, qtvrMsg, refCon, cancel, userUPP)  CALL_FOUR_PARAMETER_UPP((userUPP), uppQTVRInterceptProcInfo, (qtvr), (qtvrMsg), (refCon), (cancel))
  endif
  /* support for pre-Carbon UPP routines: NewXXXProc and CallXXXProc */
  define NewQTVRInterceptProc(userRoutine)                       NewQTVRInterceptUPP(userRoutine)
  define CallQTVRInterceptProc(userRoutine, qtvr, qtvrMsg, refCon, cancel) InvokeQTVRInterceptUPP(qtvr, qtvrMsg, refCon, cancel, userRoutine)
  /*
    =================================================================================================
      Initialization QTVR calls 
    -------------------------------------------------------------------------------------------------
     Requires QTVR 2.1 (kQTVRAPIMajorVersion02 + kQTVRAPIMinorVersion10) and only work on Non-Macintosh platforms
  */
  if !TARGET_OS_MAC
  if CALL_NOT_IN_CARBON
  EXTERN_API_C( OSErr )
  InitializeQTVR                  (void);
  
  EXTERN_API_C( OSErr )
  TerminateQTVR                   (void);
  
  endif  /* CALL_NOT_IN_CARBON */
  
  endif  /* !TARGET_OS_MAC */
  
  /*
    =================================================================================================
      General QTVR calls 
    -------------------------------------------------------------------------------------------------
  */
  EXTERN_API_C( Track )
  QTVRGetQTVRTrack                (Movie                  theMovie,
                                   SInt32                 index);
  
  EXTERN_API_C( OSErr )
  QTVRGetQTVRInstance             (QTVRInstance *         qtvr,
                                   Track                  qtvrTrack,
                                   MovieController        mc);
  
  /*
    =================================================================================================
      Viewing Angles and Zooming 
    -------------------------------------------------------------------------------------------------
  */
  
  /* QTVRSetViewParameter requires QTVR 5.0 (kQTVRAPIMajorVersion05 + kQTVRAPIMinorVersion00)*/
  EXTERN_API_C( OSErr )
  QTVRSetViewParameter            (QTVRInstance           qtvr,
                                   UInt32                 viewParameter,
                                   void *                 value,
                                   UInt32                 flagsIn);
  
  /* QTVRGetViewParameter requires QTVR 5.0 (kQTVRAPIMajorVersion05 + kQTVRAPIMinorVersion00)*/
  EXTERN_API_C( OSErr )
  QTVRGetViewParameter            (QTVRInstance           qtvr,
                                   UInt32                 viewParameter,
                                   void *                 value,
                                   UInt32                 flagsIn,
                                   UInt32 *               flagsOut);
  
  EXTERN_API_C( OSErr )
  QTVRSetPanAngle                 (QTVRInstance           qtvr,
                                   float                  panAngle);
  
  EXTERN_API_C( float )
  QTVRGetPanAngle                 (QTVRInstance           qtvr);
  
  EXTERN_API_C( OSErr )
  QTVRSetTiltAngle                (QTVRInstance           qtvr,
                                   float                  tiltAngle);
  
  EXTERN_API_C( float )
  QTVRGetTiltAngle                (QTVRInstance           qtvr);
  
  EXTERN_API_C( OSErr )
  QTVRSetFieldOfView              (QTVRInstance           qtvr,
                                   float                  fieldOfView);
  
  EXTERN_API_C( float )
  QTVRGetFieldOfView              (QTVRInstance           qtvr);
  
  EXTERN_API_C( OSErr )
  QTVRShowDefaultView             (QTVRInstance           qtvr);
  
  /* Object Specific*/
  EXTERN_API_C( OSErr )
  QTVRSetViewCenter               (QTVRInstance           qtvr,
                                   const QTVRFloatPoint * viewCenter);
  
  EXTERN_API_C( OSErr )
  QTVRGetViewCenter               (QTVRInstance           qtvr,
                                   QTVRFloatPoint *       viewCenter);
  
  EXTERN_API_C( OSErr )
  QTVRNudge                       (QTVRInstance           qtvr,
                                   QTVRNudgeControl       direction);
  
  /* QTVRInteractionNudge requires QTVR 2.1 (kQTVRAPIMajorVersion02 + kQTVRAPIMinorVersion10)*/
  EXTERN_API_C( OSErr )
  QTVRInteractionNudge            (QTVRInstance           qtvr,
                                   QTVRNudgeControl       direction);
  
  /*
    =================================================================================================
      Scene and Node Location Information 
    -------------------------------------------------------------------------------------------------
  */
  
  EXTERN_API_C( OSErr )
  QTVRGetVRWorld                  (QTVRInstance           qtvr,
                                   QTAtomContainer *      VRWorld);
  
  EXTERN_API_C( OSErr )
  QTVRGetNodeInfo                 (QTVRInstance           qtvr,
                                   UInt32                 nodeID,
                                   QTAtomContainer *      nodeInfo);
  
  EXTERN_API_C( OSErr )
  QTVRGoToNodeID                  (QTVRInstance           qtvr,
                                   UInt32                 nodeID);
  
  EXTERN_API_C( UInt32 )
  QTVRGetCurrentNodeID            (QTVRInstance           qtvr);
  
  EXTERN_API_C( OSType )
  QTVRGetNodeType                 (QTVRInstance           qtvr,
                                   UInt32                 nodeID);
  
  /*
    =================================================================================================
      Hot Spot related calls 
    -------------------------------------------------------------------------------------------------
  */
  
  EXTERN_API_C( OSErr )
  QTVRPtToHotSpotID               (QTVRInstance           qtvr,
                                   Point                  pt,
                                   UInt32 *               hotSpotID);
  
  /* QTVRGetHotSpotType requires QTVR 2.1 (kQTVRAPIMajorVersion02 + kQTVRAPIMinorVersion10)*/
  EXTERN_API_C( OSErr )
  QTVRGetHotSpotType              (QTVRInstance           qtvr,
                                   UInt32                 hotSpotID,
                                   OSType *               hotSpotType);
  
  EXTERN_API_C( OSErr )
  QTVRTriggerHotSpot              (QTVRInstance           qtvr,
                                   UInt32                 hotSpotID,
                                   QTAtomContainer        nodeInfo,
                                   QTAtom                 selectedAtom);
  
  EXTERN_API_C( OSErr )
  QTVRSetMouseOverHotSpotProc     (QTVRInstance           qtvr,
                                   QTVRMouseOverHotSpotUPP  mouseOverHotSpotProc,
                                   SInt32                 refCon,
                                   UInt32                 flags);
  
  EXTERN_API_C( OSErr )
  QTVREnableHotSpot               (QTVRInstance           qtvr,
                                   UInt32                 enableFlag,
                                   UInt32                 hotSpotValue,
                                   Boolean                enable);
  
  EXTERN_API_C( UInt32 )
  QTVRGetVisibleHotSpots          (QTVRInstance           qtvr,
                                   Handle                 hotSpots);
  
  EXTERN_API_C( OSErr )
  QTVRGetHotSpotRegion            (QTVRInstance           qtvr,
                                   UInt32                 hotSpotID,
                                   RgnHandle              hotSpotRegion);
  
  /*
    =================================================================================================
      Event & Cursor Handling Calls 
    -------------------------------------------------------------------------------------------------
  */
  
  EXTERN_API_C( OSErr )
  QTVRSetMouseOverTracking        (QTVRInstance           qtvr,
                                   Boolean                enable);
  
  EXTERN_API_C( Boolean )
  QTVRGetMouseOverTracking        (QTVRInstance           qtvr);
  
  EXTERN_API_C( OSErr )
  QTVRSetMouseDownTracking        (QTVRInstance           qtvr,
                                   Boolean                enable);
  
  EXTERN_API_C( Boolean )
  QTVRGetMouseDownTracking        (QTVRInstance           qtvr);
  
  EXTERN_API_C( OSErr )
  QTVRMouseEnter                  (QTVRInstance           qtvr,
                                   Point                  pt,
                                   UInt32 *               hotSpotID,
                                   WindowRef              w);
  
  EXTERN_API_C( OSErr )
  QTVRMouseWithin                 (QTVRInstance           qtvr,
                                   Point                  pt,
                                   UInt32 *               hotSpotID,
                                   WindowRef              w);
  
  EXTERN_API_C( OSErr )
  QTVRMouseLeave                  (QTVRInstance           qtvr,
                                   Point                  pt,
                                   WindowRef              w);
  
  EXTERN_API_C( OSErr )
  QTVRMouseDown                   (QTVRInstance           qtvr,
                                   Point                  pt,
                                   UInt32                 when,
                                   UInt16                 modifiers,
                                   UInt32 *               hotSpotID,
                                   WindowRef              w);
  
  EXTERN_API_C( OSErr )
  QTVRMouseStillDown              (QTVRInstance           qtvr,
                                   Point                  pt,
                                   UInt32 *               hotSpotID,
                                   WindowRef              w);
  
  EXTERN_API_C( OSErr )
  QTVRMouseUp                     (QTVRInstance           qtvr,
                                   Point                  pt,
                                   UInt32 *               hotSpotID,
                                   WindowRef              w);
  
  /* These require QTVR 2.01 (kQTVRAPIMajorVersion02 + kQTVRAPIMinorVersion01)*/
  EXTERN_API_C( OSErr )
  QTVRMouseStillDownExtended      (QTVRInstance           qtvr,
                                   Point                  pt,
                                   UInt32 *               hotSpotID,
                                   WindowRef              w,
                                   UInt32                 when,
                                   UInt16                 modifiers);
  
  EXTERN_API_C( OSErr )
  QTVRMouseUpExtended             (QTVRInstance           qtvr,
                                   Point                  pt,
                                   UInt32 *               hotSpotID,
                                   WindowRef              w,
                                   UInt32                 when,
                                   UInt16                 modifiers);
  
  /*
    =================================================================================================
      Intercept Routines 
    -------------------------------------------------------------------------------------------------
  */
  
  EXTERN_API_C( OSErr )
  QTVRInstallInterceptProc        (QTVRInstance           qtvr,
                                   QTVRProcSelector       selector,
                                   QTVRInterceptUPP       interceptProc,
                                   SInt32                 refCon,
                                   UInt32                 flags);
  
  EXTERN_API_C( OSErr )
  QTVRCallInterceptedProc         (QTVRInstance           qtvr,
                                   QTVRInterceptRecord *  qtvrMsg);
  
  /*
    =================================================================================================
      Object Movie Specific Calls 
    -------------------------------------------------------------------------------------------------
     QTVRGetCurrentMouseMode requires QTRVR 2.1 (kQTVRAPIMajorVersion02 + kQTVRAPIMinorVersion10)
  */
  EXTERN_API_C( UInt32 )
  QTVRGetCurrentMouseMode         (QTVRInstance           qtvr);
  
  EXTERN_API_C( OSErr )
  QTVRSetFrameRate                (QTVRInstance           qtvr,
                                   float                  rate);
  
  EXTERN_API_C( float )
  QTVRGetFrameRate                (QTVRInstance           qtvr);
  
  EXTERN_API_C( OSErr )
  QTVRSetViewRate                 (QTVRInstance           qtvr,
                                   float                  rate);
  
  EXTERN_API_C( float )
  QTVRGetViewRate                 (QTVRInstance           qtvr);
  
  EXTERN_API_C( OSErr )
  QTVRSetViewCurrentTime          (QTVRInstance           qtvr,
                                   TimeValue              time);
  
  EXTERN_API_C( TimeValue )
  QTVRGetViewCurrentTime          (QTVRInstance           qtvr);
  
  EXTERN_API_C( TimeValue )
  QTVRGetCurrentViewDuration      (QTVRInstance           qtvr);
  
  /*
    =================================================================================================
     View State Calls - QTVR Object Only
    -------------------------------------------------------------------------------------------------
  */
  
  EXTERN_API_C( OSErr )
  QTVRSetViewState                (QTVRInstance           qtvr,
                                   QTVRViewStateType      viewStateType,
                                   UInt16                 state);
  
  EXTERN_API_C( OSErr )
  QTVRGetViewState                (QTVRInstance           qtvr,
                                   QTVRViewStateType      viewStateType,
                                   UInt16 *               state);
  
  EXTERN_API_C( UInt16 )
  QTVRGetViewStateCount           (QTVRInstance           qtvr);
  
  EXTERN_API_C( OSErr )
  QTVRSetAnimationSetting         (QTVRInstance           qtvr,
                                   QTVRObjectAnimationSetting  setting,
                                   Boolean                enable);
  
  EXTERN_API_C( OSErr )
  QTVRGetAnimationSetting         (QTVRInstance           qtvr,
                                   QTVRObjectAnimationSetting  setting,
                                   Boolean *              enable);
  
  EXTERN_API_C( OSErr )
  QTVRSetControlSetting           (QTVRInstance           qtvr,
                                   QTVRControlSetting     setting,
                                   Boolean                enable);
  
  EXTERN_API_C( OSErr )
  QTVRGetControlSetting           (QTVRInstance           qtvr,
                                   QTVRControlSetting     setting,
                                   Boolean *              enable);
  
  EXTERN_API_C( OSErr )
  QTVREnableFrameAnimation        (QTVRInstance           qtvr,
                                   Boolean                enable);
  
  EXTERN_API_C( Boolean )
  QTVRGetFrameAnimation           (QTVRInstance           qtvr);
  
  EXTERN_API_C( OSErr )
  QTVREnableViewAnimation         (QTVRInstance           qtvr,
                                   Boolean                enable);
  
  EXTERN_API_C( Boolean )
  QTVRGetViewAnimation            (QTVRInstance           qtvr);
  
  /*
    =================================================================================================
      Imaging Characteristics 
    -------------------------------------------------------------------------------------------------
  */
  
  EXTERN_API_C( OSErr )
  QTVRSetVisible                  (QTVRInstance           qtvr,
                                   Boolean                visible);
  
  EXTERN_API_C( Boolean )
  QTVRGetVisible                  (QTVRInstance           qtvr);
  
  EXTERN_API_C( OSErr )
  QTVRSetImagingProperty          (QTVRInstance           qtvr,
                                   QTVRImagingMode        imagingMode,
                                   UInt32                 imagingProperty,
                                   SInt32                 propertyValue);
  
  EXTERN_API_C( OSErr )
  QTVRGetImagingProperty          (QTVRInstance           qtvr,
                                   QTVRImagingMode        imagingMode,
                                   UInt32                 imagingProperty,
                                   SInt32 *               propertyValue);
  
  EXTERN_API_C( OSErr )
  QTVRUpdate                      (QTVRInstance           qtvr,
                                   QTVRImagingMode        imagingMode);
  
  EXTERN_API_C( OSErr )
  QTVRBeginUpdateStream           (QTVRInstance           qtvr,
                                   QTVRImagingMode        imagingMode);
  
  EXTERN_API_C( OSErr )
  QTVREndUpdateStream             (QTVRInstance           qtvr);
  
  EXTERN_API_C( OSErr )
  QTVRSetTransitionProperty       (QTVRInstance           qtvr,
                                   UInt32                 transitionType,
                                   UInt32                 transitionProperty,
                                   SInt32                 transitionValue);
  
  EXTERN_API_C( OSErr )
  QTVREnableTransition            (QTVRInstance           qtvr,
                                   UInt32                 transitionType,
                                   Boolean                enable);
  
  /*
    =================================================================================================
      Basic Conversion and Math Routines 
    -------------------------------------------------------------------------------------------------
  */
  
  EXTERN_API_C( OSErr )
  QTVRSetAngularUnits             (QTVRInstance           qtvr,
                                   QTVRAngularUnits       units);
  
  EXTERN_API_C( QTVRAngularUnits )
  QTVRGetAngularUnits             (QTVRInstance           qtvr);
  
  /* Pano specific routines*/
  EXTERN_API_C( OSErr )
  QTVRPtToAngles                  (QTVRInstance           qtvr,
                                   Point                  pt,
                                   float *                panAngle,
                                   float *                tiltAngle);
  
  EXTERN_API_C( OSErr )
  QTVRCoordToAngles               (QTVRInstance           qtvr,
                                   QTVRFloatPoint *       coord,
                                   float *                panAngle,
                                   float *                tiltAngle);
  
  EXTERN_API_C( OSErr )
  QTVRAnglesToCoord               (QTVRInstance           qtvr,
                                   float                  panAngle,
                                   float                  tiltAngle,
                                   QTVRFloatPoint *       coord);
  
  /* Object specific routines*/
  EXTERN_API_C( short )
  QTVRPanToColumn                 (QTVRInstance           qtvr,
                                   float                  panAngle);
  
  /* zero based   */
  EXTERN_API_C( float )
  QTVRColumnToPan                 (QTVRInstance           qtvr,
                                   short                  column);
  
  /* zero based   */
  EXTERN_API_C( short )
  QTVRTiltToRow                   (QTVRInstance           qtvr,
                                   float                  tiltAngle);
  
  /* zero based   */
  EXTERN_API_C( float )
  QTVRRowToTilt                   (QTVRInstance           qtvr,
                                   short                  row);
  
  /* zero based               */
  EXTERN_API_C( OSErr )
  QTVRWrapAndConstrain            (QTVRInstance           qtvr,
                                   short                  kind,
                                   float                  value,
                                   float *                result);
  
  /*
    =================================================================================================
      Interaction Routines 
    -------------------------------------------------------------------------------------------------
  */
  
  EXTERN_API_C( OSErr )
  QTVRSetEnteringNodeProc         (QTVRInstance           qtvr,
                                   QTVREnteringNodeUPP    enteringNodeProc,
                                   SInt32                 refCon,
                                   UInt32                 flags);
  
  EXTERN_API_C( OSErr )
  QTVRSetLeavingNodeProc          (QTVRInstance           qtvr,
                                   QTVRLeavingNodeUPP     leavingNodeProc,
                                   SInt32                 refCon,
                                   UInt32                 flags);
  
  EXTERN_API_C( OSErr )
  QTVRSetInteractionProperty      (QTVRInstance           qtvr,
                                   UInt32                 property,
                                   void *                 value);
  
  EXTERN_API_C( OSErr )
  QTVRGetInteractionProperty      (QTVRInstance           qtvr,
                                   UInt32                 property,
                                   void *                 value);
  
  EXTERN_API_C( OSErr )
  QTVRReplaceCursor               (QTVRInstance           qtvr,
                                   QTVRCursorRecord *     cursRecord);
  
  /*
    =================================================================================================
      Viewing Limits and Constraints 
    -------------------------------------------------------------------------------------------------
  */
  
  EXTERN_API_C( OSErr )
  QTVRGetViewingLimits            (QTVRInstance           qtvr,
                                   UInt16                 kind,
                                   float *                minValue,
                                   float *                maxValue);
  
  EXTERN_API_C( UInt32 )
  QTVRGetConstraintStatus         (QTVRInstance           qtvr);
  
  EXTERN_API_C( OSErr )
  QTVRGetConstraints              (QTVRInstance           qtvr,
                                   UInt16                 kind,
                                   float *                minValue,
                                   float *                maxValue);
  
  EXTERN_API_C( OSErr )
  QTVRSetConstraints              (QTVRInstance           qtvr,
                                   UInt16                 kind,
                                   float                  minValue,
                                   float                  maxValue);
  
  /*
    =================================================================================================
      Back Buffer Memory Management 
    -------------------------------------------------------------------------------------------------
  */
  
  EXTERN_API_C( OSErr )
  QTVRGetAvailableResolutions     (QTVRInstance           qtvr,
                                   UInt16 *               resolutionsMask);
  
  /* These require QTVR 2.1 (kQTVRAPIMajorVersion02 + kQTVRAPIMinorVersion10)*/
  EXTERN_API_C( OSErr )
  QTVRGetBackBufferMemInfo        (QTVRInstance           qtvr,
                                   UInt32                 geometry,
                                   UInt16                 resolution,
                                   UInt32                 cachePixelFormat,
                                   SInt32 *               minCacheBytes,
                                   SInt32 *               suggestedCacheBytes,
                                   SInt32 *               fullCacheBytes);
  
  EXTERN_API_C( OSErr )
  QTVRGetBackBufferSettings       (QTVRInstance           qtvr,
                                   UInt32 *               geometry,
                                   UInt16 *               resolution,
                                   UInt32 *               cachePixelFormat,
                                   SInt16 *               cacheSize);
  
  EXTERN_API_C( OSErr )
  QTVRSetBackBufferPrefs          (QTVRInstance           qtvr,
                                   UInt32                 geometry,
                                   UInt16                 resolution,
                                   UInt32                 cachePixelFormat,
                                   SInt16                 cacheSize);
  
  /*
    =================================================================================================
      Buffer Access 
    -------------------------------------------------------------------------------------------------
  */
  
  EXTERN_API_C( OSErr )
  QTVRSetPrescreenImagingCompleteProc (QTVRInstance       qtvr,
                                   QTVRImagingCompleteUPP  imagingCompleteProc,
                                   SInt32                 refCon,
                                   UInt32                 flags);
  
  EXTERN_API_C( OSErr )
  QTVRSetBackBufferImagingProc    (QTVRInstance           qtvr,
                                   QTVRBackBufferImagingUPP  backBufferImagingProc,
                                   UInt16                 numAreas,
                                   QTVRAreaOfInterest     areasOfInterest[],
                                   SInt32                 refCon);
  
  EXTERN_API_C( OSErr )
  QTVRRefreshBackBuffer           (QTVRInstance           qtvr,
                                   UInt32                 flags);
  
  /*
    =================================================================================================
      Old Names
    -------------------------------------------------------------------------------------------------
  */
  if OLDROUTINENAMES
  typedef QTVRCursorRecord                CursorRecord;
  typedef QTVRAreaOfInterest              AreaOfInterest;
  typedef QTVRFloatPoint                  FloatPoint;
  typedef QTVRLeavingNodeProcPtr          LeavingNodeProcPtr;
  typedef QTVRLeavingNodeUPP              LeavingNodeUPP;
  typedef QTVREnteringNodeProcPtr         EnteringNodeProcPtr;
  typedef QTVREnteringNodeUPP             EnteringNodeUPP;
  typedef QTVRMouseOverHotSpotProcPtr     MouseOverHotSpotProcPtr;
  typedef QTVRMouseOverHotSpotUPP         MouseOverHotSpotUPP;
  typedef QTVRImagingCompleteProcPtr      ImagingCompleteProcPtr;
  typedef QTVRImagingCompleteUPP          ImagingCompleteUPP;
  typedef QTVRBackBufferImagingProcPtr    BackBufferImagingProcPtr;
  typedef QTVRBackBufferImagingUPP        BackBufferImagingUPP;
  endif  /* OLDROUTINENAMES */
  
  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 /* __QUICKTIMEVR__ */
  
  


(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.