Files
Work/avifile/hold/AVITHRD.HPP
2024-08-07 09:12:07 -04:00

98 lines
2.1 KiB
C++

#ifndef _AVIFILE_AVITHREAD_HPP_
#define _AVIFILE_AVITHREAD_HPP_
#ifndef _THREAD_MESSAGETHREAD_HPP_
#include <thread/mthread.hpp>
#endif
class AVIThread : private MessageThread
{
public:
AVIThread(void);
virtual ~AVIThread();
protected:
enum AVIMessage{HeaderMessage,StreamMessage,MovieMessage,InfoMessage,UnknownMessage};
virtual void processHeader(void);
virtual void streamHeader(void);
virtual void movieHeader(void);
virtual void infoHeader(void);
virtual void unknownHeader(void);
private:
AVIThread(const AVIThread &someAVIThread);
AVIThread &operator=(const AVIThread &someAVIThread);
WORD operator==(const AVIThread &someAVIThread);
DWORD aviThreadHandler(ThreadMessage &someThreadMessage);
ThreadCallback<AVIThread> mThreadHandler;
};
AVIThread::AVIThread(void)
: mThreadHandler(this,&AVIThread::aviThreadHandler)
{
insertHandler(&mThreadHandler);
}
AVIThread::AVIThread(const AVIThread &someAVIThread)
: mThreadHandler(this,&AVIThread::aviThreadHandler)
{
insertHandler(&mThreadHandler);
}
AVIThread::~AVIThread()
{
removeHandler(&mThreadHandler);
}
AVIThread &operator=(const AVIThread &/*someAVIThread*/)
{
return *this;
}
WORD AVIThread::operator==(const AVIThread &/*someAVIThread*/)
{
return FALSE;
}
DWORD AVIThread::aviThreadHandler(ThreadMessage &someThreadMessage)
{
switch(someThreadMessage.message())
{
case ThreadMessage::TM_CREATE :
break;
case ThreadMessage::TM_DESTROY :
break;
case ThreadMessage::TM_USER :
if(HeaderMessage==(AVIMessage)someThreadMessage.userDataOne())processHeader();
else if(StreamMessage==(AVIMessage)someThreadMessage.userDataOne())streamHeader();
else if(MovieMessage==(AVIMessage)someThreadMessage.userDataOne())movieHeader();
else if(InfoMessage==(AVIMessage)someThreadMessage.userDataOne())infoMessge();
else if(UnknownMessage==(AVIMessage)someThreadMessage.userDataOne())unknownHeader();
break;
}
}
void AVIThread::processHeader(void)
{
return;
}
void AVIThread::streamHeader(void)
{
return;
}
void AVIThread::movieHeader(void)
{
return;
}
void AVIThread::infoHeader(void)
{
return;
}
void AVIThread::unknownHeader(void)
{
return;
}
#endif