//============================================================================== STDMETHODIMP CVMain::GetEventLog(SAFEARRAY** ppsaLogID, SAFEARRAY** ppsaTimeStampMs){ SAFEARRAY *psaMtx; int * piData; double * pdData; * ppsaLogID =NULL; * ppsaTimeStampMs = NULL; if( g_MakeSafeArray( g_nLogEvents, &psaMtx, &piData ) ){ return g_ErrorToHresult(1); } memcpy( piData, g_aiLogIDs, sizeof(int) * g_nLogEvents); SafeArrayUnaccessData( psaMtx ); * ppsaLogID = psaMtx; if( g_MakeSafeArray( g_nLogEvents, &psaMtx, &pdData ) ){ return g_ErrorToHresult(1); } memcpy( pdData, g_adEventTimes, sizeof(double) * g_nLogEvents); SafeArrayUnaccessData( psaMtx ); * ppsaTimeStampMs = psaMtx; return S_OK; }
//============================================================================== STDMETHODIMP CVMouse::GetXY(SAFEARRAY ** ppsaMtx){ SAFEARRAY *psaMtx; int * piData; * ppsaMtx = NULL; if( g_MakeSafeArray( 2, &psaMtx, &piData ) ){ return g_ErrorToHresult(1); } piData[0] = g_tMouseXY.x; piData[1] = g_tMouseXY.y; SafeArrayUnaccessData( psaMtx ); * ppsaMtx = psaMtx; return S_OK; }
//============================================================================== STDMETHODIMP CVMain::GetTransformMatrix(SAFEARRAY ** ppsaMtx){ SAFEARRAY *psaMtx; double * pData; // Output 6x2 array of doubles if( g_MakeSafeArray( TRANSF_MTX_N_2, TRANSF_MTX_N_1, &psaMtx, &pData ) ){ return g_ErrorToHresult(1); } memcpy( pData, g_adTransfMtx, sizeof(g_adTransfMtx)); SafeArrayUnaccessData( psaMtx ); * ppsaMtx = psaMtx; return S_OK; }
//============================================================================== STDMETHODIMP CVMouse::GetUpEvents(SAFEARRAY ** ppsaMtx){ SAFEARRAY *psaMtx; int * piData; * ppsaMtx = NULL; if( g_MakeSafeArray( 3, &psaMtx, &piData ) ){ return g_ErrorToHresult(1); } piData[0] = g_aiMouseEvents[MOUSE_LEFT][MOUSE_UP]; piData[1] = g_aiMouseEvents[MOUSE_MIDDLE][MOUSE_UP]; piData[2] = g_aiMouseEvents[MOUSE_RIGHT][MOUSE_UP]; SafeArrayUnaccessData( psaMtx ); * ppsaMtx = psaMtx; return S_OK; }
//============================================================================== STDMETHODIMP CVMouse::GetAllEvents(SAFEARRAY ** ppsaMtx){ SAFEARRAY *psaMtx; int * piData; int iSize; * ppsaMtx = NULL; if( g_MakeSafeArray( 3, 3, &psaMtx, &piData ) ){ return g_ErrorToHresult(1); } iSize = sizeof(g_aiMouseEvents); memcpy( piData, g_aiMouseEvents, sizeof(g_aiMouseEvents)); SafeArrayUnaccessData( psaMtx ); * ppsaMtx = psaMtx; return S_OK; }