KiCad PCB EDA Suite
|
A 2D point on a given set of layers and belonging to a certain net, that links together a number of board items. More...
#include <pns_joint.h>
Classes | |
struct | HASH_TAG |
< Joints are hashed by their position, layers and net. More... | |
struct | JOINT_TAG_HASH |
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 } |
< Supported item types More... | |
Public Member Functions | |
JOINT () | |
JOINT (const VECTOR2I &aPos, const LAYER_RANGE &aLayers, NET_HANDLE aNet=nullptr) | |
JOINT (const JOINT &aB) | |
ITEM * | Clone () const override |
Return a deep copy of the item. | |
bool | IsLineCorner (bool aAllowLockedSegs=false) const |
Checks if a joint connects two segments of the same net, layer, and width. | |
bool | IsNonFanoutVia () const |
bool | IsStitchingVia () const |
bool | IsTraceWidthChange () const |
Link the joint to a given board item (when it's added to the NODE). | |
void | Link (ITEM *aItem) |
Unlink a given board item from the joint (upon its removal from a NODE) | |
bool | Unlink (ITEM *aItem) |
For trivial joints, return the segment adjacent to (aCurrent). | |
LINKED_ITEM * | NextSegment (ITEM *aCurrent, bool aAllowLockedSegs=false) const |
VIA * | Via () const |
const HASH_TAG & | Tag () const |
trivial accessors | |
const VECTOR2I & | Pos () const |
NET_HANDLE | Net () const override |
const std::vector< ITEM * > & | LinkList () const |
const ITEM_SET & | CLinks () const |
ITEM_SET & | Links () |
int | LinkCount (int aMask=-1) const |
void | Dump () const |
bool | operator== (const JOINT &rhs) const |
void | Merge (const JOINT &aJoint) |
bool | Overlaps (const JOINT &rhs) const |
void | Lock (bool aLock=true) |
bool | IsLocked () const |
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) |
const LAYER_RANGE & | Layers () const |
void | SetLayers (const 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, COLLISION_SEARCH_CONTEXT *aCtx=nullptr) const |
Check for a collision (clearance violation) with between us and item aOther. | |
virtual const SHAPE * | Shape () const |
Return the geometrical shape of the item. | |
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 |
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 |
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, COLLISION_SEARCH_CONTEXT *aCtx) const |
Private Attributes | |
HASH_TAG | m_tag |
< hash tag for unordered_multimap | |
ITEM_SET | m_linkedItems |
locked (non-movable) flag | |
bool | m_locked |
A 2D point on a given set of layers and belonging to a certain net, that links together a number of board items.
A hash table of joints is used by the router to follow connectivity between the items.
Definition at line 42 of file pns_joint.h.
|
inherited |
< 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 |
Definition at line 100 of file pns_item.h.
|
inline |
Definition at line 67 of file pns_joint.h.
|
inline |
Definition at line 70 of file pns_joint.h.
References PNS::ITEM::m_layers, m_locked, m_tag, PNS::JOINT::HASH_TAG::net, and PNS::JOINT::HASH_TAG::pos.
|
inline |
Definition at line 79 of file pns_joint.h.
References PNS::ITEM::m_layers, m_linkedItems, m_locked, m_tag, PNS::JOINT::HASH_TAG::net, and PNS::JOINT::HASH_TAG::pos.
|
inlinevirtualinherited |
Reimplemented in PNS::SOLID, PNS::ARC, PNS::SEGMENT, and PNS::VIA.
Definition at line 237 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().
|
inlinevirtualinherited |
Reimplemented in PNS::ARC, PNS::SEGMENT, PNS::SOLID, and PNS::VIA.
Definition at line 242 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::NODE::Remove(), PNS::LINE::RemoveVia(), PNS::SOLID::SetHole(), PNS::VIA::SetHole(), PNS::LINE::~LINE(), PNS::NODE::~NODE(), and PNS::VIA::~VIA().
|
inlinevirtualinherited |
Reimplemented in PNS::HOLE.
Definition at line 191 of file pns_item.h.
References PNS::ITEM::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().
|
inline |
Definition at line 278 of file pns_joint.h.
References m_linkedItems.
Referenced by PNS::TOPOLOGY::AssembleTrivialPath(), PNS::SHOVE::fixupViaCollisions(), PNS::TOPOLOGY::followTrivialPath(), PNS_KICAD_IFACE_BASE::inheritTrackWidth(), and PNS::LINE_PLACER::simplifyNewLine().
|
inlineoverridevirtual |
|
inherited |
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 273 of file pns_item.cpp.
References PNS::ITEM::collideSimple().
Referenced by PNS::SHOVE::fixupViaCollisions(), PNS::SHOVE::onCollidingSolid(), PNS::NODE::DEFAULT_OBSTACLE_VISITOR::operator()(), PNS::OPTIMIZER::CACHE_VISITOR::operator()(), PNS::SHOVE::shoveLineFromLoneVia(), PNS::SHOVE::shoveLineToHullSet(), PNS::COMPONENT_DRAGGER::Start(), and PNS::verifyDpBypass().
|
privateinherited |
Definition at line 93 of file pns_item.cpp.
References SHAPE::Collide(), PNS::ITEM::collideSimple(), Edge_Cuts, PNS::NODE::GetClearance(), PNS::ROUTER::GetInstance(), PNS::ROUTER::GetInterface(), BOARD_ITEM::GetLayer(), PNS::NODE::GetRuleResolver(), PNS::ITEM::Hole(), PNS::ITEM::HOLE_T, PNS::ROUTER_IFACE::IsFlashedOnLayer(), PNS::ITEM::IsFreePad(), PNS::RULE_RESOLVER::IsInNetTie(), PNS::RULE_RESOLVER::IsKeepout(), PNS::RULE_RESOLVER::IsNetTieExclusion(), PNS::RULE_RESOLVER::IsNonPlatedSlot(), PNS::ITEM::Kind(), PNS::ITEM::Layers(), PNS::ITEM::LINE_T, PNS::OBSTACLE::m_clearance, PNS::COLLISION_SEARCH_OPTIONS::m_differentNetsOnly, PNS::OBSTACLE::m_distFirst, PNS::OBSTACLE::m_head, PNS::OBSTACLE::m_item, PNS::ITEM::m_kind, PNS::ITEM::m_layers, PNS::OBSTACLE::m_maxFanoutWidth, PNS::COLLISION_SEARCH_OPTIONS::m_overrideClearance, PNS::ITEM::m_parent, PNS::COLLISION_SEARCH_OPTIONS::m_useClearanceEpsilon, PNS::ITEM::Net(), PNS::COLLISION_SEARCH_CONTEXT::obstacles, PNS::COLLISION_SEARCH_CONTEXT::options, LAYER_RANGE::Overlaps(), PNS::NODE::QueryEdgeExclusions(), PNS::ITEM::Shape(), and PNS::shouldWeConsiderHoleCollisions().
Referenced by PNS::ITEM::Collide(), and PNS::ITEM::collideSimple().
void PNS::JOINT::Dump | ( | ) | const |
Definition at line 1302 of file pns_node.cpp.
References LAYER_RANGE::End(), VECTOR2< T >::Format(), LinkCount(), PNS::ITEM::m_layers, m_tag, PNS::JOINT::HASH_TAG::net, PNS::JOINT::HASH_TAG::pos, and LAYER_RANGE::Start().
|
virtualinherited |
Reimplemented in PNS::SEGMENT, and PNS::VIA.
Definition at line 305 of file pns_item.cpp.
References LAYER_RANGE::End(), PNS::ROUTER::GetInstance(), PNS::ROUTER::GetInterface(), PNS::ROUTER_IFACE::GetNetName(), PNS::ITEM::KindStr(), PNS::ITEM::m_layers, PNS::ITEM::Net(), and LAYER_RANGE::Start().
Referenced by PNS::NODE::Dump(), PNS::SEGMENT::Format(), PNS::VIA::Format(), and PNS::SHOVE::shoveIteration().
|
inlinevirtualinherited |
Reimplemented in PNS::SOLID, PNS::VIA, and PNS::VVIA.
Definition at line 272 of file pns_item.h.
Referenced by PNS::NODE::Commit(), PNS::NODE::doRemove(), and PNS::SHOVE::getClearance().
|
inlinevirtualinherited |
Reimplemented in PNS::SOLID, and PNS::VIA.
Definition at line 273 of file pns_item.h.
Referenced by PNS::ITEM::collideSimple(), PNS::NODE::Commit(), PNS::NODE::doRemove(), PNS::SHOVE::getClearance(), ROUTER_PREVIEW_ITEM::ROUTER_PREVIEW_ITEM(), and ROUTER_PREVIEW_ITEM::Update().
|
inlinevirtualinherited |
Reimplemented in PNS::ARC, PNS::SEGMENT, PNS::HOLE, PNS::SOLID, and PNS::VIA.
Definition at line 158 of file pns_item.h.
|
inlineinherited |
Definition at line 270 of file pns_item.h.
References PNS::ITEM::m_isCompoundShapePrimitive.
|
inlineinherited |
Definition at line 257 of file pns_item.h.
References PNS::ITEM::m_isFreePad, and PNS::ITEM::ParentPadVia().
Referenced by PNS::ITEM::collideSimple().
|
inline |
Checks if a joint connects two segments of the same net, layer, and width.
aAllowLockedSegs | will consider joints between locked and unlocked segments as trivial |
Definition at line 101 of file pns_joint.h.
References PNS::ITEM::ARC_T, PNS::ITEM_SET::CItems(), PNS::ITEM_SET::Count(), PNS::ITEM::IsLocked(), m_linkedItems, PNS::ITEM::SEGMENT_T, PNS::ITEM_SET::Size(), and PNS::LINKED_ITEM::Width().
Referenced by PNS::NODE::followLine(), NextSegment(), and PNS::LINE_PLACER::simplifyNewLine().
|
inline |
Definition at line 327 of file pns_joint.h.
References m_locked.
Referenced by PNS::NODE::followLine(), Merge(), and PNS::SHOVE::pushOrShoveVia().
|
inline |
Definition at line 149 of file pns_joint.h.
References PNS::ITEM::ARC_T, PNS::ITEM_SET::CItems(), m_linkedItems, PNS::ITEM::SEGMENT_T, and PNS::ITEM::VIA_T.
Referenced by PNS::TOPOLOGY::AssembleTrivialPath(), and PNS::TOPOLOGY::followTrivialPath().
|
inlineinherited |
Definition at line 253 of file pns_item.h.
References PNS::ITEM::m_routable.
Referenced by PNS::NODE::addSolid(), and PNS::NODE::removeSolidIndex().
|
inline |
Definition at line 171 of file pns_joint.h.
References PNS::ITEM_SET::Count(), m_linkedItems, PNS::ITEM_SET::Size(), and PNS::ITEM::VIA_T.
Referenced by PNS::SHOVE::pushOrShoveVia().
|
inline |
Link the joint to a given board item (when it's added to the NODE).
Definition at line 176 of file pns_joint.h.
References PNS::ITEM::ARC_T, PNS::ITEM_SET::CItems(), PNS::ITEM_SET::Count(), m_linkedItems, PNS::ITEM::SEGMENT_T, PNS::ITEM::VIA_T, and PNS::LINKED_ITEM::Width().
Referenced by PNS::TOPOLOGY::followTrivialPath().
|
inlineinherited |
Definition at line 264 of file pns_item.h.
References PNS::ITEM::m_isVirtual.
Referenced by PNS_KICAD_IFACE::DisplayItem(), PNS::NODE::GetClearance(), and PNS::NODE::QueryColliding().
|
inlineinherited |
Return the type (kind) of the item.
Definition at line 167 of file pns_item.h.
References PNS::ITEM::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(), PNS::ITEM::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(), NextSegment(), PNS::OPTIMIZER::CACHE_VISITOR::operator()(), ROUTER_TOOL::performDragging(), PNS::INDEX::Query(), PNS::NODE::Remove(), 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().
|
inherited |
Definition at line 282 of file pns_item.cpp.
References PNS::ITEM::ARC_T, PNS::ITEM::DIFF_PAIR_T, PNS::ITEM::HOLE_T, PNS::ITEM::JOINT_T, PNS::ITEM::LINE_T, PNS::ITEM::m_kind, PNS::ITEM::SEGMENT_T, PNS::ITEM::SOLID_T, and PNS::ITEM::VIA_T.
Referenced by PNS::ITEM::Format(), PNS::TOOL_BASE::pickSingleItem(), and PNS::TOOL_BASE::updateEndItem().
|
inlinevirtualinherited |
Definition at line 200 of file pns_item.h.
References PNS::ITEM::Layers(), and LAYER_RANGE::Start().
Referenced by PNS::TOPOLOGY::AssembleTuningPath(), PNS::DRAGGER::CurrentLayer(), PNS::OPTIMIZER::fanoutCleanup(), PNS_KICAD_IFACE_BASE::ImportSizes(), PNS_PCBNEW_RULE_RESOLVER::IsKeepout(), PNS_PCBNEW_RULE_RESOLVER::IsNetTieExclusion(), PNS::MEANDER_PLACER_BASE::lineLength(), PNS::ROUTER::markViolations(), PNS::NODE::NearestObstacle(), PNS::SHOVE::onCollidingSegment(), PNS::OPTIMIZER::runSmartPads(), PNS::SHOVE::shoveLineFromLoneVia(), and PNS::SHOVE::ShoveObstacleLine().
|
inlineinherited |
Definition at line 196 of file pns_item.h.
References PNS::ITEM::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(), PNS::ITEM::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(), PNS::ITEM::Layer(), PNS::ITEM::LayersOverlap(), PNS::LINE::LINE(), PNS::NODE::LockJoint(), PNS::VIA::MakeHandle(), PNS::ROUTER::markViolations(), PNS::TOPOLOGY::NearestUnconnectedAnchorPoint(), 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::COMPONENT_DRAGGER::Start(), ROUTER_PREVIEW_ITEM::Update(), PNS::TOOL_BASE::updateEndItem(), PNS::DIFF_PAIR::updateLine(), PNS::TOOL_BASE::updateStartItem(), and PNS::VIA::VIA().
|
inlineinherited |
Return true if the set of layers spanned by aOther overlaps our layers.
Definition at line 205 of file pns_item.h.
References PNS::ITEM::Layers(), and LAYER_RANGE::Overlaps().
Referenced by PNS::MEANDER_PLACER_BASE::lineLength(), PNS::SHOVE::onCollidingArc(), PNS::SHOVE::onCollidingSegment(), PNS::NODE::rebuildJoint(), and PNS::SHOVE::ShoveObstacleLine().
|
inline |
Unlink a given board item from the joint (upon its removal from a NODE)
Definition at line 208 of file pns_joint.h.
References PNS::ITEM_SET::Add(), PNS::ITEM_SET::Contains(), and m_linkedItems.
Referenced by PNS::NODE::linkJoint().
|
inline |
Definition at line 288 of file pns_joint.h.
References PNS::ITEM_SET::Count(), and m_linkedItems.
Referenced by Dump(), PNS::getDanglingAnchor(), PNS::TOPOLOGY::NearestUnconnectedAnchorPoint(), PNS::LINE_PLACER::simplifyNewLine(), PNS::LINE_PLACER::SplitAdjacentArcs(), PNS::LINE_PLACER::SplitAdjacentSegments(), and PNS::COMPONENT_DRAGGER::Start().
|
inline |
Definition at line 273 of file pns_joint.h.
References PNS::ITEM_SET::CItems(), and m_linkedItems.
Referenced by PNS::TOPOLOGY::AssembleDiffPair(), PNS::TOPOLOGY::AssembleTuningPath(), PNS::DRAGGER::checkVirtualVia(), PNS::TOPOLOGY::ConnectedJoints(), PNS::NODE::FindLinesBetweenJoints(), PNS::OPTIMIZER::findPadOrVia(), PNS::NODE::findRedundantArc(), PNS::NODE::findRedundantSegment(), PNS::findViaByHandle(), PNS::DRAGGER::findViaFanoutByHandle(), PNS::NODE::FixupVirtualVias(), PNS::MEANDER_PLACER_BASE::GetTotalPadToDieLength(), Merge(), PNS::TOPOLOGY::NearestUnconnectedAnchorPoint(), PNS::SHOVE::onCollidingSolid(), PNS::SHOVE::onReverseCollidingVia(), PNS::SHOVE::pushOrShoveVia(), PNS::NODE::rebuildJoint(), PNS::SHOVE::shoveLineToHullSet(), and PNS::COMPONENT_DRAGGER::Start().
|
inline |
Definition at line 283 of file pns_joint.h.
References m_linkedItems.
|
inline |
Definition at line 322 of file pns_joint.h.
References m_locked.
Referenced by PNS::NODE::LockJoint().
|
inlinevirtualinherited |
Reimplemented in PNS::LINE.
Definition at line 230 of file pns_item.h.
References PNS::ITEM::m_marker.
Referenced by PNS::SHOVE::ShoveDraggingVia().
|
inlinevirtualinherited |
Reimplemented in PNS::LINE.
Definition at line 232 of file pns_item.h.
References PNS::ITEM::m_marker.
Referenced by PNS::ARC::ARC(), PNS::ITEM::IsLocked(), PNS::SHOVE::pushOrShoveVia(), and ROUTER_PREVIEW_ITEM::Update().
|
inline |
Definition at line 300 of file pns_joint.h.
References PNS::ITEM_SET::Add(), IsLocked(), LinkList(), PNS::ITEM::m_layers, m_linkedItems, m_locked, LAYER_RANGE::Merge(), and Overlaps().
Referenced by PNS::NODE::touchJoint().
|
inlineoverridevirtual |
Reimplemented from PNS::ITEM.
Definition at line 268 of file pns_joint.h.
References m_tag, and PNS::JOINT::HASH_TAG::net.
Referenced by PNS::NODE::FixupVirtualVias(), PNS::TOPOLOGY::NearestUnconnectedAnchorPoint(), PNS::TOPOLOGY::NearestUnconnectedItem(), and PNS::COMPONENT_DRAGGER::Start().
|
inline |
Definition at line 226 of file pns_joint.h.
References PNS::ITEM_SET::CItems(), IsLineCorner(), PNS::ITEM::Kind(), m_linkedItems, and PNS::ITEM::VIA_T.
Referenced by PNS::NODE::followLine().
|
inlineinherited |
Definition at line 175 of file pns_item.h.
References PNS::ITEM::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(), isHole(), PNS::MEANDER_PLACER_BASE::lineLength(), PNS::SHOVE::onCollidingVia(), PNS::NODE::DEFAULT_OBSTACLE_VISITOR::operator()(), PCB_TUNING_PATTERN::recoverBaseline(), PNS_KICAD_IFACE::RemoveItem(), PNS_KICAD_IFACE_GENERATOR::RemoveItem(), 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().
|
inline |
Definition at line 295 of file pns_joint.h.
References m_tag, PNS::JOINT::HASH_TAG::net, and PNS::JOINT::HASH_TAG::pos.
|
inline |
Definition at line 316 of file pns_joint.h.
References PNS::ITEM::m_layers, m_tag, PNS::JOINT::HASH_TAG::net, LAYER_RANGE::Overlaps(), and PNS::JOINT::HASH_TAG::pos.
Referenced by Merge().
|
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(), PNS::ITEM::OwningNode(), PNS::NODE::Remove(), and PNS::LINE_PLACER::rhShoveOnly().
|
virtualinherited |
Definition at line 321 of file pns_item.cpp.
References PNS::OWNABLE_ITEM::Owner(), and PNS::ITEM::ParentPadVia().
|
inlineinherited |
Definition at line 186 of file pns_item.h.
References PNS::ITEM::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::LOGGER::Log(), PNS_KICAD_IFACE::modifyBoardItem(), PNS_KICAD_IFACE::RemoveItem(), PNS_KICAD_IFACE_GENERATOR::RemoveItem(), PNS::SHOVE::shoveIteration(), and PNS::LINE_PLACER::Start().
|
inlinevirtualinherited |
Reimplemented in PNS::HOLE.
Definition at line 262 of file pns_item.h.
Referenced by PNS::ITEM::IsFreePad(), PNS_PCBNEW_RULE_RESOLVER::IsNonPlatedSlot(), and PNS::ITEM::OwningNode().
|
inline |
Definition at line 263 of file pns_joint.h.
References m_tag, and PNS::JOINT::HASH_TAG::pos.
Referenced by PNS::TOPOLOGY::AssembleTuningPath(), PNS::NODE::FindLinesBetweenJoints(), PNS::NODE::FixupVirtualVias(), PNS::NODE::followLine(), PNS::TOPOLOGY::NearestUnconnectedAnchorPoint(), PNS::TOPOLOGY::NearestUnconnectedItem(), and PNS::NODE::rebuildJoint().
|
inlinevirtualinherited |
Reimplemented in PNS::LINE.
Definition at line 235 of file pns_item.h.
References PNS::ITEM::m_rank.
Referenced by PNS::ARC::ARC(), PNS::LINE::LINE(), PNS::SHOVE::onCollidingVia(), and PNS::SHOVE::shoveIteration().
|
inlinevirtualinherited |
Reimplemented in PNS::SOLID, and PNS::VIA.
Definition at line 274 of file pns_item.h.
|
inlineinherited |
Definition at line 269 of file pns_item.h.
References PNS::ITEM::m_isCompoundShapePrimitive.
|
inlineinherited |
Definition at line 255 of file pns_item.h.
References PNS::ITEM::m_isFreePad.
|
inlineinherited |
Definition at line 199 of file pns_item.h.
References PNS::ITEM::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().
|
inlineinherited |
Definition at line 197 of file pns_item.h.
References PNS::ITEM::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().
|
inlineinherited |
Definition at line 193 of file pns_item.h.
References PNS::ITEM::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().
|
inlineinherited |
Definition at line 185 of file pns_item.h.
References PNS::ITEM::m_parent.
Referenced by PNS_KICAD_IFACE::AddItem(), PNS_KICAD_IFACE_GENERATOR::AddItem(), and PCB_TUNING_PATTERN::EditStart().
|
inlinevirtualinherited |
Reimplemented in PNS::LINE.
Definition at line 234 of file pns_item.h.
References PNS::ITEM::m_rank.
Referenced by PNS::NODE::Commit(), and PNS::SHOVE::ShoveDraggingVia().
|
inlineinherited |
Definition at line 252 of file pns_item.h.
References PNS::ITEM::m_routable.
|
inlinevirtualinherited |
Return the geometrical shape of the item.
Used for collision detection and spatial indexing.
Reimplemented in PNS::ARC, PNS::HOLE, PNS::LINE, PNS::SEGMENT, PNS::SOLID, and PNS::VIA.
Definition at line 225 of file pns_item.h.
Referenced by PNS_TEST_DEBUG_DECORATOR::AddItem(), PNS::TOPOLOGY::AssembleDiffPair(), PNS::DP_GATEWAYS::BuildFromPrimitivePair(), PNS::ITEM::collideSimple(), PNS::OPTIMIZER::computeBreakouts(), PNS::OPTIMIZER::customBreakouts(), PNS_KICAD_IFACE::HideItem(), PNS::HIT_VISITOR::operator()(), PNS::VIA::PushoutForce(), PNS::INDEX::Query(), ROUTER_PREVIEW_ITEM::ROUTER_PREVIEW_ITEM(), and ROUTER_PREVIEW_ITEM::Update().
|
inline |
|
inline |
For trivial joints, return the segment adjacent to (aCurrent).
For non-trival ones, return NULL, indicating the end of line.
Definition at line 218 of file pns_joint.h.
References PNS::ITEM_SET::Erase(), m_linkedItems, and PNS::ITEM_SET::Size().
Referenced by PNS::NODE::unlinkJoint().
|
inlinevirtualinherited |
Reimplemented in PNS::LINE.
Definition at line 231 of file pns_item.h.
References PNS::ITEM::m_marker.
Referenced by PNS::NODE::Commit(), and PNS::DRAGGER::Start().
|
inline |
Definition at line 245 of file pns_joint.h.
References PNS::ITEM_SET::CItems(), m_linkedItems, and PNS::ITEM::VIA_T.
Referenced by PNS::SHOVE::fixupViaCollisions().
|
protectedinherited |
Definition at line 297 of file pns_item.h.
Referenced by PNS::ITEM::IsCompoundShapePrimitive(), PNS::ITEM::ITEM(), and PNS::ITEM::SetIsCompoundShapePrimitive().
|
protectedinherited |
Definition at line 296 of file pns_item.h.
Referenced by PNS::ITEM::IsFreePad(), PNS::ITEM::ITEM(), and PNS::ITEM::SetIsFreePad().
|
protectedinherited |
Definition at line 295 of file pns_item.h.
Referenced by PNS::HOLE::Clone(), PNS::VIA::Clone(), PNS::ITEM::IsVirtual(), PNS::ITEM::ITEM(), PNS::VIA::operator=(), PNS::VIA::VIA(), and PNS::VVIA::VVIA().
|
protectedinherited |
Definition at line 285 of file pns_item.h.
Referenced by PNS::ITEM::collideSimple(), PNS::ITEM::ITEM(), PNS::ITEM::Kind(), PNS::ITEM::KindStr(), and PNS::ITEM::OfKind().
|
protectedinherited |
Definition at line 288 of file pns_item.h.
Referenced by PNS::ARC::ARC(), PNS::ARC::Clone(), PNS::SEGMENT::Clone(), PNS::ITEM::collideSimple(), Dump(), PNS::ITEM::Format(), PNS::ITEM::ITEM(), JOINT(), PNS::ITEM::Layers(), PNS::LINE::LINE(), Merge(), PNS::LINE::operator=(), Overlaps(), PNS::SEGMENT::SEGMENT(), PNS::SOLID::SetHole(), PNS::VIA::SetHole(), PNS::ITEM::SetLayer(), and PNS::ITEM::SetLayers().
|
private |
locked (non-movable) flag
Definition at line 337 of file pns_joint.h.
Referenced by CLinks(), IsLineCorner(), IsNonFanoutVia(), IsStitchingVia(), IsTraceWidthChange(), JOINT(), Link(), LinkCount(), LinkList(), Links(), Merge(), NextSegment(), Unlink(), and Via().
|
private |
Definition at line 340 of file pns_joint.h.
Referenced by IsLocked(), JOINT(), Lock(), and Merge().
|
mutableprotectedinherited |
Definition at line 292 of file pns_item.h.
Referenced by PNS::ARC::ARC(), PNS::ARC::Clone(), PNS::HOLE::Clone(), PNS::SEGMENT::Clone(), PNS::VIA::Clone(), PNS::ITEM::ITEM(), PNS::LINE::LINE(), PNS::ITEM::Mark(), PNS::LINE::Mark(), PNS::ITEM::Marker(), PNS::LINE::Marker(), PNS::LINE::operator=(), PNS::VIA::operator=(), PNS::SEGMENT::SEGMENT(), PNS::ITEM::Unmark(), PNS::LINE::Unmark(), and PNS::VIA::VIA().
|
protectedinherited |
Definition at line 290 of file pns_item.h.
Referenced by PNS::ITEM::ITEM(), PNS::LINE::LINE(), PNS::LINE::operator=(), and PNS::SOLID::SOLID().
|
protectedinherited |
Definition at line 291 of file pns_item.h.
Referenced by PNS::LINE::AppendVia(), PNS::ARC::ARC(), PNS::ARC::Clone(), PNS::SEGMENT::Clone(), PNS::ITEM::ITEM(), PNS::LINE::LINE(), PNS::ITEM::Net(), PNS::HOLE::Net(), PNS::LINE::operator=(), PNS::SEGMENT::SEGMENT(), and PNS::ITEM::SetNet().
|
protectedinherited |
Definition at line 87 of file pns_item.h.
Referenced by PNS::OWNABLE_ITEM::BelongsTo(), PNS::ITEM::ITEM(), PNS::LINE::operator=(), PNS::OWNABLE_ITEM::Owner(), and PNS::OWNABLE_ITEM::SetOwner().
|
protectedinherited |
Definition at line 287 of file pns_item.h.
Referenced by PNS::ITEM::BoardItem(), PNS::HOLE::BoardItem(), PNS::HOLE::Clone(), PNS::VIA::Clone(), PNS::ITEM::collideSimple(), PNS::ITEM::ITEM(), PNS::ITEM::Parent(), and PNS::ITEM::SetParent().
|
protectedinherited |
Definition at line 293 of file pns_item.h.
Referenced by PNS::ARC::ARC(), PNS::ARC::Clone(), PNS::HOLE::Clone(), PNS::SEGMENT::Clone(), PNS::VIA::Clone(), PNS::ITEM::ITEM(), PNS::LINE::LINE(), PNS::LINE::operator=(), PNS::VIA::operator=(), PNS::ITEM::Rank(), PNS::LINE::Rank(), PNS::SEGMENT::SEGMENT(), PNS::ITEM::SetRank(), PNS::LINE::SetRank(), and PNS::VIA::VIA().
|
protectedinherited |
Definition at line 294 of file pns_item.h.
Referenced by PNS::ITEM::IsRoutable(), PNS::ITEM::ITEM(), and PNS::ITEM::SetRoutable().
|
private |
< hash tag for unordered_multimap
list of items linked to this joint
Definition at line 334 of file pns_joint.h.
Referenced by Dump(), JOINT(), Net(), operator==(), Overlaps(), Pos(), and Tag().