Initial Commit

This commit is contained in:
2024-08-07 09:09:36 -04:00
commit ca445435a0
458 changed files with 41370 additions and 0 deletions

76
common/MMTIMER.CPP Normal file
View File

@@ -0,0 +1,76 @@
#include <common/mmtimer.hpp>
MMTimer::MMTimer(void)
: mMinResolution(0), mIsOkay(FALSE), mHasTimedEvent(FALSE), mTimerID(0), mIsFirstBreak(TRUE)
{
if(::timeGetDevCaps(&mTimerCapability,sizeof(TIMECAPS)))return;
mMinResolution=mTimerCapability.wPeriodMin;
if(::timeBeginPeriod(mMinResolution))return;
mIsOkay=TRUE;
}
MMTimer::MMTimer(WORD minResolution)
: mMinResolution(minResolution), mIsOkay(FALSE), mHasTimedEvent(FALSE), mTimerID(0), mIsFirstBreak(TRUE)
{
if(::timeGetDevCaps(&mTimerCapability,sizeof(TIMECAPS)))return;
if(mMinResolution<mTimerCapability.wPeriodMin)mMinResolution=mTimerCapability.wPeriodMin;
if(::timeBeginPeriod(mMinResolution))return;
mIsOkay=TRUE;
}
MMTimer::~MMTimer()
{
if(mIsOkay){stopTimer();::timeEndPeriod(mMinResolution);}
}
bool MMTimer::startTimer(UINT deltaTime)
{
if(!mIsOkay)return false;
if(mHasTimedEvent)return false;
isFirstBreak(true);
if(0==(mTimerID=::timeSetEvent(deltaTime,mMinResolution,(LPTIMECALLBACK)timerProc,(DWORD)this,TIME_PERIODIC)))return false;
mHasTimedEvent=true;
return true;
}
bool MMTimer::stopTimer(void)
{
bool returnCode(false);
if(!mIsOkay)return returnCode;
if(!mHasTimedEvent)return returnCode;
if(!::timeKillEvent(mTimerID))returnCode=true;
isFirstBreak(false);
mHasTimedEvent=false;
mTimerID=0;
return returnCode;
}
void CALLBACK MMTimer::timerProc(UINT /*wTimerID*/,UINT /*mMsg*/,DWORD dwUser,DWORD /*dummyOne*/,DWORD /*dummyTwo*/)
{
CallbackData callbackData;
if(!((MMTimer*)dwUser))return;
if(((MMTimer*)dwUser)->isFirstBreak())
{
((MMTimer*)dwUser)->isFirstBreak(FALSE);
((MMTimer*)dwUser)->timerStarted();
}
if(((CallbackData::ReturnType)FALSE)==((MMTimer*)dwUser)->mCallbackPointer.callback(callbackData))
{
((MMTimer*)dwUser)->timerStopped();
((MMTimer*)dwUser)->stopTimer();
}
return;
}
// virtuals
void MMTimer::timerStarted(void)
{
return;
}
void MMTimer::timerStopped(void)
{
return;
}