diff options
author | Chris Xiong <chirs241097@gmail.com> | 2020-04-29 17:54:55 +0800 |
---|---|---|
committer | Chris Xiong <chirs241097@gmail.com> | 2020-04-29 17:54:55 +0800 |
commit | 8766f3b12e13d40b65eca23a850f687b0043d022 (patch) | |
tree | ffa27c96238bdade1ec097d8a1eba0239207ae35 /qmidiplayer-desktop/qmpplugin.hpp | |
parent | 65a8bde4e4beca860a13491e94631dc16b5e71af (diff) | |
download | QMidiPlayer-8766f3b12e13d40b65eca23a850f687b0043d022.tar.xz |
Make all methods in the API pure virtual.
Finally, creating multiple implementations of the API is now much easier.
Diffstat (limited to 'qmidiplayer-desktop/qmpplugin.hpp')
-rw-r--r-- | qmidiplayer-desktop/qmpplugin.hpp | 78 |
1 files changed, 76 insertions, 2 deletions
diff --git a/qmidiplayer-desktop/qmpplugin.hpp b/qmidiplayer-desktop/qmpplugin.hpp index 0020530..08343cd 100644 --- a/qmidiplayer-desktop/qmpplugin.hpp +++ b/qmidiplayer-desktop/qmpplugin.hpp @@ -15,11 +15,85 @@ struct qmpPlugin }; class qmpMainWindow; class qmpSettings; +class qmpPluginAPIImpl:public qmpPluginAPI +{ +public: + qmpPluginAPIImpl(); + ~qmpPluginAPIImpl(); + uint32_t getDivision(); + uint32_t getRawTempo(); + double getRealTempo(); + uint32_t getTimeSig(); + int getKeySig(); + uint32_t getNoteCount(); + uint32_t getMaxTick(); + uint32_t getCurrentPolyphone(); + uint32_t getMaxPolyphone(); + uint32_t getCurrentTimeStamp(); + uint32_t getCurrentPlaybackPercentage(); + int getChannelCC(int ch,int cc); + int getChannelPreset(int ch); + void playerSeek(uint32_t percentage); + double getPitchBend(int ch); + bool getChannelMask(int ch); + std::string getTitle(); + std::wstring getWTitle(); + std::string getChannelPresetString(int ch); + bool isDarkTheme(); + void* getMainWindow(); + + void discardCurrentEvent(); + void commitEventChange(SEvent d); + void callEventReaderCB(SEvent d); + void setFuncState(std::string name,bool state); + void setFuncEnabled(std::string name,bool enable); + + void registerFunctionality(qmpFuncBaseIntf* i,std::string name,std::string desc,const char* icon,int iconlen,bool checkable); + void unregisterFunctionality(std::string name); + int registerUIHook(std::string e,ICallBack* cb,void* userdat); + int registerUIHook(std::string e,callback_t cb,void* userdat); + void unregisterUIHook(std::string e,int hook); + void registerMidiOutDevice(qmpMidiOutDevice* dev,std::string name); + void unregisterMidiOutDevice(std::string name); + int registerEventReaderIntf(ICallBack* cb,void* userdata); + void unregisterEventReaderIntf(int intfhandle); + int registerEventHandlerIntf(ICallBack* cb,void* userdata); + void unregisterEventHandlerIntf(int intfhandle); + int registerFileReadFinishedHandlerIntf(ICallBack* cb,void* userdata); + void unregisterFileReadFinishedHandlerIntf(int intfhandle); + int registerEventHandler(callback_t cb,void *userdata,bool post=false); + void unregisterEventHandler(int id); + int registerEventReadHandler(callback_t cb,void *userdata); + void unregisterEventReadHandler(int id); + int registerFileReadFinishHook(callback_t cb,void *userdata); + void unregisterFileReadFinishHook(int id); + void registerFileReader(qmpFileReader* reader,std::string name); + void unregisterFileReader(std::string name); + + void registerOptionInt(std::string tab,std::string desc,std::string key,int min,int max,int defaultval); + int getOptionInt(std::string key); + void setOptionInt(std::string key,int val); + void registerOptionUint(std::string tab,std::string desc,std::string key,unsigned min,unsigned max,unsigned defaultval); + unsigned getOptionUint(std::string key); + void setOptionUint(std::string key,unsigned val); + void registerOptionBool(std::string tab,std::string desc,std::string key,bool defaultval); + bool getOptionBool(std::string key); + void setOptionBool(std::string key,bool val); + void registerOptionDouble(std::string tab,std::string desc,std::string key,double min,double max,double defaultval); + double getOptionDouble(std::string key); + void setOptionDouble(std::string key,double val); + void registerOptionString(std::string tab,std::string desc,std::string key,std::string defaultval,bool ispath=false); + std::string getOptionString(std::string key); + void setOptionString(std::string key,std::string val); + void registerOptionEnumInt(std::string tab,std::string desc,std::string key,std::vector<std::string> options,int defaultval); + int getOptionEnumInt(std::string key); + void setOptionEnumInt(std::string key,int val); +}; class qmpPluginManager { private: std::vector<qmpPlugin> plugins; - static qmpPluginAPI* pluginAPI; + static qmpPluginAPIImpl* pluginAPI; static qmpMainWindow* mainwindow; static qmpSettings* settings; public: @@ -29,7 +103,7 @@ class qmpPluginManager void scanPlugins(const std::vector<std::string> &pp); void initPlugins(); void deinitPlugins(); - friend class qmpPluginAPI; + friend class qmpPluginAPIImpl; friend class qmpMainWindow; }; #endif // QMPPLUGIN_H |