void ExecPrinter::VerbosePrint(IChessExecution* exec){ allExecs << "==========Exec " << numExecs << "========================\n"; allExecs << *exec << std::endl; //allExecs << "Strategy States \n"; //for(size_t sid = 0; sid <= exec->NumTransitions(); sid++){ // allExecs << "[" << sid << "]" << Chess::GetStrategy()->DebugState(sid) << "\n"; //} allExecs.flush(); if(false){ size_t n = 0; if(edges.size() == 0){ edges.push_back(stdext::hash_map<Task, size_t>()); OnNewNode(n, 0, exec); } for(size_t i = 0; i<exec->NumTransitions(); i++){ ChessTransition curr = exec->Transition(i); if(edges[n].find(curr.tid) == edges[n].end()){ size_t s = edges.size(); edges.push_back(stdext::hash_map<Task, size_t>()); OnNewNode(s, i+1, exec); edges[n][curr.tid] = s; OnNewEdge(n,s,i,exec); } n = edges[n][curr.tid]; } fileStream << n << "->\"ex"<<numExecs << "\";" << std::endl; fileStream.flush(); } }
BOOL CRVTrackerDrawPoly::OnUpdate(const CUIEvent &cEvent) { //see if they want to finish drawing the polygon if(m_bFinishDrawingPoly) { // Make sure we don't cancel when the focus goes away m_bAllowCancel = FALSE; // Create the brush m_pView->FinishDrawingPoly(); m_bAllowCancel = TRUE; //we are no longer drawing a poly, so we can start another one m_bFinishDrawingPoly = FALSE; return FALSE; } BOOL bCancel = FALSE; // Handle any events that happen if (m_pUndoTracker) { BOOL bOldActive = m_pUndoTracker->GetActive(); m_pUndoTracker->ProcessEvent(cEvent); if((bOldActive == FALSE) && m_pUndoTracker->GetActive()) bCancel = OnUndo(); } if (m_pNewVertexTracker) { BOOL bOldActive = m_pNewVertexTracker->GetActive(); m_pNewVertexTracker->ProcessEvent(cEvent); if((bOldActive == FALSE) && m_pNewVertexTracker->GetActive()) bCancel = OnNewVertex(); } if (m_pSplitTracker) { BOOL bOldActive = m_pSplitTracker->GetActive(); m_pSplitTracker->ProcessEvent(cEvent); if((bOldActive == FALSE) && m_pSplitTracker->GetActive()) bCancel = OnSplit(); } if (m_pRotateTracker) { BOOL bOldActive = m_pRotateTracker->GetActive(); m_pRotateTracker->ProcessEvent(cEvent); if((bOldActive == FALSE) && m_pRotateTracker->GetActive()) bCancel = OnRotate(); } if (m_pInsertEdgeTracker) { BOOL bOldActive = m_pInsertEdgeTracker->GetActive(); m_pInsertEdgeTracker->ProcessEvent(cEvent); if((bOldActive == FALSE) && m_pInsertEdgeTracker->GetActive()) bCancel = OnNewEdge(); } if(m_pVertSnapTracker) { m_pVertSnapTracker->ProcessEvent(cEvent); m_bVertSnap = m_pVertSnapTracker->GetActive(); } if(m_pCloseTracker) { BOOL bOldActive = m_pCloseTracker->GetActive(); m_pCloseTracker->ProcessEvent(cEvent); if((bOldActive == FALSE) && m_pCloseTracker->GetActive()) bCancel = ClosePoly(); } if (bCancel) // End the tracker return FALSE; // Only update everything else on idle events if (cEvent.GetType() != UIEVENT_NONE) return TRUE; // Don't update if it hasn't moved if (m_cCurPt == m_cLastPt) return TRUE; // Do the autoscroll of the window DoAutoScroll(); switch( m_pView->m_EditState ) { case EDIT_DRAWINGPOLY: { UpdateDrawPolyVertex(m_cCurPt); break; } } // Update the views... m_pView->GetDocument()->UpdateAllViews(m_pView); m_pView->DrawRect(); m_cLastPt = m_cCurPt; return TRUE; }