/* 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 #endif #ifndef __DIALOGS__ #include #endif #ifndef __MOVIES__ #include #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__ */