41 const auto getUniquelyNumberedPads = [](
const FOOTPRINT& fp ) -> std::unordered_map<wxString, VECTOR2I>
43 std::unordered_map<wxString, VECTOR2I>
result;
44 std::unordered_set<wxString> seenDuplicate;
46 for(
PAD*
pad : fp.Pads() )
48 const wxString& number =
pad->GetNumber();
52 if( seenDuplicate.find( number ) != seenDuplicate.end() )
60 seenDuplicate.insert( number );
64 result[number] =
pad->GetFPRelativePosition();
70 std::unordered_map<wxString, VECTOR2I> existingPads = getUniquelyNumberedPads( aExisting );
71 std::unordered_map<wxString, VECTOR2I> newPads = getUniquelyNumberedPads( aNew );
73 std::vector<VECTOR2I> existingPoints;
74 std::vector<VECTOR2I> newPoints;
78 for(
const auto& [number, pos] : existingPads )
80 auto it = newPads.find( number );
82 if( it == newPads.end() )
85 existingPoints.push_back( pos );
86 newPoints.push_back( it->second );
91 std::optional<ITEM_REALIGNER_BASE::TRANSFORM> transform =
94 if( !transform.has_value() )
103 aAngleShift = transform->m_Rotation;
wxString result
Test unit parsing edge cases and error handling.
VECTOR2I GetRotated(const VECTOR2I &aVector, const EDA_ANGLE &aAngle)
Return a new VECTOR2I that is the result of rotating aVector by aAngle.