void PickEntity(int x, int y) { float xf, yf, dxf, dyf; DeviceToNormalized(x, y, &xf, &yf); InverseViewingTransformation(&xf, &yf); DeviceToNormalized(x + PICK_DELTA, y + PICK_DELTA, &dxf, &dyf); InverseViewingTransformation(&dxf, &dyf); dxf = abs(dxf - xf); dyf = abs(dyf - yf); if (selected_entity != entities.end()) { (*selected_entity)->SetUnactive(); } std::list<Entity*>::iterator it; for (it = entities.begin(); it != entities.end(); it++) { if ((*it)->Pick(xf, yf, sqrt(dxf*dyf))) { (*it)->SetActive(); break; } } selected_entity = it; ReDrawAll(); }
void DeleteEntity() { if (selected_entity != entities.end()) { delete *selected_entity; entities.erase(selected_entity); selected_entity = entities.end(); ReDrawAll(); } }
void MouseUpZoom() { DrawZoomRectangle(); float xf0, yf0, xf1, yf1; GetWorldCoordinates(p0_x, p0_y, &xf0, &yf0); GetWorldCoordinates(p1_x, p1_y, &xf1, &yf1); float aux_x = xf0 + xf1; float aux_y = yf0 + yf1; xf0 = min(xf0, xf1); yf0 = min(yf0, yf1); xf1 = aux_x - xf0; yf1 = aux_y - yf0; SetWindow(xf0, xf1, yf0, yf1); ReDrawAll(); mouse_action = NO_ACTION; }
void RMouseDownZoom() { SetWindow(0.0f, (float)x_end, 0.0f, (float)y_end); ReDrawAll(); mouse_action = NO_ACTION; }
DJ_Void EvtHandler(DJ_U32 esrParam) { Acs_Evt_t * pAcsEvt = NULL; Acs_Dev_List_Head_t * pAcsDevList = NULL; pAcsEvt = (Acs_Evt_t *) esrParam; DispEventInfo ( pAcsEvt ); switch ( pAcsEvt->m_s32EventType ) { case XMS_EVT_QUERY_DEVICE: if ( IsSysMod(pAcsEvt->m_DeviceID.m_s8ModuleID) ) { pAcsDevList = ( Acs_Dev_List_Head_t *) FetchEventData(pAcsEvt); //收到设备变化的事件,增加/调整 该设备资源 AddDeviceRes ( pAcsDevList ); } break; case XMS_EVT_QUERY_ONE_DSP_END: if ( IsSysMod(pAcsEvt->m_DeviceID.m_s8ModuleID) ) { AllDeviceRes[pAcsEvt->m_DeviceID.m_s8ModuleID].lFlag = 1; // 该DSP可以用了 OpenAllDevice_Dsp ( pAcsEvt->m_DeviceID.m_s8ModuleID ); RefreshMapTable ( ); ReDrawAll (); } break; case XMS_EVT_QUERY_DEVICE_END: // 获取设备列表结束 break; case XMS_EVT_OPEN_DEVICE: OpenDeviceOK ( &pAcsEvt->m_DeviceID ); break; case XMS_EVT_DEVICESTATE: HandleDevState ( pAcsEvt ); break; case XMS_EVT_UNIFAILURE: // must handle this event in your real System break; default: if ( pAcsEvt->m_DeviceID.m_s16DeviceMain == XMS_DEVMAIN_INTERFACE_CH ) { TrunkWork ( &M_OneTrunk(pAcsEvt->m_DeviceID), pAcsEvt ); } else if ( pAcsEvt->m_DeviceID.m_s16DeviceMain == XMS_DEVMAIN_VOICE ) { DeviceID_t *pDevID; pDevID = &M_OneVoice(pAcsEvt->m_DeviceID).UsedDevID; if ( pDevID->m_s16DeviceMain == XMS_DEVMAIN_INTERFACE_CH ) { TrunkWork ( &M_OneTrunk(*pDevID), pAcsEvt ); } } break; } }