/* 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 #endif #ifndef __QUICKTIMEVR__ #include #endif #ifndef __COMPONENTS__ #include #endif #ifndef __EVENTS__ #include #endif #ifndef __MACTYPES__ #include #endif #ifndef __MACWINDOWS__ #include #endif #if PRAGMA_ONCE #pragma once #endif #ifdef __cplusplus extern "C" { #endif #if PRAGMA_IMPORT #pragma import on #endif #if PRAGMA_STRUCT_ALIGN #pragma options align=mac68k #elif PRAGMA_STRUCT_PACKPUSH #pragma pack(push, 2) #elif PRAGMA_STRUCT_PACK #pragma pack(2) #endif typedef 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__ */