# HG changeset patch # User sl # Date 1394957499 -3600 # Node ID 523a7dc3469f73879743f718055c6b4b7f83c225 First contribution. diff -r 000000000000 -r 523a7dc3469f Event.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Event.cpp Sun Mar 16 09:11:39 2014 +0100 @@ -0,0 +1,29 @@ +//------------------------------------------------------------------------------ +#include "Event.h" +//------------------------------------------------------------------------------ +Event::Event() +{ + m_hEvent = CreateEvent(NULL, TRUE, FALSE, NULL); +} +//------------------------------------------------------------------------------ +Event::~Event() +{ + if (m_hEvent) + CloseHandle(m_hEvent); +} +//------------------------------------------------------------------------------ +void Event::Signal() const +{ + SetEvent(m_hEvent); +} +//------------------------------------------------------------------------------ +void Event::Reset() const +{ + ResetEvent(m_hEvent); +} +//------------------------------------------------------------------------------ +void Event::Await() const +{ + WaitForSingleObject(m_hEvent, INFINITE); +} +//------------------------------------------------------------------------------ diff -r 000000000000 -r 523a7dc3469f Event.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Event.h Sun Mar 16 09:11:39 2014 +0100 @@ -0,0 +1,27 @@ +//------------------------------------------------------------------------------ +#ifndef EVENT_H_INCLUDED +#define EVENT_H_INCLUDED +//------------------------------------------------------------------------------ +#include +//------------------------------------------------------------------------------ +class Event +{ +public: + Event(); + virtual ~Event(); + +private: + Event(const Event& other) {} + Event& operator=(const Event& other) { return *this; } + +public: + void Signal() const; + void Reset() const; + void Await() const; + +private: + HANDLE m_hEvent; +}; +//------------------------------------------------------------------------------ +#endif +//------------------------------------------------------------------------------ diff -r 000000000000 -r 523a7dc3469f IdwApi.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/IdwApi.cpp Sun Mar 16 09:11:39 2014 +0100 @@ -0,0 +1,247 @@ +//------------------------------------------------------------------------------ +#include "IdwApi.h" +#include +//------------------------------------------------------------------------------ +IdwApi::IdwApi(HINSTANCE hInstance) +: m_hInstance(hInstance) +, m_pIdwThread(NULL) +, m_nInitCount(0) +{ +} +//------------------------------------------------------------------------------ +IdwApi::~IdwApi() +{ +} +//------------------------------------------------------------------------------ +DSPResult IdwApi::Init(IDW_INITRESULT* pInitResult) +{ + m_mutex.Request(); + if (m_nInitCount == 0) + { + m_pIdwThread = new IdwThread(m_hInstance); + m_pIdwThread->Start(); + } + ++m_nInitCount; + DSPResult ret = m_pIdwThread->Init(pInitResult); + m_mutex.Release(); + return ret; +} +//------------------------------------------------------------------------------ +DSPResult IdwApi::Uninit() +{ + m_mutex.Request(); + if (m_nInitCount == 0) + { + m_mutex.Release(); + return DSP_E_NOT_INITED; + } + DSPResult ret = m_pIdwThread->Uninit(); + if (ret == DSP_SUCCEEDED) + { + --m_nInitCount; + if (m_nInitCount == 0) + { + m_pIdwThread->Interrupt(); + m_pIdwThread->Join(); + delete m_pIdwThread; + } + } + m_mutex.Release(); + return ret; +} +//------------------------------------------------------------------------------ +DSPResult IdwApi::IsInited() +{ + m_mutex.Request(); + if (m_nInitCount == 0) + { + m_mutex.Release(); + return DSP_S_NOT_INITED; + } + DSPResult ret = m_pIdwThread->IsInited(); + m_mutex.Release(); + return ret; +} +//------------------------------------------------------------------------------ +DSPResult IdwApi::IsPluginModeEnabled() +{ + m_mutex.Request(); + if (m_nInitCount == 0) + { + m_mutex.Release(); + return DSP_S_NOT_IN_PLUGIN_MODE; + } + DSPResult ret = m_pIdwThread->IsPluginModeEnabled(); + m_mutex.Release(); + return ret; +} +//------------------------------------------------------------------------------ +DSPResult IdwApi::SetVfdText(LPCWSTR lpszLine1, LPCWSTR lpszLine2) +{ + m_mutex.Request(); + if (m_nInitCount == 0) + { + m_mutex.Release(); + return DSP_E_NOT_INITED; + } + DSPResult ret = m_pIdwThread->SetVfdText(lpszLine1, lpszLine2); + m_mutex.Release(); + return ret; +} +//------------------------------------------------------------------------------ +DSPResult IdwApi::SetVfdEqData(PDSPEQDATA pEqData) +{ + m_mutex.Request(); + if (m_nInitCount == 0) + { + m_mutex.Release(); + return DSP_E_NOT_INITED; + } + DSPResult ret = m_pIdwThread->SetVfdEqData(pEqData); + m_mutex.Release(); + return ret; +} +//------------------------------------------------------------------------------ +DSPResult IdwApi::SetLcdText(LPCWSTR lpszLine1) +{ + m_mutex.Request(); + if (m_nInitCount == 0) + { + m_mutex.Release(); + return DSP_E_NOT_INITED; + } + DSPResult ret = m_pIdwThread->SetLcdText(lpszLine1); + m_mutex.Release(); + return ret; +} +//------------------------------------------------------------------------------ +DSPResult IdwApi::SetLcdEqData(PDSPEQDATA pEqDataL, PDSPEQDATA pEqDataR) +{ + m_mutex.Request(); + if (m_nInitCount == 0) + { + m_mutex.Release(); + return DSP_E_NOT_INITED; + } + DSPResult ret = m_pIdwThread->SetLcdEqData(pEqDataL, pEqDataR); + m_mutex.Release(); + return ret; +} +//------------------------------------------------------------------------------ +DSPResult IdwApi::SetLcdAllIcons(BOOL bOn) +{ + m_mutex.Request(); + if (m_nInitCount == 0) + { + m_mutex.Release(); + return DSP_E_NOT_INITED; + } + DSPResult ret = m_pIdwThread->SetLcdAllIcons(bOn); + m_mutex.Release(); + return ret; +} +//------------------------------------------------------------------------------ +DSPResult IdwApi::SetLcdOrangeIcon(BYTE btIconData1, BYTE btIconData2) +{ + m_mutex.Request(); + if (m_nInitCount == 0) + { + m_mutex.Release(); + return DSP_E_NOT_INITED; + } + DSPResult ret = m_pIdwThread->SetLcdOrangeIcon(btIconData1, btIconData2); + m_mutex.Release(); + return ret; +} +//------------------------------------------------------------------------------ +DSPResult IdwApi::SetLcdMediaTypeIcon(BYTE btIconData) +{ + m_mutex.Request(); + if (m_nInitCount == 0) + { + m_mutex.Release(); + return DSP_E_NOT_INITED; + } + DSPResult ret = m_pIdwThread->SetLcdMediaTypeIcon(btIconData); + m_mutex.Release(); + return ret; +} +//------------------------------------------------------------------------------ +DSPResult IdwApi::SetLcdSpeakerIcon(BYTE btIconData1, BYTE btIconData2) +{ + m_mutex.Request(); + if (m_nInitCount == 0) + { + m_mutex.Release(); + return DSP_E_NOT_INITED; + } + DSPResult ret = m_pIdwThread->SetLcdSpeakerIcon(btIconData1, btIconData2); + m_mutex.Release(); + return ret; +} +//------------------------------------------------------------------------------ +DSPResult IdwApi::SetLcdVideoCodecIcon(BYTE btIconData) +{ + m_mutex.Request(); + if (m_nInitCount == 0) + { + m_mutex.Release(); + return DSP_E_NOT_INITED; + } + DSPResult ret = m_pIdwThread->SetLcdVideoCodecIcon(btIconData); + m_mutex.Release(); + return ret; +} +//------------------------------------------------------------------------------ +DSPResult IdwApi::SetLcdAudioCodecIcon(BYTE btIconData) +{ + m_mutex.Request(); + if (m_nInitCount == 0) + { + m_mutex.Release(); + return DSP_E_NOT_INITED; + } + DSPResult ret = m_pIdwThread->SetLcdAudioCodecIcon(btIconData); + m_mutex.Release(); + return ret; +} +//------------------------------------------------------------------------------ +DSPResult IdwApi::SetLcdAspectRatioIcon(BYTE btIconData) +{ + m_mutex.Request(); + if (m_nInitCount == 0) + { + m_mutex.Release(); + return DSP_E_NOT_INITED; + } + DSPResult ret = m_pIdwThread->SetLcdAspectRatioIcon(btIconData); + m_mutex.Release(); + return ret; +} +//------------------------------------------------------------------------------ +DSPResult IdwApi::SetLcdEtcIcon(BYTE btIconData) +{ + m_mutex.Request(); + if (m_nInitCount == 0) + { + m_mutex.Release(); + return DSP_E_NOT_INITED; + } + DSPResult ret = m_pIdwThread->SetLcdEtcIcon(btIconData); + m_mutex.Release(); + return ret; +} +//------------------------------------------------------------------------------ +DSPResult IdwApi::SetLcdProgress(int nCurPos, int nTotal) +{ + m_mutex.Request(); + if (m_nInitCount == 0) + { + m_mutex.Release(); + return DSP_E_NOT_INITED; + } + DSPResult ret = m_pIdwThread->SetLcdProgress(nCurPos, nTotal); + m_mutex.Release(); + return ret; +} +//------------------------------------------------------------------------------ \ No newline at end of file diff -r 000000000000 -r 523a7dc3469f IdwApi.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/IdwApi.h Sun Mar 16 09:11:39 2014 +0100 @@ -0,0 +1,48 @@ +//------------------------------------------------------------------------------ +#ifndef IDWAPI_H_INCLUDED +#define IDWAPI_H_INCLUDED +//------------------------------------------------------------------------------ +#include +#include "Mutex.h" +#include "iMONDisplayDefines.h" +#include "iMONDisplayWrapper.h" +#include "IdwThread.h" +//------------------------------------------------------------------------------ +class IdwApi +{ +public: + IdwApi(HINSTANCE hInstance); + ~IdwApi(); + +public: + DSPResult Init(IDW_INITRESULT* pInitResult); + DSPResult Uninit(); + DSPResult IsInited(); + DSPResult IsPluginModeEnabled(); + DSPResult SetVfdText(LPCWSTR lpszLine1, LPCWSTR lpszLine2); + DSPResult SetVfdEqData(PDSPEQDATA pEqData); + DSPResult SetLcdText(LPCWSTR lpszText); + DSPResult SetLcdEqData(PDSPEQDATA pEqDataL, PDSPEQDATA pEqDataR); + DSPResult SetLcdAllIcons(BOOL bOn); + DSPResult SetLcdOrangeIcon(BYTE btIconData1, BYTE btIconData2); + DSPResult SetLcdMediaTypeIcon(BYTE btIconData); + DSPResult SetLcdSpeakerIcon(BYTE btIconData1, BYTE btIconData2); + DSPResult SetLcdVideoCodecIcon(BYTE btIconData); + DSPResult SetLcdAudioCodecIcon(BYTE btIconData); + DSPResult SetLcdAspectRatioIcon(BYTE btIconData); + DSPResult SetLcdEtcIcon(BYTE btIconData); + DSPResult SetLcdProgress(int nCurPos, int nTotal); + +private: + IdwApi(const IdwApi& other) {} + IdwApi& operator=(const IdwApi& other) { return *this; } + +private: + HINSTANCE m_hInstance; + Mutex m_mutex; + int m_nInitCount; + IdwThread* m_pIdwThread; +}; +//------------------------------------------------------------------------------ +#endif +//------------------------------------------------------------------------------ diff -r 000000000000 -r 523a7dc3469f IdwThread.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/IdwThread.cpp Sun Mar 16 09:11:39 2014 +0100 @@ -0,0 +1,745 @@ +//------------------------------------------------------------------------------ +#include "IdwThread.h" +#include "iMONDisplayAPI.h" +//------------------------------------------------------------------------------ +#define CLASSNAME TEXT("IDW_IMON_COM_WNDCLASS") +//------------------------------------------------------------------------------ +#define WM_IDW_IMON (WM_USER + 1) +#define WM_IDW_INIT (WM_USER + 2) +#define WM_IDW_UNINIT (WM_USER + 3) +#define WM_IDW_ISINITED (WM_USER + 4) +#define WM_IDW_ISPLUGINMODEENABLED (WM_USER + 5) +#define WM_IDW_SETVFDTEXT (WM_USER + 6) +#define WM_IDW_SETVFDEQ (WM_USER + 7) +#define WM_IDW_SETLCDTEXT (WM_USER + 8) +#define WM_IDW_SETLCDEQ (WM_USER + 9) +#define WM_IDW_SETLCDALLICONS (WM_USER + 10) +#define WM_IDW_SETLCDORANGEICON (WM_USER + 11) +#define WM_IDW_SETLCDMEDIATYPEICON (WM_USER + 12) +#define WM_IDW_SETLCDSPEAKERICON (WM_USER + 13) +#define WM_IDW_SETLCDVIDEOCODEC (WM_USER + 14) +#define WM_IDW_SETLCDAUDIOCODEC (WM_USER + 15) +#define WM_IDW_SETLCDASPECTRATIO (WM_USER + 16) +#define WM_IDW_SETLCDETCICON (WM_USER + 17) +#define WM_IDW_SETLCDPROGRESS (WM_USER + 18) +#define WM_IDW_INTERRUPT (WM_USER + 100) +//------------------------------------------------------------------------------ +struct IdwImonInitResult +{ + DSPResult result; + DSPNInitResult initResult; + DSPType dspType; +}; +struct IdwSetVfdText +{ + DSPResult result; + LPCWSTR pszLine1; + LPCWSTR pszLine2; +}; +struct IdwSetVfdEq +{ + DSPResult result; + PDSPEQDATA pEqData; +}; +struct IdwSetLcdText +{ + DSPResult result; + LPCWSTR pszLine1; +}; +struct IdwSetLcdEq +{ + DSPResult result; + PDSPEQDATA pEqDataL; + PDSPEQDATA pEqDataR; +}; +struct IdwSetLcdAllIcons +{ + DSPResult result; + BOOL bOn; +}; +struct IdwSetLcdIcons +{ + DSPResult result; + BYTE btIconData; +}; +struct IdwSetLcdIcons2 +{ + DSPResult result; + BYTE btIconData1; + BYTE btIconData2; +}; +struct IdwSetLcdProgress +{ + DSPResult result; + int nCurPos; + int nTotal; +}; +//------------------------------------------------------------------------------ +IdwThread::IdwThread(HINSTANCE hInstance) +: m_hInstance(hInstance) +, m_hWnd(NULL) +{ +} +//------------------------------------------------------------------------------ +IdwThread::~IdwThread() +{ +} +//------------------------------------------------------------------------------ +void IdwThread::Interrupt() +{ + if (!WaitForWindow()) + return; + PostMessage(m_hWnd, WM_IDW_INTERRUPT, 0, 0); +} +//------------------------------------------------------------------------------ +DSPResult IdwThread::Init(IDW_INITRESULT* pInitResult) +{ + if (!WaitForWindow()) + return DSP_E_FAIL; + + IdwImonInitResult result; + Event finished; + PostMessage(m_hWnd, WM_IDW_INIT, (WPARAM)&result, (LPARAM)&finished); + finished.Await(); + if (pInitResult != NULL) + { + pInitResult->initResult = result.initResult; + pInitResult->dspType = result.dspType; + } + + return result.result; +} +//------------------------------------------------------------------------------ +DSPResult IdwThread::Uninit() +{ + if (!WaitForWindow()) + return DSP_E_FAIL; + + DSPResult result; + Event finished; + PostMessage(m_hWnd, WM_IDW_UNINIT, (WPARAM)&result, (LPARAM)&finished); + finished.Await(); + + return result; +} +//------------------------------------------------------------------------------ +DSPResult IdwThread::IsInited() +{ + if (!WaitForWindow()) + return DSP_E_FAIL; + + DSPResult result; + Event finished; + PostMessage(m_hWnd, WM_IDW_ISINITED, (WPARAM)&result, (LPARAM)&finished); + finished.Await(); + + return result; +} +//------------------------------------------------------------------------------ +DSPResult IdwThread::IsPluginModeEnabled() +{ + if (!WaitForWindow()) + return DSP_E_FAIL; + + DSPResult result; + Event finished; + PostMessage(m_hWnd, WM_IDW_ISPLUGINMODEENABLED, (WPARAM)&result, + (LPARAM)&finished); + finished.Await(); + + return result; +} +//------------------------------------------------------------------------------ +DSPResult IdwThread::SetVfdText(LPCWSTR lpszLine1, LPCWSTR lpszLine2) +{ + if (!WaitForWindow()) + return DSP_E_FAIL; + + IdwSetVfdText text; + text.pszLine1 = lpszLine1; + text.pszLine2 = lpszLine2; + Event finished; + PostMessage(m_hWnd, WM_IDW_SETVFDTEXT, (WPARAM)&text, (LPARAM)&finished); + finished.Await(); + + return text.result; +} +//------------------------------------------------------------------------------ +DSPResult IdwThread::SetVfdEqData(PDSPEQDATA pEqData) +{ + if (!WaitForWindow()) + return DSP_E_FAIL; + + IdwSetVfdEq eq; + eq.pEqData = pEqData; + Event finished; + PostMessage(m_hWnd, WM_IDW_SETVFDEQ, (WPARAM)&eq, (LPARAM)&finished); + finished.Await(); + + return eq.result; +} +//------------------------------------------------------------------------------ +DSPResult IdwThread::SetLcdText(LPCWSTR lpszLine1) +{ + if (!WaitForWindow()) + return DSP_E_FAIL; + + IdwSetLcdText text; + text.pszLine1 = lpszLine1; + Event finished; + PostMessage(m_hWnd, WM_IDW_SETLCDTEXT, (WPARAM)&text, (LPARAM)&finished); + finished.Await(); + + return text.result; +} +//------------------------------------------------------------------------------ +DSPResult IdwThread::SetLcdEqData(PDSPEQDATA pEqDataL, PDSPEQDATA pEqDataR) +{ + if (!WaitForWindow()) + return DSP_E_FAIL; + + IdwSetLcdEq eq; + eq.pEqDataL = pEqDataL; + eq.pEqDataR = pEqDataR; + Event finished; + PostMessage(m_hWnd, WM_IDW_SETLCDEQ, (WPARAM)&eq, (LPARAM)&finished); + finished.Await(); + + return eq.result; +} +//------------------------------------------------------------------------------ +DSPResult IdwThread::SetLcdAllIcons(BOOL bOn) +{ + if (!WaitForWindow()) + return DSP_E_FAIL; + + IdwSetLcdAllIcons allIcons; + allIcons.bOn = bOn; + Event finished; + PostMessage(m_hWnd, WM_IDW_SETLCDALLICONS, + (WPARAM)&allIcons, (LPARAM)&finished); + finished.Await(); + + return allIcons.result; +} +//------------------------------------------------------------------------------ +DSPResult IdwThread::SetLcdOrangeIcon(BYTE btIconData1, BYTE btIconData2) +{ + if (!WaitForWindow()) + return DSP_E_FAIL; + + IdwSetLcdIcons2 iconData; + iconData.btIconData1 = btIconData1; + iconData.btIconData2 = btIconData2; + Event finished; + PostMessage(m_hWnd, WM_IDW_SETLCDORANGEICON, + (WPARAM)&iconData, (LPARAM)&finished); + finished.Await(); + + return iconData.result; +} +//------------------------------------------------------------------------------ +DSPResult IdwThread::SetLcdMediaTypeIcon(BYTE btIconData) +{ + if (!WaitForWindow()) + return DSP_E_FAIL; + + IdwSetLcdIcons iconData; + iconData.btIconData = btIconData; + Event finished; + PostMessage(m_hWnd, WM_IDW_SETLCDMEDIATYPEICON, + (WPARAM)&iconData, (LPARAM)&finished); + finished.Await(); + + return iconData.result; +} +//------------------------------------------------------------------------------ +DSPResult IdwThread::SetLcdSpeakerIcon(BYTE btIconData1, BYTE btIconData2) +{ + if (!WaitForWindow()) + return DSP_E_FAIL; + + IdwSetLcdIcons2 iconData; + iconData.btIconData1 = btIconData1; + iconData.btIconData2 = btIconData2; + Event finished; + PostMessage(m_hWnd, WM_IDW_SETLCDSPEAKERICON, + (WPARAM)&iconData, (LPARAM)&finished); + finished.Await(); + + return iconData.result; +} +//------------------------------------------------------------------------------ +DSPResult IdwThread::SetLcdVideoCodecIcon(BYTE btIconData) +{ + if (!WaitForWindow()) + return DSP_E_FAIL; + + IdwSetLcdIcons iconData; + iconData.btIconData = btIconData; + Event finished; + PostMessage(m_hWnd, WM_IDW_SETLCDVIDEOCODEC, + (WPARAM)&iconData, (LPARAM)&finished); + finished.Await(); + + return iconData.result; +} +//------------------------------------------------------------------------------ +DSPResult IdwThread::SetLcdAudioCodecIcon(BYTE btIconData) +{ + if (!WaitForWindow()) + return DSP_E_FAIL; + + IdwSetLcdIcons iconData; + iconData.btIconData = btIconData; + Event finished; + PostMessage(m_hWnd, WM_IDW_SETLCDAUDIOCODEC, + (WPARAM)&iconData, (LPARAM)&finished); + finished.Await(); + + return iconData.result; +} +//------------------------------------------------------------------------------ +DSPResult IdwThread::SetLcdAspectRatioIcon(BYTE btIconData) +{ + if (!WaitForWindow()) + return DSP_E_FAIL; + + IdwSetLcdIcons iconData; + iconData.btIconData = btIconData; + Event finished; + PostMessage(m_hWnd, WM_IDW_SETLCDASPECTRATIO, + (WPARAM)&iconData, (LPARAM)&finished); + finished.Await(); + + return iconData.result; +} +//------------------------------------------------------------------------------ +DSPResult IdwThread::SetLcdEtcIcon(BYTE btIconData) +{ + if (!WaitForWindow()) + return DSP_E_FAIL; + + IdwSetLcdIcons iconData; + iconData.btIconData = btIconData; + Event finished; + PostMessage(m_hWnd, WM_IDW_SETLCDETCICON, + (WPARAM)&iconData, (LPARAM)&finished); + finished.Await(); + + return iconData.result; +} +//------------------------------------------------------------------------------ +DSPResult IdwThread::SetLcdProgress(int nCurPos, int nTotal) +{ + if (!WaitForWindow()) + return DSP_E_FAIL; + + IdwSetLcdProgress progressData; + progressData.nCurPos = nCurPos; + progressData.nTotal = nTotal; + Event finished; + PostMessage(m_hWnd, WM_IDW_SETLCDPROGRESS, + (WPARAM)&progressData, (LPARAM)&finished); + finished.Await(); + + return progressData.result; +} +//------------------------------------------------------------------------------ +void IdwThread::Run() +{ + if (!RegisterClass()) + { + m_eventWindowCreationDone.Signal(); + return; + } + if (!CreateMessageWindow()) + { + m_eventWindowCreationDone.Signal(); + return; + } + AllowImonMessages(); + + m_eventWindowCreationDone.Signal(); + + MSG msg; + BOOL fGotMessage; + while ((fGotMessage = GetMessage(&msg, (HWND) NULL, 0, 0)) != 0 + && fGotMessage != -1) + { + TranslateMessage(&msg); + DispatchMessage(&msg); + } +} +//------------------------------------------------------------------------------ +bool IdwThread::RegisterClass() +{ + WNDCLASSEX wc; + if (GetClassInfoEx(m_hInstance, CLASSNAME, &wc)) + { + return true; + } + + wc.cbSize = sizeof(wc); + wc.style = CS_HREDRAW | CS_VREDRAW; + wc.lpfnWndProc = IdwThread::WndProc; + wc.cbClsExtra = 0; + wc.cbWndExtra = 0; + wc.hInstance = m_hInstance; + wc.hIcon = NULL; + wc.hCursor = NULL; + wc.hbrBackground = NULL; + wc.lpszMenuName = NULL; + wc.lpszClassName = CLASSNAME; + wc.hIconSm = NULL; + if (::RegisterClassEx(&wc)) + { + return true; + } + return false; +} +//------------------------------------------------------------------------------ +bool IdwThread::CreateMessageWindow() +{ + m_hWnd = CreateWindow( + CLASSNAME, + TEXT("MP iMON MessageWindow"), + 0, + 0, 0, 0, 0, + HWND_MESSAGE, + NULL, + m_hInstance, + NULL); + + if (!m_hWnd) + return false; + return true; +} +//------------------------------------------------------------------------------ +void IdwThread::AllowImonMessages() +{ + // Determine OS + OSVERSIONINFO version; + version.dwOSVersionInfoSize = sizeof(version); + GetVersionEx(&version); + if (version.dwMajorVersion < 6) + { + return; + } + + // Determine and allow iMON message number + UINT iMonMsg = + RegisterWindowMessage( + TEXT("iMonMessage-431F1DC6-F31A-4AC6-A1FA-A4BB9C44FF10")); + ChangeWindowMessageFilter(iMonMsg, MSGFLT_ADD); +} +//------------------------------------------------------------------------------ +bool IdwThread::WaitForWindow() +{ + m_eventWindowCreationDone.Await(); + if (m_hWnd == NULL) + return false; + return true; +} +//------------------------------------------------------------------------------ +LRESULT CALLBACK IdwThread::WndProc(HWND hwnd, UINT uMsg, WPARAM wParam, + LPARAM lParam) +{ + static bool initing = false; + static IdwImonInitResult* pInitResult = NULL; + static Event* pInitFinished = NULL; + + DSPResult* pResult; + Event* pFinished; + + switch (uMsg) + { + case WM_CREATE: + return 0; + + case WM_DESTROY: + PostQuitMessage(0); + return 0; + + case WM_IDW_IMON: + if (initing) + { + initing = false; + pInitResult->initResult = (DSPNInitResult)wParam; + pInitResult->dspType = (DSPType)lParam; + pInitFinished->Signal(); + } + return 0; + + case WM_IDW_INIT: + initing = true; + pInitResult = (IdwImonInitResult*)wParam; + pInitFinished = (Event*)lParam; + pInitResult->result = IMON_Display_Init(hwnd, WM_IDW_IMON); + if (pInitResult->result != DSP_SUCCEEDED) + { + initing = false; + pInitResult->initResult = DSPN_ERR_UNKNOWN; + pInitResult->dspType = DSPN_DSP_NONE; + pInitFinished->Signal(); + } + return 0; + + case WM_IDW_UNINIT: + pResult = (DSPResult*)wParam; + pFinished = (Event*)lParam; + *pResult = IMON_Display_Uninit(); + pFinished->Signal(); + return 0; + + case WM_IDW_ISINITED: + pResult = (DSPResult*)wParam; + pFinished = (Event*)lParam; + *pResult = IMON_Display_IsInited(); + pFinished->Signal(); + return 0; + + case WM_IDW_ISPLUGINMODEENABLED: + pResult = (DSPResult*)wParam; + pFinished = (Event*)lParam; + *pResult = IMON_Display_IsPluginModeEnabled(); + pFinished->Signal(); + return 0; + + case WM_IDW_SETVFDTEXT: + { + IdwSetVfdText* pSetVfdText = (IdwSetVfdText*)wParam; + WCHAR szLine1[20]; + WCHAR szLine2[20]; + pFinished = (Event*)lParam; + MapChars(szLine1, pSetVfdText->pszLine1, 16); + MapChars(szLine2, pSetVfdText->pszLine2, 16); + pSetVfdText->result = IMON_Display_SetVfdText(szLine1, szLine2); + pFinished->Signal(); + return 0; + } + + case WM_IDW_SETVFDEQ: + { + IdwSetVfdEq* pSetVfdEq = (IdwSetVfdEq*)wParam; + pFinished = (Event*)lParam; + pSetVfdEq->result = IMON_Display_SetVfdEqData(pSetVfdEq->pEqData); + pFinished->Signal(); + return 0; + } + + case WM_IDW_SETLCDTEXT: + { + IdwSetLcdText* pSetLcdText = (IdwSetLcdText*)wParam; + pFinished = (Event*)lParam; + pSetLcdText->result = IMON_Display_SetLcdText(pSetLcdText->pszLine1); + pFinished->Signal(); + return 0; + } + + case WM_IDW_SETLCDEQ: + { + IdwSetLcdEq* pSetLcdEq = (IdwSetLcdEq*)wParam; + pFinished = (Event*)lParam; + pSetLcdEq->result = + IMON_Display_SetLcdEqData(pSetLcdEq->pEqDataL, pSetLcdEq->pEqDataR); + pFinished->Signal(); + return 0; + } + + case WM_IDW_SETLCDALLICONS: + { + IdwSetLcdAllIcons* pSetLcdAllIcons = (IdwSetLcdAllIcons*)wParam; + pFinished = (Event*)lParam; + pSetLcdAllIcons->result = + IMON_Display_SetLcdAllIcons(pSetLcdAllIcons->bOn); + pFinished->Signal(); + return 0; + } + + case WM_IDW_SETLCDORANGEICON: + { + IdwSetLcdIcons2* pSetLcdIcons2 = (IdwSetLcdIcons2*)wParam; + pFinished = (Event*)lParam; + pSetLcdIcons2->result = IMON_Display_SetLcdOrangeIcon( + pSetLcdIcons2->btIconData1, pSetLcdIcons2->btIconData2); + pFinished->Signal(); + return 0; + } + + case WM_IDW_SETLCDMEDIATYPEICON: + { + IdwSetLcdIcons* pSetLcdIcons = (IdwSetLcdIcons*)wParam; + pFinished = (Event*)lParam; + pSetLcdIcons->result = + IMON_Display_SetLcdMediaTypeIcon(pSetLcdIcons->btIconData); + pFinished->Signal(); + return 0; + } + + case WM_IDW_SETLCDSPEAKERICON: + { + IdwSetLcdIcons2* pSetLcdIcons2 = (IdwSetLcdIcons2*)wParam; + pFinished = (Event*)lParam; + pSetLcdIcons2->result = IMON_Display_SetLcdSpeakerIcon( + pSetLcdIcons2->btIconData1, pSetLcdIcons2->btIconData2); + pFinished->Signal(); + return 0; + } + + case WM_IDW_SETLCDVIDEOCODEC: + { + IdwSetLcdIcons* pSetLcdIcons = (IdwSetLcdIcons*)wParam; + pFinished = (Event*)lParam; + pSetLcdIcons->result = + IMON_Display_SetLcdVideoCodecIcon(pSetLcdIcons->btIconData); + pFinished->Signal(); + return 0; + } + + case WM_IDW_SETLCDAUDIOCODEC: + { + IdwSetLcdIcons* pSetLcdIcons = (IdwSetLcdIcons*)wParam; + pFinished = (Event*)lParam; + pSetLcdIcons->result = + IMON_Display_SetLcdAudioCodecIcon(pSetLcdIcons->btIconData); + pFinished->Signal(); + return 0; + } + + case WM_IDW_SETLCDASPECTRATIO: + { + IdwSetLcdIcons* pSetLcdIcons = (IdwSetLcdIcons*)wParam; + pFinished = (Event*)lParam; + pSetLcdIcons->result = + IMON_Display_SetLcdAspectRatioIcon(pSetLcdIcons->btIconData); + pFinished->Signal(); + return 0; + } + + case WM_IDW_SETLCDETCICON: + { + IdwSetLcdIcons* pSetLcdIcons = (IdwSetLcdIcons*)wParam; + pFinished = (Event*)lParam; + pSetLcdIcons->result = + IMON_Display_SetLcdEtcIcon(pSetLcdIcons->btIconData); + pFinished->Signal(); + return 0; + } + + case WM_IDW_SETLCDPROGRESS: + { + IdwSetLcdProgress* pSetLcdProgress = (IdwSetLcdProgress*)wParam; + pFinished = (Event*)lParam; + pSetLcdProgress->result = IMON_Display_SetLcdProgress( + pSetLcdProgress->nCurPos, pSetLcdProgress->nTotal); + pFinished->Signal(); + return 0; + } + + case WM_IDW_INTERRUPT: + DestroyWindow(hwnd); + return 0; + } + return DefWindowProc(hwnd, uMsg, wParam, lParam); +} +//------------------------------------------------------------------------------ +void IdwThread::MapChars(LPWSTR lpszTarget, LPCWSTR lpszSource, + int nMaxLength) +{ + int len = (int)wcslen(lpszSource); + if ((nMaxLength > 0) && (len > nMaxLength)) + len = nMaxLength; + lpszTarget[len] = 0; + for (int i = 0; i < len; ++i) + { + wchar_t ch = lpszSource[i]; + lpszTarget[i] = MapChar(ch); + } +} +//------------------------------------------------------------------------------ +#define IN_RANGE(ch, s, e) ((ch >= s) && (ch <= e)) +#define IS(ch, c) (ch == c) +wchar_t IdwThread::MapChar(wchar_t ch) +{ + if (IN_RANGE(ch, 0x0020, 0x005B) + || IN_RANGE(ch, 0x005D, 0x007D) + || IS(ch, 0x0401) + || IS(ch, 0x0404) + || IN_RANGE(ch, 0x0406, 0x0407) + || IN_RANGE(ch, 0x0410, 0x044F) + || IS(ch, 0x0451) + || IS(ch, 0x0454) + || IN_RANGE(ch, 0x0456, 0x0457) + || IN_RANGE(ch, 0x0490, 0x0491)) + return ch; + + switch (ch) + { + case 0x5C: + return 0x8C; + case 0x7E: + return 0x8E; + case 0x7F: + return 0x20; + case 0xA2: + return 0xEC; + case 0xA3: + return 0x92; + case 0xA5: + return 0x5C; + case 0xA6: + return 0x98; + case 0xA7: + return 0x8F; + case 0xB0: + return 0xDF; + case 0xB5: + return 0xE4; + case 0xC2: + return 0x82; + case 0xC4: + return 0x80; + case 0xC5: + return 0x81; + case 0xC6: + return 0x90; + case 0xC7: + return 0x99; + case 0xD1: + return 0xEE; + case 0xD6: + return 0x86; + case 0xD8: + return 0x88; + case 0xDC: + return 0x8A; + case 0xDE: + return 0xF0; + case 0xDF: + return 0xE2; + case 0xE1: + return 0x83; + case 0xE4: + return 0xE1; + case 0xE5: + return 0x84; + case 0xE7: + return 0x99; + case 0xF1: + return 0xD1; + case 0xF6: + return 0x87; + case 0xF7: + return 0xFD; + case 0xF8: + return 0x89; + case 0xFC: + return 0x8B; + case 0xFE: + return 0xF0; + default: + return L'#'; + } +} +//------------------------------------------------------------------------------ diff -r 000000000000 -r 523a7dc3469f IdwThread.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/IdwThread.h Sun Mar 16 09:11:39 2014 +0100 @@ -0,0 +1,63 @@ +//------------------------------------------------------------------------------ +#ifndef IDWTHREAD_H_INCLUDED +#define IDWTHREAD_H_INCLUDED +//------------------------------------------------------------------------------ +#include +#include "Thread.h" +#include "Event.h" +#include "Mutex.h" +#include "iMONDisplayDefines.h" +#include "iMONDisplayWrapper.h" +//------------------------------------------------------------------------------ +class IdwThread : public Thread +{ +public: + IdwThread(HINSTANCE hInstance); + virtual ~IdwThread(); + +private: + IdwThread(const IdwThread& other) {} + IdwThread& operator=(const IdwThread& other) { return *this; } + +public: + virtual void Interrupt(); + DSPResult Init(IDW_INITRESULT* pInitResult); + DSPResult Uninit(); + DSPResult IsInited(); + DSPResult IsPluginModeEnabled(); + DSPResult SetVfdText(LPCWSTR lpszLine1, LPCWSTR lpszLine2); + DSPResult SetVfdEqData(PDSPEQDATA pEqData); + DSPResult SetLcdText(LPCWSTR lpszText); + DSPResult SetLcdEqData(PDSPEQDATA pEqDataL, PDSPEQDATA pEqDataR); + DSPResult SetLcdAllIcons(BOOL bOn); + DSPResult SetLcdOrangeIcon(BYTE btIconData1, BYTE btIconData2); + DSPResult SetLcdMediaTypeIcon(BYTE btIconData); + DSPResult SetLcdSpeakerIcon(BYTE btIconData1, BYTE btIconData2); + DSPResult SetLcdVideoCodecIcon(BYTE btIconData); + DSPResult SetLcdAudioCodecIcon(BYTE btIconData); + DSPResult SetLcdAspectRatioIcon(BYTE btIconData); + DSPResult SetLcdEtcIcon(BYTE btIconData); + DSPResult SetLcdProgress(int nCurPos, int nTotal); + +protected: + virtual void Run(); + +private: + bool RegisterClass(); + bool CreateMessageWindow(); + void AllowImonMessages(); + bool WaitForWindow(); + static LRESULT CALLBACK WndProc( + HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam); + static void MapChars( + LPWSTR lpszTarget, LPCWSTR lpszSource, int nMaxLength); + static wchar_t MapChar(wchar_t ch); + +private: + HINSTANCE m_hInstance; + HWND m_hWnd; + Event m_eventWindowCreationDone; +}; +//------------------------------------------------------------------------------ +#endif +//------------------------------------------------------------------------------ diff -r 000000000000 -r 523a7dc3469f Mutex.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Mutex.cpp Sun Mar 16 09:11:39 2014 +0100 @@ -0,0 +1,24 @@ +//------------------------------------------------------------------------------ +#include "Mutex.h" +//------------------------------------------------------------------------------ +Mutex::Mutex() +{ + m_hMutex = CreateMutex(NULL, FALSE, NULL); +} +//------------------------------------------------------------------------------ +Mutex::~Mutex() +{ + if (m_hMutex) + CloseHandle(m_hMutex); +} +//------------------------------------------------------------------------------ +void Mutex::Request() const +{ + WaitForSingleObject(m_hMutex, INFINITE); +} +//------------------------------------------------------------------------------ +void Mutex::Release() const +{ + ReleaseMutex(m_hMutex); +} +//------------------------------------------------------------------------------ diff -r 000000000000 -r 523a7dc3469f Mutex.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Mutex.h Sun Mar 16 09:11:39 2014 +0100 @@ -0,0 +1,26 @@ +//------------------------------------------------------------------------------ +#ifndef MUTEX_H_INCLUDED +#define MUTEX_H_INCLUDED +//------------------------------------------------------------------------------ +#include +//------------------------------------------------------------------------------ +class Mutex +{ +public: + Mutex(); + virtual ~Mutex(); + +private: + Mutex(const Mutex& other) {} + Mutex& operator=(const Mutex& other) { return *this; } + +public: + void Request() const; + void Release() const; + +private: + HANDLE m_hMutex; +}; +//------------------------------------------------------------------------------ +#endif +//------------------------------------------------------------------------------ diff -r 000000000000 -r 523a7dc3469f Thread.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Thread.cpp Sun Mar 16 09:11:39 2014 +0100 @@ -0,0 +1,41 @@ +//------------------------------------------------------------------------------ +#include "Thread.h" +//------------------------------------------------------------------------------ +Thread::Thread() : m_hThread(NULL), m_dwThreadId(0) +{ +} +//------------------------------------------------------------------------------ +Thread::~Thread() +{ + if (m_hThread != NULL) + { + TerminateThread(m_hThread, -1); + m_hThread = NULL; + } +} +//------------------------------------------------------------------------------ +void Thread::Start() +{ + if (m_hThread != NULL) + return; + m_hThread = CreateThread( + NULL, + 0, + Thread::ThreadProc, + this, + 0, + &m_dwThreadId); +} +//------------------------------------------------------------------------------ +void Thread::Join() const +{ + WaitForSingleObject(m_hThread, INFINITE); +} +//------------------------------------------------------------------------------ +DWORD WINAPI Thread::ThreadProc(LPVOID lpParam) +{ + Thread* pThread = (Thread*)lpParam; + pThread->Run(); + return 0; +} +//------------------------------------------------------------------------------ diff -r 000000000000 -r 523a7dc3469f Thread.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Thread.h Sun Mar 16 09:11:39 2014 +0100 @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +#ifndef THREAD_H_INCLUDED +#define THREAD_H_INCLUDED +//------------------------------------------------------------------------------ +#include +//------------------------------------------------------------------------------ +class Thread +{ +protected: + Thread(); + virtual ~Thread(); + +private: + Thread(const Thread& other) {} + Thread& operator=(const Thread& other) { *this; } + +public: + void Start(); + virtual void Interrupt() = 0; + void Join() const; + +protected: + virtual void Run() = 0; + +private: + static DWORD WINAPI ThreadProc(LPVOID lpParam); + +private: + HANDLE m_hThread; + DWORD m_dwThreadId; +}; +//------------------------------------------------------------------------------ +#endif +//------------------------------------------------------------------------------ diff -r 000000000000 -r 523a7dc3469f iMONDisplay.lib Binary file iMONDisplay.lib has changed diff -r 000000000000 -r 523a7dc3469f iMONDisplayAPI.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/iMONDisplayAPI.h Sun Mar 16 09:11:39 2014 +0100 @@ -0,0 +1,163 @@ +#ifndef __IMON_DISPLAY_API_H__ +#define __IMON_DISPLAY_API_H__ + +//////////////////////////////////// +// includes +/** iMONDisplayDefines.h +This header file defines several enumerations. Open this file and check the definition and usage of enumerations and structures*/ +#include +#include "iMONDisplayDefines.h" + +#ifdef IMON_DISPLAY_API_EXPORT +#define IMONDSPAPI __declspec(dllexport) +#else +#define IMONDSPAPI __declspec(dllimport) +#endif + +#ifdef __cplusplus +extern "C" +{ +#endif //__cplusplus + + ///////////////////////////////////// + ///// Interfaces + /**DSPResult IMON_Display_Init(HWND hwndNoti, UINT uMsgNotification) + @brief This function should be called to use other functions in iMON Display API.\n + When the caller application calls this function, API tries to request Display Plug-in Mode to iMON. + @param [in] hwndNoti API will send/post message to this handle. + @param [in] uMsgNotification API will send/post message to hwndNoti with this message identifier. + @return This function will return one of DSPResult enumeration value.\n + DSP_SUCCEEDED will be returned if succeeded. DSP_E_INVALIDARG or DSP_E_OUTOFMEMORY can be returned when error occurs.*/ + IMONDSPAPI DSPResult IMON_Display_Init(HWND hwndNoti, UINT uMsgNotification); + + /**DSPResult IMON_Display_Uninit() + @brief This function should be called when the caller application need not use this API any more.\n + If this function call is missed, iMON can't display other information.\n + @return This function will return one of DSPResult enumeration value.\n + DSP_SUCCEEDED will be returned if succeeded.*/ + IMONDSPAPI DSPResult IMON_Display_Uninit(); + + /**DSPResult IMON_Display_IsInited() + @brief This function can be used when the caller application wants to know if API is initialized.\n + @return This function will return one of DSPResult enumeration value.\n + If API is initialized, this call will return DSP_S_INITED. Otherwise DSP_S_NOT_INITED will be returned.*/ + IMONDSPAPI DSPResult IMON_Display_IsInited(); + + /**DSPResult IMON_Display_IsPluginModeEnabled() + @brief This function can be used when the caller application wants to know if API can control iMON display.\n + @return This function will return one of DSPResult enumeration value.\n + If API can control iMON display, this call will return DSP_S_IN_PLUGIN_MODE. Otherwise DSP_S_NOT_IN_PLUGIN_MODE will be returned.*/ + IMONDSPAPI DSPResult IMON_Display_IsPluginModeEnabled(); + + + /**DSPResult IMON_Display_SetVfdText(LPCTSTR lpsz1stLine, LPCTSTR lpsz2ndLine) + @brief This function can be used when the caller application wants to display text data on VFD module.\n + @param [in] lpsz1stLine This string data will be displayed on the 1st line of VFD module.\n + It doesn't support multi-byte character and if string data is longer than 16 characters, it displays 16 characters from the first.\n + @param [in] lpsz2ndLine This string data will be displayed on the 2nd line of VFD module.\n + It doesn't support multi-byte character and if string data is longer than 16 characters, it displays 16 characters from the first.\n + @return This function will return one of DSPResult enumeration value.\n + DSP_SUCCEEDED will be returned if succeeded. DSP_E_POINTER, DSP_E_NOT_INITED or DSP_E_FAIL can be returned if failed.*/ + IMONDSPAPI DSPResult IMON_Display_SetVfdText(LPCTSTR lpsz1stLine, LPCTSTR lpsz2ndLine); + + /**DSPResult IMON_Display_SetVfdEqData(PDSPEQDATA pEqData) + @brief This function can be used when the caller application wants to display equalizer data on VFD module.\n + @param [in] pEqData Pointer of DSPEQDATA structure. The caller application should fill this structure with the equalizer data for 16 bands.\n + @return This function will return one of DSPResult enumeration value.\n + DSP_SUCCEEDED will be returned if succeeded. DSP_E_POINTER, DSP_E_NOT_INITED or DSP_E_FAIL can be returned if failed.*/ + IMONDSPAPI DSPResult IMON_Display_SetVfdEqData(PDSPEQDATA pEqData); + + + /**DSPResult IMON_Display_SetLcdText(LPCTSTR lpszText) + @brief This function can be used when the caller application wants to display text data on LCD module.\n + @param [in] lpszText This string data will be displayed on the LCD module.\n + It supports multi-byte character and if string data is longer than display area, it will start to scroll.\n + When text scrolling is finished, API will notify it with DSPNotifyCode enumeration value, DSPNM_LCD_TEXT_SCROLL_DONE.\n + @return This function will return one of DSPResult enumeration value.\n + DSP_SUCCEEDED will be returned if succeeded. DSP_E_POINTER, DSP_E_NOT_INITED or DSP_E_FAIL can be returned if failed.*/ + IMONDSPAPI DSPResult IMON_Display_SetLcdText(LPCTSTR lpszText); + + /**DSPResult IMON_Display_SetLcdEqData(PDSPEQDATA pEqDataL, PDSPEQDATA pEqDataR) + @brief This function can be used when the caller application wants to display equalizer data on LCD module.\n + @param [in] pEqDataL Pointer of DSPEQDATA structure. This parameter represents equalizer data of left channel.\n + The caller application should fill this structure with the equalizer data of left channel for 16 bands.\n + @param [in] pEqDataR Pointer of DSPEQDATA structure. This parameter represents equalizer data of right channel.\n + The caller application should fill this structure with the equalizer data of right channel for 16 bands.\n + @return This function will return one of DSPResult enumeration value.\n + DSP_SUCCEEDED will be returned if succeeded. DSP_E_POINTER, DSP_E_NOT_INITED or DSP_E_FAIL can be returned if failed.*/ + IMONDSPAPI DSPResult IMON_Display_SetLcdEqData(PDSPEQDATA pEqDataL, PDSPEQDATA pEqDataR); + + + /**DSPResult IMON_Display_SetLcdAllIcons(BOOL bOn) + @brief This function can be used when the caller application wants to turn on/off all icons on LCD module.\n + @param [in] bOn If this value is TRUE, iMON will turn on all icons. Otherwise, iMON will turn off all icons.\n + @return This function will return one of DSPResult enumeration value.\n + DSP_SUCCEEDED will be returned if succeeded. DSP_E_NOT_INITED or DSP_E_FAIL can be returned if failed.*/ + IMONDSPAPI DSPResult IMON_Display_SetLcdAllIcons(BOOL bOn); + + /**DSPResult IMON_Display_SetLcdOrangeIcon(BYTE btIconData1, BYTE btIconData2) + @brief This function can be used when the caller application wants to turn on/off orange shaped disk icons on the upper left part of LCD module.\n + Disk icons consist of 8 pieces of orange and orange peel.\n + @param [in] btIconData1 Each bit represents one of icons shaped the piece of orange.\n + MSB is used for the piece placed on top and the remaining bits are for the piece placed in CCW from top.\n + @param [in] btIconData2 MSB represents the orange peel shaped icon. Other bits are not used.\n + @return This function will return one of DSPResult enumeration value.\n + DSP_SUCCEEDED will be returned if succeeded. DSP_E_NOT_INITED or DSP_E_FAIL can be returned if failed.*/ + IMONDSPAPI DSPResult IMON_Display_SetLcdOrangeIcon(BYTE btIconData1, BYTE btIconData2); + + /**DSPResult IMON_Display_SetLcdMediaTypeIcon(BYTE btIconData) + @brief This function can be used when the caller application wants to turn on/off media type icons on the upper part of LCD module.\n + @param [in] btIconData Each bit represents one of media type icons. From MSB each bit represents MUSIC, MOVIE, PHOTO, CD/DVD, TV, WEBCASTING and NEWS/WEATHER icon.\n + @return This function will return one of DSPResult enumeration value.\n + DSP_SUCCEEDED will be returned if succeeded. DSP_E_NOT_INITED or DSP_E_FAIL can be returned if failed.*/ + IMONDSPAPI DSPResult IMON_Display_SetLcdMediaTypeIcon(BYTE btIconData); + + /**DSPResult IMON_Display_SetLcdSpeakerIcon(BYTE btIconData1, BYTE btIconData2) + @brief This function can be used when the caller application wants to turn on/off speaker icons on the upper right part of LCD module.\n + @param [in] btIconData1 Each bit represents one of speaker icons.\nFrom MSB each bit represents L, C, R, SL, LFE, SR, RL and SPDIF icon. + @param [in] btIconData2 MSB represents RR icon. Other bits are not used.\n + @return This function will return one of DSPResult enumeration value.\n + DSP_SUCCEEDED will be returned if succeeded. DSP_E_NOT_INITED or DSP_E_FAIL can be returned if failed.*/ + IMONDSPAPI DSPResult IMON_Display_SetLcdSpeakerIcon(BYTE btIconData1, BYTE btIconData2); + + /**DSPResult IMON_Display_SetLcdVideoCodecIcon(BYTE btIconData) + @brief This function can be used when the caller application wants to turn on/off codec icons for video file on the lower part of LCD module.\n + @param [in] btIconData Each bit represents one of video codec icons. From MSB each bit represents MPG, DIVX, XVID, WMV, MPG, AC3, DTS and WMA icon.\n + @return This function will return one of DSPResult enumeration value.\n + DSP_SUCCEEDED will be returned if succeeded. DSP_E_NOT_INITED or DSP_E_FAIL can be returned if failed.*/ + IMONDSPAPI DSPResult IMON_Display_SetLcdVideoCodecIcon(BYTE btIconData); + + /**DSPResult IMON_Display_SetLcdAudioCodecIcon(BYTE btIconData) + @brief This function can be used when the caller application wants to turn on/off codec icons for audio file on the lower part of LCD module.\n + @param [in] btIconData Each bit represents one of audio codec icons. From MSB each bit represents MP3, OGG, WMA and WAV icon.\n + @return This function will return one of DSPResult enumeration value.\n + DSP_SUCCEEDED will be returned if succeeded. DSP_E_NOT_INITED or DSP_E_FAIL can be returned if failed.*/ + IMONDSPAPI DSPResult IMON_Display_SetLcdAudioCodecIcon(BYTE btIconData); + + /**DSPResult IMON_Display_SetLcdAspectRatioIcon(BYTE btIconData) + @brief This function can be used when the caller application wants to turn on/off aspect ratio icons on the lower right part of LCD module.\n + @param [in] btIconData Each bit represents one of aspect ratio icons. From MSB each bit represents SRC, FIT, TV, HDTV, SCR1 and SCR2 icon.\n + @return This function will return one of DSPResult enumeration value.\n + DSP_SUCCEEDED will be returned if succeeded. DSP_E_NOT_INITED or DSP_E_FAIL can be returned if failed.*/ + IMONDSPAPI DSPResult IMON_Display_SetLcdAspectRatioIcon(BYTE btIconData); + + /**DSPResult IMON_Display_SetLcdEtcIcon(BYTE btIconData) + @brief This function can be used when the caller application wants to turn on/off icons on the lower left part of LCD module.\n + @param [in] btIconData Each bit represents icon. From MSB each bit represents REPEAT, SHUFFLE, ALARM, REC, VOL and TIME icon.\n + @return This function will return one of DSPResult enumeration value.\n + DSP_SUCCEEDED will be returned if succeeded. DSP_E_NOT_INITED or DSP_E_FAIL can be returned if failed.*/ + IMONDSPAPI DSPResult IMON_Display_SetLcdEtcIcon(BYTE btIconData); + + /**DSPResult IMON_Display_SetLcdProgress(int nCurPos, int nTotal) + @brief This function can be used when the caller application wants to display progress bar on the upper and lower left part of text area of LCD module.\n + @param [in] nCurPos It represents the current position of progress bar.\n + @param [in] nTotal It represents the total length of progress bar.\n + @return This function will return one of DSPResult enumeration value.\n + DSP_SUCCEEDED will be returned if succeeded. DSP_E_NOT_INITED or DSP_E_FAIL can be returned if failed.*/ + IMONDSPAPI DSPResult IMON_Display_SetLcdProgress(int nCurPos, int nTotal); + +#ifdef __cplusplus +} +#endif //__cplusplus + +#endif //__IMON_DISPLAY_API_H__ \ No newline at end of file diff -r 000000000000 -r 523a7dc3469f iMONDisplayDefines.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/iMONDisplayDefines.h Sun Mar 16 09:11:39 2014 +0100 @@ -0,0 +1,114 @@ +#ifndef __IMON_DISPLAY_API_DEFINES_H__ +#define __IMON_DISPLAY_API_DEFINES_H__ + +////////////////////////////////////////////////// +////////////////////////////////////////////////// +// Enumerations + +/**DSPResult +@brief These enumeration values represent the returned result for iMON Display API function calls.\n + All iMON Display API function calls return one of this result values.\n + For meaning of each result, refer the comment of each line below*/ +enum DSPResult +{ + DSP_SUCCEEDED = 0, //// Function Call Succeeded Without Error + DSP_E_FAIL, //// Unspecified Failure + DSP_E_OUTOFMEMORY, //// Failed to Allocate Necessary Memory + DSP_E_INVALIDARG, //// One or More Arguments Are Not Valid + DSP_E_NOT_INITED, //// API is Not Initialized + DSP_E_POINTER, //// Pointer is Not Valid + + DSP_S_INITED = 0x1000, //// API is Initialized + DSP_S_NOT_INITED, //// API is Not Initialized + DSP_S_IN_PLUGIN_MODE, //// API Can Control iMON Display (Display Plug-in Mode) + DSP_S_NOT_IN_PLUGIN_MODE, //// API Can't Control iMON Display +}; + + +/**DSPNInitResult +@brief These enumeration values represent the result status for requesting Display Plug-in Mode to iMON.\n + iMON Display API notifies one of this result values to the caller application after requesting Display Plug-in Mode to iMON.\n + For more information, refer the comment of each line below*/ +enum DSPNInitResult +{ + DSPN_SUCCEEDED = 0, //// Display Plug-in Mode is Initialized Successfully + DSPN_ERR_IN_USED = 0x0100, //// Display Plug-in is Already Used by Other Application + DSPN_ERR_HW_DISCONNECTED, //// iMON HW is Not Connected + DSPN_ERR_NOT_SUPPORTED_HW, //// The Connected iMON HW doesn't Support Display Plug-in + DSPN_ERR_PLUGIN_DISABLED, //// Display Plug-in Mode Option is Disabled + DSPN_ERR_IMON_NO_REPLY, //// The Latest iMON is Not Installed or iMON Not Running + DSPN_ERR_UNKNOWN = 0x0200, //// Unknown Failure +}; + + +/**DSPType +@brief These enumeration values represent display type.\n + Currently iMON Display API supports VFD and LCD products.*/ +enum DSPType +{ + DSPN_DSP_NONE = 0, + DSPN_DSP_VFD = 0x01, //// VFD products + DSPN_DSP_LCD = 0x02, //// LCD products +}; + + +/**DSPNotifyCode +@brief These enumeration values represent the notification codes.\n + iMON Display API will send or post message to the caller application.\n + The caller application should assign the message and the winodw handle to receivce message with IMON_Display_Init fucntion.\n + These enumeration values are used with WPARAM parameter of the message.\n + For more information, see the explanation of each notification code below*/ +enum DSPNotifyCode +{ + /**DSPNM_PLUGIN_SUCCEED + @brief When API succeeds to get the control for the display, API will post caller-specified message with DSPNM_PLUGIN_SUCCEED as WPARAM parameter.\n + LPARAM represents DSPType. This value can be 0x01 (VFD), 0x02 (LCD) or 0x03 (VFD+LCD).*/ + DSPNM_PLUGIN_SUCCEED = 0, + + /**DSPNM_PLUGIN_FAILED + @brief When API fails to get the control for the display, API will post caller-specified message with DSPNM_PLUGIN_FAILED as WPARAM parameter.\n + LPARAM represents error code with DSPNResult.*/ + DSPNM_PLUGIN_FAILED, + + /**DSPNM_IMON_RESTARTED + @brief When iMON starts, API will post caller-specified message with DSPNM_IMON_RESTARTED as WPARAM parameter.\n + LPARAM represents DSPType. This value can be 0 (No Display), 0x01 (VFD), 0x02 (LCD) or 0x03 (VFD+LCD).*/ + DSPNM_IMON_RESTARTED, + + /**DSPNM_IMON_CLOSED + @brief When iMON closed, API will post caller-specified message with DSPNM_IMON_CLOSED as WPARAM parameter.\n + LPARAM is not used.*/ + DSPNM_IMON_CLOSED, + + /**DSPNM_HW_CONNECTED + @brief When iMON HW newly connected, API will post caller-specified message with DSPNM_HW_CONNECTED as WPARAM parameter.\n + LPARAM represents DSPType. This value can be 0 (No Display), 0x01 (VFD), 0x02 (LCD) or 0x03 (VFD+LCD).*/ + DSPNM_HW_CONNECTED, + + /**DSPNM_HW_DISCONNECTED + @brief When iMON HW disconnected, API will post caller-specified message with DSPNM_HW_DISCONNECTED as WPARAM parameter.\n + LPARAM is DSPNResult value, DSPN_ERR_HW_DISCONNECTED.*/ + DSPNM_HW_DISCONNECTED, + + + /**DSPNM_LCD_TEXT_SCROLL_DONE + @brief When iMON LCD finishes scrolling Text, API will post caller-specified message with DSPNM_LCD_TEXT_SCROLL_DONE as WPARAM parameter.\n + The caller application may need to know when text scroll is finished, for sending next text.\n + LPARAM is not used.*/ + DSPNM_LCD_TEXT_SCROLL_DONE = 0x1000, +}; + +////////////////////////////////////////////////// +////////////////////////////////////////////////// +// Structure + +/**DspEqData +@brief This structure contains Equalizer data for 16 bands. +@param BandData It represents Equalizer data for 16 bands. Its range is from 0 to 100.*/ +typedef struct DspEqData +{ + int BandData[16]; + +} DSPEQDATA, *PDSPEQDATA; + +#endif //__IMON_DISPLAY_API_DEFINES_H__ \ No newline at end of file diff -r 000000000000 -r 523a7dc3469f iMONDisplayWrapper.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/iMONDisplayWrapper.cpp Sun Mar 16 09:11:39 2014 +0100 @@ -0,0 +1,126 @@ +//------------------------------------------------------------------------------ +#include +#include "iMONDisplayWrapper.h" +#include "IdwApi.h" +//------------------------------------------------------------------------------ +IdwApi* pIdwApi = NULL; +//------------------------------------------------------------------------------ +BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) +{ + switch (fdwReason) + { + case DLL_PROCESS_ATTACH: + pIdwApi = new IdwApi(hinstDLL); + break; + case DLL_PROCESS_DETACH: + delete pIdwApi; + break; + } + return TRUE; +} +//------------------------------------------------------------------------------ +DSPResult IDW_Init(IDW_INITRESULT* pInitResult) +{ + return pIdwApi->Init(pInitResult); +} +//------------------------------------------------------------------------------ +DSPResult IDW_Uninit() +{ + return pIdwApi->Uninit(); +} +//------------------------------------------------------------------------------ +DSPResult IDW_IsInited() +{ + return pIdwApi->IsInited(); +} +//------------------------------------------------------------------------------ +DSPResult IDW_IsPluginModeEnabled() +{ + return pIdwApi->IsPluginModeEnabled(); +} +//------------------------------------------------------------------------------ +DSPResult IDW_SetVfdText(LPCWSTR lpszLine1, LPCWSTR lpszLine2) +{ +/* +DSPEQDATA eqData; +eqData.BandData[0] = 100; +eqData.BandData[1] = 90; +eqData.BandData[2] = 80; +eqData.BandData[3] = 70; +eqData.BandData[4] = 60; +eqData.BandData[5] = 50; +eqData.BandData[6] = 40; +eqData.BandData[7] = 30; +eqData.BandData[8] = 30; +eqData.BandData[9] = 40; +eqData.BandData[10] = 50; +eqData.BandData[11] = 60; +eqData.BandData[12] = 70; +eqData.BandData[13] = 80; +eqData.BandData[14] = 90; +eqData.BandData[15] = 100; +return pIdwApi->SetVfdEqData(&eqData); +*/ + return pIdwApi->SetVfdText(lpszLine1, lpszLine2); +} +//------------------------------------------------------------------------------ +DSPResult IDW_SetVfdEqData(PDSPEQDATA pEqData) +{ + return pIdwApi->SetVfdEqData(pEqData); +} +//------------------------------------------------------------------------------ +DSPResult IDW_SetLcdText(LPCWSTR lpszLine1) +{ + return pIdwApi->SetLcdText(lpszLine1); +} +//------------------------------------------------------------------------------ +DSPResult IDW_SetLcdEqData(PDSPEQDATA pEqDataL, PDSPEQDATA pEqDataR) +{ + return pIdwApi->SetLcdEqData(pEqDataL, pEqDataR); +} +//------------------------------------------------------------------------------ +DSPResult IDW_SetLcdAllIcons(BOOL bOn) +{ + return pIdwApi->SetLcdAllIcons(bOn); +} +//------------------------------------------------------------------------------ +DSPResult IDW_SetLcdOrangeIcon(BYTE btIconData1, BYTE btIconData2) +{ + return pIdwApi->SetLcdOrangeIcon(btIconData1, btIconData2); +} +//------------------------------------------------------------------------------ +DSPResult IDW_SetLcdMediaTypeIcon(BYTE btIconData) +{ + return pIdwApi->SetLcdMediaTypeIcon(btIconData); +} +//------------------------------------------------------------------------------ +DSPResult IDW_SetLcdSpeakerIcon(BYTE btIconData1, BYTE btIconData2) +{ + return pIdwApi->SetLcdSpeakerIcon(btIconData1, btIconData2); +} +//------------------------------------------------------------------------------ +DSPResult IDW_SetLcdVideoCodecIcon(BYTE btIconData) +{ + return pIdwApi->SetLcdVideoCodecIcon(btIconData); +} +//------------------------------------------------------------------------------ +DSPResult IDW_SetLcdAudioCodecIcon(BYTE btIconData) +{ + return pIdwApi->SetLcdAudioCodecIcon(btIconData); +} +//------------------------------------------------------------------------------ +DSPResult IDW_SetLcdAspectRatioIcon(BYTE btIconData) +{ + return pIdwApi->SetLcdAspectRatioIcon(btIconData); +} +//------------------------------------------------------------------------------ +DSPResult IDW_SetLcdEtcIcon(BYTE btIconData) +{ + return pIdwApi->SetLcdEtcIcon(btIconData); +} +//------------------------------------------------------------------------------ +DSPResult IDW_SetLcdProgress(int nCurPos, int nTotal) +{ + return pIdwApi->SetLcdProgress(nCurPos, nTotal); +} +//------------------------------------------------------------------------------ \ No newline at end of file diff -r 000000000000 -r 523a7dc3469f iMONDisplayWrapper.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/iMONDisplayWrapper.h Sun Mar 16 09:11:39 2014 +0100 @@ -0,0 +1,48 @@ +//------------------------------------------------------------------------------ +#ifndef IMONDISPLAYWRAPPER_H_INCLUDED +#define IMONDISPLAYWRAPPER_H_INCLUDED +//------------------------------------------------------------------------------ +#include "iMONDisplayDefines.h" +#include +//------------------------------------------------------------------------------ +#ifdef IMONDISPLAYWRAPPER_EXPORTS +#define IMONDSPWRAPPER __declspec(dllexport) +#else +#define IMONDSPWRAPPER __declspec(dllimport) +#endif +//------------------------------------------------------------------------------ +typedef struct _IDW_INITRESULT +{ + DSPNInitResult initResult; + DSPType dspType; +} IDW_INITRESULT; +//------------------------------------------------------------------------------ +#ifdef __cplusplus +extern "C" +{ +#endif +//------------------------------------------------------------------------------ +IMONDSPWRAPPER DSPResult IDW_Init(IDW_INITRESULT* pInitResult); +IMONDSPWRAPPER DSPResult IDW_Uninit(); +IMONDSPWRAPPER DSPResult IDW_IsInited(); +IMONDSPWRAPPER DSPResult IDW_IsPluginModeEnabled(); +IMONDSPWRAPPER DSPResult IDW_SetVfdText(LPCWSTR lpszLine1, LPCWSTR lpszLine2); +IMONDSPWRAPPER DSPResult IDW_SetVfdEqData(PDSPEQDATA pEqData); +IMONDSPWRAPPER DSPResult IDW_SetLcdText(LPCWSTR lpszLine1); +IMONDSPWRAPPER DSPResult IDW_SetLcdEqData(PDSPEQDATA pEqDataL, PDSPEQDATA pEqDataR); +IMONDSPWRAPPER DSPResult IDW_SetLcdAllIcons(BOOL bOn); +IMONDSPWRAPPER DSPResult IDW_SetLcdOrangeIcon(BYTE btIconData1, BYTE btIconData2); +IMONDSPWRAPPER DSPResult IDW_SetLcdMediaTypeIcon(BYTE btIconData); +IMONDSPWRAPPER DSPResult IDW_SetLcdSpeakerIcon(BYTE btIconData1, BYTE btIconData2); +IMONDSPWRAPPER DSPResult IDW_SetLcdVideoCodecIcon(BYTE btIconData); +IMONDSPWRAPPER DSPResult IDW_SetLcdAudioCodecIcon(BYTE btIconData); +IMONDSPWRAPPER DSPResult IDW_SetLcdAspectRatioIcon(BYTE btIconData); +IMONDSPWRAPPER DSPResult IDW_SetLcdEtcIcon(BYTE btIconData); +IMONDSPWRAPPER DSPResult IDW_SetLcdProgress(int nCurPos, int nTotal); +//------------------------------------------------------------------------------ +#ifdef __cplusplus +} +#endif +//------------------------------------------------------------------------------ +#endif +//------------------------------------------------------------------------------ diff -r 000000000000 -r 523a7dc3469f iMONDisplayWrapper.rc --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/iMONDisplayWrapper.rc Sun Mar 16 09:11:39 2014 +0100 @@ -0,0 +1,103 @@ +// Microsoft Visual C++ generated resource script. +// +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "afxres.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// German (Germany) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_DEU) +#ifdef _WIN32 +LANGUAGE LANG_GERMAN, SUBLANG_GERMAN +#pragma code_page(1252) +#endif //_WIN32 + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "resource.h\0" +END + +2 TEXTINCLUDE +BEGIN + "#include ""afxres.h""\r\n" + "\0" +END + +3 TEXTINCLUDE +BEGIN + "\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +VS_VERSION_INFO VERSIONINFO + FILEVERSION 0,2,3,1 + PRODUCTVERSION 0,2,3,1 + FILEFLAGSMASK 0x17L +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x4L + FILETYPE 0x2L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "000004b0" + BEGIN + VALUE "Comments", "Use with iMON Manager 8.01.0419 or later" + VALUE "CompanyName", "Team MediaPortal" + VALUE "FileDescription", "iMONDisplayAPI Wrapper" + VALUE "FileVersion", "0, 2, 3, 1" + VALUE "InternalName", "iMONDisp" + VALUE "LegalCopyright", "Copyright (C) 2011 Team MediaPortal" + VALUE "OriginalFilename", "iMONDisplayWrapper.dll" + VALUE "ProductName", "iMONDisplayAPI Wrapper" + VALUE "ProductVersion", "0, 2, 3, 1" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x0, 1200 + END +END + +#endif // German (Germany) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff -r 000000000000 -r 523a7dc3469f iMONDisplayWrapper.sln --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/iMONDisplayWrapper.sln Sun Mar 16 09:11:39 2014 +0100 @@ -0,0 +1,20 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2012 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iMONDisplayWrapper", "iMONDisplayWrapper.vcxproj", "{E1A2655B-02A2-437A-8270-4AD81DDDC502}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Release|Win32 = Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {E1A2655B-02A2-437A-8270-4AD81DDDC502}.Debug|Win32.ActiveCfg = Debug|Win32 + {E1A2655B-02A2-437A-8270-4AD81DDDC502}.Debug|Win32.Build.0 = Debug|Win32 + {E1A2655B-02A2-437A-8270-4AD81DDDC502}.Release|Win32.ActiveCfg = Release|Win32 + {E1A2655B-02A2-437A-8270-4AD81DDDC502}.Release|Win32.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff -r 000000000000 -r 523a7dc3469f iMONDisplayWrapper.vcxproj --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/iMONDisplayWrapper.vcxproj Sun Mar 16 09:11:39 2014 +0100 @@ -0,0 +1,116 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {E1A2655B-02A2-437A-8270-4AD81DDDC502} + iMONDisplayWrapper + Win32Proj + + + + DynamicLibrary + v110 + Unicode + true + + + DynamicLibrary + v110 + Unicode + + + + + + + + + + + + + <_ProjectFileVersion>11.0.61030.0 + + + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + true + + + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + false + + + + Disabled + WIN32;_DEBUG;_WINDOWS;_USRDLL;IMONDISPLAYWRAPPER_EXPORTS;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + Level3 + EditAndContinue + + + iMONDisplay.lib;%(AdditionalDependencies) + true + Windows + MachineX86 + + + + + MaxSpeed + true + WIN32;NDEBUG;_WINDOWS;_USRDLL;IMONDISPLAYWRAPPER_EXPORTS;%(PreprocessorDefinitions) + MultiThreaded + true + + Level3 + ProgramDatabase + + + iMONDisplay.lib;%(AdditionalDependencies) + true + Windows + true + true + MachineX86 + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff -r 000000000000 -r 523a7dc3469f iMONDisplayWrapper.vcxproj.filters --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/iMONDisplayWrapper.vcxproj.filters Sun Mar 16 09:11:39 2014 +0100 @@ -0,0 +1,71 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav + + + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + + + Resource Files + + + \ No newline at end of file diff -r 000000000000 -r 523a7dc3469f resource.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/resource.h Sun Mar 16 09:11:39 2014 +0100 @@ -0,0 +1,14 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Visual C++ generated include file. +// Used by iMONDisplayWrapper.rc + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 101 +#define _APS_NEXT_COMMAND_VALUE 40001 +#define _APS_NEXT_CONTROL_VALUE 1001 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif