#include "StdAfx.h" /* #include "DrawUndoManager.h" namespace NAction { CUndoManager *m_pUndoManager = 0; CUndoManager *m_gMarkEditUndoManager = 0; CUndoManager *m_gTreeLayerUndoManager = 0; CDrawUndoManager* GetDrawUndoManager(void) { return (CDrawUndoManager*)GetUndoManager(); } void CDrawUndoManager::EnableMarkEditUndoManager(BOOL bEnable, void* pDoc) { if(bEnable) ::SetUndoManager(m_gMarkEditUndoManager); else { ::SetUndoManager(m_pUndoManager); if(pDoc) m_gMarkEditUndoManager->ClearTarget(pDoc); //if(m_gMarkEditUndoManager) // m_gMarkEditUndoManager->Clear(); } if(pDoc) m_gTreeLayerUndoManager->ClearTarget(pDoc); } CUndoManager* m_pBakActiveUndoManager=NULL; void CDrawUndoManager::EnableTreeLayerUndoManager(BOOL bEnable) { if(bEnable) { m_pBakActiveUndoManager = GetDrawUndoManager(); ::SetUndoManager(m_gTreeLayerUndoManager); } else if(m_pBakActiveUndoManager) { ::SetUndoManager(m_pBakActiveUndoManager); m_pBakActiveUndoManager=NULL; } else ::SetUndoManager(m_pUndoManager); } void CDrawUndoManager::RegisterDoc(void* pDoc, long capacity) { m_gMarkEditUndoManager->RegisterTarget(pDoc, capacity); m_pUndoManager->RegisterTarget(pDoc, capacity); m_gTreeLayerUndoManager->RegisterTarget(pDoc, capacity); } void CDrawUndoManager::SetAllStackCapacity(const void *pDoc, long capacity) { m_gMarkEditUndoManager->SetStackCapacity(pDoc, capacity); m_pUndoManager->SetStackCapacity(pDoc, capacity); m_gTreeLayerUndoManager->SetStackCapacity(pDoc, capacity); } void CDrawUndoManager::ClearDoc(void* pDoc) { m_gMarkEditUndoManager->ClearTarget(pDoc); m_pUndoManager->ClearTarget(pDoc); m_gTreeLayerUndoManager->ClearTarget(pDoc); } void CDrawUndoManager::CreateUndoManagerObject() { CreateUndoManager(); } void CDrawUndoManager::CreateUndoManager() { DeleteUndoManager(); m_gMarkEditUndoManager = new CDrawUndoManager(); m_pUndoManager = new CDrawUndoManager(); m_gTreeLayerUndoManager = new CDrawUndoManager(); ::SetUndoManager(m_pUndoManager); } void CDrawUndoManager::DeleteUndoManager() { if(m_pUndoManager) delete m_pUndoManager; if(m_gMarkEditUndoManager) delete m_gMarkEditUndoManager; if(m_gTreeLayerUndoManager) delete m_gTreeLayerUndoManager; m_pUndoManager=NULL; m_gMarkEditUndoManager=NULL; m_gTreeLayerUndoManager=NULL; ::SetUndoManager(NULL); } /////////////////////////////////////////////////////////////////// CDrawUndoManager::CDrawUndoManager(void) { } CDrawUndoManager::~CDrawUndoManager(void) { } }//namespace */