void moveFootprintsInArea( CRectPlacement& aPlacementArea, std::vector <MODULE*>& aModuleList, EDA_RECT& aFreeArea, bool aFindAreaOnly ) { CSubRectArray vecSubRects; fillRectList( vecSubRects, aModuleList ); spreadRectangles( aPlacementArea, vecSubRects, aFreeArea.GetWidth(), aFreeArea.GetHeight() ); if( aFindAreaOnly ) return; for( unsigned it = 0; it < vecSubRects.size(); ++it ) { wxPoint pos( vecSubRects[it].x, vecSubRects[it].y ); pos.x *= scale; pos.y *= scale; MODULE * module = aModuleList[vecSubRects[it].n]; EDA_RECT fpBBox = module->GetFootprintRect(); wxPoint mod_pos = pos + ( module->GetPosition() - fpBBox.GetOrigin() ) + aFreeArea.GetOrigin(); module->Move( mod_pos - module->GetPosition() ); } }