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.
52 lines
1014 B
C++
52 lines
1014 B
C++
#include "stdafx.h"
|
|
#include "ActionMirrorItem.h"
|
|
#include "DrawOperator/One.h"
|
|
#include "SigmaDoc.h"
|
|
#include "Visitor.h"
|
|
|
|
namespace NAction
|
|
{
|
|
CActionMirrorItem::CActionMirrorItem()
|
|
: CActionItem(nullptr, 0)
|
|
{
|
|
}
|
|
|
|
CActionMirrorItem::CActionMirrorItem(CSigmaDoc * ppDoc, UINT actionType, CPositionList& list, REAL* pmatrix, double originX, double originY)
|
|
:CActionItem(ppDoc, actionType),
|
|
m_moveItem(ppDoc, actionType, list, pmatrix),
|
|
m_originX(originX),
|
|
m_originY(originY)
|
|
{
|
|
m_selectionSet.AddTail(&list);
|
|
}
|
|
|
|
void CActionMirrorItem::Undo(void)
|
|
{
|
|
m_moveItem.Undo();
|
|
Offset();
|
|
}
|
|
|
|
void CActionMirrorItem::Redo(void)
|
|
{
|
|
m_moveItem.Redo();
|
|
Offset();
|
|
}
|
|
|
|
void CActionMirrorItem::accept(CActionVisitor& visitor)
|
|
{
|
|
visitor.visit(*this);
|
|
}
|
|
|
|
void CActionMirrorItem::Offset()
|
|
{
|
|
POSITION pos, pt;
|
|
COne * pOne = 0;
|
|
pos = m_selectionSet.GetHeadPosition();
|
|
while (pos != NULL)
|
|
{
|
|
pt = m_selectionSet.GetNext(pos);
|
|
pOne = (COne*)GetDoc()->GetDraw()->GetAt(pt);
|
|
pOne->Offset(m_originX, m_originY);
|
|
}
|
|
}
|
|
} |