From 4ffde0ad55d041229793ca4457123bcbcbf8e0c0 Mon Sep 17 00:00:00 2001 From: Chris Xiong Date: Mon, 25 Apr 2016 23:46:17 +0800 Subject: Plugin API now works correctly. Port old visualization code. --- visualization/qmpvisualization.hpp | 61 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 59 insertions(+), 2 deletions(-) (limited to 'visualization/qmpvisualization.hpp') diff --git a/visualization/qmpvisualization.hpp b/visualization/qmpvisualization.hpp index 847f37b..df9255c 100644 --- a/visualization/qmpvisualization.hpp +++ b/visualization/qmpvisualization.hpp @@ -1,6 +1,12 @@ #ifndef QMPVISUALIZATION_H #define QMPVISUALIZATION_H +#include +#include +#include +#include +#include +#include #include "../include/qmpcorepublic.hpp" class qmpVisualization; @@ -12,22 +18,73 @@ class CTestCallBack:public IMidiCallBack CTestCallBack(qmpVisualization *_par){par=_par;} void callBack(void *callerdata,void *userdata); }; +struct MidiVisualEvent +{ + uint32_t tcs,tce; + uint32_t key,vel; + uint32_t ch; +}; class qmpVisualization:public qmpPluginIntf { - friend class CTestCallBack; private: qmpPluginAPI* api; - int c; CTestCallBack* cb; + qmpVisualizationIntf* vi; + std::thread* rendererTh; + std::vectorpool; + smHandler* h; + std::stack pendingt[16][128],pendingv[16][128]; + SMELT *sm; + SMTRG tdscn; + SMTEX chequer; + smTTFont font; + float pos[3],rot[3],lastx,lasty; + uint32_t ctc,dvs,ctk,fintk; + double etps; + void drawCube(smvec3d a,smvec3d b,DWORD col,SMTEX tex); public: qmpVisualization(qmpPluginAPI* _api); ~qmpVisualization(); + void pushNoteOn(uint32_t tc,uint32_t ch,uint32_t key,uint32_t vel); + void pushNoteOff(uint32_t tc,uint32_t ch,uint32_t key); + void pushPitchBend(uint32_t tc,uint32_t ch,uint32_t key); + bool update(); + void start(); + void stop(); + void pause(); + void show(); + void close(); + void reset(); + void init(); void deinit(); const char* pluginGetName(); const char* pluginGetVersion(); }; +class CMidiVisualHandler:public smHandler +{ + private: + qmpVisualization *p; + public: + CMidiVisualHandler(qmpVisualization* par){p=par;} + bool handlerFunc(){return p->update();} +}; + +class CDemoVisualization:public qmpVisualizationIntf +{ + private: + qmpVisualization* par; + public: + CDemoVisualization(qmpVisualization *p){par=p;} + void show(){par->show();} + void close(){par->close();} + void start(){par->start();} + void stop(){par->stop();} + void pause(){par->pause();} + void reset(){par->reset();} +}; + extern "C"{ qmpPluginIntf* qmpPluginGetInterface(qmpPluginAPI* api) {return new qmpVisualization(api);} -- cgit v1.2.3