topical media & game development
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.