KiCad PCB EDA Suite
|
Base class for PNS router board items. More...
#include <pns_item.h>
Public Types | |
enum | PnsKind { INVALID_T = 0 , SOLID_T = 1 , LINE_T = 2 , JOINT_T = 4 , SEGMENT_T = 8 , ARC_T = 16 , VIA_T = 32 , DIFF_PAIR_T = 64 , HOLE_T = 128 , ANY_T = 0xffff , LINKED_ITEM_MASK_T = SOLID_T | SEGMENT_T | ARC_T | VIA_T | HOLE_T } |
< Supported item types More... | |
Public Member Functions | |
ITEM (PnsKind aKind) | |
ITEM (const ITEM &aOther) | |
virtual | ~ITEM () |
virtual ITEM * | Clone () const =0 |
Return a deep copy of the item. | |
virtual const SHAPE_LINE_CHAIN | Hull (int aClearance=0, int aWalkaroundThickness=0, int aLayer=-1) const |
PnsKind | Kind () const |
Return the type (kind) of the item. | |
bool | OfKind (int aKindMask) const |
std::string | KindStr () const |
void | SetParent (BOARD_ITEM *aParent) |
BOARD_ITEM * | Parent () const |
virtual BOARD_ITEM * | BoardItem () const |
void | SetNet (NET_HANDLE aNet) |
virtual NET_HANDLE | Net () const |
const PNS_LAYER_RANGE & | Layers () const |
void | SetLayers (const PNS_LAYER_RANGE &aLayers) |
void | SetLayer (int aLayer) |
virtual int | Layer () const |
bool | LayersOverlap (const ITEM *aOther) const |
Return true if the set of layers spanned by aOther overlaps our layers. | |
bool | Collide (const ITEM *aHead, const NODE *aNode, int aLayer, COLLISION_SEARCH_CONTEXT *aCtx=nullptr) const |
Check for a collision (clearance violation) with between us and item aOther. | |
virtual const SHAPE * | Shape (int aLayer) const |
Return the geometrical shape of the item. | |
virtual std::vector< int > | UniqueShapeLayers () const |
Return a list of layers that have unique (potentially different) shapes. | |
virtual bool | HasUniqueShapeLayers () const |
std::set< int > | RelevantShapeLayers (const ITEM *aOther) const |
Returns the set of layers on which either this or the other item can have a unique shape. | |
virtual void | Mark (int aMarker) const |
virtual void | Unmark (int aMarker=-1) const |
virtual int | Marker () const |
virtual void | SetRank (int aRank) |
virtual int | Rank () const |
virtual VECTOR2I | Anchor (int n) const |
virtual int | AnchorCount () const |
bool | IsLocked () const |
void | SetRoutable (bool aRoutable) |
bool | IsRoutable () const |
void | SetIsFreePad (bool aIsFreePad=true) |
bool | IsFreePad () const |
virtual ITEM * | ParentPadVia () const |
bool | IsVirtual () const |
void | SetIsCompoundShapePrimitive () |
bool | IsCompoundShapePrimitive () const |
virtual bool | HasHole () const |
virtual HOLE * | Hole () const |
virtual void | SetHole (HOLE *aHole) |
virtual const std::string | Format () const |
virtual const NODE * | OwningNode () const |
const ITEM_OWNER * | Owner () const |
Return the owner of this item, or NULL if there's none. | |
void | SetOwner (const ITEM_OWNER *aOwner) |
Set the node that owns this item. | |
bool | BelongsTo (const ITEM_OWNER *aNode) const |
Protected Attributes | |
PnsKind | m_kind |
BOARD_ITEM * | m_parent |
PNS_LAYER_RANGE | m_layers |
bool | m_movable |
NET_HANDLE | m_net |
int | m_marker |
int | m_rank |
bool | m_routable |
bool | m_isVirtual |
bool | m_isFreePad |
bool | m_isCompoundShapePrimitive |
const ITEM_OWNER * | m_owner |
Private Member Functions | |
bool | collideSimple (const ITEM *aHead, const NODE *aNode, int aLayer, COLLISION_SEARCH_CONTEXT *aCtx) const |
Base class for PNS router board items.
Implements the shared properties of all PCB items net, spanned layers, geometric shape and reference to owning model.
Definition at line 96 of file pns_item.h.
enum PNS::ITEM::PnsKind |
< Supported item types
Enumerator | |
---|---|
INVALID_T | |
SOLID_T | |
LINE_T | |
JOINT_T | |
SEGMENT_T | |
ARC_T | |
VIA_T | |
DIFF_PAIR_T | |
HOLE_T | |
ANY_T | |
LINKED_ITEM_MASK_T |
Definition at line 100 of file pns_item.h.
|
inline |
Definition at line 115 of file pns_item.h.
References m_isCompoundShapePrimitive, m_isFreePad, m_isVirtual, m_kind, m_marker, m_movable, m_net, PNS::OWNABLE_ITEM::m_owner, m_parent, m_rank, and m_routable.
|
inline |
Definition at line 130 of file pns_item.h.
References m_isCompoundShapePrimitive, m_isFreePad, m_isVirtual, m_kind, m_layers, m_marker, m_movable, m_net, PNS::OWNABLE_ITEM::m_owner, m_parent, m_rank, and m_routable.
|
virtual |
Definition at line 324 of file pns_item.cpp.
|
inlinevirtual |
Reimplemented in PNS::SOLID, PNS::ARC, PNS::SEGMENT, and PNS::VIA.
Definition at line 255 of file pns_item.h.
Referenced by PNS::DP_PRIMITIVE_PAIR::anchorDirection(), PNS::TOPOLOGY::AssembleDiffPair(), PNS::DP_PRIMITIVE_PAIR::CursorOrientation(), PNS::DP_PRIMITIVE_PAIR::DP_PRIMITIVE_PAIR(), PNS::NODE::followLine(), PNS_PCBNEW_RULE_RESOLVER::getBoardItem(), PNS::getDanglingAnchor(), PNS::ROUTER::getNearestRatnestAnchor(), PNS_KICAD_IFACE_BASE::ImportSizes(), PNS::TOPOLOGY::NearestUnconnectedAnchorPoint(), PNS::TOOL_BASE::pickSingleItem(), PCB_TUNING_PATTERN::recoverBaseline(), and PNS::TOOL_BASE::snapToItem().
|
inlinevirtual |
Reimplemented in PNS::ARC, PNS::SEGMENT, PNS::SOLID, and PNS::VIA.
Definition at line 260 of file pns_item.h.
Referenced by PNS::TOPOLOGY::AssembleDiffPair().
|
inlineinherited |
Definition at line 81 of file pns_item.h.
References PNS::OWNABLE_ITEM::m_owner.
Referenced by PNS::NODE::addSolid(), PNS::NODE::addVia(), PNS::NODE::doRemove(), PNS::LINE::LINE(), PNS::LINE::operator=(), PNS::NODE::Remove(), PNS::LINE::RemoveVia(), PNS::SOLID::SetHole(), PNS::VIA::SetHole(), PNS::LINE::~LINE(), PNS::NODE::~NODE(), and PNS::VIA::~VIA().
|
inlinevirtual |
Reimplemented in PNS::HOLE.
Definition at line 194 of file pns_item.h.
References m_parent.
Referenced by isEdge(), PNS_PCBNEW_RULE_RESOLVER::IsInNetTie(), PNS_PCBNEW_RULE_RESOLVER::IsNetTieExclusion(), PNS_PCBNEW_RULE_RESOLVER::QueryConstraint(), and ROUTER_PREVIEW_ITEM::ROUTER_PREVIEW_ITEM().
|
pure virtual |
Return a deep copy of the item.
Implemented in PNS::ARC, PNS::DIFF_PAIR, PNS::HOLE, PNS::JOINT, PNS::LINE, PNS::SEGMENT, PNS::SOLID, and PNS::VIA.
Referenced by PNS_LOG_VIEW_TRACKER::DisplayItem(), PNS::DP_PRIMITIVE_PAIR::DP_PRIMITIVE_PAIR(), and PNS::DP_PRIMITIVE_PAIR::operator=().
bool PNS::ITEM::Collide | ( | const ITEM * | aHead, |
const NODE * | aNode, | ||
int | aLayer, | ||
COLLISION_SEARCH_CONTEXT * | aCtx = nullptr |
||
) | const |
Check for a collision (clearance violation) with between us and item aOther.
Collision checking takes all PCB stuff into account (layers, nets, DRC rules). Optionally returns a minimum translation vector for force propagation algorithm.
aOther | is the item to check collision against. |
Definition at line 296 of file pns_item.cpp.
References collideSimple().
Referenced by PNS::clipToOtherLine(), PNS::SHOVE::fixupViaCollisions(), PNS::SHOVE::onCollidingSolid(), PNS::NODE::DEFAULT_OBSTACLE_VISITOR::operator()(), PNS::OPTIMIZER::CACHE_VISITOR::operator()(), PNS::SHOVE::shoveIteration(), PNS::SHOVE::shoveLineFromLoneVia(), PNS::SHOVE::shoveLineToHullSet(), PNS::COMPONENT_DRAGGER::Start(), and PNS::verifyDpBypass().
|
private |
Definition at line 115 of file pns_item.cpp.
References SHAPE::Collide(), collideSimple(), Edge_Cuts, PNS::NODE::GetClearance(), PNS::ROUTER::GetInstance(), PNS::ROUTER::GetInterface(), BOARD_ITEM::GetLayer(), PNS::NODE::GetRuleResolver(), Hole(), HOLE_T, PNS::ROUTER_IFACE::IsFlashedOnLayer(), IsFreePad(), PNS::RULE_RESOLVER::IsInNetTie(), PNS::RULE_RESOLVER::IsKeepout(), PNS::RULE_RESOLVER::IsNetTieExclusion(), PNS::RULE_RESOLVER::IsNonPlatedSlot(), Kind(), Layers(), LINE_T, PNS::OBSTACLE::m_clearance, PNS::COLLISION_SEARCH_OPTIONS::m_differentNetsOnly, PNS::OBSTACLE::m_distFirst, PNS::OBSTACLE::m_head, PNS::OBSTACLE::m_item, m_kind, m_layers, PNS::OBSTACLE::m_maxFanoutWidth, PNS::COLLISION_SEARCH_OPTIONS::m_overrideClearance, m_parent, PNS::COLLISION_SEARCH_OPTIONS::m_useClearanceEpsilon, Net(), PNS::HOLE::Net(), PNS::COLLISION_SEARCH_CONTEXT::obstacles, PNS::COLLISION_SEARCH_CONTEXT::options, PNS_LAYER_RANGE::Overlaps(), PNS::NODE::QueryEdgeExclusions(), Shape(), and PNS::shouldWeConsiderHoleCollisions().
Referenced by Collide(), and collideSimple().
|
virtual |
Reimplemented in PNS::SEGMENT, and PNS::VIA.
Definition at line 329 of file pns_item.cpp.
References PNS_LAYER_RANGE::End(), PNS::ROUTER::GetInstance(), PNS::ROUTER::GetInterface(), PNS::ROUTER_IFACE::GetNetName(), KindStr(), m_layers, Net(), and PNS_LAYER_RANGE::Start().
Referenced by PNS::NODE::Dump(), PNS::SEGMENT::Format(), PNS::VIA::Format(), and PNS::SHOVE::shoveIteration().
|
inlinevirtual |
Reimplemented in PNS::SOLID, PNS::VIA, and PNS::VVIA.
Definition at line 290 of file pns_item.h.
Referenced by PNS::NODE::Commit(), PNS::NODE::doRemove(), PNS::SHOVE::getClearance(), and PNS::WALKAROUND::RestrictToCluster().
|
inlinevirtual |
Reimplemented in PNS::VIA.
Definition at line 239 of file pns_item.h.
Referenced by RelevantShapeLayers().
|
inlinevirtual |
Reimplemented in PNS::SOLID, and PNS::VIA.
Definition at line 291 of file pns_item.h.
Referenced by collideSimple(), PNS::NODE::Commit(), PNS::NODE::doRemove(), PNS::SHOVE::getClearance(), PNS::WALKAROUND::RestrictToCluster(), ROUTER_PREVIEW_ITEM::ROUTER_PREVIEW_ITEM(), and ROUTER_PREVIEW_ITEM::Update().
|
inlinevirtual |
Reimplemented in PNS::ARC, PNS::SEGMENT, PNS::HOLE, PNS::SOLID, and PNS::VIA.
Definition at line 161 of file pns_item.h.
|
inline |
Definition at line 288 of file pns_item.h.
References m_isCompoundShapePrimitive.
|
inline |
Definition at line 275 of file pns_item.h.
References m_isFreePad, and ParentPadVia().
Referenced by collideSimple().
|
inline |
Definition at line 265 of file pns_item.h.
References Marker(), and PNS::MK_LOCKED.
Referenced by ROUTER_TOOL::InlineBreakTrack(), PNS::JOINT::IsLineCorner(), PNS::JOINT::NextSegment(), ROUTER_TOOL::performDragging(), and PNS::SHOVE::pushOrShoveVia().
|
inline |
Definition at line 271 of file pns_item.h.
References m_routable.
Referenced by PNS::NODE::addSolid(), and PNS::NODE::removeSolidIndex().
|
inline |
Definition at line 282 of file pns_item.h.
References m_isVirtual.
Referenced by PNS_KICAD_IFACE::DisplayItem(), PNS::NODE::GetClearance(), and PNS::NODE::QueryColliding().
|
inline |
Return the type (kind) of the item.
Definition at line 170 of file pns_item.h.
References m_kind.
Referenced by PNS::NODE::add(), PNS::TOPOLOGY::AssembleDiffPair(), PNS::NODE::AssembleLine(), PNS::TOPOLOGY::AssembleTrivialPath(), PNS::OPTIMIZER::CacheRemove(), PNS::NODE::CheckColliding(), PNS::ARC::ClassOf(), PNS::DIFF_PAIR::ClassOf(), PNS::LINE::ClassOf(), PNS::SEGMENT::ClassOf(), PNS::SOLID::ClassOf(), PNS::VIA::ClassOf(), collideSimple(), comparePnsItems(), PNS::OPTIMIZER::computeBreakouts(), PNS_KICAD_IFACE::createBoardItem(), PNS::DIFF_PAIR_PLACER::FindDpPrimitivePair(), PNS::NODE::followLine(), PNS_PCBNEW_RULE_RESOLVER::getBoardItem(), PNS::getDanglingAnchor(), PNS::MEANDER_PLACER_BASE::getSnappedStartPoint(), PNS_KICAD_IFACE_BASE::ImportSizes(), PNS_KICAD_IFACE_BASE::inheritTrackWidth(), PNS_KICAD_IFACE::modifyBoardItem(), PNS::OPTIMIZER::CACHE_VISITOR::operator()(), ROUTER_TOOL::performDragging(), PNS::INDEX::Query(), PNS::NODE::Remove(), PNS::SEGMENT::SEGMENT(), PNS::SHOVE::shoveIteration(), PNS::OPTIMIZER::smartPadsSingle(), PNS::TOOL_BASE::snapToItem(), PNS::LINE_PLACER::Start(), PNS::DRAGGER::Start(), ROUTER_PREVIEW_ITEM::Update(), and PNS::LINE_PLACER::UpdateSizes().
std::string PNS::ITEM::KindStr | ( | ) | const |
Definition at line 306 of file pns_item.cpp.
References ARC_T, DIFF_PAIR_T, HOLE_T, JOINT_T, LINE_T, m_kind, SEGMENT_T, SOLID_T, and VIA_T.
Referenced by Format(), PNS::TOOL_BASE::pickSingleItem(), and PNS::TOOL_BASE::updateEndItem().
|
inlinevirtual |
Definition at line 203 of file pns_item.h.
References Layers(), and PNS_LAYER_RANGE::Start().
Referenced by PNS::TOPOLOGY::AssembleTuningPath(), PNS::clipToOtherLine(), PNS::DRAGGER::CurrentLayer(), PNS::OPTIMIZER::fanoutCleanup(), PNS::SHOVE::fixupViaCollisions(), PNS_KICAD_IFACE_BASE::ImportSizes(), PNS_PCBNEW_RULE_RESOLVER::IsKeepout(), PNS_PCBNEW_RULE_RESOLVER::IsNetTieExclusion(), PNS::MEANDER_PLACER_BASE::lineLength(), PNS::ROUTER::markViolations(), PNS::ROUTER::movePlacing(), PNS::NODE::NearestObstacle(), PNS::SHOVE::onCollidingSegment(), PNS::SHOVE::onCollidingSolid(), PNS::SHOVE::onCollidingVia(), PNS::SHOVE::onReverseCollidingVia(), PNS::OPTIMIZER::CACHE_VISITOR::operator()(), PNS::LINE_PLACER::rhMarkObstacles(), PNS::OPTIMIZER::runSmartPads(), PNS::SHOVE::shoveIteration(), PNS::SHOVE::shoveLineFromLoneVia(), PNS::SHOVE::shoveLineToHullSet(), PNS::SHOVE::ShoveObstacleLine(), PNS::COMPONENT_DRAGGER::Start(), and PNS::verifyDpBypass().
|
inline |
Definition at line 199 of file pns_item.h.
References m_layers.
Referenced by PNS::INDEX::Add(), PNS::NODE::Add(), PNS::NODE::addArc(), PNS::NODE::addSegment(), PNS::NODE::addSolid(), PNS::NODE::addVia(), PNS::ARC::ARC(), PNS::TOPOLOGY::AssembleDiffPair(), PNS::NODE::AssembleLine(), PNS::KEEP_TOPOLOGY_CONSTRAINT::Check(), PNS_PCBNEW_RULE_RESOLVER::Clearance(), MOCK_RULE_RESOLVER::Clearance(), PNS::HOLE::Clone(), PNS::VIA::Clone(), collideSimple(), comparePnsItems(), PNS_KICAD_IFACE::createBoardItem(), PNS::DP_MEANDER_PLACER::CurrentLayer(), PNS::MEANDER_PLACER::CurrentLayer(), PNS::DIFF_PAIR_PLACER::FindDpPrimitivePair(), PNS::NODE::FindJoint(), PNS::NODE::FindLinesBetweenJoints(), PNS::NODE::findRedundantArc(), PNS::NODE::findRedundantSegment(), PNS::NODE::FixupVirtualVias(), PNS::ROUTER::getNearestRatnestAnchor(), ROUTER_TOOL::getStartLayer(), PNS_KICAD_IFACE_BASE::IsFlashedOnLayer(), Layer(), LayersOverlap(), PNS::LINE::LINE(), PNS::NODE::LockJoint(), PNS::VIA::MakeHandle(), PNS::ROUTER::markViolations(), PNS::TOPOLOGY::NearestUnconnectedAnchorPoint(), PNS::JOINT::NextSegment(), PNS::SHOVE::onCollidingSolid(), PNS::VIA::operator=(), PNS::TOOL_BASE::pickSingleItem(), PNS::INDEX::Query(), PNS::INDEX::Remove(), PNS::NODE::removeArcIndex(), PNS::NODE::removeSegmentIndex(), PNS::NODE::removeSolidIndex(), PNS::NODE::removeViaIndex(), PNS_LOG_PLAYER::ReplayLog(), PNS::SEGMENT::SEGMENT(), PNS::LINE_PLACER::SetLayer(), PNS::SHOVE::shoveIteration(), PNS::COMPONENT_DRAGGER::Start(), ROUTER_PREVIEW_ITEM::Update(), PNS::TOOL_BASE::updateEndItem(), PNS::DIFF_PAIR::updateLine(), PNS::TOOL_BASE::updateStartItem(), and PNS::VIA::VIA().
|
inline |
Return true if the set of layers spanned by aOther overlaps our layers.
Definition at line 208 of file pns_item.h.
References Layers(), and PNS_LAYER_RANGE::Overlaps().
Referenced by PNS::MEANDER_PLACER_BASE::lineLength(), PNS::SHOVE::onCollidingArc(), PNS::SHOVE::onCollidingSegment(), PNS::NODE::rebuildJoint(), and PNS::SHOVE::ShoveObstacleLine().
|
inlinevirtual |
|
inlinevirtual |
Reimplemented in PNS::LINE.
Definition at line 250 of file pns_item.h.
References m_marker.
Referenced by PNS::ARC::ARC(), IsLocked(), PNS::SHOVE::pushOrShoveVia(), and ROUTER_PREVIEW_ITEM::Update().
|
inlinevirtual |
Reimplemented in PNS::HOLE, and PNS::JOINT.
Definition at line 197 of file pns_item.h.
References m_net.
Referenced by PNS::INDEX::Add(), PNS::NODE::Add(), PNS::NODE::addArc(), PNS::NODE::addSegment(), PNS::NODE::addSolid(), PNS::NODE::addVia(), PNS::ARC::ARC(), PNS::TOPOLOGY::AssembleCluster(), PNS::TOPOLOGY::AssembleDiffPair(), PNS::NODE::AssembleLine(), PNS::LINE_PLACER::buildInitialLine(), PNS::KEEP_TOPOLOGY_CONSTRAINT::Check(), PNS::VIA::Clone(), collideSimple(), comparePnsItems(), PNS_KICAD_IFACE::createBoardItem(), PNS::DRAGGER::CurrentNets(), PNS::MEANDER_PLACER::CurrentNets(), PNS::DIFF_PAIR::DIFF_PAIR(), PNS_PCBNEW_RULE_RESOLVER::DpNetPair(), PNS::OPTIMIZER::fanoutCleanup(), PNS::DIFF_PAIR_PLACER::FindDpPrimitivePair(), PNS::NODE::FindJoint(), PNS::NODE::findRedundantArc(), PNS::NODE::findRedundantSegment(), PNS::LINE_PLACER::FixRoute(), Format(), PNS_PCBNEW_RULE_RESOLVER::getBoardItem(), PNS_KICAD_IFACE_BASE::ImportSizes(), PNS_PCBNEW_RULE_RESOLVER::IsNetTieExclusion(), PNS::ROUTER::isStartingPointRoutable(), PNS::LINE::LINE(), PNS::NODE::LockJoint(), PNS::VIA::MakeHandle(), PNS::LINE_PLACER::Move(), PNS::MEANDER_SKEW_PLACER::Move(), PNS::HOLE::Net(), PNS::JOINT::NextSegment(), PNS::VIA::operator=(), PNS::MEANDER_SKEW_PLACER::origPathLength(), ROUTER_TOOL::performDragging(), ROUTER_TOOL::prepareInteractive(), PNS::NODE::rebuildJoint(), PNS::INDEX::Remove(), PNS::NODE::removeArcIndex(), PNS::NODE::removeSegmentIndex(), PNS::NODE::removeSolidIndex(), PNS::NODE::removeViaIndex(), PNS::SHOVE::Run(), PNS::OPTIMIZER::runSmartPads(), PNS::SEGMENT::SEGMENT(), PNS::shouldWeConsiderHoleCollisions(), PNS::SHOVE::shoveIteration(), PNS::DIFF_PAIR_PLACER::Start(), PNS::LINE_PLACER::Start(), PNS::MEANDER_SKEW_PLACER::Start(), PCB_TUNING_PATTERN::Update(), and PNS::VIA::VIA().
|
inline |
Definition at line 178 of file pns_item.h.
References m_kind.
Referenced by PNS::DP_PRIMITIVE_PAIR::anchorDirection(), PNS::TOPOLOGY::AssembleCluster(), PNS::TOPOLOGY::AssembleTrivialPath(), PNS::ROUTER::BreakSegmentOrArc(), ROUTER_TOOL::breakTrack(), PNS::DP_GATEWAYS::BuildFromPrimitivePair(), PNS::ChangedArea(), PNS::TOOL_BASE::checkSnap(), PNS::DP_PRIMITIVE_PAIR::CursorOrientation(), PNS::DP_PRIMITIVE_PAIR::Directional(), PNS_KICAD_IFACE::DisplayItem(), PNS::OPTIMIZER::fanoutCleanup(), PNS::SHOVE::fixupViaCollisions(), ROUTER_TOOL::InlineDrag(), isHole(), PNS::MEANDER_PLACER_BASE::lineLength(), PNS::JOINT::NextSegment(), PNS::SHOVE::onCollidingVia(), PNS::NODE::DEFAULT_OBSTACLE_VISITOR::operator()(), PCB_TUNING_PATTERN::recoverBaseline(), PNS_KICAD_IFACE::RemoveItem(), PNS_KICAD_IFACE_GENERATOR::RemoveItem(), PNS::SHOVE::replaceItems(), PNS::LINE_PLACER::SetLayer(), PNS::shouldWeConsiderHoleCollisions(), PNS::SHOVE::shoveIteration(), PNS::LINE_PLACER::simplifyNewLine(), PNS::LINE_PLACER::SplitAdjacentArcs(), PNS::LINE_PLACER::SplitAdjacentSegments(), PNS::DP_MEANDER_PLACER::Start(), PNS::MEANDER_PLACER::Start(), PNS::MEANDER_SKEW_PLACER::Start(), and PNS::SHOVE::unwindLineStack().
|
inlineinherited |
Return the owner of this item, or NULL if there's none.
Definition at line 71 of file pns_item.h.
References PNS::OWNABLE_ITEM::m_owner.
Referenced by PNS_PCBNEW_RULE_RESOLVER::Clearance(), PNS_KICAD_IFACE_BASE::inheritTrackWidth(), PNS::LINE_PLACER::Move(), OwningNode(), PNS::NODE::Remove(), and PNS::LINE_PLACER::rhShoveOnly().
|
virtual |
Definition at line 345 of file pns_item.cpp.
References PNS::OWNABLE_ITEM::Owner(), and ParentPadVia().
Referenced by PNS::SHOVE::shoveIteration().
|
inline |
Definition at line 189 of file pns_item.h.
References m_parent.
Referenced by PNS::HOLE::BoardItem(), PNS_KICAD_IFACE::createBoardItem(), PNS_KICAD_IFACE::DisplayItem(), PNS_KICAD_IFACE::HideItem(), isCopper(), PNS_PCBNEW_RULE_RESOLVER::IsDrilledHole(), PNS_KICAD_IFACE_BASE::IsFlashedOnLayer(), PNS_KICAD_IFACE::IsItemVisible(), PNS_PCBNEW_RULE_RESOLVER::IsKeepout(), PNS_PCBNEW_RULE_RESOLVER::IsNonPlatedSlot(), PNS_KICAD_IFACE::modifyBoardItem(), PNS_KICAD_IFACE::RemoveItem(), PNS_KICAD_IFACE_GENERATOR::RemoveItem(), PNS::SHOVE::shoveIteration(), and PNS::LINE_PLACER::Start().
|
inlinevirtual |
Reimplemented in PNS::HOLE.
Definition at line 280 of file pns_item.h.
Referenced by IsFreePad(), PNS_PCBNEW_RULE_RESOLVER::IsNonPlatedSlot(), and OwningNode().
|
inlinevirtual |
Reimplemented in PNS::LINE.
Definition at line 253 of file pns_item.h.
References m_rank.
Referenced by PNS::ARC::ARC(), PNS::LINE::LINE(), PNS::SHOVE::onCollidingSolid(), and PNS::SHOVE::shoveIteration().
std::set< int > PNS::ITEM::RelevantShapeLayers | ( | const ITEM * | aOther | ) | const |
Returns the set of layers on which either this or the other item can have a unique shape.
Use this to loop over layers when hit-testing objects that can have different shapes on each layer (currently only VIA)
Definition at line 94 of file pns_item.cpp.
References HasUniqueShapeLayers(), and UniqueShapeLayers().
Referenced by PNS::SHOVE::onCollidingVia(), PNS::SHOVE::onReverseCollidingVia(), PNS::DIFF_PAIR_PLACER::propagateDpHeadForces(), and PNS::VIA::PushoutForce().
|
inlinevirtual |
Reimplemented in PNS::SOLID, and PNS::VIA.
Definition at line 292 of file pns_item.h.
|
inline |
Definition at line 287 of file pns_item.h.
References m_isCompoundShapePrimitive.
|
inline |
Definition at line 273 of file pns_item.h.
References m_isFreePad.
|
inline |
Definition at line 202 of file pns_item.h.
References m_layers.
Referenced by PNS::LINE_PLACER::buildInitialLine(), PNS::LINE_PLACER::FixRoute(), PNS_KICAD_IFACE_BASE::ImportSizes(), PNS::LINE_PLACER::initPlacement(), PNS::ROUTER::isStartingPointRoutable(), PNS::DIFF_PAIR_PLACER::propagateDpHeadForces(), PCB_TUNING_PATTERN::recoverBaseline(), PNS::DIFF_PAIR_PLACER::routeHead(), PNS::LINE_PLACER::SetLayer(), PNS::LINE_PLACER::UnfixRoute(), and PNS::DIFF_PAIR::updateLine().
|
inline |
Definition at line 200 of file pns_item.h.
References m_layers.
Referenced by PNS::TOPOLOGY::AssembleDiffPair(), PNS::NODE::AssembleLine(), PNS::HOLE::Clone(), PNS::VIA::Clone(), PNS::HOLE::MakeCircularHole(), PNS::VIA::operator=(), PNS_LOG_FILE::parseCommonPnsProps(), PNS::SOLID::SetHole(), PNS::VIA::SetHole(), and PNS::VIA::VIA().
|
inline |
Definition at line 196 of file pns_item.h.
References m_net.
Referenced by PNS::LINE::AppendVia(), PNS::NODE::AssembleLine(), PNS::LINE_PLACER::buildInitialLine(), PNS::VIA::Clone(), PCB_TUNING_PATTERN::EditStart(), PNS::LINE_PLACER::FixRoute(), PNS_KICAD_IFACE_BASE::ImportSizes(), PNS::LINE_PLACER::initPlacement(), PNS::ROUTER::isStartingPointRoutable(), PNS::LINE::LINE(), PNS::LINE::operator=(), PNS::VIA::operator=(), PNS_LOG_FILE::parseCommonPnsProps(), PCB_TUNING_PATTERN::recoverBaseline(), PNS::DIFF_PAIR::updateLine(), and PNS::VIA::VIA().
|
inlineinherited |
Set the node that owns this item.
An item can belong to a single NODE or be unowned.
Definition at line 76 of file pns_item.h.
References PNS::OWNABLE_ITEM::m_owner.
Referenced by PNS::ITEM_SET::Add(), PNS::NODE::addArc(), PNS::NODE::addHole(), PNS::NODE::addSegment(), PNS::NODE::addSolid(), PNS::NODE::addVia(), PNS::LINE::AppendVia(), PNS::NODE::AssembleLine(), PNS::HOLE::Clone(), PNS::NODE::Commit(), PNS::NODE::doRemove(), PNS::LINE::LINE(), PNS::LINE::operator=(), PNS::ITEM_SET::Prepend(), PNS::NODE::Remove(), PNS::SOLID::SetHole(), and PNS::VIA::SetHole().
|
inline |
Definition at line 188 of file pns_item.h.
References m_parent.
Referenced by PNS_KICAD_IFACE::AddItem(), PNS_KICAD_IFACE_GENERATOR::AddItem(), and PCB_TUNING_PATTERN::EditStart().
|
inlinevirtual |
Reimplemented in PNS::LINE.
Definition at line 252 of file pns_item.h.
References m_rank.
Referenced by PNS::NODE::Commit().
|
inline |
Definition at line 270 of file pns_item.h.
References m_routable.
|
inlinevirtual |
Return the geometrical shape of the item.
Used for collision detection and spatial indexing.
aLayer | is the layer to query shape for (items may have different shapes on different layers) |
Reimplemented in PNS::ARC, PNS::HOLE, PNS::LINE, PNS::SEGMENT, PNS::SOLID, and PNS::VIA.
Definition at line 229 of file pns_item.h.
Referenced by PNS_TEST_DEBUG_DECORATOR::AddItem(), PNS::TOPOLOGY::AssembleCluster(), PNS::TOPOLOGY::AssembleDiffPair(), PNS::DP_GATEWAYS::BuildFromPrimitivePair(), collideSimple(), PNS::OPTIMIZER::computeBreakouts(), PNS::OPTIMIZER::customBreakouts(), PNS_KICAD_IFACE::HideItem(), PNS::SHOVE::onCollidingVia(), PNS::HIT_VISITOR::operator()(), PNS::VIA::PushoutForce(), PNS::INDEX::Query(), ROUTER_PREVIEW_ITEM::ROUTER_PREVIEW_ITEM(), and ROUTER_PREVIEW_ITEM::Update().
|
inlinevirtual |
Return a list of layers that have unique (potentially different) shapes.
Reimplemented in PNS::VIA.
Definition at line 237 of file pns_item.h.
Referenced by RelevantShapeLayers().
|
inlinevirtual |
Reimplemented in PNS::LINE.
Definition at line 249 of file pns_item.h.
References m_marker.
Referenced by PNS::NODE::Commit(), and PNS::DRAGGER::Start().
|
protected |
Definition at line 315 of file pns_item.h.
Referenced by IsCompoundShapePrimitive(), ITEM(), and SetIsCompoundShapePrimitive().
|
protected |
Definition at line 314 of file pns_item.h.
Referenced by IsFreePad(), ITEM(), and SetIsFreePad().
|
protected |
Definition at line 313 of file pns_item.h.
Referenced by PNS::HOLE::Clone(), PNS::VIA::Clone(), IsVirtual(), ITEM(), PNS::VIA::operator=(), PNS::VIA::VIA(), and PNS::VVIA::VVIA().
|
protected |
Definition at line 303 of file pns_item.h.
Referenced by collideSimple(), ITEM(), Kind(), KindStr(), and OfKind().
|
protected |
Definition at line 306 of file pns_item.h.
Referenced by PNS::ARC::ARC(), PNS::ARC::Clone(), PNS::SEGMENT::Clone(), PNS::VIA::Clone(), collideSimple(), PNS::JOINT::Dump(), PNS::VIA::EffectiveLayer(), Format(), ITEM(), PNS::JOINT::JOINT(), Layers(), PNS::LINE::LINE(), PNS::JOINT::Merge(), PNS::LINE::operator=(), PNS::JOINT::Overlaps(), PNS::SEGMENT::SEGMENT(), PNS::SOLID::SetHole(), PNS::VIA::SetHole(), SetLayer(), SetLayers(), PNS::VIA::SetStackMode(), PNS::VIA::UniqueShapeLayers(), and PNS::JOINT::Unlink().
|
mutableprotected |
Definition at line 310 of file pns_item.h.
Referenced by PNS::ARC::ARC(), PNS::ARC::Clone(), PNS::HOLE::Clone(), PNS::SEGMENT::Clone(), PNS::VIA::Clone(), ITEM(), PNS::LINE::LINE(), Mark(), PNS::LINE::Mark(), Marker(), PNS::LINE::Marker(), PNS::LINE::operator=(), PNS::VIA::operator=(), PNS::SEGMENT::SEGMENT(), Unmark(), PNS::LINE::Unmark(), and PNS::VIA::VIA().
|
protected |
Definition at line 308 of file pns_item.h.
Referenced by ITEM(), PNS::LINE::LINE(), PNS::LINE::operator=(), and PNS::SOLID::SOLID().
|
protected |
Definition at line 309 of file pns_item.h.
Referenced by PNS::LINE::AppendVia(), PNS::ARC::ARC(), PNS::ARC::Clone(), PNS::SEGMENT::Clone(), ITEM(), PNS::LINE::LINE(), Net(), PNS::HOLE::Net(), PNS::LINE::operator=(), PNS::SEGMENT::SEGMENT(), and SetNet().
|
protectedinherited |
Definition at line 87 of file pns_item.h.
Referenced by PNS::OWNABLE_ITEM::BelongsTo(), ITEM(), PNS::LINE::operator=(), PNS::OWNABLE_ITEM::Owner(), and PNS::OWNABLE_ITEM::SetOwner().
|
protected |
Definition at line 305 of file pns_item.h.
Referenced by BoardItem(), PNS::HOLE::BoardItem(), PNS::HOLE::Clone(), PNS::VIA::Clone(), collideSimple(), ITEM(), Parent(), and SetParent().
|
protected |
Definition at line 311 of file pns_item.h.
Referenced by PNS::ARC::ARC(), PNS::ARC::Clone(), PNS::HOLE::Clone(), PNS::SEGMENT::Clone(), PNS::VIA::Clone(), ITEM(), PNS::LINE::LINE(), PNS::LINE::operator=(), PNS::VIA::operator=(), Rank(), PNS::LINE::Rank(), PNS::SEGMENT::SEGMENT(), SetRank(), PNS::LINE::SetRank(), and PNS::VIA::VIA().
|
protected |
Definition at line 312 of file pns_item.h.
Referenced by IsRoutable(), ITEM(), and SetRoutable().