/************************************************
Copyright © Simon Fraser 1994Ð5
All rights reserved.
This file contains the main AfterDark functions for initialization, drawing
and closing the module.
************************************************/
#include "Starter.h"
#define ErrorMsg(m) BlockMove(CtoPstr(m), params->errorMessage, 1 + m##[0]);
//--------------------CleanUp--------------------
void CleanUp(ModStore** storage)
{
if (storage)
{
/*dispose of other memory allocated by your module here*/
DisposeHandle((Handle)storage);
}
}
//---------------------DoInitialize--------------------
OSErr DoInitialize(Handle *storage, RgnHandle blankRgn, GMParamBlockPtr params)
{
Handle storeHand;
ModStorePtr ModStorage;
//Allocate memory and initialize variables here}
storeHand = NewHandle(sizeof(ModStore));
if (!storeHand)
{
ErrorMsg("Sorry, couldnÕt allocate memory");
return ModuleError;
}
*storage = storeHand; /* store a reference to our storage where After Darkª can keep it. */
/*lock down our storage so we can refer to it by pointer.*/
HLockHi(storeHand);
ModStorage = (ModStorePtr)*storeHand;
/*Initialize the fields in your structure*/
ModStorage->frames = 0;
HUnlock(storeHand);
return noErr;
}
//--------------------DoBlank--------------------
OSErr DoBlank(Handle storage, RgnHandle blankRgn, GMParamBlockPtr params)
{
/*Fill the screen(s) with black*/
ForeColor(blackColor);
FillRgn(blankRgn, ¶ms->qdGlobalsCopy->qdBlack);
return noErr;
}
//--------------------DoDrawFrame--------------------
OSErr DoDrawFrame(Handle storage, RgnHandle blankRgn, GMParamBlockPtr params)
{
ModStorePtr ModStorage;
/*Lock the storage handle, so we can refer to it by pointer (for speed)*/
HLock(storage);
/*Make a pointer reference to storage*/
ModStorage = (ModStorePtr)*storage;
ModStorage->frames ++;
/*We're done -- unlock the storage handle*/
HUnlock(storage);
return noErr;
}
//--------------------DoClose--------------------
OSErr DoClose(Handle storage, RgnHandle blankRgn, GMParamBlockPtr params)
{
/*Dispose of all the memory that we have allocated*/
CleanUp((ModStore**)storage);
return noErr;
}
//-----------------------------DoSetup-----------------------------------
OSErr DoSetUp(RgnHandle blankRgn, short message, GMParamBlockPtr params)
{
/*I don't handle this message*/
return noErr;
}
//------------------------------DoAbout---------------------------------
OSErr DoAbout(Handle storage, RgnHandle blankRgn, GMParamBlockPtr params)
{
/*I don't handle this message*/
/*Beware! If you do write your own About box routines here, the
storage parameter that is passed is NOT allocated or initialized.
You have to do all this yourself (as in DoInitialize). */
return noErr;
}
//--------------------------DoSelected------------------------------
OSErr DoSelected(Handle storage, RgnHandle blankRgn, GMParamBlockPtr params)
{
/*I don't handle this message*/
return noErr;
}