#ifndef __GENFF_CORE_H #define __GENFF_CORE_H #include //#include "../studio/bfc/timerclient.h" #include #include #include namespace Agave { #include "../Agave/Config/api_config.h" } #define STATUS_UNKNOWN -1 #define STATUS_STOP 0 #define STATUS_PLAY 1 #define STATUS_PAUSE 2 class Core : public api_coreI//, public CoreCallbackI { //, public TimerClientDI { public: Core(); virtual ~Core(); void gotCallback(int wParam, int forcecb = 0); void addCallback(CoreCallback *cb); void delCallback(CoreCallback *cb); // virtual void timerclient_timerCallback(int id); int getStatus(); void userButton(int button); void setVolume(int vol); int getVolume(); void setPosition(int ms); int getPosition(); int getLength(); void setPanning(int p); int getPanning(); void setShuffle(int shuffle); int getShuffle(); void setRepeat(int repeat); int getRepeat(); int getSamplerate(int wa2_getinfo); int getBitrate(int wa2_getinfo); int getChannels(int wa2_getinfo); int getEqBand(int band); void setEqBand(int band, int val); int getEQStatus(); void setEQStatus(int enable); int getEQAuto(); void setEQAuto(int enable); int getEQPreamp(); void setEQPreamp(int enable); const wchar_t *getTitle(); void setTitle(const wchar_t * new_title); const wchar_t *getPlaystring(); int getCurPlaylistEntry(); static const wchar_t *getSongInfoText(); static const wchar_t *getSongInfoTextTranslated(); // api_core ------------------------------------------------------------------------ virtual const wchar_t *core_getSupportedExtensions(); virtual const wchar_t *core_getExtSupportedExtensions(); virtual CoreToken core_create(); virtual int core_free(CoreToken core); virtual int core_setNextFile(CoreToken core, const wchar_t *playstring); virtual int core_getStatus(CoreToken core); virtual const wchar_t *core_getCurrent(CoreToken core); virtual int core_getCurPlaybackNumber(CoreToken core); virtual int core_getPosition(CoreToken core); virtual int core_getWritePosition(CoreToken core); virtual int core_setPosition(CoreToken core, int ms); virtual int core_getLength(CoreToken core); virtual int core_getPluginData(const wchar_t *playstring, const wchar_t *name, wchar_t *data, int data_len, int data_type = 0); virtual unsigned int core_getVolume(CoreToken core); virtual void core_setVolume(CoreToken core, unsigned int vol); virtual int core_getPan(CoreToken core); virtual void core_setPan(CoreToken core, int val); virtual void core_addCallback(CoreToken core, CoreCallback *cb); virtual void core_delCallback(CoreToken core, CoreCallback *cb); virtual int core_getVisData(CoreToken core, void *dataptr, int sizedataptr); virtual int core_getLeftVuMeter(CoreToken core); virtual int core_getRightVuMeter(CoreToken core); virtual int core_registerSequencer(CoreToken core, ItemSequencer *seq); virtual int core_deregisterSequencer(CoreToken core, ItemSequencer *seq); virtual void core_userButton(CoreToken core, int button); virtual int core_getEqStatus(CoreToken core); virtual void core_setEqStatus(CoreToken core, int enable); virtual int core_getEqPreamp(CoreToken core); virtual void core_setEqPreamp(CoreToken core, int pre); virtual int core_getEqBand(CoreToken core, int band); virtual void core_setEqBand(CoreToken core, int band, int val); virtual int core_getEqAuto(CoreToken core); virtual void core_setEqAuto(CoreToken core, int enable); virtual void core_setCustomMsg(CoreToken core, const wchar_t *text); virtual void core_registerExtension(const wchar_t *extensions, const wchar_t *extension_name, const wchar_t *family = NULL); virtual const wchar_t *core_getExtensionFamily(const wchar_t *extension); virtual void core_unregisterExtension(const wchar_t *extensions); virtual const wchar_t *core_getTitle(CoreToken core); virtual void core_setTitle(const wchar_t *new_title); const wchar_t *core_getDecoderName(const wchar_t *Filename); virtual int core_getRating(); virtual void core_setRating(int newRating); private: void sendCoreCallback(int message, int param1 = 0, int param2 = 0); StringW m_lasttitle; StringW m_playstring, m_lastfile; int m_laststatus; int m_lastpos; int m_lastvol; int m_lastpan; int m_lasteqband[10]; int m_lastfreqband; int m_lasteq; int m_lasteqauto; int m_lasteqpreamp; int m_lastchan; int m_lastbitrate; int m_lastsamplerate; int m_lastpeentry; PtrList callbacks; ReentryFilterObject rf; Agave::api_config *config; }; extern Core *g_Core; #endif