You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
248 lines
5.7 KiB
C++
248 lines
5.7 KiB
C++
//////////////////////////////////////////////////////////////////////////////
|
|
//文件 ActionEmbellishItem.cpp
|
|
//主要功能:
|
|
//
|
|
//程序编写: 2006-12-07
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
#include "StdAfx.h"
|
|
#include ".\actionembellishitem.h"
|
|
#include "SigmaDoc.h"
|
|
#include "SigmaView.h"
|
|
#include "Visitor.h"
|
|
|
|
NAction::CActionEmbellishItem::CActionEmbellishItem()
|
|
: CActionItem(nullptr, 0)
|
|
{
|
|
}
|
|
|
|
CActionEmbellishItem::CActionEmbellishItem(CSigmaDoc * ppDoc, UINT actionType, CLayer* pLayer)
|
|
: CActionItem(ppDoc, actionType)
|
|
{
|
|
m_pLayer=pLayer;
|
|
m_pOne=NULL;
|
|
m_pOldViewCurve=NULL;
|
|
m_pOldViewPoint=NULL;
|
|
m_pNewViewCurve=NULL;
|
|
m_pNewViewPoint=NULL;
|
|
}
|
|
|
|
CActionEmbellishItem::CActionEmbellishItem(CSigmaDoc * ppDoc, UINT actionType, COne* pOne) //个性修饰
|
|
: CActionItem(ppDoc, actionType)
|
|
{
|
|
m_pLayer=NULL;
|
|
m_pOne=pOne;
|
|
m_pOldViewCurve=NULL;
|
|
m_pOldViewPoint=NULL;
|
|
m_pNewViewCurve=NULL;
|
|
m_pNewViewPoint=NULL;
|
|
}
|
|
|
|
CActionEmbellishItem::~CActionEmbellishItem(void)
|
|
{
|
|
if(m_pOldViewCurve) delete m_pOldViewCurve;
|
|
m_pOldViewCurve=NULL;
|
|
if(m_pOldViewPoint) delete m_pOldViewPoint;
|
|
m_pOldViewPoint=NULL;
|
|
|
|
if(m_pNewViewCurve) delete m_pNewViewCurve;
|
|
m_pNewViewCurve=NULL;
|
|
if(m_pNewViewPoint) delete m_pNewViewPoint;
|
|
m_pNewViewPoint=NULL;
|
|
}
|
|
|
|
void CActionEmbellishItem::Undo(void)
|
|
{
|
|
CActionItem::Undo();
|
|
|
|
//设置老修饰
|
|
CHowToViewCurve *hvc=NULL;
|
|
CHowToViewPoint *hvp=NULL;
|
|
|
|
if(m_pOldViewCurve)
|
|
{
|
|
hvc=new CHowToViewCurve;
|
|
*hvc=*m_pOldViewCurve;
|
|
}
|
|
if(m_pOldViewPoint)
|
|
{
|
|
hvp=new CHowToViewPoint;
|
|
*hvp=*m_pOldViewPoint;
|
|
}
|
|
|
|
if(m_pLayer) //层修饰
|
|
{
|
|
m_pLayer->SetHowToViewCurve(hvc);
|
|
m_pLayer->SetHowToViewPoint(hvp);
|
|
|
|
// 查找所有组合并设置层修改
|
|
CPtrList* plist = GetDoc()->GetDraw()->GetValueList();
|
|
POSITION pos;
|
|
COne* pOne;
|
|
pos = plist->GetHeadPosition();
|
|
while (pos)
|
|
{
|
|
pOne = (COne*)plist->GetNext(pos);
|
|
if (pOne->GetType() != DOUBLEFOX_BLOCK)continue;
|
|
CInsertBlock* pBlock = ((CInsertBlock*)pOne->value);
|
|
CXy* pXyBlock = (CXy*)pBlock->GetXy();
|
|
CLayer* pLayerBlock = pXyBlock->FindLayer(m_pLayer->GetName());
|
|
if (pLayerBlock != nullptr)
|
|
{
|
|
CHowToViewCurve* hvcBlock = nullptr;
|
|
if (m_pOldViewCurve) {
|
|
hvcBlock = new CHowToViewCurve;
|
|
*hvcBlock = *m_pOldViewCurve;
|
|
}
|
|
pLayerBlock->SetHowToViewCurve(hvcBlock);
|
|
|
|
CHowToViewPoint* hvpBlock = NULL;
|
|
if (m_pOldViewPoint) {
|
|
hvpBlock = new CHowToViewPoint;
|
|
*hvpBlock = *m_pOldViewPoint;
|
|
}
|
|
pLayerBlock->SetHowToViewPoint(hvpBlock);
|
|
}
|
|
}
|
|
}
|
|
else if(m_pOne)//个性修饰
|
|
{
|
|
if(m_pOne->HowToViewCurve)delete m_pOne->HowToViewCurve;
|
|
m_pOne->HowToViewCurve=hvc;
|
|
if(m_pOne->HowToViewPoint)delete m_pOne->HowToViewPoint;
|
|
m_pOne->HowToViewPoint=hvp;
|
|
//GetDoc()->Invalidate(m_pOne);
|
|
}
|
|
}
|
|
|
|
void CActionEmbellishItem::Redo(void)
|
|
{
|
|
CActionItem::Redo();
|
|
|
|
//设置老修饰
|
|
CHowToViewCurve *hvc=NULL;
|
|
CHowToViewPoint *hvp=NULL;
|
|
|
|
if(m_pNewViewCurve)
|
|
{
|
|
hvc=new CHowToViewCurve;
|
|
*hvc=*m_pNewViewCurve;
|
|
}
|
|
if(m_pNewViewPoint)
|
|
{
|
|
hvp=new CHowToViewPoint;
|
|
*hvp=*m_pNewViewPoint;
|
|
}
|
|
|
|
if(m_pLayer) //层修饰
|
|
{
|
|
m_pLayer->SetHowToViewCurve(hvc);
|
|
m_pLayer->SetHowToViewPoint(hvp);
|
|
|
|
// 查找所有组合并设置层修改
|
|
CPtrList* plist = GetDoc()->GetDraw()->GetValueList();
|
|
POSITION pos;
|
|
COne* pOne;
|
|
pos = plist->GetHeadPosition();
|
|
while (pos)
|
|
{
|
|
pOne = (COne*)plist->GetNext(pos);
|
|
if (pOne->GetType() != DOUBLEFOX_BLOCK)continue;
|
|
CInsertBlock* pBlock = ((CInsertBlock*)pOne->value);
|
|
CXy* pXyBlock = (CXy*)pBlock->GetXy();
|
|
CLayer* pLayerBlock = pXyBlock->FindLayer(m_pLayer->GetName());
|
|
if (pLayerBlock != nullptr)
|
|
{
|
|
CHowToViewCurve* hvcBlock = nullptr;
|
|
if (m_pNewViewCurve) {
|
|
hvcBlock = new CHowToViewCurve;
|
|
*hvcBlock = *m_pNewViewCurve;
|
|
}
|
|
pLayerBlock->SetHowToViewCurve(hvcBlock);
|
|
|
|
CHowToViewPoint* hvpBlock = NULL;
|
|
if (m_pNewViewPoint) {
|
|
hvpBlock = new CHowToViewPoint;
|
|
*hvpBlock = *m_pNewViewPoint;
|
|
}
|
|
pLayerBlock->SetHowToViewPoint(hvpBlock);
|
|
}
|
|
}
|
|
}
|
|
else if(m_pOne)//个性修饰
|
|
{
|
|
if(m_pOne->HowToViewCurve)delete m_pOne->HowToViewCurve;
|
|
m_pOne->HowToViewCurve=hvc;
|
|
if(m_pOne->HowToViewPoint)delete m_pOne->HowToViewPoint;
|
|
m_pOne->HowToViewPoint=hvp;
|
|
//GetDoc()->Invalidate(m_pOne);
|
|
}
|
|
}
|
|
|
|
void NAction::CActionEmbellishItem::accept(CActionVisitor& visitor)
|
|
{
|
|
visitor.visit(*this);
|
|
}
|
|
|
|
void CActionEmbellishItem::SetOldHowToView(CHowToViewCurve* pOldCurve, CHowToViewPoint* pOldPoint)
|
|
{
|
|
if(m_pOldViewCurve) delete m_pOldViewCurve;
|
|
m_pOldViewCurve=NULL;
|
|
if(m_pOldViewPoint) delete m_pOldViewPoint;
|
|
m_pOldViewPoint=NULL;
|
|
|
|
if(pOldCurve)
|
|
{
|
|
m_pOldViewCurve=new CHowToViewCurve;
|
|
*m_pOldViewCurve=*pOldCurve;
|
|
}
|
|
if(pOldPoint)
|
|
{
|
|
m_pOldViewPoint=new CHowToViewPoint;
|
|
*m_pOldViewPoint=*pOldPoint;
|
|
}
|
|
}
|
|
|
|
void CActionEmbellishItem::SetNewHowToView(CHowToViewCurve* pNewCurve, CHowToViewPoint* pNewPoint)
|
|
{
|
|
if(m_pNewViewCurve) delete m_pNewViewCurve;
|
|
m_pNewViewCurve=NULL;
|
|
if(m_pNewViewPoint) delete m_pNewViewPoint;
|
|
m_pNewViewPoint=NULL;
|
|
|
|
if(pNewCurve)
|
|
{
|
|
m_pNewViewCurve=new CHowToViewCurve;
|
|
*m_pNewViewCurve=*pNewCurve;
|
|
}
|
|
if(pNewPoint)
|
|
{
|
|
m_pNewViewPoint=new CHowToViewPoint;
|
|
*m_pNewViewPoint=*pNewPoint;
|
|
}
|
|
}
|
|
|
|
void CActionEmbellishItem::SetOldHowToView(CLayer* pLayer)
|
|
{
|
|
if(pLayer==NULL) return;
|
|
SetOldHowToView(pLayer->HowToViewCurve, pLayer->HowToViewPoint);
|
|
}
|
|
|
|
void CActionEmbellishItem::SetNewHowToView(CLayer* pLayer)
|
|
{
|
|
if(pLayer==NULL) return;
|
|
SetNewHowToView(pLayer->HowToViewCurve, pLayer->HowToViewPoint);
|
|
}
|
|
|
|
void CActionEmbellishItem::SetOldHowToView(COne* pOne)
|
|
{
|
|
if(pOne==NULL) return;
|
|
SetOldHowToView(pOne->HowToViewCurve, pOne->HowToViewPoint);
|
|
}
|
|
|
|
void CActionEmbellishItem::SetNewHowToView(COne* pOne)
|
|
{
|
|
if(pOne==NULL) return;
|
|
SetNewHowToView(pOne->HowToViewCurve, pOne->HowToViewPoint);
|
|
}
|