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