aboutsummaryrefslogtreecommitdiff
path: root/qmidiplayer-desktop/qmpplugin.hpp
diff options
context:
space:
mode:
authorGravatar Chris Xiong <chirs241097@gmail.com> 2020-04-29 17:54:55 +0800
committerGravatar Chris Xiong <chirs241097@gmail.com> 2020-04-29 17:54:55 +0800
commit8766f3b12e13d40b65eca23a850f687b0043d022 (patch)
treeffa27c96238bdade1ec097d8a1eba0239207ae35 /qmidiplayer-desktop/qmpplugin.hpp
parent65a8bde4e4beca860a13491e94631dc16b5e71af (diff)
downloadQMidiPlayer-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.hpp78
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