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.
kev/Drawer/Module/GeoSigmaDraw/ActionMirrorItem.cpp

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);
}
}
}