Double opening speed of PCBs with ground and/or power planes.
(Or any other boards with complicated zones.)
(cherry picked from commit 7c04d8be1c
)
This commit is contained in:
parent
fca0785754
commit
3a03c79255
|
@ -2134,20 +2134,20 @@ bool SHAPE_POLY_SET::HasTouchingHoles() const
|
||||||
|
|
||||||
bool SHAPE_POLY_SET::hasTouchingHoles( const POLYGON& aPoly ) const
|
bool SHAPE_POLY_SET::hasTouchingHoles( const POLYGON& aPoly ) const
|
||||||
{
|
{
|
||||||
std::vector< VECTOR2I > pts;
|
std::set< long long > ptHashes;
|
||||||
|
|
||||||
for( const auto& lc : aPoly )
|
for( const auto& lc : aPoly )
|
||||||
{
|
{
|
||||||
for( int i = 0; i < lc.PointCount(); i++ )
|
for( const VECTOR2I& pt : lc.CPoints() )
|
||||||
{
|
{
|
||||||
const auto p = lc.CPoint( i );
|
const long long ptHash = (long long) pt.x << 32 | pt.y;
|
||||||
|
|
||||||
if( std::find( pts.begin(), pts.end(), p ) != pts.end() )
|
if( ptHashes.count( ptHash ) > 0 )
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
pts.push_back( p );
|
ptHashes.insert( ptHash );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -260,6 +260,11 @@ public:
|
||||||
return m_points[aIndex];
|
return m_points[aIndex];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const std::vector<VECTOR2I>& CPoints() const
|
||||||
|
{
|
||||||
|
return m_points;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the last point in the line chain.
|
* Returns the last point in the line chain.
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in New Issue