aboutsummaryrefslogtreecommitdiff
path: root/include/qmpcorepublic.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'include/qmpcorepublic.hpp')
-rw-r--r--include/qmpcorepublic.hpp336
1 files changed, 182 insertions, 154 deletions
diff --git a/include/qmpcorepublic.hpp b/include/qmpcorepublic.hpp
index c6caed5..8376af8 100644
--- a/include/qmpcorepublic.hpp
+++ b/include/qmpcorepublic.hpp
@@ -13,193 +13,221 @@
//MIDI Event structure
struct SEvent
{
- uint32_t iid,time;
- uint8_t type,p1,p2;
- uint8_t flags;
- std::string str;
- SEvent(){time=iid=0;type=p1=p2=0;flags=0;str="";}
- SEvent(uint32_t _iid,uint32_t _t,uint8_t _tp,uint8_t _p1,uint8_t _p2,const char* s=nullptr)
- {
- iid=_iid;time=_t;type=_tp;
- p1=_p1;p2=_p2;flags=0;
- if(s)str=std::string(s);else str="";
- }
- SEvent(uint32_t _iid,uint32_t _t,uint8_t _tp,uint8_t _p1,uint8_t _p2,std::string s):
- iid(_iid),time(_t),type(_tp),p1(_p1),p2(_p2),str(s){}
- friend bool operator <(const SEvent& a,const SEvent& b){return a.time-b.time?a.time<b.time:a.iid<b.iid;}
+ uint32_t iid, time;
+ uint8_t type, p1, p2;
+ uint8_t flags;
+ std::string str;
+ SEvent()
+ {
+ time = iid = 0;
+ type = p1 = p2 = 0;
+ flags = 0;
+ str = "";
+ }
+ SEvent(uint32_t _iid, uint32_t _t, uint8_t _tp, uint8_t _p1, uint8_t _p2, const char *s = nullptr)
+ {
+ iid = _iid;
+ time = _t;
+ type = _tp;
+ p1 = _p1;
+ p2 = _p2;
+ flags = 0;
+ if (s)str = std::string(s);
+ else str = "";
+ }
+ SEvent(uint32_t _iid, uint32_t _t, uint8_t _tp, uint8_t _p1, uint8_t _p2, std::string s):
+ iid(_iid), time(_t), type(_tp), p1(_p1), p2(_p2), str(s) {}
+ friend bool operator <(const SEvent &a, const SEvent &b)
+ {
+ return a.time - b.time ? a.time < b.time : a.iid < b.iid;
+ }
};
//MIDI Track class
-class CMidiTrack{
- public:
- std::vector<SEvent> eventList;
- void appendEvent(SEvent e){eventList.push_back(e);}
- SEvent& operator[](size_t sub){return eventList[sub];}
+class CMidiTrack
+{
+public:
+ std::vector<SEvent> eventList;
+ void appendEvent(SEvent e)
+ {
+ eventList.push_back(e);
+ }
+ SEvent &operator[](size_t sub)
+ {
+ return eventList[sub];
+ }
};
//MIDI File class
-class CMidiFile{
- public:
- bool valid;
- char *title,*copyright;
- std::vector<CMidiTrack> tracks;
- uint32_t std,divs;
- ~CMidiFile()
- {
- if(title)delete[] title;
- if(copyright)delete[] copyright;
- }
+class CMidiFile
+{
+public:
+ bool valid;
+ char *title, *copyright;
+ std::vector<CMidiTrack> tracks;
+ uint32_t std, divs;
+ ~CMidiFile()
+ {
+ if (title)delete[] title;
+ if (copyright)delete[] copyright;
+ }
};
//Generic callback function that can be used for hooking the core.
//"userdata" is set when you register the callback function.
//Deprecated. Removing in 0.9.x.
class ICallBack
{
- public:
- ICallBack(){}
- virtual void callBack(const void* callerdata,void* userdata)=0;
- virtual ~ICallBack(){}
+public:
+ ICallBack() {}
+ virtual void callBack(const void *callerdata, void *userdata) = 0;
+ virtual ~ICallBack() {}
};
//alternative callback function type
-typedef std::function<void(const void*,void*)> callback_t;
+typedef std::function<void(const void *, void *)> callback_t;
//MIDI file reader interface. Use this to implement your file importer.
class qmpFileReader
{
- public:
- qmpFileReader(){}
- virtual ~qmpFileReader(){}
- virtual CMidiFile* readFile(const char* fn)=0;
- virtual void discardCurrentEvent()=0;
- virtual void commitEventChange(SEvent d)=0;
+public:
+ qmpFileReader() {}
+ virtual ~qmpFileReader() {}
+ virtual CMidiFile *readFile(const char *fn) = 0;
+ virtual void discardCurrentEvent() = 0;
+ virtual void commitEventChange(SEvent d) = 0;
};
//Functionality interface.
class qmpFuncBaseIntf
{
- public:
- qmpFuncBaseIntf(){}
- virtual void show()=0;
- virtual void close()=0;
- virtual ~qmpFuncBaseIntf(){}
+public:
+ qmpFuncBaseIntf() {}
+ virtual void show() = 0;
+ virtual void close() = 0;
+ virtual ~qmpFuncBaseIntf() {}
};
//Midi mapper plugin interface.
class qmpMidiOutDevice
{
- public:
- qmpMidiOutDevice(){}
- virtual void deviceInit()=0;
- virtual void deviceDeinit()=0;
- virtual void basicMessage(uint8_t type,uint8_t p1,uint8_t p2)=0;
- virtual void extendedMessage(uint32_t length,const char* data)=0;
- virtual void rpnMessage(uint8_t ch,uint16_t type,uint16_t val)=0;
- virtual void nrpnMessage(uint8_t ch,uint16_t type,uint16_t val)=0;
- virtual void panic(uint8_t ch)=0;
- virtual void reset(uint8_t ch)=0;
- virtual void onMapped(uint8_t ch,int refcnt)=0;
- virtual void onUnmapped(uint8_t ch,int refcnt)=0;
- virtual std::vector<std::pair<uint16_t,std::string>> getBankList()=0;
- virtual std::vector<std::pair<uint8_t,std::string>> getPresets(uint16_t bank)=0;
- virtual std::string getPresetName(uint16_t bank,uint8_t preset)=0;
- virtual bool getChannelPreset(int ch,uint16_t *bank,uint8_t *preset,std::string &presetname)=0;
- virtual uint8_t getInitialCCValue(uint8_t cc,uint8_t ch)=0;
- virtual ~qmpMidiOutDevice(){}
+public:
+ qmpMidiOutDevice() {}
+ virtual void deviceInit() = 0;
+ virtual void deviceDeinit() = 0;
+ virtual void basicMessage(uint8_t type, uint8_t p1, uint8_t p2) = 0;
+ virtual void extendedMessage(uint32_t length, const char *data) = 0;
+ virtual void rpnMessage(uint8_t ch, uint16_t type, uint16_t val) = 0;
+ virtual void nrpnMessage(uint8_t ch, uint16_t type, uint16_t val) = 0;
+ virtual void panic(uint8_t ch) = 0;
+ virtual void reset(uint8_t ch) = 0;
+ virtual void onMapped(uint8_t ch, int refcnt) = 0;
+ virtual void onUnmapped(uint8_t ch, int refcnt) = 0;
+ virtual std::vector<std::pair<uint16_t, std::string>> getBankList() = 0;
+ virtual std::vector<std::pair<uint8_t, std::string>> getPresets(uint16_t bank) = 0;
+ virtual std::string getPresetName(uint16_t bank, uint8_t preset) = 0;
+ virtual bool getChannelPreset(int ch, uint16_t *bank, uint8_t *preset, std::string &presetname) = 0;
+ virtual uint8_t getInitialCCValue(uint8_t cc, uint8_t ch) = 0;
+ virtual ~qmpMidiOutDevice() {}
};
//Main plugin interface.
class qmpPluginIntf
{
- public:
- qmpPluginIntf(){}
- virtual ~qmpPluginIntf(){}
- virtual void init(){}
- virtual void deinit(){}
- virtual const char* pluginGetName(){return "";}
- virtual const char* pluginGetVersion(){return "";}
+public:
+ qmpPluginIntf() {}
+ virtual ~qmpPluginIntf() {}
+ virtual void init() {}
+ virtual void deinit() {}
+ virtual const char *pluginGetName()
+ {
+ return "";
+ }
+ virtual const char *pluginGetVersion()
+ {
+ return "";
+ }
};
#ifdef QMP_MAIN
-extern "C"{
+extern "C" {
#endif
//The API class provided by the core. Plugins use this class to interact with
//the core.
-class qmpPluginAPI
-{
- public:
- virtual ~qmpPluginAPI(){}
- virtual uint32_t getDivision()=0;
- virtual uint32_t getRawTempo()=0;
- virtual double getRealTempo()=0;
- virtual uint32_t getTimeSig()=0;
- virtual int getKeySig()=0;
- virtual uint32_t getNoteCount()=0;
- virtual uint32_t getMaxTick()=0;
- virtual uint32_t getCurrentPolyphone()=0;
- virtual uint32_t getMaxPolyphone()=0;
- virtual uint32_t getCurrentTimeStamp()=0;
- virtual uint32_t getCurrentPlaybackPercentage()=0;
- virtual int getChannelCC(int ch,int cc)=0;
- virtual int getChannelPreset(int ch)=0;
- virtual void playerSeek(uint32_t percentage)=0;
- virtual double getPitchBend(int ch)=0;
- virtual void getPitchBendRaw(int ch,uint32_t *pb,uint32_t *pbr)=0;
- virtual bool getChannelMask(int ch)=0;
- virtual std::string getTitle()=0;
- virtual std::wstring getWTitle()=0;
- virtual std::string getChannelPresetString(int ch)=0;
- virtual bool isDarkTheme()=0;
- virtual void* getMainWindow()=0;
+ class qmpPluginAPI
+ {
+ public:
+ virtual ~qmpPluginAPI() {}
+ virtual uint32_t getDivision() = 0;
+ virtual uint32_t getRawTempo() = 0;
+ virtual double getRealTempo() = 0;
+ virtual uint32_t getTimeSig() = 0;
+ virtual int getKeySig() = 0;
+ virtual uint32_t getNoteCount() = 0;
+ virtual uint32_t getMaxTick() = 0;
+ virtual uint32_t getCurrentPolyphone() = 0;
+ virtual uint32_t getMaxPolyphone() = 0;
+ virtual uint32_t getCurrentTimeStamp() = 0;
+ virtual uint32_t getCurrentPlaybackPercentage() = 0;
+ virtual int getChannelCC(int ch, int cc) = 0;
+ virtual int getChannelPreset(int ch) = 0;
+ virtual void playerSeek(uint32_t percentage) = 0;
+ virtual double getPitchBend(int ch) = 0;
+ virtual void getPitchBendRaw(int ch, uint32_t *pb, uint32_t *pbr) = 0;
+ virtual bool getChannelMask(int ch) = 0;
+ virtual std::string getTitle() = 0;
+ virtual std::wstring getWTitle() = 0;
+ virtual std::string getChannelPresetString(int ch) = 0;
+ virtual bool isDarkTheme() = 0;
+ virtual void *getMainWindow() = 0;
- //WARNING!!: This function should be called from event reader callbacks only and
- //it is somehow dangerous -- other plugins might be unaware of the removal of the
- //event. The design might be modified afterward.
- virtual void discardCurrentEvent()=0;
- //WARNING!!: This function should be called from event reader callbacks only and
- //it is somehow dangerous -- other plugins might be unaware of the event change.
- //The design might be modified afterward.
- virtual void commitEventChange(SEvent d)=0;
- //This function should be called from a file reader when it has read a new event
- virtual void callEventReaderCB(SEvent d)=0;
- virtual void setFuncState(std::string name,bool state)=0;
- virtual void setFuncEnabled(std::string name,bool enable)=0;
+ //WARNING!!: This function should be called from event reader callbacks only and
+ //it is somehow dangerous -- other plugins might be unaware of the removal of the
+ //event. The design might be modified afterward.
+ virtual void discardCurrentEvent() = 0;
+ //WARNING!!: This function should be called from event reader callbacks only and
+ //it is somehow dangerous -- other plugins might be unaware of the event change.
+ //The design might be modified afterward.
+ virtual void commitEventChange(SEvent d) = 0;
+ //This function should be called from a file reader when it has read a new event
+ virtual void callEventReaderCB(SEvent d) = 0;
+ virtual void setFuncState(std::string name, bool state) = 0;
+ virtual void setFuncEnabled(std::string name, bool enable) = 0;
- virtual void registerFunctionality(qmpFuncBaseIntf* i,std::string name,std::string desc,const char* icon,int iconlen,bool checkable)=0;
- virtual void unregisterFunctionality(std::string name)=0;
- virtual int registerUIHook(std::string e,ICallBack* cb,void* userdat)=0;
- virtual int registerUIHook(std::string e,callback_t cb,void* userdat)=0;
- virtual void unregisterUIHook(std::string e,int hook)=0;
- virtual void registerMidiOutDevice(qmpMidiOutDevice* dev,std::string name)=0;
- virtual void unregisterMidiOutDevice(std::string name)=0;
- virtual int registerEventReaderIntf(ICallBack* cb,void* userdata)=0;
- virtual void unregisterEventReaderIntf(int intfhandle)=0;
- virtual int registerEventHandlerIntf(ICallBack* cb,void* userdata)=0;
- virtual void unregisterEventHandlerIntf(int intfhandle)=0;
- virtual int registerFileReadFinishedHandlerIntf(ICallBack* cb,void* userdata)=0;
- virtual void unregisterFileReadFinishedHandlerIntf(int intfhandle)=0;
- virtual int registerEventHandler(callback_t cb,void *userdata,bool post=false)=0;
- virtual void unregisterEventHandler(int id)=0;
- virtual int registerEventReadHandler(callback_t cb,void *userdata)=0;
- virtual void unregisterEventReadHandler(int id)=0;
- virtual int registerFileReadFinishHook(callback_t cb,void *userdata)=0;
- virtual void unregisterFileReadFinishHook(int id)=0;
- virtual void registerFileReader(qmpFileReader* reader,std::string name)=0;
- virtual void unregisterFileReader(std::string name)=0;
+ virtual void registerFunctionality(qmpFuncBaseIntf *i, std::string name, std::string desc, const char *icon, int iconlen, bool checkable) = 0;
+ virtual void unregisterFunctionality(std::string name) = 0;
+ virtual int registerUIHook(std::string e, ICallBack *cb, void *userdat) = 0;
+ virtual int registerUIHook(std::string e, callback_t cb, void *userdat) = 0;
+ virtual void unregisterUIHook(std::string e, int hook) = 0;
+ virtual void registerMidiOutDevice(qmpMidiOutDevice *dev, std::string name) = 0;
+ virtual void unregisterMidiOutDevice(std::string name) = 0;
+ virtual int registerEventReaderIntf(ICallBack *cb, void *userdata) = 0;
+ virtual void unregisterEventReaderIntf(int intfhandle) = 0;
+ virtual int registerEventHandlerIntf(ICallBack *cb, void *userdata) = 0;
+ virtual void unregisterEventHandlerIntf(int intfhandle) = 0;
+ virtual int registerFileReadFinishedHandlerIntf(ICallBack *cb, void *userdata) = 0;
+ virtual void unregisterFileReadFinishedHandlerIntf(int intfhandle) = 0;
+ virtual int registerEventHandler(callback_t cb, void *userdata, bool post = false) = 0;
+ virtual void unregisterEventHandler(int id) = 0;
+ virtual int registerEventReadHandler(callback_t cb, void *userdata) = 0;
+ virtual void unregisterEventReadHandler(int id) = 0;
+ virtual int registerFileReadFinishHook(callback_t cb, void *userdata) = 0;
+ virtual void unregisterFileReadFinishHook(int id) = 0;
+ virtual void registerFileReader(qmpFileReader *reader, std::string name) = 0;
+ virtual void unregisterFileReader(std::string name) = 0;
- //if desc=="", the option won't be visible in the settings form.
- //it will only show up in the configuration file.
- virtual void registerOptionInt(std::string tab,std::string desc,std::string key,int min,int max,int defaultval)=0;
- virtual int getOptionInt(std::string key)=0;
- virtual void setOptionInt(std::string key,int val)=0;
- virtual void registerOptionUint(std::string tab,std::string desc,std::string key,unsigned min,unsigned max,unsigned defaultval)=0;
- virtual unsigned getOptionUint(std::string key)=0;
- virtual void setOptionUint(std::string key,unsigned val)=0;
- virtual void registerOptionBool(std::string tab,std::string desc,std::string key,bool defaultval)=0;
- virtual bool getOptionBool(std::string key)=0;
- virtual void setOptionBool(std::string key,bool val)=0;
- virtual void registerOptionDouble(std::string tab,std::string desc,std::string key,double min,double max,double defaultval)=0;
- virtual double getOptionDouble(std::string key)=0;
- virtual void setOptionDouble(std::string key,double val)=0;
- virtual void registerOptionString(std::string tab,std::string desc,std::string key,std::string defaultval,bool ispath=false)=0;
- virtual std::string getOptionString(std::string key)=0;
- virtual void setOptionString(std::string key,std::string val)=0;
- virtual void registerOptionEnumInt(std::string tab,std::string desc,std::string key,std::vector<std::string> options,int defaultval)=0;
- virtual int getOptionEnumInt(std::string key)=0;
- virtual void setOptionEnumInt(std::string key,int val)=0;
-};
+ //if desc=="", the option won't be visible in the settings form.
+ //it will only show up in the configuration file.
+ virtual void registerOptionInt(std::string tab, std::string desc, std::string key, int min, int max, int defaultval) = 0;
+ virtual int getOptionInt(std::string key) = 0;
+ virtual void setOptionInt(std::string key, int val) = 0;
+ virtual void registerOptionUint(std::string tab, std::string desc, std::string key, unsigned min, unsigned max, unsigned defaultval) = 0;
+ virtual unsigned getOptionUint(std::string key) = 0;
+ virtual void setOptionUint(std::string key, unsigned val) = 0;
+ virtual void registerOptionBool(std::string tab, std::string desc, std::string key, bool defaultval) = 0;
+ virtual bool getOptionBool(std::string key) = 0;
+ virtual void setOptionBool(std::string key, bool val) = 0;
+ virtual void registerOptionDouble(std::string tab, std::string desc, std::string key, double min, double max, double defaultval) = 0;
+ virtual double getOptionDouble(std::string key) = 0;
+ virtual void setOptionDouble(std::string key, double val) = 0;
+ virtual void registerOptionString(std::string tab, std::string desc, std::string key, std::string defaultval, bool ispath = false) = 0;
+ virtual std::string getOptionString(std::string key) = 0;
+ virtual void setOptionString(std::string key, std::string val) = 0;
+ virtual void registerOptionEnumInt(std::string tab, std::string desc, std::string key, std::vector<std::string> options, int defaultval) = 0;
+ virtual int getOptionEnumInt(std::string key) = 0;
+ virtual void setOptionEnumInt(std::string key, int val) = 0;
+ };
#ifdef QMP_MAIN
}
#endif
@@ -208,7 +236,7 @@ class qmpPluginAPI
//as its entry point. A pointer to the core API is also passed to the plugin
//through the parameter. This function should return a pointer to a class
//that implementes the plugin pinterface (qmpPluginIntf).
-typedef qmpPluginIntf*(*qmpPluginEntry)(qmpPluginAPI*);
+typedef qmpPluginIntf *(*qmpPluginEntry)(qmpPluginAPI *);
//The following symbol only presents in plugins. Its purpose is to help the core reject incompatible plugins.
-typedef const char*(*qmpPluginAPIRevEntry)();
+typedef const char *(*qmpPluginAPIRevEntry)();
#endif // QMPCOREPUBLIC_HPP