Files
Work/sample/hold/SAMPLE.CPP
2024-08-07 09:16:27 -04:00

66 lines
1.5 KiB
C++

#include <common/array.hpp>
#include <sample/purewave.hpp>
#include <sample/wave.hpp>
#include <sample/sample.hpp>
PureWave *lpPureWave=0;
PureVector<WaveForm> waveForms;
#if defined(__FLAT__)
BOOL WINAPI DllEntryPoint(HINSTANCE /*hInstance*/,DWORD reasonCode,LPVOID /*lpvReserved*/)
{
switch(reasonCode)
{
case DLL_PROCESS_ATTACH :
// createInstanceData(hInstance);
break;
case DLL_PROCESS_DETACH :
// destroyInstanceData();
break;
}
return TRUE;
}
#else
int CALLBACK _export LibMain(HINSTANCE hInstance,WORD /*wDataSeg*/,WORD /*wHeapSize*/,LPSTR /*lpszCmdLine*/)
{
createInstanceData(hInstance);
return TRUE;
}
int CALLBACK _export WEP(int /*nExitType*/)
{
destroyInstanceData();
return TRUE;
}
#endif
short CALLBACK _export play(WORD waveFormIndex,WORD waitFlag)
{
if(!lpPureWave)return FALSE;
if(waveFormIndex>=waveForms.size())return FALSE;
return lpPureWave->play(waveForms[waveFormIndex],waitFlag?DeviceHandler::Wait:DeviceHandler::NoWait);
}
short CALLBACK _export preLoadSamples(Block<String> &pathFileNames)
{
if(!lpPureWave)return FALSE;
waveForms.size(pathFileNames.size());
for(short index=0;index<waveForms.size();index++)waveForms[index]=pathFileNames[index];
return TRUE;
}
void CALLBACK _export createInstanceData(HINSTANCE hInstance)
{
destroyInstanceData();
lpPureWave=new PureWave(hInstance);
}
void CALLBACK _export destroyInstanceData(void)
{
if(lpPureWave){delete lpPureWave;lpPureWave=0;}
waveForms.size(0);
}