topical media & game development

talk show tell print

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



  /*
       File:       MovieManager.h
   
       Contains:   Interface for MovieManager component
   
       Version:    Technology: QuickTime 4.2
                   Release:    QuickTime 6.0.2
   
       Copyright:  (c) 2000-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 __MOVIEMANAGER__
  define __MOVIEMANAGER__
  
  ifndef __MOVIES__
  include <Movies.h>
  endif
  
  ifndef __QUICKTIMEVR__
  include <QuickTimeVR.h>
  endif
  
  ifndef __COMPONENTS__
  include <Components.h>
  endif
  
  ifndef __EVENTS__
  include <Events.h>
  endif
  
  ifndef __MACTYPES__
  include <MacTypes.h>
  endif
  
  ifndef __MACWINDOWS__
  include <MacWindows.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 ComponentInstance               MovieManagerComponent;
  typedef void *                          ObjectRef;
  typedef void *                          ObjectSpec;
  typedef OSType                          MessageClass;
  typedef UInt32                          PropertyID;
  typedef UInt32                          MessageID;
  typedef OSType                          ValueFormat;
  typedef void *                          MessageData;
  /* == message class constants ==*/
  enum {
      kMMgrGetPropertyClass       = FOUR_CHAR_CODE('getp'),
      kMMgrSetPropertyClass       = FOUR_CHAR_CODE('setp'),
      kMMgrSendCommandClass       = FOUR_CHAR_CODE('cmd ')
  };
  
  struct CharBuff {
      UInt32                          length;
      char *                          buff;
  };
  typedef struct CharBuff                 CharBuff;
  
  struct PropArg {
      ValueFormat                     valueFormat;
      void *                          value;                      /* data if <= 32 bits, otherwise pointer to the actual data */
  };
  typedef struct PropArg                  PropArg;
  
  struct PropertyParams {
      UInt16                          paramCount;
      UInt16                          flags;
      PropArg                         args[8];
  };
  typedef struct PropertyParams           PropertyParams;
  /*
     
     struct with the same layout as a PropArg but with a union for the value field for ease of use 
  */
  
  struct PropArgU {
      ValueFormat                     valueFormat;
      union {
          Boolean                         booleanVal;
          SInt8                           byteVal;
          SInt32                          longVal;
          SInt16                          shortVal;
          Fixed                           fixedVal;
          Point                           pointVal;
          QTFloatSingle                   float32Val;
          QTFloatDouble *                 float64PtrVal;
          void *                          voidVal;
          StringPtr                       str255Val;
          char *                          cStrVal;
          CharBuff *                      charBuffVal;
          RGBColor *                      rbgPtr;
          Ptr                             ptrVal;
          Handle                          textHandle;
      }                                 value;
  };
  typedef struct PropArgU                 PropArgU;
  /*
     
     struct with the same layout as a PropertyParams but with an array of PropArgUs
  */
  
  struct PropertyParamsU {
      UInt16                          paramCount;
      UInt16                          flags;
      PropArgU                        args[8];
  };
  typedef struct PropertyParamsU          PropertyParamsU;
  
  struct FindOffset {
      TimeValue                       time;                       /* the movie time at which the text was found */
      SInt32                          trackNum;                   /* number of the track in which the text was found */
      SInt32                          offset;                     /* offset (in chars) of the text with the track's sample */
  };
  typedef struct FindOffset               FindOffset;
  /* == enums ==*/
  
  /* Movie Commands */
  enum {
      kMMgrCmdAdd                 = FOUR_CHAR_CODE('add '),
      kMMgrCmdAddScaled           = FOUR_CHAR_CODE('adsc'),
      kMMgrCmdClear               = FOUR_CHAR_CODE('cler'),
      kMMgrCmdCopy                = FOUR_CHAR_CODE('copy'),
      kMMgrCmdCopyFrame           = FOUR_CHAR_CODE('cfrm'),
      kMMgrCmdCut                 = FOUR_CHAR_CODE('cut '),
      kMMgrCmdDelete              = FOUR_CHAR_CODE('delt'),
      kMMgrCmdExportMovie         = FOUR_CHAR_CODE('expt'),
      kMMgrCmdFindText            = FOUR_CHAR_CODE('find'),
      kMMgrCmdFrameLoaded         = FOUR_CHAR_CODE('fram'),
      kMMgrCmdGoBackAction        = FOUR_CHAR_CODE('gobk'),
      kMMgrCmdIdle                = FOUR_CHAR_CODE('idle'),
      kMMgrCmdLoadExporterSettings = FOUR_CHAR_CODE('lexp'),
      kMMgrCmdMouseDown           = FOUR_CHAR_CODE('clik'),
      kMMgrCmdMouseEnter          = FOUR_CHAR_CODE('entr'),
      kMMgrCmdMouseExit           = FOUR_CHAR_CODE('exit'),
      kMMgrCmdMouseTrigger        = FOUR_CHAR_CODE('trig'),
      kMMgrCmdMouseUp             = FOUR_CHAR_CODE('cend'),
      kMMgrCmdMovieLoaded         = FOUR_CHAR_CODE('load'),
      kMMgrCmdNudge               = FOUR_CHAR_CODE('nudg'),
      kMMgrCmdPaste               = FOUR_CHAR_CODE('pste'),
      kMMgrCmdPause               = FOUR_CHAR_CODE('paus'),
      kMMgrCmdPlay                = FOUR_CHAR_CODE('play'),
      kMMgrCmdPreroll             = FOUR_CHAR_CODE('prol'),
      kMMgrCmdReplace             = FOUR_CHAR_CODE('rplc'),
      kMMgrCmdReverse             = FOUR_CHAR_CODE('rvrs'),
      kMMgrCmdRewind              = FOUR_CHAR_CODE('rwnd'),
      kMMgrCmdRotate              = FOUR_CHAR_CODE('rota'),
      kMMgrCmdSave                = FOUR_CHAR_CODE('sve '),
      kMMgrCmdSaveAs              = FOUR_CHAR_CODE('sas '),
      kMMgrCmdSaveAsSelfContained = FOUR_CHAR_CODE('sass'),
      kMMgrCmdSaveCopy            = FOUR_CHAR_CODE('scp '),
      kMMgrCmdSaveCopySelfContained = FOUR_CHAR_CODE('scps'),
      kMMgrCmdSaveExporterSettings = FOUR_CHAR_CODE('sexp'),
      kMMgrCmdSaveSelfContained   = FOUR_CHAR_CODE('sves'),
      kMMgrCmdShowDefaultView     = FOUR_CHAR_CODE('sdfl'),
      kMMgrCmdShowExportDialog    = FOUR_CHAR_CODE('shoe'),
      kMMgrCmdShowPoster          = FOUR_CHAR_CODE('spos'),
      kMMgrCmdSkew                = FOUR_CHAR_CODE('skew'),
      kMMgrCmdStep                = FOUR_CHAR_CODE('step'),
      kMMgrCmdStepFwd             = FOUR_CHAR_CODE('stpf'),
      kMMgrCmdStepRev             = FOUR_CHAR_CODE('stpr'),
      kMMgrCmdStop                = FOUR_CHAR_CODE('stop'),
      kMMgrCmdTrim                = FOUR_CHAR_CODE('trim'),
      kMMgrCmdUndo                = FOUR_CHAR_CODE('undo')
  };
  
  /* Properties */
  enum {
      kMMgrPropActionsEnabled     = FOUR_CHAR_CODE('a ok'),
      kMMgrPropActiveTransport    = FOUR_CHAR_CODE('atrn'),
      kMMgrPropAlbum              = FOUR_CHAR_CODE('©alb'),
      kMMgrPropAllowBalloonHelp   = FOUR_CHAR_CODE('balo'),
      kMMgrPropAllowEditing       = FOUR_CHAR_CODE('edit'),
      kMMgrPropAllowMultipleStreams = FOUR_CHAR_CODE('amss'),
      kMMgrPropArtist             = FOUR_CHAR_CODE('@ART'),
      kMMgrPropAttached           = FOUR_CHAR_CODE('atch'),
      kMMgrPropAutoPlay           = FOUR_CHAR_CODE('play'),
      kMMgrPropBackColor          = FOUR_CHAR_CODE('bclr'),
      kMMgrPropBadge              = FOUR_CHAR_CODE('badg'),
      kMMgrPropBitRate            = FOUR_CHAR_CODE('brte'),
      kMMgrPropBottom             = FOUR_CHAR_CODE('botm'),
      kMMgrPropBottomRight        = FOUR_CHAR_CODE('btrt'),
      kMMgrPropChapterTrackRef    = FOUR_CHAR_CODE('chap'),
      kMMgrPropChapterMode        = FOUR_CHAR_CODE('chmd'),
      kMMgrPropChapterName        = FOUR_CHAR_CODE('@chp'),
      kMMgrPropCharacteristics    = FOUR_CHAR_CODE('char'),
      kMMgrPropCodecSequence      = FOUR_CHAR_CODE('cseq'),
      kMMgrPropCommands           = FOUR_CHAR_CODE('cmds'),
      kMMgrPropComments           = FOUR_CHAR_CODE('cmnt'),
      kMMgrPropComponentVersion   = FOUR_CHAR_CODE('cvrs'),
      kMMgrPropCompressMovieHeader = FOUR_CHAR_CODE('chdr'),
      kMMgrPropConnectionSpeed    = FOUR_CHAR_CODE('cspd'),
      kMMgrPropConverted          = FOUR_CHAR_CODE('cnvt'),
      kMMgrPropCopyright          = FOUR_CHAR_CODE('©cpy'),
      kMMgrPropCursorID           = FOUR_CHAR_CODE('crid'),
      kMMgrPropCurrNodeID         = FOUR_CHAR_CODE('cnod'),
      kMMgrPropDataRefs           = FOUR_CHAR_CODE('dtrf'),
      kMMgrPropDefaultNodeID      = FOUR_CHAR_CODE('dnod'),
      kMMgrPropDescription        = FOUR_CHAR_CODE('©des'),
      kMMgrPropDefaultRect        = FOUR_CHAR_CODE('drct'),
      kMMgrPropDragEnabled        = FOUR_CHAR_CODE('drag'),
      kMMgrPropDuration           = FOUR_CHAR_CODE('dura'),
      kMMgrPropEnabled            = FOUR_CHAR_CODE('enab'),
      kMMgrPropEndSelection       = FOUR_CHAR_CODE('ends'),
      kMMgrPropEndTime            = FOUR_CHAR_CODE('endt'),
      kMMgrPropExporter           = FOUR_CHAR_CODE('exp '),
      kMMgrPropExporters          = FOUR_CHAR_CODE('exps'),
      kMMgrPropFieldOfView        = FOUR_CHAR_CODE('fov '),
      kMMgrPropFieldOfViewRange   = FOUR_CHAR_CODE('fovr'),
      kMMgrPropFindTextCaseSensitive = FOUR_CHAR_CODE('fcse'),
      kMMgrPropFindTextReverse    = FOUR_CHAR_CODE('frev'),
      kMMgrPropFindTextStart      = FOUR_CHAR_CODE('fstt'),
      kMMgrPropFindTextWrapAround = FOUR_CHAR_CODE('fwrp'),
      kMMgrPropFlattenCrossplatform = FOUR_CHAR_CODE('flat'),
      kMMgrPropForeColor          = FOUR_CHAR_CODE('fclr'),
      kMMgrPropFormat             = FOUR_CHAR_CODE('frmt'),
      kMMgrPropFoundTextOffset    = FOUR_CHAR_CODE('foff'),
      kMMgrPropFrameObjects       = FOUR_CHAR_CODE('frob'),
      kMMgrPropFrameRate          = FOUR_CHAR_CODE('frte'),
      kMMgrPropFullCommandList    = FOUR_CHAR_CODE('fcmd'),
      kMMgrPropFullName           = FOUR_CHAR_CODE('©nam'),
      kMMgrPropFullPropertyList   = FOUR_CHAR_CODE('fprp'),
      kMMgrPropGraphicsMode       = FOUR_CHAR_CODE('mode'),
      kMMgrPropHasChanged         = FOUR_CHAR_CODE('drty'),
      kMMgrPropHeight             = FOUR_CHAR_CODE('hght'),
      kMMgrPropHighQualityMode    = FOUR_CHAR_CODE('hqty'),
      kMMgrPropHREF               = FOUR_CHAR_CODE('href'),
      kMMgrPropHTTPProxy          = FOUR_CHAR_CODE('http'),
      kMMgrPropHTTPTransport      = FOUR_CHAR_CODE('httt'),
      kMMgrPropID                 = FOUR_CHAR_CODE('id  '),
      kMMgrPropIdleFrequency      = FOUR_CHAR_CODE('idle'),
      kMMgrPropImageCorrection    = FOUR_CHAR_CODE('icor'),
      kMMgrPropImageName          = FOUR_CHAR_CODE('imnm'),
      kMMgrPropImageNdx           = FOUR_CHAR_CODE('imnd'),
      kMMgrPropImageQuality       = FOUR_CHAR_CODE('iqty'),
      kMMgrPropInformation        = FOUR_CHAR_CODE('©inf'),
      kMMgrPropIsRegistered       = FOUR_CHAR_CODE('regi'),
      kMMgrPropIsVRMovie          = FOUR_CHAR_CODE('isvr'),
      kMMgrPropLanguage           = FOUR_CHAR_CODE('lang'),
      kMMgrPropLayer              = FOUR_CHAR_CODE('layr'),
      kMMgrPropLeft               = FOUR_CHAR_CODE('left'),
      kMMgrPropLinkDestination    = FOUR_CHAR_CODE('dest'),
      kMMgrPropLoadState          = FOUR_CHAR_CODE('load'),
      kMMgrPropLocation           = FOUR_CHAR_CODE('loc '),
      kMMgrPropLockMessages       = FOUR_CHAR_CODE('lokm'),
      kMMgrPropLockScreen         = FOUR_CHAR_CODE('loks'),
      kMMgrPropLoop               = FOUR_CHAR_CODE('loop'),
      kMMgrPropLoopIsPalindrome   = FOUR_CHAR_CODE('paln'),
      kMMgrPropMask               = FOUR_CHAR_CODE('mask'),
      kMMgrPropMatrix             = FOUR_CHAR_CODE('mtrx'),
      kMMgrPropMaxTimeLoaded      = FOUR_CHAR_CODE('mtme'),
      kMMgrPropMemCheckLevel      = FOUR_CHAR_CODE('dbmc'),
      kMMgrPropMessages           = FOUR_CHAR_CODE('msg '),
      kMMgrPropMIMEType           = FOUR_CHAR_CODE('mime'),
      kMMgrPropMissingComponents  = FOUR_CHAR_CODE('miss'),
      kMMgrPropMovie              = FOUR_CHAR_CODE('moov'),
      kMMgrPropMute               = FOUR_CHAR_CODE('mute'),
      kMMgrPropName               = FOUR_CHAR_CODE('name'),
      kMMgrPropNextMovie          = FOUR_CHAR_CODE('next'),
      kMMgrPropNoProxyHosts       = FOUR_CHAR_CODE('nprx'),
      kMMgrPropNumber             = FOUR_CHAR_CODE('numb'),
      kMMgrPropOriginalFormat     = FOUR_CHAR_CODE('©fmt'),
      kMMgrPropOriginalSource     = FOUR_CHAR_CODE('©src'),
      kMMgrPropOwner              = FOUR_CHAR_CODE('ownr'),
      kMMgrPropPacketLoss         = FOUR_CHAR_CODE('loss'),
      kMMgrPropPanAngle           = FOUR_CHAR_CODE('pan '),
      kMMgrPropPanAngleRange      = FOUR_CHAR_CODE('panr'),
      kMMgrPropPlaySelectionOnly  = FOUR_CHAR_CODE('psel'),
      kMMgrPropPort               = FOUR_CHAR_CODE('port'),
      kMMgrPropPreferredLoc       = FOUR_CHAR_CODE('ploc'),
      kMMgrPropPreferredRate      = FOUR_CHAR_CODE('prte'),
      kMMgrPropPreferredSoundVolume = FOUR_CHAR_CODE('pvol'),
      kMMgrPropProperties         = FOUR_CHAR_CODE('prop'),
      kMMgrPropRate               = FOUR_CHAR_CODE('rate'),
      kMMgrPropReadOnly           = FOUR_CHAR_CODE('rwno'),
      kMMgrPropRectangle          = FOUR_CHAR_CODE('rect'),
      kMMgrPropRight              = FOUR_CHAR_CODE('rght'),
      kMMgrPropRTSPProxy          = FOUR_CHAR_CODE('rtsp'),
      kMMgrPropSaveDisabled       = FOUR_CHAR_CODE('save'),
      kMMgrPropScale              = FOUR_CHAR_CODE('scal'),
      kMMgrPropScaleMedia         = FOUR_CHAR_CODE('spsc'),
      kMMgrPropScript             = FOUR_CHAR_CODE('scrp'),
      kMMgrPropSeeAllFrames       = FOUR_CHAR_CODE('sall'),
      kMMgrPropShowHotSpots       = FOUR_CHAR_CODE('show'),
      kMMgrPropShowStreamStatsNames = FOUR_CHAR_CODE('snam'),
      kMMgrPropSize               = FOUR_CHAR_CODE('size'),
      kMMgrPropSOCKSProxy         = FOUR_CHAR_CODE('sock'),
      kMMgrPropSoftware           = FOUR_CHAR_CODE('©swr'),
      kMMgrPropSoundBalance       = FOUR_CHAR_CODE('sbal'),
      kMMgrPropSoundBass          = FOUR_CHAR_CODE('sbas'),
      kMMgrPropSoundOutputComponent = FOUR_CHAR_CODE('sout'),
      kMMgrPropSoundTreble        = FOUR_CHAR_CODE('strb'),
      kMMgrPropSoundVolume        = FOUR_CHAR_CODE('svol'),
      kMMgrPropStartSelection     = FOUR_CHAR_CODE('strs'),
      kMMgrPropStartTime          = FOUR_CHAR_CODE('strt'),
      kMMgrPropStatus             = FOUR_CHAR_CODE('stts'),
      kMMgrPropStreamStats        = FOUR_CHAR_CODE('stat'),
      kMMgrPropSuppressHotSpotNames = FOUR_CHAR_CODE('hnam'),
      kMMgrPropTargetMovieID      = FOUR_CHAR_CODE('tid '),
      kMMgrPropTargetMovieName    = FOUR_CHAR_CODE('tnam'),
      kMMgrPropText               = FOUR_CHAR_CODE('text'),
      kMMgrPropTiltAngle          = FOUR_CHAR_CODE('tlt '),
      kMMgrPropTiltAngleRange     = FOUR_CHAR_CODE('tltr'),
      kMMgrPropTime               = FOUR_CHAR_CODE('time'),
      kMMgrPropTimeScale          = FOUR_CHAR_CODE('tscl'),
      kMMgrPropTop                = FOUR_CHAR_CODE('top '),
      kMMgrPropTopLeft            = FOUR_CHAR_CODE('topl'),
      kMMgrPropType               = FOUR_CHAR_CODE('type'),
      kMMgrPropUDPTransport       = FOUR_CHAR_CODE('udpt'),
      kMMgrPropURL                = FOUR_CHAR_CODE('url '),
      kMMgrPropUseCustomCLUT      = FOUR_CHAR_CODE('clut'),
      kMMgrPropUserData           = FOUR_CHAR_CODE('udat'),
      kMMgrPropVariable           = FOUR_CHAR_CODE('var '),
      kMMgrPropVersion            = FOUR_CHAR_CODE('vers'),
      kMMgrPropVisible            = FOUR_CHAR_CODE('visi'),
      kMMgrPropWidth              = FOUR_CHAR_CODE('widt')
  };
  
  /*
     **
     == object specification ==
  */
  enum {
                                                                  /* ***/
                                                                  /* obj->objClass*/
      kObjClassQuickTime          = FOUR_CHAR_CODE('cQtm'),
      kObjClassMovie              = FOUR_CHAR_CODE('cMoV'),
      kObjClassWindow             = FOUR_CHAR_CODE('cwnd'),
      kObjClassTrack              = FOUR_CHAR_CODE('ctrk'),
      kObjClassSprite             = FOUR_CHAR_CODE('cspr'),
      kObjClassHotSpot            = FOUR_CHAR_CODE('chsp'),
      kObjClassNode               = FOUR_CHAR_CODE('cnde'),
      kObjClassQTiObj             = FOUR_CHAR_CODE('cqti'),
      kObjClassController         = FOUR_CHAR_CODE('cctr'),
      kObjClassImage              = FOUR_CHAR_CODE('cimg'),
      kObjClassScene              = FOUR_CHAR_CODE('cscn'),
      kObjClassDataRefs           = FOUR_CHAR_CODE('data'),
      kObjUserData                = FOUR_CHAR_CODE('udta'),
      kObjClassEvery              = FOUR_CHAR_CODE('****'),       /* ** */
                                                                  /* obj->objRefType*/
      kByIndex                    = FOUR_CHAR_CODE('indx'),       /* formAbsolutePosition */
      kByID                       = FOUR_CHAR_CODE('ID  '),       /* formUniqueID */
      kByName                     = FOUR_CHAR_CODE('name'),       /* formName */
      kByPosition                 = FOUR_CHAR_CODE('rele'),       /* formRelativePosition */
      kByType                     = FOUR_CHAR_CODE('type'),       /* ** */
                                                                  /* special values when obj->objRefVal == kByIndex */
      kIndexFirst                 = 1,
      kIndexAll                   = -1,
      kIndexLast                  = -2,
      kIndexMiddle                = -3,
      kIndexAny                   = -4,                           /* ** */
                                                                  /* values when obj->objRefVal == kByPosition */
      kIndexThis                  = FOUR_CHAR_CODE('this'),
      kIndexPrev                  = FOUR_CHAR_CODE('prev'),       /* kAEPrevious */
      kIndexNext                  = FOUR_CHAR_CODE('next'),       /* kAENext */
                                                                  /* ** */
                                                                  /* obj->objModifier "special" track types (non-media types) */
      kTrackTypeAny               = FOUR_CHAR_CODE('*trk'),
      kTrackTypeQTVR              = FOUR_CHAR_CODE('vrtr'),
      KTrackTypeMPEGVideo         = FOUR_CHAR_CODE('m1a '),
      KTrackTypeMPEGAudeo         = FOUR_CHAR_CODE('m1v '),
      kTrackTypeChapter           = FOUR_CHAR_CODE('chap'),       /* kTrackReferenceChapterList */
      kTrackTypeAudio             = FOUR_CHAR_CODE('ears'),       /* AudioMediaCharacteristic */
      kTrackTypeVisual            = FOUR_CHAR_CODE('eyes'),       /* VisualMediaCharacteristic */
      kTrackTypeStreaming         = FOUR_CHAR_CODE('strm')        /* kQTSStreamMediaType*/
  };
  
  /* == movie manager object spec structures ==*/
  
  /*
     **
     == movie object spec ==
  */
  
  struct ExternalObjectSpec {
      OSType                          objClass;                   /* type of object (movie, track, etc) */
      OSType                          objModifier;                /* object modifier (track type, etc) */
      OSType                          objRefType;                 /* how to interpret objRefVal (by name, by ID, etc) */
      SInt32                          objRefVal;                  /* object identifier (ID, index, offset to name, etc) */
  };
  typedef struct ExternalObjectSpec       ExternalObjectSpec;
  typedef ExternalObjectSpec *            ExternalObjectSpecPtr;
  
  struct MovieObjectSpec {
      SInt32                          count;
      ExternalObjectSpec              objRef[1];
  };
  typedef struct MovieObjectSpec          MovieObjectSpec;
  typedef MovieObjectSpec *               MovieObjectSpecPtr;
  
  struct MovieObjectRecord {
      SInt32                          data[1];
  };
  typedef struct MovieObjectRecord        MovieObjectRecord;
  
  typedef MovieObjectRecord *             MovieObjectPtr;
  /* == movie manager object reference structures ==*/
  
  /*
     **
     == forward struct declarations for recursively-defined structures
  */
  typedef struct MovieRef                 MovieRef;
  typedef MovieRef *                      MovieRefPtr;
  typedef struct TrackRef                 TrackRef;
  typedef TrackRef *                      TrackRefPtr;
  typedef struct SceneRef                 SceneRef;
  typedef SceneRef *                      SceneRefPtr;
  typedef struct SpriteRef                SpriteRef;
  typedef SpriteRef *                     SpriteRefPtr;
  typedef struct NodeRef                  NodeRef;
  typedef NodeRef *                       NodeRefPtr;
  typedef struct HotSpotRef               HotSpotRef;
  typedef HotSpotRef *                    HotSpotRefPtr;
  typedef struct GenericRef               GenericRef;
  typedef GenericRef *                    GenericRefPtr;
  /* header common to all movie object reference structures*/
  
  struct GenericRef {
      GenericRefPtr                   parent;
      GenericRefPtr                   child;
      OSType                          objType;
  };
  
  struct MovieObjectRef {
      void *                          reserved;
      OSType                          targetType;
      SInt32                          objectCount;
      union {
          GenericRefPtr                   generic;
          MovieRefPtr                     movie;
          TrackRefPtr                     track;
          SceneRefPtr                     scene;
          SpriteRefPtr                    sprite;
          NodeRefPtr                      node;
          HotSpotRefPtr                   hotSpot;
      }                                 obj;
  };
  typedef struct MovieObjectRef           MovieObjectRef;
  typedef MovieObjectRef *                MovieObjectRefPtr;
  
  define    MOVIE_OBJECT_REF_TYPE(ref)  ((ref) ? (ref)->obj.generic->objType : 0)
  
  struct MovieRef {
      TrackRefPtr                     parent;                     /* track or NULL if is root movie*/
      TrackRefPtr                     child;                      /* child track */
      OSType                          objType;
      Movie                           movie;
      MovieController                 controller;
      DoMCActionUPP                   mcActionFilterUPP;          /* UPP of MovieMedia movie controller's filter proc*/
      void *                          mcActionRefcon;             /* refcon for same*/
  };
  
  struct TrackRef {
      MovieRefPtr                     parent;                     /* parent movie */
      GenericRefPtr                   child;                      /* child scene or node */
      OSType                          objType;
      UInt32                          flags;
      OSType                          trackType;
      Track                           track;
      SInt32                          id;
      SInt32                          index;
      Media                           media;
  
                                                                  /* VR only data*/
      QTVRInstance                    vrInstance;
      QTAtomContainer                 vrWorld;
  };
  
  struct SceneRef {
      TrackRefPtr                     parent;                     /* parent track */
      SpriteRefPtr                    child;                      /* child sprite */
      OSType                          objType;
      SInt32                          index;                      /* ID is the same as index*/
      TimeValue                       startTime;
      TimeValue                       duration;
      SInt32                          currentSceneIndex;
  };
  
  struct SpriteRef {
      SceneRefPtr                     parent;
      GenericRefPtr                   child;                      /* NULL, sprites have no children */
      OSType                          objType;
      MediaHandler                    handler;
      QTAtomID                        id;
      SInt16                          index;
  };
  
  struct NodeRef {
      TrackRefPtr                     parent;                     /* parent track */
      HotSpotRefPtr                   child;                      /* NULL, */
      OSType                          objType;
      QTAtomContainer                 info;
      QTAtomID                        id;
      SInt16                          index;
      UInt16                          flags;
  };
  
  struct HotSpotRef {
      NodeRefPtr                      parent;                     /* parent node */
      GenericRefPtr                   child;                      /* NULL, hotspots have no children */
      OSType                          objType;
      QTAtomID                        id;
      SInt16                          index;
  };
  
  enum {
      kReserved1                  = (1L << 0),
      kReserved2                  = (1L << 1),
      kHasAudioCharacteristics    = (1L << 2),
      kHasVisualCharacteristics   = (1L << 3),
      kHasTextCharacteristics     = (1L << 4),
      kCanSendVideoCharacteristics = (1L << 5),
      kProvidesActionsCharacteristics = (1L << 6),
      kHasNonLinearCharacteristics = (1L << 7),
      kHasCanStepCharacteristics  = (1L << 8),
      kHasNoDurationCharacteristics = (1L << 9),                  /* not really "characteristics", but hey...*/
      kHasSpriteCharacteristics   = (1L << 10),
      kHasVRCharacteristics       = (1L << 11),
      kHasStreamingCharacteristics = (1L << 12),
      kHasMovieCharacteristics    = (1L << 13)
  };
  
  /* == data types ==*/
  
  enum {
      kPtrToDataType              = (1L << 31),
      dataType_Boolean            = FOUR_CHAR_CODE('bool'),
      dataType_BooleanPtr         = (dataType_Boolean | kPtrToDataType),
      dataType_UInt8              = FOUR_CHAR_CODE('ui8 '),
      dataType_UInt8Ptr           = (dataType_Boolean | kPtrToDataType),
      dataType_Int8               = FOUR_CHAR_CODE('i8  '),
      dataType_Int8Ptr            = (dataType_Int8 | kPtrToDataType),
      dataType_UInt16             = FOUR_CHAR_CODE('ui16'),
      dataType_UInt16Ptr          = (dataType_UInt16 | kPtrToDataType),
      dataType_Int16              = FOUR_CHAR_CODE('i16 '),
      dataType_Int16Ptr           = (dataType_Int16 | kPtrToDataType),
      dataType_UInt32             = FOUR_CHAR_CODE('ui32'),
      dataType_UInt32Ptr          = (dataType_UInt32 | kPtrToDataType),
      dataType_Int32              = FOUR_CHAR_CODE('i32 '),
      dataType_Int32Ptr           = (dataType_Int32 | kPtrToDataType),
      dataType_FourCharCode       = FOUR_CHAR_CODE('code'),
      dataType_FourCharCodePtr    = (dataType_FourCharCode | kPtrToDataType),
      dataType_RGBColor           = FOUR_CHAR_CODE('rgba'),
      dataType_RGBColorPtr        = (dataType_RGBColor | kPtrToDataType),
      dataType_Fixed              = FOUR_CHAR_CODE('fix '),
      dataType_FixedPtr           = (dataType_Fixed | kPtrToDataType),
      dataType_FloatSingle        = FOUR_CHAR_CODE('fsin'),
      dataType_FloatSinglePtr     = (dataType_FloatSingle | kPtrToDataType),
      dataType_FloatDouble        = FOUR_CHAR_CODE('fdbl'),
      dataType_FloatDoublePtr     = (dataType_FloatDouble | kPtrToDataType),
      dataType_QDPoint            = FOUR_CHAR_CODE('poin'),
      dataType_QDPointPtr         = (dataType_QDPoint | kPtrToDataType),
      dataType_FixedPoint         = FOUR_CHAR_CODE('fixp'),
      dataType_FixedPointPtr      = (dataType_FixedPoint | kPtrToDataType),
      dataType_QDRect             = FOUR_CHAR_CODE('rect'),
      dataType_QDRectPtr          = (dataType_QDRect | kPtrToDataType),
      dataType_QDRegion           = FOUR_CHAR_CODE('rgn '),
      dataType_QDRegionPtr        = (dataType_QDRegion | kPtrToDataType),
      dataType_PString            = FOUR_CHAR_CODE('pstr'),
      dataType_PStringPtr         = (dataType_PString | kPtrToDataType),
      dataType_CString            = FOUR_CHAR_CODE('cstr'),
      dataType_CStringPtr         = (dataType_CString | kPtrToDataType),
      dataType_CharBuff           = FOUR_CHAR_CODE('cbuf'),
      dataType_CharBuffPtr        = (dataType_CharBuff | kPtrToDataType),
      dataType_TextHandle         = FOUR_CHAR_CODE('text'),
      dataType_TextHandlePtr      = (dataType_TextHandle | kPtrToDataType),
      dataType_Matrix             = FOUR_CHAR_CODE('matr'),
      dataType_MatrixPtr          = (dataType_Matrix | kPtrToDataType),
      dataType_Alias              = FOUR_CHAR_CODE('alis'),
      dataType_AliasPtr           = (dataType_Alias | kPtrToDataType),
      dataType_MacDate            = FOUR_CHAR_CODE('date'),
      dataType_MacDatePtr         = (dataType_MacDate | kPtrToDataType),
      dataType_TimeValue          = FOUR_CHAR_CODE('time'),
      dataType_TimeValuePtr       = (dataType_TimeValue | kPtrToDataType),
      dataType_BCDVersion         = FOUR_CHAR_CODE('vers'),
      dataType_BCDVersionPtr      = (dataType_BCDVersion | kPtrToDataType),
      dataType_Opaque             = FOUR_CHAR_CODE('void'),
      dataType_OpaquePtr          = (dataType_Opaque | kPtrToDataType),
      dataType_GraphicsMode       = FOUR_CHAR_CODE('gmod'),
      dataType_GraphicsModePtr    = (dataType_GraphicsMode | kPtrToDataType),
      dataType_GraphicsModeRecord = FOUR_CHAR_CODE('gmrc'),
      dataType_GraphicsModeRecordPtr = (dataType_GraphicsModeRecord | kPtrToDataType),
      dataType_QTSProxyPref       = FOUR_CHAR_CODE('prxy'),
      dataType_QTSProxyPrefPtr    = (dataType_QTSProxyPref | kPtrToDataType),
      dataType_QTSTransportPref   = FOUR_CHAR_CODE('trns'),
      dataType_QTSTransportPrefPtr = (dataType_QTSTransportPref | kPtrToDataType),
      dataType_QTSNoProxyPref     = FOUR_CHAR_CODE('nprx'),
      dataType_QTSNoProxyPrefPtr  = (dataType_QTSNoProxyPref | kPtrToDataType),
      dataType_FindOffset         = FOUR_CHAR_CODE('find'),
      dataType_FindOffsetPtr      = (dataType_FindOffset | kPtrToDataType)
  };
  
  /* == movie manager notification flags == */
  enum {
      kNotifyBeforeMessageSend    = (1L << 0),                    /* notify before a message is sent to an object*/
      kNotifyAfterMessageSend     = (1L << 1),                    /* notify after a message was successfully sent to an object*/
      kNotifyOnHighLevelEvent     = (1L << 2),                    /* notify before high level events*/
      kNotifyOnMouseEvent         = (1L << 3),                    /* notify before mouse up/down/enter/exit/trigger events*/
      kNotifyOnMCActionEvent      = (1L << 4)                     /* notify before looking at mcAction events*/
  };
  
  /* == movie manager notification types ==*/
  enum {
                                                                  /* ***/
                                                                  /* notification types*/
      kNotifyTypeHighLevelEvent   = FOUR_CHAR_CODE('high'),       /* hight level event (HighLevelEventRecord *)*/
      kNotifyTypeMCAction         = FOUR_CHAR_CODE('mcac'),       /* mcAction notification (MMgrControllerEventRecord *)*/
      kNotifyMouseEvent           = FOUR_CHAR_CODE('mous'),       /* mouse event*/
      kNotifyTypePreMessageSend   = FOUR_CHAR_CODE('prms'),       /* message send (MovieObjectRef *)*/
      kNotifyTypePostMessageSend  = FOUR_CHAR_CODE('poms')        /* */
  };
  
  /* == movie manager notification IDs ==*/
  enum {
                                                                  /* ***/
                                                                  /* "high level" events*/
      kNotifyOpenMovie            = FOUR_CHAR_CODE('open'),
      kNotifyCloseMovie           = FOUR_CHAR_CODE('clos'),
      kNotifyEnteringNode         = FOUR_CHAR_CODE('vren'),       /* entering node, data = new node ID (SInt32)*/
      kNotifyLeavingNode          = FOUR_CHAR_CODE('vrlv'),       /* leaving VR node, data = leave node data (LeaveNodeRecord *)*/
                                                                  /* ?? */
                                                                  /* ????? does it make sense to send these notifications? User could use the notification to set the*/
                                                                  /* ?????  movieID/movieName property, which would then be returned...*/
                                                                  /*@@@@@   kGetExternalMovieID,*/
                                                                  /*@@@@@   kGetExternalMovieName,*/
                                                                  /* ?????*/
      kNotifyEdited               = FOUR_CHAR_CODE('edit'),       /* movie has been edited*/
      kNotifyLinkToURL            = FOUR_CHAR_CODE('lurl'),       /* the movie wants to link to a url, data = URL (handle of C string)*/
      kNotifyRateChanged          = FOUR_CHAR_CODE('rate'),       /* the movie's rate has changed, data = rate (Fixed)*/
      kNotifyTimeChanged          = FOUR_CHAR_CODE('ctim'),       /* the movie's time has changed, data = new time (SInt32)*/
      kNotifyVolumeChanged        = FOUR_CHAR_CODE('cvol'),       /* the movie's volume has changed, data = new volume (SInt32)*/
      kNotifyShowStatusString     = FOUR_CHAR_CODE('stts'),       /* a movie status message, data = status string (handle of C string)*/
      kNotifyShowMessageString    = FOUR_CHAR_CODE('smsg'),       /* a sprite message string (mcActionShowMessageString), data = string (StringPtr)*/
      kNotifySpriteCustomAction   = FOUR_CHAR_CODE('scst'),       /* a sprite custom app wired event (kActionApplicationNumberAndString), data = params (SpriteDebugMessage *)*/
      kNotifySpriteDebugStr       = FOUR_CHAR_CODE('sdbg'),       /* a sprite debugstr wired event (kActionDebugStr), param = string (stringPtr)*/
                                                                  /* ***/
                                                                  /* mouse event notification*/
      kNotifyMouseEnter           = FOUR_CHAR_CODE('entr'),       /* mouse has entered a movie object, data = object ID (SInt32)*/
      kNotifyMouseWithin          = FOUR_CHAR_CODE('mwin'),       /* mouse is still within a movie object, data = object ID (SInt32)*/
      kNotifyMouseExit            = FOUR_CHAR_CODE('exit'),       /* mouse has left the building, data = object ID (SInt32)*/
      kNotifyMouseDown            = FOUR_CHAR_CODE('clik'),       /* mouse clicked within a movie object, data = object ID (SInt32)*/
      kNotifyMouseStillDown       = FOUR_CHAR_CODE('stld'),       /* mouse is still down within a movie object, data = object ID (SInt32)*/
      kNotifyMouseTrigger         = FOUR_CHAR_CODE('trig'),       /* mouse released within the movie object it went down in, data = object ID (SInt32)*/
      kNotifyMouseUp              = FOUR_CHAR_CODE('cend')        /* mouse released outside of the movie object it went down in, data = object ID (SInt32)*/
  };
  
  /*
     **
     == movie manager event record == 
  */
  
  struct MMgrEventRecord {
      OSType                          objClass;                   /* class of event target object*/
      SInt32                          when;                       /* ticks at time of event*/
      Point                           where;                      /* local mouse loc at time of event*/
      UInt32                          flags;
  };
  typedef struct MMgrEventRecord          MMgrEventRecord;
  typedef MMgrEventRecord *               MMgrEventRecordPtr;
  /*
     **
     == structure passed to notification proc for a controller filter event notification ==
  */
  
  struct MMgrControllerEventRecord {
      void *                          params;                     /* param normally passed to controller filter for this action*/
      SInt16                          action;                     /* action*/
  };
  typedef struct MMgrControllerEventRecord MMgrControllerEventRecord;
  typedef MMgrControllerEventRecord *     MMgrControllerEventRecordPtr;
  /*
     **
     == structure passed to notification proc for pre/post message send ==
  */
  
  struct MMgrMessageNotificationRecord {
      MovieObjectRef *                targetObject;               /* resolved movie object target*/
      MessageClass                    msgClass;                   /* message class*/
      MessageID                       msgID;                      /* message ID*/
      PropertyParams *                params;                     /* message params*/
  };
  typedef struct MMgrMessageNotificationRecord MMgrMessageNotificationRecord;
  typedef MMgrMessageNotificationRecord * MMgrMessageNotificationRecordPtr;
  /*
     **
     == movie manager hight level event notification record == 
  */
  
  struct HighLevelEventRecord {
      OSType                          eventID;
      void *                          data;                       /* event specific params*/
  };
  typedef struct HighLevelEventRecord     HighLevelEventRecord;
  
  /*
     **
     == structure passed to notification proc for a sprite kNotifySpriteCustomAction (kActionApplicationNumberAndString) notification ==
  */
  
  struct SpriteDebugMessage {
      SInt32                          number;                     /* sprite action param 1, a long*/
      Handle                          stringHandle;               /* sprite action param 2, a Pascal string*/
  };
  typedef struct SpriteDebugMessage       SpriteDebugMessage;
  typedef SpriteDebugMessage *            SpriteDebugMessagePtr;
  /*
     **
     == structure passed to notification proc upon leaving a VR node ==
  */
  
  struct LeaveNodeRecord {
      UInt32                          fromNodeID;                 /* the id of the node we're about to leave*/
      UInt32                          toNodeID;                   /* the id of the node we're about to enter*/
  };
  typedef struct LeaveNodeRecord          LeaveNodeRecord;
  typedef LeaveNodeRecord *               LeaveNodeRecordPtr;
  /* == movie manager errors == */
  enum {
      errInvalidTrackType         = -2300,
      errCurrentSceneOnly         = -2301,
      errNoSuchScene              = -2302,
      errCantCoerceValue          = -2303,
      errPropNotSupported         = -2304,
      errCmdNotSupported          = -2305,
      errParamCountOutOfBounds    = -2306,
      errNotImplementedYet        = -2307,
      errBadLanguageForThisMovie  = -2308,
      errReadOnly                 = -2319,
      errInvalidTimeForThisMovie  = -2310,
      errNoExporterSet            = -2311,
      errMovieNotEditable         = -2312
  };
  
  /*
     **
     == messaging callback ==
  */
  
  typedef CALLBACK_API( OSErr , MovieManagerFilterProcPtr )(Movie movie, MovieController mc, OSType eventType, MMgrEventRecord *evt, void *evtData, void *refCon);
  typedef STACK_UPP_TYPE(MovieManagerFilterProcPtr)               MovieManagerFilterUPP;
  /* == selector ranges == */
  enum {
      selectorRange_MooVMgr       = 0x0000
  };
  
  enum {
      kMovieManagerCompType       = FOUR_CHAR_CODE('mngr'),
      kMovieManagerSubType        = FOUR_CHAR_CODE('moov')
  };
  
  enum {
      kMooVMgrSetMovieSelect      = selectorRange_MooVMgr + 1,
      kMooVMgrGetMovieSelect      = 0x0002,
      kMooVMgrSetMovieControllerSelect = 0x0003,
      kMooVMgrGetMovieControllerSelect = 0x0004,
      kMooVMgrObjectExistsSelect  = 0x0005,
      kMooVMgrCountObjectsSelect  = 0x0006,
      kMooVMgrSendMessageToObjectSelect = 0x0007,
      kMooVMgrMapNameToIDSelect   = 0x0008,
      kMooVMgrCoerceValueToTypeSelect = 0x0009,
      kMooVMgrSetNotificationFlagsSelect = 0x000A,
      kMooVMgrGetNotificationFlagsSelect = 0x000B,
      kMooVMgrSetNotificationProcSelect = 0x000C,
      kMooVMgrGetObjectProperty   = 0x000D,
      kMooVMgrSetObjectProperty   = 0x000E
  };
  
  /* = standard component stuff = */
  
  if CALL_NOT_IN_CARBON
  EXTERN_API( ComponentResult )
  MovieManagerOpen                (MovieManagerComponent  moovMgr,
                                   ComponentInstance      self)                               FIVEWORDINLINE(0x2F3C, 0x0004, 0xFFFF, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MovieManagerClose               (MovieManagerComponent  moovMgr,
                                   ComponentInstance      self)                               FIVEWORDINLINE(0x2F3C, 0x0004, 0xFFFE, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MovieManagerCanDo               (MovieManagerComponent  moovMgr,
                                   SInt16                 ftnNumber)                          FIVEWORDINLINE(0x2F3C, 0x0002, 0xFFFD, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MovieManagerVersion             (MovieManagerComponent  moovMgr)                            FIVEWORDINLINE(0x2F3C, 0x0000, 0xFFFC, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MovieManagerTarget              (MovieManagerComponent  moovMgr,
                                   ComponentInstance      target)                             FIVEWORDINLINE(0x2F3C, 0x0004, 0xFFFA, 0x7000, 0xA82A);
  
  /* = initialization, hierarchy, editing = */
  
  EXTERN_API( ComponentResult )
  MovieManagerSetMovie            (MovieManagerComponent  moovMgr,
                                   Movie                  movie)                              FIVEWORDINLINE(0x2F3C, 0x0004, 0x0001, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MovieManagerGetMovie            (MovieManagerComponent  moovMgr,
                                   Movie *                movie)                              FIVEWORDINLINE(0x2F3C, 0x0004, 0x0002, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MovieManagerSetMovieController  (MovieManagerComponent  moovMgr,
                                   MovieController        controller)                         FIVEWORDINLINE(0x2F3C, 0x0004, 0x0003, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MovieManagerGetMovieController  (MovieManagerComponent  moovMgr,
                                   MovieController *      controller)                         FIVEWORDINLINE(0x2F3C, 0x0004, 0x0004, 0x7000, 0xA82A);
  
  /* = movie objects = */
  
  EXTERN_API( ComponentResult )
  MovieManagerObjectExists        (MovieManagerComponent  moovMgr,
                                   MovieObjectSpec *      objectSpec,
                                   Boolean *              exists)                             FIVEWORDINLINE(0x2F3C, 0x0008, 0x0005, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MovieManagerCountObjects        (MovieManagerComponent  moovMgr,
                                   OSType                 countClass,
                                   MovieObjectSpec *      objectSpec,
                                   SInt32 *               count)                              FIVEWORDINLINE(0x2F3C, 0x000C, 0x0006, 0x7000, 0xA82A);
  
  /* = property/message = */
  
  EXTERN_API( ComponentResult )
  MovieManagerSendMessageToObject (MovieManagerComponent  moovMgr,
                                   MovieObjectSpec *      objectSpec,
                                   MessageClass           msgClass,
                                   MessageID              msgID,
                                   PropertyParams *       params)                             FIVEWORDINLINE(0x2F3C, 0x0010, 0x0007, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MovieManagerMapNameToID         (MovieManagerComponent  moovMgr,
                                   StringPtr              name,
                                   OSType *               id)                                 FIVEWORDINLINE(0x2F3C, 0x0008, 0x0008, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MovieManagerCoerceValueToType   (MovieManagerComponent  moovMgr,
                                   PropArgU *             dst,
                                   ValueFormat            dstType,
                                   PropArgU *             src)                                FIVEWORDINLINE(0x2F3C, 0x000C, 0x0009, 0x7000, 0xA82A);
  
  /* = notification */
  EXTERN_API( ComponentResult )
  MovieManagerSetNotificationFlags (MovieManagerComponent  moovMgr,
                                   UInt32                 flags,
                                   UInt32                 flagsMask)                          FIVEWORDINLINE(0x2F3C, 0x0008, 0x000A, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MovieManagerGetNotificationFlags (MovieManagerComponent  moovMgr,
                                   UInt32 *               flags)                              FIVEWORDINLINE(0x2F3C, 0x0004, 0x000B, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MovieManagerSetNotificationProc (MovieManagerComponent  moovMgr,
                                   MovieManagerFilterUPP  callback,
                                   const void *           refCon,
                                   UInt32                 flags)                              FIVEWORDINLINE(0x2F3C, 0x000C, 0x000C, 0x7000, 0xA82A);
  
  /* = obsolete, to be removed after OS X beta*/
  EXTERN_API( ComponentResult )
  MovieManagerGetObjectProperty   (MovieManagerComponent  moovMgr,
                                   MovieObjectSpec *      objectSpec,
                                   PropertyID             propID,
                                   PropertyParams *       params)                             FIVEWORDINLINE(0x2F3C, 0x000C, 0x000D, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MovieManagerSetObjectProperty   (MovieManagerComponent  moovMgr,
                                   MovieObjectSpec *      objectSpec,
                                   PropertyID             propID,
                                   PropertyParams *       params)                             FIVEWORDINLINE(0x2F3C, 0x000C, 0x000E, 0x7000, 0xA82A);
  
  /* selectors for component calls */
  enum {
      kMovieManagerOpenSelect                    = -1,
      kMovieManagerCloseSelect                   = -2,
      kMovieManagerCanDoSelect                   = -3,
      kMovieManagerVersionSelect                 = -4,
      kMovieManagerTargetSelect                  = -6,
      kMovieManagerSetMovieSelect                = 0x0001,
      kMovieManagerGetMovieSelect                = 0x0002,
      kMovieManagerSetMovieControllerSelect      = 0x0003,
      kMovieManagerGetMovieControllerSelect      = 0x0004,
      kMovieManagerObjectExistsSelect            = 0x0005,
      kMovieManagerCountObjectsSelect            = 0x0006,
      kMovieManagerSendMessageToObjectSelect     = 0x0007,
      kMovieManagerMapNameToIDSelect             = 0x0008,
      kMovieManagerCoerceValueToTypeSelect       = 0x0009,
      kMovieManagerSetNotificationFlagsSelect    = 0x000A,
      kMovieManagerGetNotificationFlagsSelect    = 0x000B,
      kMovieManagerSetNotificationProcSelect     = 0x000C,
      kMovieManagerGetObjectPropertySelect       = 0x000D,
      kMovieManagerSetObjectPropertySelect       = 0x000E
  };
  endif  /* CALL_NOT_IN_CARBON */
  
  if OPAQUE_UPP_TYPES
  if CALL_NOT_IN_CARBON
      EXTERN_API(MovieManagerFilterUPP)
      NewMovieManagerFilterUPP       (MovieManagerFilterProcPtr userRoutine);
  
      EXTERN_API(void)
      DisposeMovieManagerFilterUPP    (MovieManagerFilterUPP  userUPP);
  
      EXTERN_API(OSErr)
      InvokeMovieManagerFilterUPP    (Movie                   movie,
                                      MovieController         mc,
                                      OSType                  eventType,
                                      MMgrEventRecord *       evt,
                                      void *                  evtData,
                                      void *                  refCon,
                                      MovieManagerFilterUPP   userUPP);
  
  endif  /* CALL_NOT_IN_CARBON */
  
  else
      enum { uppMovieManagerFilterProcInfo = 0x0003FFE0 };            /* pascal 2_bytes Func(4_bytes, 4_bytes, 4_bytes, 4_bytes, 4_bytes, 4_bytes) */
      #define NewMovieManagerFilterUPP(userRoutine)                   (MovieManagerFilterUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppMovieManagerFilterProcInfo, GetCurrentArchitecture())
      #define DisposeMovieManagerFilterUPP(userUPP)                   DisposeRoutineDescriptor(userUPP)
      #define InvokeMovieManagerFilterUPP(movie, mc, eventType, evt, evtData, refCon, userUPP)  (OSErr)CALL_SIX_PARAMETER_UPP((userUPP), uppMovieManagerFilterProcInfo, (movie), (mc), (eventType), (evt), (evtData), (refCon))
  endif
  /* support for pre-Carbon UPP routines: NewXXXProc and CallXXXProc */
  define NewMovieManagerFilterProc(userRoutine)                  NewMovieManagerFilterUPP(userRoutine)
  define CallMovieManagerFilterProc(userRoutine, movie, mc, eventType, evt, evtData, refCon) InvokeMovieManagerFilterUPP(movie, mc, eventType, evt, evtData, refCon, userRoutine)
  
  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 /* __MOVIEMANAGER__ */
  
  


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