37 if( fpA->IsSelected() )
53 BOX2I fpABBox = fpA->GetBoundingBox();
57 BOX2I fpBBBox = fpB->GetBoundingBox();
73 if( frontA.
Collide( &frontB, clearance, &actual, &pos ) )
88 if( backA.
Collide( &backB, clearance, &actual, &pos ) )
97 auto testPadAgainstCourtyards =
102 std::shared_ptr<SHAPE_SEGMENT> hole =
pad->GetEffectiveHoleShape();
115 bool skipNextCmp =
false;
120 for(
const PAD* padB : fpB->Pads() )
122 if( testPadAgainstCourtyards( padB, fpA ) )
138 for(
const PAD* padA : fpA->Pads() )
140 if( testPadAgainstCourtyards( padA, fpB ) )
153 if( !zone->GetIsRuleArea() || !zone->GetDoNotAllowFootprints() )
156 bool disallowFront = ( zone->GetLayerSet() &
LSET::FrontMask() ).any();
157 bool disallowBack = ( zone->GetLayerSet() &
LSET::BackMask() ).any();
165 if( !frontCourtyard.
IsEmpty() )
167 if( zone->Outline()->Collide( &frontCourtyard.
Outline( 0 ) ) )
182 if( zone->Outline()->Collide( &backCourtyard.
Outline( 0 ) ) )
203 fp->BuildCourtyardCaches();
225 bool aHighlightMoved )
A base class for any item which can be embedded within the BOARD container class, and therefore insta...
Information pertinent to a Pcbnew printed circuit board.
FOOTPRINTS & Footprints()
bool Intersects(const BOX2< Vec > &aRect) const
BOX2< Vec > & Inflate(coord_type dx, coord_type dy)
Inflates the rectangle horizontally by dx and vertically by dy.
const MINOPTMAX< int > & GetValue() const
bool QueryWorstConstraint(DRC_CONSTRAINT_T aRuleId, DRC_CONSTRAINT &aConstraint)
virtual bool Run() override
Run this provider against the given PCB with configured options (if any).
std::vector< FOOTPRINT * > m_FpInMove
void testCourtyardClearances()
int m_largestCourtyardClearance
std::set< BOARD_ITEM * > m_itemsInConflict
void ClearConflicts(KIGFX::VIEW *aView)
std::vector< BOARD_ITEM * > m_lastItemsInConflict
void UpdateConflicts(KIGFX::VIEW *aView, bool aHighlightMoved)
void ClearFlags(EDA_ITEM_FLAGS aMask=EDA_ITEM_ALL_FLAGS)
Hold a (potentially large) number of VIEW_ITEMs and renders them on a graphics device provided by the...
virtual void Update(const VIEW_ITEM *aItem, int aUpdateFlags) const
For dynamic VIEWs, inform the associated VIEW that the graphical representation of this item has chan...
void MarkTargetDirty(int aTarget)
Set or clear target 'dirty' flag.
static LSET FrontMask()
Return a mask holding all technical layers and the external CU layer on front side.
static LSET BackMask()
Return a mask holding all technical layers and the external CU layer on back side.
Represent a set of closed polygons.
bool IsEmpty() const
Return true if the set is empty (no polygons at all)
bool Collide(const SHAPE *aShape, int aClearance=0, int *aActual=nullptr, VECTOR2I *aLocation=nullptr) const override
Check if the boundary of shape (this) lies closer to the shape aShape than aClearance,...
SHAPE_LINE_CHAIN & Outline(int aIndex)
Return the reference to aIndex-th outline in the set.
int OutlineCount() const
Return the number of outlines in the set.
const BOX2I BBoxFromCaches() const
Handle a list of polygons defining a copper zone.
@ COURTYARD_CLEARANCE_CONSTRAINT
#define COURTYARD_CONFLICT
temporary set when moving footprints having courtyard overlapping
@ TARGET_OVERLAY
Items that may change while the view stays the same (noncached)
bool contains(const _Container &__container, _Value __value)
Returns true if the container contains the given value.