sl@0: //------------------------------------------------------------------------------ sl@0: #ifndef IDWTHREAD_H_INCLUDED sl@0: #define IDWTHREAD_H_INCLUDED sl@0: //------------------------------------------------------------------------------ sl@0: #include sl@0: #include "Thread.h" sl@0: #include "Event.h" sl@0: #include "Mutex.h" sl@0: #include "iMONDisplayDefines.h" sl@0: #include "iMONDisplayWrapper.h" sl@2: sl@2: sl@2: /** sl@2: iMON Display Wrapper thread. sl@2: Create a window and implement its event loop. sl@2: This window will be used to process iMON display messages. sl@2: Implement iMON Display API by send messages to our window. sl@2: Actual iMON Display API call call are made from the window procedure. sl@2: */ sl@0: class IdwThread : public Thread sl@0: { sl@0: public: sl@1: IdwThread(HINSTANCE hInstance); sl@1: virtual ~IdwThread(); sl@0: sl@0: private: sl@1: IdwThread(const IdwThread& other) {} sl@1: IdwThread& operator=(const IdwThread& other) { return *this; } sl@0: sl@0: public: sl@1: virtual void Interrupt(); sl@1: DSPResult Init(IDW_INITRESULT* pInitResult); sl@1: DSPResult Uninit(); sl@3: DSPResult IsInitialized(); sl@1: DSPResult IsPluginModeEnabled(); sl@2: DSPResult GetStatus(IDW_STATUS* aStatus); sl@1: DSPResult SetVfdText(LPCWSTR lpszLine1, LPCWSTR lpszLine2); sl@1: DSPResult SetVfdEqData(PDSPEQDATA pEqData); sl@1: DSPResult SetLcdText(LPCWSTR lpszText); sl@1: DSPResult SetLcdEqData(PDSPEQDATA pEqDataL, PDSPEQDATA pEqDataR); sl@1: DSPResult SetLcdAllIcons(BOOL bOn); sl@1: DSPResult SetLcdOrangeIcon(BYTE btIconData1, BYTE btIconData2); sl@1: DSPResult SetLcdMediaTypeIcon(BYTE btIconData); sl@1: DSPResult SetLcdSpeakerIcon(BYTE btIconData1, BYTE btIconData2); sl@1: DSPResult SetLcdVideoCodecIcon(BYTE btIconData); sl@1: DSPResult SetLcdAudioCodecIcon(BYTE btIconData); sl@1: DSPResult SetLcdAspectRatioIcon(BYTE btIconData); sl@1: DSPResult SetLcdEtcIcon(BYTE btIconData); sl@1: DSPResult SetLcdProgress(int nCurPos, int nTotal); sl@2: sl@0: protected: sl@1: virtual void Run(); sl@1: sl@1: private: sl@1: bool RegisterClass(); sl@1: bool CreateMessageWindow(); sl@1: void AllowImonMessages(); sl@1: bool WaitForWindow(); sl@1: static LRESULT CALLBACK WndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam); sl@1: static void MapChars(LPWSTR lpszTarget, LPCWSTR lpszSource, int nMaxLength); sl@1: static wchar_t MapChar(wchar_t ch); sl@0: sl@0: private: sl@1: HINSTANCE m_hInstance; sl@1: HWND m_hWnd; sl@1: Event m_eventWindowCreationDone; sl@0: }; sl@0: //------------------------------------------------------------------------------ sl@0: #endif sl@0: //------------------------------------------------------------------------------