diff options
| author | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
|---|---|---|
| committer | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
| commit | 3bf9df6b2785fa6d951086978a3e66f49427166a (patch) | |
| tree | 2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /common/quicktime_win32/QuickTimeVRFormat.h | |
| download | archived-source-engine-2018-hl2-src-master.tar.xz archived-source-engine-2018-hl2-src-master.zip | |
Diffstat (limited to 'common/quicktime_win32/QuickTimeVRFormat.h')
| -rw-r--r-- | common/quicktime_win32/QuickTimeVRFormat.h | 539 |
1 files changed, 539 insertions, 0 deletions
diff --git a/common/quicktime_win32/QuickTimeVRFormat.h b/common/quicktime_win32/QuickTimeVRFormat.h new file mode 100644 index 0000000..d9d5f14 --- /dev/null +++ b/common/quicktime_win32/QuickTimeVRFormat.h @@ -0,0 +1,539 @@ +/* + File: QuickTimeVRFormat.h + + Contains: QuickTime VR interfaces + + Version: QuickTime 7.3 + + Copyright: (c) 2007 (c) 1997-2007 by Apple Inc., all rights reserved. + + Bugs?: For bug reports, consult the following page on + the World Wide Web: + + http://developer.apple.com/bugreporter/ + +*/ +#ifndef __QUICKTIMEVRFORMAT__ +#define __QUICKTIMEVRFORMAT__ + +#ifndef __CONDITIONALMACROS__ +#include <ConditionalMacros.h> +#endif + +#ifndef __MOVIES__ +#include <Movies.h> +#endif + +#ifndef __QUICKTIMEVR__ +#include <QuickTimeVR.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 + +/* QuickTime is not available to 64-bit clients */ + +#if !__LP64__ + + +/* File Format Version numbers */ +#define kQTVRMajorVersion (2) +#define kQTVRMinorVersion (0) + +/* User data type for the Movie Controller type specifier*/ +enum { + kQTControllerType = kQTVRControllerSubType, /* Atom & ID of where our*/ + kQTControllerID = 1 /* ...controller name is stored*/ +}; + +/* VRWorld atom types*/ +enum { + kQTVRWorldHeaderAtomType = FOUR_CHAR_CODE('vrsc'), + kQTVRImagingParentAtomType = FOUR_CHAR_CODE('imgp'), + kQTVRPanoImagingAtomType = FOUR_CHAR_CODE('impn'), + kQTVRObjectImagingAtomType = FOUR_CHAR_CODE('imob'), + kQTVRNodeParentAtomType = FOUR_CHAR_CODE('vrnp'), + kQTVRNodeIDAtomType = FOUR_CHAR_CODE('vrni'), + kQTVRNodeLocationAtomType = FOUR_CHAR_CODE('nloc'), + kQTVRCursorParentAtomType = FOUR_CHAR_CODE('vrcp'), /* New with 2.1*/ + kQTVRCursorAtomType = FOUR_CHAR_CODE('CURS'), /* New with 2.1*/ + kQTVRColorCursorAtomType = FOUR_CHAR_CODE('crsr') /* New with 2.1*/ +}; + +/* NodeInfo atom types*/ +enum { + kQTVRNodeHeaderAtomType = FOUR_CHAR_CODE('ndhd'), + kQTVRHotSpotParentAtomType = FOUR_CHAR_CODE('hspa'), + kQTVRHotSpotAtomType = FOUR_CHAR_CODE('hots'), + kQTVRHotSpotInfoAtomType = FOUR_CHAR_CODE('hsin'), + kQTVRLinkInfoAtomType = FOUR_CHAR_CODE('link') +}; + +/* Miscellaneous atom types*/ +enum { + kQTVRStringAtomType = FOUR_CHAR_CODE('vrsg'), + kQTVRStringEncodingAtomType = FOUR_CHAR_CODE('vrse'), /* New with 2.1*/ + kQTVRPanoSampleDataAtomType = FOUR_CHAR_CODE('pdat'), + kQTVRObjectInfoAtomType = FOUR_CHAR_CODE('obji'), + kQTVRImageTrackRefAtomType = FOUR_CHAR_CODE('imtr'), /* Parent is kQTVRObjectInfoAtomType. Required if track ref is not 1 as required by 2.0 format.*/ + kQTVRHotSpotTrackRefAtomType = FOUR_CHAR_CODE('hstr'), /* Parent is kQTVRObjectInfoAtomType. Required if track ref is not 1 as required by 2.0 format.*/ + kQTVRAngleRangeAtomType = FOUR_CHAR_CODE('arng'), + kQTVRTrackRefArrayAtomType = FOUR_CHAR_CODE('tref'), + kQTVRPanConstraintAtomType = FOUR_CHAR_CODE('pcon'), + kQTVRTiltConstraintAtomType = FOUR_CHAR_CODE('tcon'), + kQTVRFOVConstraintAtomType = FOUR_CHAR_CODE('fcon'), + kQTVRCubicViewAtomType = FOUR_CHAR_CODE('cuvw'), /* New with 5.0*/ + kQTVRCubicFaceDataAtomType = FOUR_CHAR_CODE('cufa') /* New with 5.0*/ +}; + +enum { + kQTVRObjectInfoAtomID = 1, + kQTVRObjectImageTrackRefAtomID = 1, /* New with 2.1, it adds a track reference to select between multiple image tracks*/ + kQTVRObjectHotSpotTrackRefAtomID = 1 /* New with 2.1, it adds a track reference to select between multiple hotspot tracks*/ +}; + +/* Track reference types*/ +enum { + kQTVRImageTrackRefType = FOUR_CHAR_CODE('imgt'), + kQTVRHotSpotTrackRefType = FOUR_CHAR_CODE('hott') +}; + +/* Old hot spot types*/ +enum { + kQTVRHotSpotNavigableType = FOUR_CHAR_CODE('navg') +}; + +/* Valid bits used in QTVRLinkHotSpotAtom*/ +enum { + kQTVRValidPan = 1L << 0, + kQTVRValidTilt = 1L << 1, + kQTVRValidFOV = 1L << 2, + kQTVRValidViewCenter = 1L << 3 +}; + + +/* Values for flags field in QTVRPanoSampleAtom*/ +enum { + kQTVRPanoFlagHorizontal = 1L << 0, + kQTVRPanoFlagLast = 1L << 31 +}; + + +/* Values for locationFlags field in QTVRNodeLocationAtom*/ +enum { + kQTVRSameFile = 0 +}; + + +/* Header for QTVR track's Sample Description record (vrWorld atom container is appended)*/ +struct QTVRSampleDescription { + UInt32 descSize; /* total size of the QTVRSampleDescription*/ + UInt32 descType; /* must be 'qtvr'*/ + + UInt32 reserved1; /* must be zero*/ + UInt16 reserved2; /* must be zero*/ + UInt16 dataRefIndex; /* must be zero*/ + + UInt32 data; /* Will be extended to hold vrWorld QTAtomContainer*/ + +}; +typedef struct QTVRSampleDescription QTVRSampleDescription; +typedef QTVRSampleDescription * QTVRSampleDescriptionPtr; +typedef QTVRSampleDescriptionPtr * QTVRSampleDescriptionHandle; +/* + ================================================================================================= + Definitions and structures used in the VRWorld QTAtomContainer + ------------------------------------------------------------------------------------------------- +*/ + +struct QTVRStringAtom { + UInt16 stringUsage; + UInt16 stringLength; + unsigned char theString[4]; /* field previously named "string"*/ +}; +typedef struct QTVRStringAtom QTVRStringAtom; +typedef QTVRStringAtom * QTVRStringAtomPtr; + +struct QTVRWorldHeaderAtom { + UInt16 majorVersion; + UInt16 minorVersion; + + QTAtomID nameAtomID; + UInt32 defaultNodeID; + UInt32 vrWorldFlags; + + UInt32 reserved1; + UInt32 reserved2; +}; +typedef struct QTVRWorldHeaderAtom QTVRWorldHeaderAtom; +typedef QTVRWorldHeaderAtom * QTVRWorldHeaderAtomPtr; + +/* Valid bits used in QTVRPanoImagingAtom*/ +enum { + kQTVRValidCorrection = 1L << 0, + kQTVRValidQuality = 1L << 1, + kQTVRValidDirectDraw = 1L << 2, + kQTVRValidFirstExtraProperty = 1L << 3 +}; + +struct QTVRPanoImagingAtom { + UInt16 majorVersion; + UInt16 minorVersion; + + UInt32 imagingMode; + UInt32 imagingValidFlags; + + UInt32 correction; + UInt32 quality; + UInt32 directDraw; + UInt32 imagingProperties[6]; /* for future properties*/ + + UInt32 reserved1; + UInt32 reserved2; +}; +typedef struct QTVRPanoImagingAtom QTVRPanoImagingAtom; +typedef QTVRPanoImagingAtom * QTVRPanoImagingAtomPtr; +struct QTVRNodeLocationAtom { + UInt16 majorVersion; + UInt16 minorVersion; + + OSType nodeType; + UInt32 locationFlags; + UInt32 locationData; + + UInt32 reserved1; + UInt32 reserved2; +}; +typedef struct QTVRNodeLocationAtom QTVRNodeLocationAtom; +typedef QTVRNodeLocationAtom * QTVRNodeLocationAtomPtr; +/* + ================================================================================================= + Definitions and structures used in the Nodeinfo QTAtomContainer + ------------------------------------------------------------------------------------------------- +*/ + +struct QTVRNodeHeaderAtom { + UInt16 majorVersion; + UInt16 minorVersion; + + OSType nodeType; + QTAtomID nodeID; + QTAtomID nameAtomID; + QTAtomID commentAtomID; + + UInt32 reserved1; + UInt32 reserved2; +}; +typedef struct QTVRNodeHeaderAtom QTVRNodeHeaderAtom; +typedef QTVRNodeHeaderAtom * QTVRNodeHeaderAtomPtr; +struct QTVRAngleRangeAtom { + Float32 minimumAngle; + Float32 maximumAngle; +}; +typedef struct QTVRAngleRangeAtom QTVRAngleRangeAtom; +typedef QTVRAngleRangeAtom * QTVRAngleRangeAtomPtr; +struct QTVRHotSpotInfoAtom { + UInt16 majorVersion; + UInt16 minorVersion; + + OSType hotSpotType; + QTAtomID nameAtomID; + QTAtomID commentAtomID; + + SInt32 cursorID[3]; + + /* canonical view for this hot spot*/ + Float32 bestPan; + Float32 bestTilt; + Float32 bestFOV; + QTVRFloatPoint bestViewCenter; + + /* Bounding box for this hot spot*/ + Rect hotSpotRect; + + UInt32 flags; + UInt32 reserved1; + UInt32 reserved2; +}; +typedef struct QTVRHotSpotInfoAtom QTVRHotSpotInfoAtom; +typedef QTVRHotSpotInfoAtom * QTVRHotSpotInfoAtomPtr; +struct QTVRLinkHotSpotAtom { + UInt16 majorVersion; + UInt16 minorVersion; + + UInt32 toNodeID; + + UInt32 fromValidFlags; + Float32 fromPan; + Float32 fromTilt; + Float32 fromFOV; + QTVRFloatPoint fromViewCenter; + + UInt32 toValidFlags; + Float32 toPan; + Float32 toTilt; + Float32 toFOV; + QTVRFloatPoint toViewCenter; + + Float32 distance; + + UInt32 flags; + UInt32 reserved1; + UInt32 reserved2; +}; +typedef struct QTVRLinkHotSpotAtom QTVRLinkHotSpotAtom; +typedef QTVRLinkHotSpotAtom * QTVRLinkHotSpotAtomPtr; +/* + ================================================================================================= + Definitions and structures used in Panorama and Object tracks + ------------------------------------------------------------------------------------------------- +*/ + +struct QTVRPanoSampleAtom { + UInt16 majorVersion; + UInt16 minorVersion; + + UInt32 imageRefTrackIndex; /* track reference index of the full res image track*/ + UInt32 hotSpotRefTrackIndex; /* track reference index of the full res hot spot track*/ + + Float32 minPan; + Float32 maxPan; + Float32 minTilt; + Float32 maxTilt; + Float32 minFieldOfView; + Float32 maxFieldOfView; + + Float32 defaultPan; + Float32 defaultTilt; + Float32 defaultFieldOfView; + + /* Info for highest res version of image track*/ + UInt32 imageSizeX; /* pixel width of the panorama (e.g. 768)*/ + UInt32 imageSizeY; /* pixel height of the panorama (e.g. 2496)*/ + UInt16 imageNumFramesX; /* diced frames wide (e.g. 1)*/ + UInt16 imageNumFramesY; /* diced frames high (e.g. 24)*/ + + /* Info for highest res version of hotSpot track*/ + UInt32 hotSpotSizeX; /* pixel width of the hot spot panorama (e.g. 768)*/ + UInt32 hotSpotSizeY; /* pixel height of the hot spot panorama (e.g. 2496)*/ + UInt16 hotSpotNumFramesX; /* diced frames wide (e.g. 1)*/ + UInt16 hotSpotNumFramesY; /* diced frames high (e.g. 24)*/ + + UInt32 flags; + OSType panoType; + UInt32 reserved2; + +}; +typedef struct QTVRPanoSampleAtom QTVRPanoSampleAtom; +typedef QTVRPanoSampleAtom * QTVRPanoSampleAtomPtr; +/* + View atom for cubes (since same fields in QTVRPanoSampleAtom are set to special + values for backwards compatibility and hence are ignored by the cubic engine) +*/ +struct QTVRCubicViewAtom { + Float32 minPan; + Float32 maxPan; + Float32 minTilt; + Float32 maxTilt; + Float32 minFieldOfView; + Float32 maxFieldOfView; + + Float32 defaultPan; + Float32 defaultTilt; + Float32 defaultFieldOfView; +}; +typedef struct QTVRCubicViewAtom QTVRCubicViewAtom; +typedef QTVRCubicViewAtom * QTVRCubicViewAtomPtr; +struct QTVRCubicFaceData { + Float32 orientation[4]; /* WXYZ quaternion of absolute orientation*/ + Float32 center[2]; /* Center of image relative to center of projection (default = (0,0)) in normalized units*/ + Float32 aspect; /* aspect>1 => tall pixels; aspect <1 => squat pixels (default = 1)*/ + Float32 skew; /* skew x by y (default = 0)*/ +}; +typedef struct QTVRCubicFaceData QTVRCubicFaceData; +typedef QTVRCubicFaceData * QTVRCubicFaceDataPtr; +/* Special resolution values for the Image Track Reference Atoms. Use only one value per track reference.*/ +enum { + kQTVRFullTrackRes = kQTVRFullRes, + kQTVRHalfTrackRes = kQTVRHalfRes, + kQTVRQuarterTrackRes = kQTVRQuarterRes, + kQTVRPreviewTrackRes = 0x8000 +}; + +struct QTVRTrackRefEntry { + UInt32 trackRefType; + UInt16 trackResolution; + UInt32 trackRefIndex; +}; +typedef struct QTVRTrackRefEntry QTVRTrackRefEntry; +/* + ================================================================================================= + Object File format 2.0 + ------------------------------------------------------------------------------------------------- +*/ +enum { + kQTVRObjectAnimateViewFramesOn = (1L << 0), + kQTVRObjectPalindromeViewFramesOn = (1L << 1), + kQTVRObjectStartFirstViewFrameOn = (1L << 2), + kQTVRObjectAnimateViewsOn = (1L << 3), + kQTVRObjectPalindromeViewsOn = (1L << 4), + kQTVRObjectSyncViewToFrameRate = (1L << 5), + kQTVRObjectDontLoopViewFramesOn = (1L << 6), + kQTVRObjectPlayEveryViewFrameOn = (1L << 7), + kQTVRObjectStreamingViewsOn = (1L << 8) +}; + +enum { + kQTVRObjectWrapPanOn = (1L << 0), + kQTVRObjectWrapTiltOn = (1L << 1), + kQTVRObjectCanZoomOn = (1L << 2), + kQTVRObjectReverseHControlOn = (1L << 3), + kQTVRObjectReverseVControlOn = (1L << 4), + kQTVRObjectSwapHVControlOn = (1L << 5), + kQTVRObjectTranslationOn = (1L << 6) +}; + +enum { + kGrabberScrollerUI = 1, /* "Object" */ + kOldJoyStickUI = 2, /* "1.0 Object as Scene" */ + kJoystickUI = 3, /* "Object In Scene"*/ + kGrabberUI = 4, /* "Grabber only"*/ + kAbsoluteUI = 5 /* "Absolute pointer"*/ +}; + + +struct QTVRObjectSampleAtom { + UInt16 majorVersion; /* kQTVRMajorVersion*/ + UInt16 minorVersion; /* kQTVRMinorVersion*/ + UInt16 movieType; /* ObjectUITypes*/ + UInt16 viewStateCount; /* The number of view states 1 based*/ + UInt16 defaultViewState; /* The default view state number. The number must be 1 to viewStateCount*/ + UInt16 mouseDownViewState; /* The mouse down view state. The number must be 1 to viewStateCount*/ + UInt32 viewDuration; /* The duration of each view including all animation frames in a view*/ + UInt32 columns; /* Number of columns in movie*/ + UInt32 rows; /* Number rows in movie*/ + Float32 mouseMotionScale; /* 180.0 for kStandardObject or kQTVRObjectInScene, actual degrees for kOldNavigableMovieScene.*/ + Float32 minPan; /* Start horizontal pan angle in degrees*/ + Float32 maxPan; /* End horizontal pan angle in degrees*/ + Float32 defaultPan; /* Initial horizontal pan angle in degrees (poster view)*/ + Float32 minTilt; /* Start vertical pan angle in degrees*/ + Float32 maxTilt; /* End vertical pan angle in degrees*/ + Float32 defaultTilt; /* Initial vertical pan angle in degrees (poster view) */ + Float32 minFieldOfView; /* minimum field of view setting (appears as the maximum zoom effect) must be >= 1*/ + Float32 fieldOfView; /* the field of view range must be >= 1*/ + Float32 defaultFieldOfView; /* must be in minFieldOfView and maxFieldOfView range inclusive*/ + Float32 defaultViewCenterH; + Float32 defaultViewCenterV; + + Float32 viewRate; + Float32 frameRate; + UInt32 animationSettings; /* 32 reserved bit fields*/ + UInt32 controlSettings; /* 32 reserved bit fields*/ + +}; +typedef struct QTVRObjectSampleAtom QTVRObjectSampleAtom; +typedef QTVRObjectSampleAtom * QTVRObjectSampleAtomPtr; +/* + ================================================================================================= + QuickTime VR Authoring Components + ------------------------------------------------------------------------------------------------- +*/ + +/* + ComponentDescription constants for QTVR Export components + (componentType = MovieExportType; componentSubType = MovieFileType) +*/ +enum { + kQTVRFlattenerManufacturer = FOUR_CHAR_CODE('vrwe'), /* aka QTVRFlattenerType*/ + kQTVRSplitterManufacturer = FOUR_CHAR_CODE('vrsp'), + kQTVRObjExporterManufacturer = FOUR_CHAR_CODE('vrob') +}; + +/* QuickTime VR Flattener atom types*/ +enum { + kQTVRFlattenerSettingsParentAtomType = FOUR_CHAR_CODE('VRWe'), /* parent of settings atoms (other than compression)*/ + kQTVRFlattenerPreviewResAtomType = FOUR_CHAR_CODE('PRes'), /* preview resolution Int16*/ + kQTVRFlattenerImportSpecAtomType = FOUR_CHAR_CODE('ISpe'), /* import file spec FSSpec*/ + kQTVRFlattenerCreatePreviewAtomType = FOUR_CHAR_CODE('Prev'), /* Boolean*/ + kQTVRFlattenerImportPreviewAtomType = FOUR_CHAR_CODE('IPre'), /* Boolean*/ + kQTVRFlattenerBlurPreviewAtomType = FOUR_CHAR_CODE('Blur') /* Boolean*/ +}; + +/* QuickTime VR Splitter atom types*/ +enum { + kQTVRSplitterSettingsParentAtomType = FOUR_CHAR_CODE('VRSp'), /* parent of settings atoms (other than compression)*/ + kQTVRSplitterGenerateHTMLAtomType = FOUR_CHAR_CODE('Ghtm'), /* Boolean*/ + kQTVRSplitterOverwriteFilesAtomType = FOUR_CHAR_CODE('Owfi'), /* Boolean*/ + kQTVRSplitterUseFlattenerAtomType = FOUR_CHAR_CODE('Usef'), /* Boolean*/ + kQTVRSplitterShowControllerAtomType = FOUR_CHAR_CODE('Shco'), /* Boolean*/ + kQTVRSplitterTargetMyselfAtomType = FOUR_CHAR_CODE('Tgtm') /* Boolean*/ +}; + +/* QuickTime VR Object Exporter atom types*/ +enum { + kQTVRObjExporterSettingsBlockSize = FOUR_CHAR_CODE('bsiz'), /* block size for compression*/ + kQTVRObjExporterSettingsTargetSize = FOUR_CHAR_CODE('tsiz') /* target file size*/ +}; + + + +#if OLDROUTINENAMES +typedef QTVRStringAtom VRStringAtom; +typedef QTVRWorldHeaderAtom VRWorldHeaderAtom; +typedef QTVRPanoImagingAtom VRPanoImagingAtom; +typedef QTVRNodeLocationAtom VRNodeLocationAtom; +typedef QTVRNodeHeaderAtom VRNodeHeaderAtom; +typedef QTVRAngleRangeAtom VRAngleRangeAtom; +typedef QTVRHotSpotInfoAtom VRHotSpotInfoAtom; +typedef QTVRLinkHotSpotAtom VRLinkHotSpotAtom; +typedef QTVRPanoSampleAtom VRPanoSampleAtom; +typedef QTVRTrackRefEntry VRTrackRefEntry; +typedef QTVRObjectSampleAtom VRObjectSampleAtom; +#endif /* OLDROUTINENAMES */ + + +#endif // !__LP64__ + + + + +#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 /* __QUICKTIMEVRFORMAT__ */ + |