示例#1
0
void CDrawBlockRotate::ChangeDir(int NewDir)
{
	if (!m_pDesign->IsSelected()) return;

	// Find the centre of rotation
	CDPoint centre = m_pDesign->m_snap.Snap(CDPoint( (m_point_b.x - m_point_a.x) / 2 + m_point_a.x, (m_point_b.y - m_point_a.y) / 2 + m_point_a.y));

	Display();
	CJunctionUtils j(m_pDesign);

	selectIterator it = m_pDesign->GetSelectBegin();
	while (it != m_pDesign->GetSelectEnd())
	{
		CDrawingObject *obj = *it;

		j.AddObjectToTodo(obj);
		obj->Rotate(centre, NewDir);
		j.AddObjectToTodo(obj);

		++it;
	}

	j.CheckTodoList(false);

	Rotate(centre, NewDir);

	Display();

	m_pDesign->Invalidate();
}