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