Retired Document
Important: This sample code may not represent best practices for current development. The project may use deprecated symbols and illustrate technologies and techniques that are no longer recommended.
sources/BoxMooV_QuickTime.c
/* BoxMooV_QuickTime.c |
* |
* Rick Evans Sept. 1996 |
* Robert Dierkes |
* (c)1994-96 Apple Computer Inc., All Rights Reserved |
* |
*/ |
/*------------------*/ |
/* Include Files */ |
/*------------------*/ |
#include <Memory.h> |
#include <Movies.h> |
#include <QDOffscreen.h> |
#include "QD3D.h" |
#include "QD3DStorage.h" |
#include "BoxMoov_QuickTime.h" |
/*===========================================================================*\ |
* |
* Routine: QuickTime_Init() |
* |
* Comments: Intialize QuickTime Toolbox. |
* |
* |
\*===========================================================================*/ |
void QuickTime_Init( |
void) |
{ |
EnterMovies(); |
} |
/*===========================================================================*\ |
* |
* Routine: QuickTime_Delete() |
* |
* Comments: Stop movie playback, and dispose of its memory |
* |
* |
\*===========================================================================*/ |
void QuickTime_Delete( |
Movie *moviePtr) |
{ |
if (*moviePtr != NULL) |
{ |
StopMovie(*moviePtr); |
DisposeMovie(*moviePtr); |
ExitMovies(); |
*moviePtr = NULL; |
} |
} |
/*===========================================================================*\ |
* |
* Routine: QuickTime_GetNewMooVTexture() |
* |
* Comments: Query user for a MooV File, and set up animated texture |
* |
* |
\*===========================================================================*/ |
Boolean QuickTime_GetNewMooVTexture( |
Movie *theMovie) |
{ |
StandardFileReply reply; |
short numTypes = 1 ; |
SFTypeList myTypes = { 'MooV', 0 } ; |
/* Clean up any previous movie */ |
if (*theMovie != NULL) |
QuickTime_Delete( theMovie ); |
/* Get movie file from user */ |
StandardGetFilePreview(nil, numTypes, myTypes, &reply); |
if ( ! reply.sfGood ) |
return (false); |
return (QuickTime_LoadMovie(&reply.sfFile, theMovie)); |
} |
/*===========================================================================*\ |
* |
* Routine: QuickTime_LoadMovie() |
* |
* Comments: Takes a FSSpec and loads a movie into a TQ3StoragePixmap structure |
* |
\*===========================================================================*/ |
Boolean QuickTime_LoadMovie( |
FSSpec *pFile, |
Movie *pMovie) |
{ |
QDErr err; |
short fref; |
Rect bounds; |
/* Load movie */ |
err = OpenMovieFile(pFile, &fref, fsRdPerm); |
if (err) return false; |
err = NewMovieFromFile(pMovie, fref, nil, (StringPtr)nil, newMovieActive, nil); |
if (err) return false; |
CloseMovieFile(fref); |
/* Figure out movie dimensions */ |
/* Set movie to identity matrix. we hope this means "its natural size" */ |
SetMovieMatrix(*pMovie, nil); |
// GetMovieBox(*pMovie, &bounds); |
// OffsetRect(&bounds, -bounds.left, -bounds.top); |
SetRect(&bounds, 0, 0, 128, 128); |
SetMovieBox(*pMovie, &bounds); |
return true; |
} |
/*===========================================================================*\ |
* |
* Routine: QuickTime_LoopMovie() |
* |
* Comments: Start movie playing in a loop |
* |
* |
\*===========================================================================*/ |
void QuickTime_LoopMovie(Movie pMovie, GWorldPtr pGWorld) |
{ |
TimeBase timeBase; |
SetMovieGWorld(pMovie, pGWorld, nil); |
/* Draw the movie first */ |
MoviesTask(pMovie, 0); |
MoviesTask(pMovie, 0); |
/* throw the movie into loop mode */ |
timeBase = GetMovieTimeBase(pMovie); |
SetTimeBaseFlags(timeBase, GetTimeBaseFlags(timeBase) | loopTimeBase); |
/* start the movie a' playin' */ |
StartMovie(pMovie); |
} |
Copyright © 2003 Apple Computer, Inc. All Rights Reserved. Terms of Use | Privacy Policy | Updated: 2003-01-14