home *** CD-ROM | disk | FTP | other *** search
- /*
- * file: Double Movie Viewer.c
- *
- * started 7 July 1988 09:34
- * david van brink
- *
- */
-
-
-
- /*
- * QT Bug - if you quit the application without disposing the
- * windows nor the movie controller nor movie, then you
- * get a componentmgr error.
- */
-
-
- /*--------------------------
- Inclusions
- --------------------------*/
-
- #include <QuickDraw.h>
- #include <Windows.h>
- #include <Scrap.h>
-
- #include "BigEasy2.h"/**/
- #include <Movies.h>
- //#include "MovieController.h"
-
- #include "ImageCompression.h"
- //#include "StandardPreview.h"
-
- /*--------------------------
- Limits and Konstants
- --------------------------*/
- enum
- {
- mOpen = 23,
- mClose,
- mLoop,
- mPalindrome,
- mCopyFrame,
- mSelectAll,
- mEdit,
- mHideController,
- mUseBadge,
- mAttach,
- mFrame,
- mSteppers,
- mSpeaker,
- mEnlarge,
- mBumpControllerDown,
- mGrowable
- };
-
- #define kHeaderHeight 0
-
- #define kConfig 1
-
- # if kConfig == 1
- #define kMovieMargin 14
- #define kMoviesPerDoc 2
- #elif kConfig == 2 || 1
- #define kMovieMargin 0
- #define kMoviesPerDoc 1
- #endif
-
- /*--------------------------
- Types and globals
- --------------------------*/
-
- typedef struct
- {
- Movie movie;
- MovieController mc;
- Boolean loop;
- Boolean palindrome;
- Boolean editing;
- Boolean controllerHidden;
- Boolean useBadge;
- Boolean attached;
- Boolean framed;
- Boolean steppers;
- Boolean speaker;
- Boolean growable;
- } DocMovie;
-
- typedef struct TDoc
- {
- Boolean used;
- WindowPtr w;
- short resRefNum;
- short resID;
- unsigned char movieName[40];
- DocMovie m[kMoviesPerDoc];
-
- short whichMovie;
-
- short oldWhichMovie;
- } TDoc;
-
- #define kFirstDocWindow 1
- #define kDocMax 5
- TDoc gDoc[kDocMax];
- short gDocCount;
-
- #define SignIt(x) ( (x)?1:-1)
-
- /*--------------------------
- Prototypes
- --------------------------*/
- static pascal Boolean MyMCActionFilter(MovieController mc, short *action, void *params);
- static void DrawDoc(short n);
- static void ClickDoc(short n,Point p,short mods);
- static void KeyDoc(short n,short key,short code, short mods);
- static void GoAwayDoc(short n);
- static void ActivateDoc(short n);
- static void DeactivateDoc(short n);
- static void SetDocMenus(TDoc *d);
- static void IdleDoc(short n);
- static void LetsQuit(void);
- static void OpenAWindow(void);
- static void OpenDoc(void);
- static void MakeWindow(void);
- static void FrameThisDocMovie(TDoc *d,short whichMovie,Boolean on);
- static void ToggleSomethingDoc(short n,short menuItem,short menuRef);
- static void BumpControllerDownDoc(short n,short menuItem,short menuRef);
- static void LoopDoc(short n);
- static void PalindromeDoc(short n);
- static void SelectAll(short n);
- static void EditDoc(short n,short item, short menuID);
- static void HideControllerDoc(short n,short item, short menuID);
- static void InitVars(void);
- static void CopyFrameEdit(short n);
- static void DrawSelectedMovie(short n);
- static void OpenUpAMovieAndAControllerPlease(FSSpec *someFile,Movie *outMovie,MovieController *outMovieController,
- Point where,WindowPtr w);
- static void GetMovieControllerTotalRect(Movie m,MovieController mc,Rect *r);
- static void NudgeDocMovie(DocMovie *dm,short top,short left);
- static short GetModKeys(void);
-
- static void UndoDoc(short n);
- static void CutDoc(short n);
- static void CopyDoc(short n);
- static void PasteDoc(short n);
-
- /*--------------------------
- Computer Programs
- --------------------------*/
-
- static void GetMovieControllerTotalRect(Movie m,MovieController mc,Rect *r)
- {
- Rect r1, r2;
-
- MCGetControllerBoundsRect(mc, &r1);
- GetMovieBox(MCGetIndMovie(mc, 1), &r2);
- if(EmptyRect(&r2))
- *r = r1;
- else
- UnionRect(&r1,&r2,r);
- }
-
- pascal Boolean MyMCActionFilter(MovieController mc, short *action, void *params)
- {
- short i,j;
- Rect r,rr;
- TDoc *d;
- DocMovie *dm;
- GrafPtr oldPort;
-
- if (! (*action == mcActionControllerSizeChanged))
- return false;
-
- for(i = 0; i< kDocMax; i++)
- for(j = 0; j<kMoviesPerDoc; j++)
- if(gDoc[i].m[j].mc == mc)
- goto gotIt;
-
- goto goHome;
-
- gotIt:
- d = &gDoc[i];
- GetMovieControllerTotalRect(MCGetIndMovie(d->m[0].mc, 1),d->m[0].mc,&r);
- r.right += kMovieMargin;
- r.bottom += kMovieMargin;
-
- for(i = 1; i<kMoviesPerDoc; i++)
- {
- dm = &d->m[i];
-
- MCSetActionFilter(dm->mc, 0);
- NudgeDocMovie(dm,r.top,r.right);
- MCSetActionFilter(dm->mc,(MCActionFilter)MyMCActionFilter);
-
- GetMovieControllerTotalRect(dm->movie,dm->mc,&rr);
-
- r.right = rr.right + kMovieMargin;
- rr.bottom += kMovieMargin;
- if(rr.bottom > r.bottom)
- r.bottom = rr.bottom;
- }
- SizeWindow(d->w,r.right-1 ,r.bottom-1 ,true);
- GetPort(&oldPort);
- SetPort(d->w);
- // InvalRect(&gBigRect);
- SetPort(oldPort);
-
- goHome:
- return false;
- }
-
- static void NudgeDocMovie(DocMovie *dm,short top,short left)
- /*
- * One way or another, make the movie/controller top/left appear here.
- */
- {
- Rect mR,mcR;
- OSErr thisError;
-
- if(kMoviesPerDoc < 2)
- return;
-
- MCGetControllerBoundsRect(dm->mc,&mcR);
- GetMovieBox(dm->movie,&mR);
-
- OffsetRect(&mR,left - mR.left,top - mR.top);
- SetMovieBox(dm->movie,&mR);
- thisError = GetMoviesError();
- thisError = MCMovieChanged(dm->mc,dm->movie);
- GetMovieBox(dm->movie,&mR);
- }
-
- void DrawDoc(short n)
- /*
- * Draws the window.
- */
- {
- Rect r;
- register TDoc *d;
- short i;
-
- d = &gDoc[n-kFirstDocWindow];
-
- EraseRect(&gBigRect);
- for(i = 0; i<kMoviesPerDoc; i++)
- MCDraw(d->m[i].mc,d->w);
-
- DrawSelectedMovie(n);
- }
-
- void FrameThisDocMovie(TDoc *d,short whichMovie,Boolean on)
- {
- register DocMovie *dm;
- Rect r;
- RgnHandle rh;
-
- if( kMoviesPerDoc < 2 || whichMovie < 0)
- return;
-
- PenSize(2,2);
-
- if(on)
- ForeColor(blackColor);
- else
- ForeColor(whiteColor);
-
- dm = &d->m[whichMovie];
-
- rh = MCGetWindowRgn(dm->mc, d->w);
- r = (**rh).rgnBBox;
- DisposeRgn(rh);
-
- InsetRect(&r,-4,-4);
- FrameRect(&r);
-
- ForeColor(blackColor);
- }
-
- void DrawSelectedMovie(short n)
- {
- register TDoc *d;
-
- if(d->oldWhichMovie != d->whichMovie)
- {
- FrameThisDocMovie(d,d->oldWhichMovie,0);
- d->oldWhichMovie = d->whichMovie;
- }
-
- FrameThisDocMovie(d,d->whichMovie,1);
- }
-
-
- void ClickDoc(short n,Point p,short mods)
- /*
- * Come here for a click in the window.
- */
- {
- register TDoc *d;
- register DocMovie *dm;
- short i;
- Rect r;
-
- d = &gDoc[n-kFirstDocWindow];
- for(i = 0; i<kMoviesPerDoc; i++)
- {
- dm = &d->m[i];
-
- GetMovieControllerTotalRect(dm->movie,dm->mc,&r);
- if(PtInRect(p,&r))
- {
- d->whichMovie = i;
- SetDocMenus(d);
- DrawSelectedMovie(n);
- MCClick(dm->mc, d->w, p, TickCount(), mods);
- goto doneClick;
- }
- }
-
- /*
- * Click outside the active movie closes
- * it if it's using badging.
- */
- dm = & d->m[d->whichMovie];
- if(dm->useBadge)
- MCSetVisible(dm->mc,false);
-
-
- doneClick:;
- }
-
- void KeyDoc(short n,short key,short code, short mods)
- {
- register TDoc *d;
- MovieController mc;
-
- d = &gDoc[n-kFirstDocWindow];
- mc = d->m[d->whichMovie].mc;
-
- switch(key)
- {
- case 9: /* tab */
- if(mods & shiftKey)
- d->whichMovie += kMoviesPerDoc - 1;
- else
- d->whichMovie += 1;
- d->whichMovie %= kMoviesPerDoc;
- DrawSelectedMovie(n);
- SetDocMenus(d);
- break;
-
- default:
- MCKey(mc,key,mods);
- break;
- }
-
- }
-
- void GoAwayDoc(short n)
- /*
- * Close that window...
- */
- {
- register TDoc *d;
- register DocMovie *dm;
- short i;
-
- d = &gDoc[n-kFirstDocWindow];
-
- for(i = 0; i<kMoviesPerDoc; i++)
- {
- dm = &d->m[i];
- CloseComponent(dm->mc);
- DisposeMovie(dm->movie);
-
- dm->mc = 0;
- dm->movie = 0;
- }
-
- UninstallWindow(n);
-
- d->used = false;
- gDocCount--;
- }
-
- void ActivateDoc(short n)
- {
- register TDoc *d;
- short i;
-
- d = &gDoc[n-kFirstDocWindow];
-
- for(i = 0; i<kMoviesPerDoc; i++)
- MCActivate(d->m[i].mc,d->w,true);
-
- EnDisEdits(0,1,1,1,0);
- SetMenuItem(mClose,1,0,0,nil); /* enable "Close" menu item */
- SetMenuItem(mOpen,SignIt(gDocCount < kDocMax),0,0,nil); /* disable "Open" menu item */
- SetDocMenus(d);
- }
-
- void UndoDoc(short n)
- {
- register TDoc *d;
- register DocMovie *dm;
-
- d = &gDoc[n-kFirstDocWindow];
- dm = &d->m[d->whichMovie];
-
- MCUndo(dm->mc);
- }
-
- void CutDoc(short n)
- {
- register TDoc *d;
- register DocMovie *dm;
- Movie m;
-
- d = &gDoc[n-kFirstDocWindow];
- dm = &d->m[d->whichMovie];
-
- m = MCCut(dm->mc);
- PutMovieOnScrap(m, 0);
- DisposeMovie(m);
- }
-
- void CopyDoc(short n)
- {
- register TDoc *d;
- register DocMovie *dm;
- Movie m;
-
- d = &gDoc[n-kFirstDocWindow];
- dm = &d->m[d->whichMovie];
-
- m = MCCopy(dm->mc);
- PutMovieOnScrap(m, 0);
- DisposeMovie(m);
-
- }
-
- void PasteDoc(short n)
- {
- Movie movieScrap;
- register TDoc *d;
- register DocMovie *dm;
-
- d = &gDoc[n-kFirstDocWindow];
- dm = &d->m[d->whichMovie];
-
- movieScrap = NewMovieFromScrap(0);
-
- MCPaste(dm->mc,movieScrap);
- DisposeMovie(movieScrap);
- }
-
-
-
-
- void CopyFrameEdit(short n)
- {
- register TDoc *d;
- register DocMovie *dm;
- PicHandle p,pp;
- long size;
- OSErr thisError;
-
- d = &gDoc[n-kFirstDocWindow];
- dm = &d->m[d->whichMovie];
-
- p = GetMoviePict(dm->movie,GetMovieTime(dm->movie,nil));
- pp = (PicHandle)NewHandle(0);
- size = GetHandleSize((Handle)p);
-
- thisError = FCompressPicture(p, pp,
- 0, 0,0x00030000,
- true,true,nil,
- 'raw ',0);
-
- KillPicture(p);
- size = GetHandleSize((Handle)pp);
- HLock((Handle)pp);
- ZeroScrap();
- PutScrap(size,'PICT',(Ptr)*pp);
- HUnlock((Handle)pp);
- KillPicture(pp);
- }
-
-
-
- void SetDocMenus(TDoc *d)
- /*
- * Just update the on-the-fly changeable menus
- */
- {
- register DocMovie *dm;
-
- dm = &d->m[d->whichMovie];
- SetMenuItem(mLoop,1,SignIt(dm->loop),'•',nil);
- SetMenuItem(mPalindrome,1,SignIt(dm->palindrome),'•',nil);
- SetMenuItem(mEdit,1,SignIt(dm->editing),'•',nil);
- SetMenuItem(mHideController,1,SignIt(dm->controllerHidden),'•',nil);
- SetMenuItem(mUseBadge,1,SignIt(dm->useBadge),'•',nil);
- SetMenuItem(mAttach,1,SignIt(dm->attached),'•',nil);
- SetMenuItem(mFrame,1,SignIt(dm->framed),'•',nil);
- SetMenuItem(mSteppers,1,SignIt(dm->steppers),'•',nil);
- SetMenuItem(mSpeaker,1,SignIt(dm->speaker),'•',nil);
- SetMenuItem(mEnlarge,1,0,0,nil);
- SetMenuItem(mBumpControllerDown,1,0,0,nil);
- SetMenuItem(mGrowable,1,SignIt(dm->growable),'•',nil);
-
- SetMenuItem(mSelectAll,SignIt(dm->editing),0,0,nil);
- }
-
- void DeactivateDoc(short n)
- {
- register TDoc *d;
- short i;
-
- d = &gDoc[n-kFirstDocWindow];
-
- for(i = 0; i<kMoviesPerDoc; i++)
- if(d->m[i].mc)
- MCActivate(d->m[i].mc,d->w,false);
-
- SetMenuItem(mClose,-1,0,0,nil); /* disable "Close" menu item */
- SetMenuItem(mOpen,1,0,0,nil); /* enable "Open" menu item */
-
- /*
- * Deactivate all the movie flags
- */
- SetMenuItem(mLoop,-1,-1,0,nil);
- SetMenuItem(mPalindrome,-1,-1,0,nil);
- SetMenuItem(mEdit,-1,-1,0,nil);
- SetMenuItem(mHideController,-1,-1,0,nil);
- SetMenuItem(mUseBadge,-1,-1,0,nil);
- SetMenuItem(mFrame,-1,-1,0,nil);
- SetMenuItem(mSteppers,-1,-1,0,nil);
- SetMenuItem(mSpeaker,-1,-1,0,nil);
- SetMenuItem(mAttach,-1,-1,0,nil);
- SetMenuItem(mEnlarge,-1,0,0,nil);
- SetMenuItem(mBumpControllerDown,-1,0,0,nil);
- SetMenuItem(mGrowable,-1,0,0,nil);
-
-
- SetMenuItem(mSelectAll,-1,-1,0,nil);
- }
-
- void IdleDoc(short n)
- {
- register TDoc *d;
- short i;
-
- d = &gDoc[n-kFirstDocWindow];
-
- for(i = 0; i<kMoviesPerDoc; i++)
- MCIdle(d->m[i].mc);
- }
-
-
- void LetsQuit(void)
- {
- short i;
-
- for(i = 0; i<kDocMax; i++)
- {
- if(gDoc[i].used)
- GoAwayDoc(i + kFirstDocWindow);
- }
-
- gQuitApp++;
- }
-
-
- pascal void ReallyStandardGetFile(StringPtr prompt,
- FileFilterProcPtr fileFilter,
- short numTypes,
- SFTypeList typeList,
- StandardFileReply *reply)
- = {0x3F3C,0x0006,0xA9EA};
-
- void OpenDoc(void)
- {
- StandardFileReply sfr;
- SFTypeList aType;
- unsigned char *x;
- TDoc *d;
- short i,n;
- long thisError;
- Rect r,r2;
- ComponentDescription td;
- Component t;
- Point po;
- DocMovie *dm;
-
- for(n = 0; n<kDocMax; n++)
- {
- d = &gDoc[n];
- if(!d->used)
- goto gotOne;
- }
- goto goHome;
-
- gotOne:
- x = (void *)&"\pSelect a movie…";
- aType[0] = MovieFileType;
- ReallyStandardGetFile(x,nil,1,aType,&sfr);
-
- if(!sfr.sfGood)
- goto goHome;
-
- gDocCount++;
-
- SetRect(&r,100,100,300,300);
- d->w = InstallWindow(-(n+kFirstDocWindow),sfr.sfFile.name,&r,noGrowDocProc,0,
- DrawDoc,ClickDoc,KeyDoc,GoAwayDoc,
- ActivateDoc,DeactivateDoc,(void *)IdleDoc);
-
- d->used = true;
-
- d->oldWhichMovie = 0;
- for(i = 0; i<kMoviesPerDoc; i++)
- {
- dm = &d->m[i];
- dm->loop = false;
- dm->palindrome = false;
- dm->editing = false;
- dm->attached = true;
- dm->speaker = true;
- dm->steppers = true;
- dm->framed = true;
- dm->useBadge = false;
- dm->controllerHidden = false;
- }
-
- po.h = po.v = kMovieMargin;
-
- n += kFirstDocWindow;
- for(i = 0; i < kMoviesPerDoc; i++)
- {
- dm = &d->m[i];
- OpenUpAMovieAndAControllerPlease(&sfr.sfFile,&dm->movie,&dm->mc,po,d->w);
- GetMovieControllerTotalRect(dm->movie,dm->mc,&r);
-
- SetRect(&r, 0, 0, 9000, 9000);
- MCDoAction(dm->mc, mcActionSetGrowBoxBounds, &r);
- MCSetActionFilter(dm->mc, (MCActionFilter)MyMCActionFilter);
-
- d->whichMovie = i;
- // ToggleSomethingDoc(n,0,mHideController);
- // ToggleSomethingDoc(n,0,mUseBadge);
- }
-
- d->whichMovie = 0;
-
- i = mcActionControllerSizeChanged;
- MyMCActionFilter(d->m[0].mc, &i, 0);
- ShowWindow(d->w);
-
- goHome:;
- }
-
-
- void OpenUpAMovieAndAControllerPlease(FSSpec *someFile,Movie *outMovie,MovieController *outMovieController,
- Point where,WindowPtr w)
- {
- short resID;
- short resRefNum;
- Movie m;
- MovieController mc;
- Rect r;
- ComponentDescription td;
- ComponentResult thisError;
- Component t;
-
- thisError = OpenMovieFile( someFile, &resRefNum,fsRdPerm );
-
- resID = 0;
-
- // m = NewMovie(1);
- thisError = NewMovieFromFile( &m, resRefNum, &resID, 0,0, nil );
-
- GetMovieBox( m, &r );
-
- thisError = GetMoviesError();
-
- if(r.right - r.left < 50)
- r.right = r.left + 50;
- if(r.bottom - r.top < 50)
- r.bottom = r.top + 50;
-
- OffsetRect(&r,100 - r.left,100 - r.top);
- r.bottom += kHeaderHeight;
-
- r.bottom += kMovieMargin * 2;
- r.right += kMovieMargin * 2;
-
- SetMovieGWorld( m, (CGrafPtr)w, nil );
- SetMovieActive( m, true );
- OffsetRect(&r,-r.left,kHeaderHeight-r.top);
- r.bottom -= kHeaderHeight;
- InsetRect(&r,kMovieMargin,kMovieMargin);
- SetMovieBox(m,&r);
- UpdateMovie(m);
-
- td.componentType = 'play';
- td.componentSubType =0;
- td.componentManufacturer = 'appl';
- td.componentFlags = 0;
- td.componentFlagsMask = 0;
-
- t = FindNextComponent(0, &td);
- mc = OpenComponent(t);
- MCDoAction(mc,mcActionSetKeysEnabled,(void *)true);
- MCSetControllerAttached(mc,true);
-
- MCSetMovie(mc,m,w,where);
-
- MCSetVisible(mc,true);
-
- *outMovie = m;
- *outMovieController = mc;
- }
-
-
- void ToggleSomethingDoc(short n,short menuItem,short menuRef)
- {
- register TDoc *d;
- register DocMovie *dm;
- OSErr thisError;
-
- d = &gDoc[n-kFirstDocWindow];
- dm = &d->m[d->whichMovie];
-
- switch(menuRef)
- {
- case mLoop:
- dm->loop = !dm->loop;
- MCDoAction(dm->mc, mcActionSetLooping, (void *)dm->loop);
- break;
-
- case mPalindrome:
- dm->palindrome = !dm->palindrome;
- MCDoAction(dm->mc, mcActionSetLoopIsPalindrome, (void *)dm->palindrome);
- break;
-
- case mEdit:
- dm->editing = !dm->editing;
- MCEnableEditing(dm->mc, dm->editing);
- break;
-
- case mHideController:
- FrameThisDocMovie(d,d->whichMovie,0);
- dm->controllerHidden = !dm->controllerHidden;
- MCSetVisible(dm->mc, !dm->controllerHidden);
- FrameThisDocMovie(d,d->whichMovie,1);
- break;
-
- case mUseBadge:
- dm->useBadge = !dm->useBadge;
- MCDoAction(dm->mc, mcActionSetUseBadge,(void *)dm->useBadge);
- break;
-
- case mAttach:
- FrameThisDocMovie(d,d->whichMovie,0);
- dm->attached = !dm->attached;
- MCSetControllerAttached(dm->mc,dm->attached);
- FrameThisDocMovie(d,d->whichMovie,1);
- break;
-
- case mFrame:
- {
- long flags;
-
- FrameThisDocMovie(d,d->whichMovie,0);
- MCDoAction(dm->mc,mcActionGetFlags,&flags);
- dm->framed = !dm->framed;
- if(dm->framed)
- flags &= ~mcFlagSuppressMovieFrame;
- else
- flags |= mcFlagSuppressMovieFrame;
- MCDoAction(dm->mc,mcActionSetFlags,(void *)flags);
- FrameThisDocMovie(d,d->whichMovie,1);
- }
- break;
-
- case mSteppers:
- {
- long flags;
-
- MCDoAction(dm->mc,mcActionGetFlags,&flags);
- dm->steppers = !dm->steppers;
- if(dm->steppers)
- flags &= ~mcFlagSuppressStepButtons;
- else
- flags |= mcFlagSuppressStepButtons;
- MCDoAction(dm->mc,mcActionSetFlags,(void *)flags);
- }
- break;
-
- case mSpeaker:
- {
- long flags;
-
- MCDoAction(dm->mc,mcActionGetFlags,&flags);
- dm->speaker = !dm->speaker;
- if(dm->speaker)
- flags &= ~mcFlagSuppressSpeakerButton;
- else
- flags |= mcFlagSuppressSpeakerButton;
- MCDoAction(dm->mc,mcActionSetFlags,(void *)flags);
- }
- break;
-
- case mEnlarge:
- {
- Rect r;
-
- FrameThisDocMovie(d,d->whichMovie,0);
- thisError = MCGetControllerBoundsRect(dm->mc,&r);
- r.right = r.left + (r.right - r.left) * 9 / 8;
- r.bottom = r.top + (r.bottom - r.top) * 9 / 8;
- thisError = MCSetControllerBoundsRect(dm->mc,&r);
- FrameThisDocMovie(d,d->whichMovie,1);
- }
-
- case mGrowable:
- {
- Rect r;
-
- dm->growable = !dm->growable;
- if(dm->growable)
- SetRect(&r, 0, 0, 0,0);
- else
- SetRect(&r, 0, 0, 9000, 9000);
- MCDoAction(dm->mc, mcActionSetGrowBoxBounds, &r);
- }
- }
-
- SetDocMenus(d);
- }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- void BumpControllerDownDoc(short n,short menuItem,short menuRef)
- {
- register TDoc *d;
- register DocMovie *dm;
- Rect r;
- OSErr thisError;
-
- d = &gDoc[n-kFirstDocWindow];
- dm = &d->m[d->whichMovie];
-
- FrameThisDocMovie(d,d->whichMovie,0);
-
- MCGetControllerBoundsRect(dm->mc,&r);
- OffsetRect(&r,0,15);
- MCSetControllerBoundsRect(dm->mc,&r);
-
- FrameThisDocMovie(d,d->whichMovie,1);
- SetDocMenus(d);
- }
-
-
-
- void SelectAll(short n)
- {
- register TDoc *d;
- register DocMovie *dm;
- TimeRecord tr;
- short mods;
-
- mods = GetModKeys();
-
- d = &gDoc[n-kFirstDocWindow];
- dm = &d->m[d->whichMovie];
-
- tr.base = 0;
- tr.scale = GetMovieTimeScale(dm->movie);
- tr.value.hi = 0;
- tr.value.lo = 0;
- MCDoAction(dm->mc, mcActionSetSelectionBegin, (void *)&tr);
- if(!(mods & shiftKey)) /* shift - select none */
- tr.value.lo = GetMovieDuration(dm->movie);
- MCDoAction(dm->mc, mcActionSetSelectionDuration, (void *)&tr);
- }
-
- short GetModKeys(void)
- /*
- * return the modifier keys just like in an eventrecord
- */
- {
- short result;
- KeyMap keys;
-
- GetKeys(keys);
-
- result = 0;
- if(keys[1] & 1)
- result |= shiftKey;
- if(keys[1] & 4)
- result |= optionKey;
- if(keys[1] & 8)
- result |= controlKey;
- if(keys[1] & 0x8000)
- result |= cmdKey;
-
- return result;
- }
-
- void InitVars()
- /*
- * Called once at startup: yes, it
- * inits the vars.
- */
- {
- TDoc *dp;
- short i;
-
- EnterMovies();
-
- for(i = 0; i<kDocMax; i++)
- {
- dp = &gDoc[i];
- dp->used = false;
- }
- gDocCount = 0;
- }
-
- void Bootstrap()
- {
-
- /*** File Menu ***/
- InstallMenu("\pFile",nil,0);
- InstallMenuItem("\pOpen/O",(void *)OpenDoc,mOpen);
- InstallMenuItem("\pClose/W",(void *)GoAwayDoc,-mClose);
- InstallMenuItem("\p(-",nil,0);
- InstallMenuItem("\pQuit/Q",(void *)LetsQuit,0);
-
- /*** Edit Menu ***/
- InstallEditMenu(nil,CutDoc,CopyDoc,PasteDoc,nil);
- InstallMenuItem("\p(-",nil,0);
- InstallMenuItem("\pCopy Frame/F",(void *)CopyFrameEdit,mCopyFrame);
- InstallMenuItem("\pSelect All/A",(void *)SelectAll,mSelectAll);
-
- /*** Playback Menu ***/
- InstallMenu("\pPlayback",0,0);
- InstallMenuItem("\pLoop/L",ToggleSomethingDoc,-mLoop);
- InstallMenuItem("\pPalindrome/P",ToggleSomethingDoc,-mPalindrome);
- InstallMenuItem("\pEdit/E",ToggleSomethingDoc,-mEdit);
- InstallMenuItem("\pHide Controller/H",ToggleSomethingDoc,-mHideController);
- InstallMenuItem("\pUse Badge/B",ToggleSomethingDoc,-mUseBadge);
- InstallMenuItem("\pAttach/T",ToggleSomethingDoc,-mAttach);
- InstallMenuItem("\pFrame Movie/1",ToggleSomethingDoc,-mFrame);
- InstallMenuItem("\pShow Steppers/2",ToggleSomethingDoc,-mSteppers);
- InstallMenuItem("\pShow Speaker/3",ToggleSomethingDoc,-mSpeaker);
- InstallMenuItem("\pGrowable/4",ToggleSomethingDoc,-mGrowable);
- InstallMenuItem("\pEnlarge/=",ToggleSomethingDoc,-mEnlarge);
- InstallMenuItem("\pBump Controller Down/9",BumpControllerDownDoc,-mBumpControllerDown);
-
- InitVars();
- }
-
- void Hatstrap()
- /*
- * clean up
- */
- {
- }
-