Files
Work/midiseq/pureevnt.hpp
2024-08-07 09:16:27 -04:00

202 lines
4.2 KiB
C++

#ifndef _MIDISEQ_PUREEVENT_HPP_
#define _MIDISEQ_PUREEVENT_HPP_
#ifndef _COMMON_WINDOWS_HPP_
#include <common/windows.hpp>
#endif
#ifndef _COMMON_STRING_HPP_
#include <common/string.hpp>
#endif
#ifndef _MIDISEQ_MIDICHANNELMESSAGE_HPP_
#include <midiseq/midimsg.hpp>
#endif
class PureEvent
{
public:
PureEvent(void);
PureEvent(const PureEvent &somePureEvent);
PureEvent(BYTE eventType,DWORD deltaTime,BYTE channel,BYTE firstData,BYTE secondData,DWORD tempo=0);
virtual ~PureEvent();
BYTE eventType(void)const;
void eventType(BYTE eventType);
DWORD deltaTime(void)const;
void deltaTime(DWORD deltaTime);
DWORD playTime(void)const;
void playTime(DWORD playTime);
BYTE channel(void)const;
void channel(BYTE channel);
BYTE firstData(void)const;
void firstData(BYTE firstData);
BYTE secondData(void)const;
void secondData(BYTE secondData);
DWORD tempo(void)const;
void tempo(DWORD tempo);
WORD operator==(const PureEvent &somePureEvent)const;
WORD operator<(const PureEvent &somePureEvent)const;
WORD operator>(const PureEvent &somePureEvent)const;
String toString(void)const;
PureEvent &operator=(const PureEvent &somePureEvent);
private:
BYTE mEventType;
DWORD mDeltaTime;
BYTE mChannel;
BYTE mFirstData;
BYTE mSecondData;
DWORD mPlayTime;
DWORD mTempo;
};
inline
PureEvent::PureEvent(void)
: mEventType(0), mDeltaTime(0L), mChannel(0), mFirstData(0), mSecondData(0),
mPlayTime(0L), mTempo(0)
{
}
inline
PureEvent::PureEvent(const PureEvent &somePureEvent)
: mEventType(somePureEvent.mEventType), mDeltaTime(somePureEvent.mDeltaTime),
mPlayTime(somePureEvent.mPlayTime), mChannel(somePureEvent.mChannel),
mFirstData(somePureEvent.mFirstData), mSecondData(somePureEvent.mSecondData),
mTempo(somePureEvent.mTempo)
{
}
inline
PureEvent::PureEvent(BYTE eventType,DWORD deltaTime,BYTE channel,BYTE firstData,BYTE secondData,DWORD tempo)
: mEventType(eventType), mDeltaTime(deltaTime), mChannel(channel), mFirstData(firstData),
mSecondData(secondData), mPlayTime(0L), mTempo(0)
{
}
inline
PureEvent::~PureEvent()
{
}
inline
BYTE PureEvent::eventType(void)const
{
return mEventType;
}
inline
void PureEvent::eventType(BYTE eventType)
{
mEventType=eventType;
}
inline
DWORD PureEvent::deltaTime(void)const
{
return mDeltaTime;
}
inline
void PureEvent::deltaTime(DWORD deltaTime)
{
mDeltaTime=deltaTime;
}
inline
DWORD PureEvent::playTime(void)const
{
return mPlayTime;
}
inline
void PureEvent::playTime(DWORD playTime)
{
mPlayTime=playTime;
}
inline
BYTE PureEvent::channel(void)const
{
return mChannel;
}
inline
void PureEvent::channel(BYTE channel)
{
mChannel=channel;
}
inline
BYTE PureEvent::firstData(void)const
{
return mFirstData;
}
inline
void PureEvent::firstData(BYTE firstData)
{
mFirstData=firstData;
}
inline
BYTE PureEvent::secondData(void)const
{
return mSecondData;
}
inline
void PureEvent::secondData(BYTE secondData)
{
mSecondData=secondData;
}
inline
DWORD PureEvent::tempo(void)const
{
return mTempo;
}
inline
void PureEvent::tempo(DWORD tempo)
{
mTempo=tempo;
}
// comparators
inline
WORD PureEvent::operator==(const PureEvent &somePureEvent)const
{
return mPlayTime==somePureEvent.mPlayTime&&eventType()==somePureEvent.eventType();
}
inline
PureEvent &PureEvent::operator=(const PureEvent &somePureEvent)
{
eventType(somePureEvent.eventType());
deltaTime(somePureEvent.deltaTime());
playTime(somePureEvent.playTime());
channel(somePureEvent.channel());
firstData(somePureEvent.firstData());
secondData(somePureEvent.secondData());
tempo(somePureEvent.tempo());
return *this;
}
inline
WORD PureEvent::operator<(const PureEvent &somePureEvent)const
{
if(mPlayTime==somePureEvent.mPlayTime&&eventType()==somePureEvent.eventType())return false;
if(mPlayTime==somePureEvent.mPlayTime&&eventType()==MIDINoteOff)return true;
else if(mPlayTime==somePureEvent.mPlayTime)return false;
return (mPlayTime<somePureEvent.mPlayTime);
}
inline
WORD PureEvent::operator>(const PureEvent &somePureEvent)const
{
if(mPlayTime==somePureEvent.mPlayTime&&eventType()==somePureEvent.eventType())return false;
if(mPlayTime==somePureEvent.mPlayTime&&eventType()==MIDINoteOn)return true;
else if(mPlayTime==somePureEvent.mPlayTime)return false;
return (mPlayTime>somePureEvent.mPlayTime);
}
#endif