QTVRPanoAuthoring.h

#ifndef _QTVRPANOAUTHORING_
#define _QTVRPANOAUTHORING_
 
#define kPanoMediaType 'STpn'
#define kPanDescType 'pano'
#define kPanHeaderType 'pHdr'
 
#if PRAGMA_ALIGN_SUPPORTED
#pragma options align=mac68k
#else
WARNING: these structures must be aligned 68K
#endif
 
struct PanoramaDescription {
    long    size;           // Total size of PanoramaDescription
    long    type;           // must be 'pano'
 
    long    reserved1;      // must be zero
    long    reserved2;      // must be zero
 
    short   majorVersion;       // must be zero
    short   minorVersion;       // must be zero
 
    long    sceneTrackID;       // id of video track that contains panoramic scene
    long    loResSceneTrackID;  // id of video track that contains lo res panoramic scene
    long    reserved3[6];       // must be zero
    long    hotSpotTrackID; // id of video track that contains hotspot image
    long    loResHotSpotTrackID; // id of video track that contains lo res hotspot image
    long    reserved4[8];       // must be zero
    
    Fixed   hPanStart;      // horizontal pan range start angle (eg. 0)
    Fixed   hPanEnd;        // horizontal pan range end angle (eg. 360)
    Fixed   vPanTop;        // vertical pan range top angle(eg. 42.5)
    Fixed   vPanBottom;     // vertical pan range bottom angle (eg. -42.5)
    Fixed   minimumZoom;    // minimum zoom angle (eg. 5; use 0 for default))
    Fixed   maximumZoom;    // maximum zoom angle (eg. 65; use 0 for default)
 
    // Info for highest res version of scene track
    long    sceneSizeX;     // pixel width of the panorama (eg. 768)
    long    sceneSizeY;     // pixel height of the panorama (eg. 2496)
    long    numFrames;      // number of diced frames (eg. 24)
    short   reserved5;      // must be zero
    short   sceneNumFramesX;    // diced frames wide (eg. 1)
    short   sceneNumFramesY;    // diced frames high (eg. 24)
    short   sceneColorDepth;    // bit depth of the scene track (eg. 32)
    
    // Info for highest res version of hotSpot track
    long    hotSpotSizeX;       // pixel width of the hot spot panorama (eg. 768)
    long    hotSpotSizeY;       // pixel height of the hot spot panorama (eg. 2496)
    short   reserved6;      // must be zero
    short   hotSpotNumFramesX;  // diced frames wide (eg. 1)
    short   hotSpotNumFramesY;  // diced frames high (eg. 24)
    short   hotSpotColorDepth;  // must be 8
    
};
typedef struct PanoramaDescription PanoramaDescription;
typedef PanoramaDescription *PanoramaDescriptionPtr, **PanoramaDescriptionHandle;
 
 
struct PanoSampleHeaderAtom {
    long    size;
    OSType  type;   // must be 'pHdr'
 
    unsigned long   nodeID; // corresponds to a node id in the idToTime table above
    Fixed   defHPan;    // default horizontal pan angle when displaying this node
    Fixed   defVPan;    // default vertical pan angle when displaying this node
    Fixed   defZoom;    // default zoom angle when displaying this node
    
    // constraints for this node; use zero for default
    Fixed   minHPan;    
    Fixed   minVPan;
    Fixed   minZoom;
    Fixed   maxHPan;
    Fixed   maxVPan;
    Fixed   maxZoom;
 
    long    reserved1;  // must be zero
    long    reserved2;  // must be zero
    long    nameStrOffset;  // offset into string table atom
    long    commentStrOffset;   // offset into string table atom
};
typedef struct PanoSampleHeaderAtom PanoSampleHeaderAtom;
typedef PanoSampleHeaderAtom *PanoSampleHeaderAtomPtr, **PanoSampleHeaderAtomHandle;
 
#if PRAGMA_ALIGN_SUPPORTED
#pragma options align=reset
#else
WARNING: these structures must be aligned 68K
#endif
 
#endif