// Called after a paste or import to enable the // document to sort out the imported block when // necessary void CTinyCadDoc::UngroupSymbols() { // Scan and convert any imported symbols // into their component parts drawingIterator it = GetDrawingBegin(); while (it != GetDrawingEnd()) { drawingIterator current = it; ++ it; CDrawingObject *pObject = *current; // Is this a method object? if ( pObject->GetType() == xMethodEx3 && IsSelected(pObject)) { // Convert to the actual type CDrawMethod *pMethod = static_cast<CDrawMethod*>(pObject); // Get the symbol data CDPoint tr; drawingCollection method; pMethod->ExtractSymbol( tr,method ); // Remove the method from the linked list UnSelect(pMethod); Delete( pMethod ); // Now re-insert using the offset of the main // method CDPoint offset = method.front()->m_point_a; drawingIterator it = method.begin(); while (it != method.end()) { CDrawingObject *pInsertObject = *it; CDrawingObject *pDup = pInsertObject->Store(); pDup->m_point_a += offset; pDup->m_point_b += offset; Select( pDup ); ++ it; } } } }