topical media & game development

talk show tell print

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



  /*
       File:       QuickTimeVRFormat.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 __QUICKTIMEVRFORMAT__
  define __QUICKTIMEVRFORMAT__
  
  ifndef __CONDITIONALMACROS__
  include <ConditionalMacros.h>
  endif
  
  ifndef __DIALOGS__
  include <Dialogs.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
  
  /* 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 */
  
  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__ */
  
  


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