|
KiCad PCB EDA Suite
|
Represents a track on a PCB, connecting two non-trivial joints (that is, vias, pads, junctions between multiple traces or two traces different widths and combinations of these). More...
#include <pns_line.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 | |
| LINE () | |
| Makes an empty line. | |
| LINE (const LINE &aOther) | |
| LINE (const LINE &aBase, const SHAPE_LINE_CHAIN &aLine) | |
| Copy properties (net, layers, etc.) from a base line and replaces the shape by another. | |
| LINE (VIA *aVia) | |
| Construct a LINE for a lone VIA (ie a stitching via). | |
| ~LINE () | |
| virtual LINE * | Clone () const override |
| Return a deep copy of the item. | |
| LINE & | operator= (const LINE &aOther) |
| LINE & | operator= (LINE &&aOther) noexcept |
| bool | IsLinkedChecked () const |
| SEGMENT * | FindLinkedSegment (const SEG &aSeg) const |
| Finds a linked SEGMENT whose endpoints match aSeg (either direction) | |
| void | SetShape (const SHAPE_LINE_CHAIN &aLine) |
| Assign a shape to the line (a polyline/line chain). | |
| const SHAPE * | Shape (int aLayer) const override |
| Return the shape of the line. | |
| SHAPE_LINE_CHAIN & | Line () |
| Modifiable accessor to the underlying shape. | |
| const SHAPE_LINE_CHAIN & | CLine () const |
| int | SegmentCount () const |
| int | PointCount () const |
| int | ArcCount () const |
| int | ShapeCount () const |
| const VECTOR2I & | CPoint (int aIdx) const |
| Return the aIdx-th point of the line. | |
| const VECTOR2I & | CLastPoint () const |
| const SEG | CSegment (int aIdx) const |
| void | SetWidth (int aWidth) |
| Set line width. | |
| int | Width () const |
| Return line width. | |
| bool | CompareGeometry (const LINE &aOther) |
| Return true if the line is geometrically identical as line aOther. | |
| void | Reverse () |
| Reverse the point/vertex order. | |
| const LINE | ClipToNearestObstacle (NODE *aNode) const |
| Clip the line to the nearest obstacle, traversing from the line's start vertex (0). | |
| void | ClipVertexRange (int aStart, int aEnd) |
| Clip the line to a given range of vertices. | |
| int | CountCorners (int aAngles) const |
| Return the number of corners of angles specified by mask aAngles. | |
| bool | Walkaround (SHAPE_LINE_CHAIN aObstacle, SHAPE_LINE_CHAIN &aPrePath, SHAPE_LINE_CHAIN &aWalk, SHAPE_LINE_CHAIN &aPost, bool aCw) const |
| Calculate a line tightly wrapping a convex hull of an obstacle object (aObstacle). | |
| bool | Walkaround (const SHAPE_LINE_CHAIN &aObstacle, SHAPE_LINE_CHAIN &aPath, bool aCw) const |
| void | ShowLinks () const |
| Print out all linked segments. | |
| bool | EndsWithVia () const |
| int | FindSegment (const SEGMENT *aSeg) const |
| void | AppendVia (const VIA &aVia) |
| void | LinkVia (VIA *aVia) |
| void | RemoveVia () |
| VIA & | Via () |
| const VIA & | Via () const |
| void | SetViaDiameter (int aDiameter) |
| void | SetViaDrill (int aDrill) |
| virtual void | Mark (int aMarker) const override |
| virtual void | Unmark (int aMarker=-1) const override |
| virtual int | Marker () const override |
| virtual VECTOR2I | Anchor (int n) const override |
| virtual int | AnchorCount () const override |
| void | SetBlockingObstacle (ITEM *aObstacle) |
| ITEM * | GetBlockingObstacle () const |
| void | DragSegment (const VECTOR2I &aP, int aIndex, bool aFreeAngle=false) |
| void | DragCorner (const VECTOR2I &aP, int aIndex, bool aFreeAngle=false, DIRECTION_45 aPreferredEndingDirection=DIRECTION_45()) |
| void | DragArc (const VECTOR2I &aP, int aIndex) |
| void | SetRank (int aRank) override |
| int | Rank () const override |
| bool | HasLoops () const |
| bool | HasLockedSegments () const |
| void | Clear () |
| OPT_BOX2I | ChangedArea (const LINE *aOther) const |
| void | SetSnapThreshhold (int aThreshhold) |
| int | GetSnapThreshhold () const |
| SEGMENT * | FindLinkContainingVertex (const VECTOR2I &aP) const |
| void | Link (LINKED_ITEM *aLink) |
| Add a reference to an item registered in a NODE that is a part of this line. | |
| void | Unlink (const LINKED_ITEM *aLink) |
| std::vector< LINKED_ITEM * > & | Links () |
| Return the list of links from the owning node that constitute this line (or NULL if the line is not linked). | |
| const std::vector< LINKED_ITEM * > & | Links () const |
| bool | IsLinked () const |
| bool | ContainsLink (const LINKED_ITEM *aItem) const |
| Check if the segment aLink is a part of the line. | |
| LINKED_ITEM * | GetLink (int aIndex) const |
| virtual void | ClearLinks () |
| Erase the linking information. Used to detach the line from the owning node. | |
| int | LinkCount () const |
| Return the number of segments that were assembled together to form this line. | |
| 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 |
| void | SetSourceItem (BOARD_ITEM *aSourceItem) |
| BOARD_ITEM * | GetSourceItem () 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 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. | |
| 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 |
Static Public Member Functions | |
| static bool | ClassOf (const ITEM *aItem) |
Protected Member Functions | |
| void | copyLinks (const LINK_HOLDER *aParent) |
| Copy m_links from the line aParent. | |
Protected Attributes | |
| std::vector< LINKED_ITEM * > | m_links |
| List of segments in the owning NODE (ITEM::m_owner) that constitute this line, or NULL if the line is not a part of any node. | |
| PnsKind | m_kind |
| BOARD_ITEM * | m_parent |
| BOARD_ITEM * | m_sourceItem |
| 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 | |
| void | dragSegment45 (const VECTOR2I &aP, int aIndex) |
| void | dragCorner45 (const VECTOR2I &aP, int aIndex, DIRECTION_45 aPreferredEndingDirection) |
| void | dragSegmentFree (const VECTOR2I &aP, int aIndex) |
| void | dragCornerFree (const VECTOR2I &aP, int aIndex) |
| void | restoreUntouchedArcs (SHAPE_LINE_CHAIN &aPath, const SHAPE_LINE_CHAIN &aOriginal) const |
| Used to rebuild arcs in the walkaround since the graph only stores vertices. | |
| VECTOR2I | snapToNeighbourSegments (const SHAPE_LINE_CHAIN &aPath, const VECTOR2I &aP, int aIndex) const |
| VECTOR2I | snapDraggedCorner (const SHAPE_LINE_CHAIN &aPath, const VECTOR2I &aP, int aIndex) const |
| void | copyVia (const LINE &aOther) |
| Take a copy of another line's via if it owns one, or share the via it borrows. | |
| void | dropVia () |
| Free a via this line owns and forget whichever via it had. | |
| bool | collideSimple (const ITEM *aHead, const NODE *aNode, int aLayer, COLLISION_SEARCH_CONTEXT *aCtx) const |
Private Attributes | |
| SHAPE_LINE_CHAIN | m_line |
| The actual shape of the line. | |
| int | m_width |
| Our width. | |
| int | m_snapThreshhold |
| Width to smooth out jagged segments. | |
| VIA * | m_via |
| bool | m_ownsVia |
| A via made by AppendVia() or copied from a line that owned its via is ours to free. | |
| ITEM * | m_blockingObstacle |
| For mark obstacle mode. | |
Represents a track on a PCB, connecting two non-trivial joints (that is, vias, pads, junctions between multiple traces or two traces different widths and combinations of these).
PNS_LINEs are NOT stored in the model (NODE). Instead, they are assembled on-the-fly, based on a via/pad/segment that belongs to/starts/ends them.
PNS_LINEs can be either loose (consisting of segments that do not belong to any NODE) or owned (with segments taken from a NODE) - these are returned by NODE::AssembleLine() and friends.
A LINE may have a VIA attached at its end (i.e. the last point) - this is used by via dragging/force propagation stuff.
Definition at line 61 of file pns_line.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 | |
| LINKED_ITEM_MASK_T | |
Definition at line 101 of file pns_item.h.
|
inline |
Makes an empty line.
Definition at line 67 of file pns_line.h.
References PNS::ITEM::LINE_T, PNS::LINK_HOLDER::LINK_HOLDER(), m_blockingObstacle, m_ownsVia, m_snapThreshhold, m_via, and m_width.
Referenced by ChangedArea(), ClipToNearestObstacle(), Clone(), CompareGeometry(), copyVia(), LINE(), LINE(), operator=(), and operator=().
| LINE::LINE | ( | const LINE & | aOther | ) |
Definition at line 42 of file pns_line.cpp.
References PNS::LINK_HOLDER::copyLinks(), copyVia(), LINE(), PNS::LINK_HOLDER::LINK_HOLDER(), m_blockingObstacle, PNS::ITEM::m_layers, m_line, PNS::ITEM::m_marker, PNS::ITEM::m_movable, PNS::ITEM::m_net, m_ownsVia, PNS::ITEM::m_rank, m_snapThreshhold, m_via, and m_width.
|
inline |
Copy properties (net, layers, etc.) from a base line and replaces the shape by another.
Definition at line 82 of file pns_line.h.
References LINE(), PNS::LINK_HOLDER::LINK_HOLDER(), m_blockingObstacle, PNS::ITEM::m_layers, m_line, PNS::ITEM::m_net, m_ownsVia, m_snapThreshhold, m_via, and m_width.
|
inline |
Construct a LINE for a lone VIA (ie a stitching via).
The via stays with its owner.
Definition at line 98 of file pns_line.h.
References PNS::VIA::Diameter(), PNS::ITEM::Layers(), PNS::ITEM::LINE_T, PNS::LINK_HOLDER::LINK_HOLDER(), m_blockingObstacle, PNS::ITEM::m_layers, PNS::ITEM::m_net, m_ownsVia, PNS::ITEM::m_rank, m_snapThreshhold, m_via, m_width, PNS::ITEM::Net(), PNS::ITEM::Rank(), and PNS_LAYER_RANGE::Start().
| LINE::~LINE | ( | ) |
Definition at line 64 of file pns_line.cpp.
References dropVia().
|
inlineoverridevirtual |
|
inlineoverridevirtual |
| void LINE::AppendVia | ( | const VIA & | aVia | ) |
Definition at line 1408 of file pns_line.cpp.
References PNS::VIA::Clone(), dropVia(), m_line, PNS::ITEM::m_net, m_ownsVia, m_via, PNS::VIA::Pos(), and Reverse().
Referenced by PNS::LINE_PLACER::buildInitialLine(), PNS::SHOVE::onReverseCollidingVia(), PNS::LINE_PLACER::rhShoveOnly(), PNS::LINE_PLACER::rhWalkBase(), PNS::LINE_PLACER::rhWalkOnly(), PNS::SHOVE::ShoveObstacleLine(), and PNS::DIFF_PAIR::updateLine().
|
inline |
Definition at line 153 of file pns_line.h.
References m_line.
Referenced by PNS::OPTIMIZER::Optimize(), and ROUTER_TOOL::OptimizeSelected().
|
inlineinherited |
Definition at line 82 of file pns_item.h.
References m_owner.
Referenced by PNS::NODE::addSolid(), PNS::NODE::addVia(), PNS::NODE::doRemove(), PNS::NODE::Remove(), and PNS::NODE::~NODE().
|
inlinevirtualinherited |
Reimplemented in PNS::HOLE.
Definition at line 207 of file pns_item.h.
References m_parent.
Referenced by DIFF_PHASE_SKEW_TOOL::buildLengthDelayItems(), isEdge(), isEdge(), PNS_PCBNEW_RULE_RESOLVER::IsInNetTie(), PNS_PCBNEW_RULE_RESOLVER::IsNetTieExclusion(), TEMP_CLEARANCE_CACHE_KEY::makeParticipant(), PNS_PCBNEW_RULE_RESOLVER::QueryConstraint(), and ROUTER_PREVIEW_ITEM::ROUTER_PREVIEW_ITEM().
Definition at line 1544 of file pns_line.cpp.
References SEG::Contains(), SHAPE_LINE_CHAIN::CPoint(), SHAPE_LINE_CHAIN::CSegment(), PNS::extendBox(), BOX2< Vec >::Inflate(), LINE(), m_line, SHAPE_LINE_CHAIN::PointCount(), SHAPE_LINE_CHAIN::Simplify(), and Width().
Referenced by PNS::ChangedArea(), PNS::ChangedArea(), and PNS::DRAGGER::optimizeAndUpdateDraggedLine().
|
inlinestatic |
Definition at line 114 of file pns_line.h.
References PNS::ITEM::Kind(), and PNS::ITEM::LINE_T.
|
inline |
Definition at line 158 of file pns_line.h.
References m_line.
Referenced by PNS::TOPOLOGY::AssembleTuningPath(), PNS::MULTI_DRAGGER::Drag(), PNS::OPTIMIZER::fanoutCleanup(), PNS::NODE::FindLineEnds(), PNS::TOPOLOGY::followBranch(), PNS::TOPOLOGY::followTrivialPath(), PNS::TOPOLOGY::LeadingRatLine(), PNS::TOPOLOGY::NearestUnconnectedAnchorPoint(), PNS::LINE_PLACER::rhShoveOnly(), PNS::LINE_PLACER::rhWalkBase(), PNS::LINE_PLACER::rhWalkOnly(), PNS::WALKAROUND::Route(), PNS::LINE_PLACER::route(), PNS::SHOVE::Run(), PNS::SHOVE::sanityCheck(), PNS::SHOVE::shoveLineFromLoneVia(), PNS::SHOVE::shoveLineToHullSet(), PNS::SHOVE::ShoveObstacleLine(), PNS::LINE_PLACER::splitHeadTail(), Walkaround(), and PNS::TOPOLOGY::walkTuningPath().
| void LINE::Clear | ( | ) |
Definition at line 1636 of file pns_line.cpp.
References PNS::LINK_HOLDER::ClearLinks(), m_line, and RemoveVia().
Referenced by PNS::LINE_PLACER::rhWalkBase(), and PNS::LINE_PLACER::splitHeadTail().
|
inlinevirtualinherited |
Erase the linking information. Used to detach the line from the owning node.
Reimplemented in PNS::DIFF_PAIR.
Definition at line 86 of file pns_link_holder.h.
References m_links.
Referenced by PNS::LINE::Clear(), PNS::BLOCK_DRAGGER::Drag(), PNS::COMPONENT_DRAGGER::Drag(), PNS::MULTI_DRAGGER::Drag(), PNS::DRAGGER::dragMarkObstacles(), PNS::DRAGGER::dragShove(), PNS::DRAGGER::dragViaMarkObstacles(), PNS::DRAGGER::dragViaWalkaround(), PNS::MULTI_DRAGGER::multidragShove(), PNS::TOPOLOGY::NearestUnconnectedAnchorPoint(), PNS::SHOVE::onCollidingSolid(), PNS::SHOVE::onReverseCollidingVia(), PNS::OPTIMIZER::Optimize(), PNS::DRAGGER::optimizeAndUpdateDraggedLine(), ROUTER_TOOL::OptimizeSelected(), PNS::SHOVE::preShoveCleanup(), PNS::NODE::Remove(), PNS::PLACEMENT_ALGO::removeLoops(), and PNS::SHOVE::ShoveObstacleLine().
|
inline |
Definition at line 149 of file pns_line.h.
References m_line.
Referenced by PNS::COST_ESTIMATOR::Add(), PNS::TOPOLOGY::AssembleTrivialPath(), PNS::TOPOLOGY::AssembleTuningPath(), PNS::DIFF_PAIR_PLACER::attemptWalk(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), PNS::DIFF_PAIR::BuildMidpairIntersection(), PNS::KEEP_TOPOLOGY_CONSTRAINT::Check(), PNS::NODE::CheckColliding(), PNS::SHOVE::checkShoveDirection(), PNS::BLOCK_DRAGGER::classifyNeighbour(), PNS::BLOCK_DRAGGER::classifySelectedLink(), PNS::BLOCK_DRAGGER::clipToBlock(), PNS::clipToOtherLine(), PNS::COST_ESTIMATOR::CornerCost(), PNS::DIFF_PAIR::DIFF_PAIR(), PNS::BLOCK_DRAGGER::Drag(), PNS::DRAGGER::dragShove(), PNS::DRAGGER::dragViaMarkObstacles(), PNS::DRAGGER::dragViaWalkaround(), PNS::DRAGGER::dragWalkaround(), PNS::OPTIMIZER::fanoutCleanup(), PNS::NODE::FindLinesBetweenJoints(), PNS::LINE_PLACER::FixRoute(), PNS::TOPOLOGY::followBranch(), PNS::TOPOLOGY::followTrivialPath(), getPNSLine(), PCB_TUNING_PATTERN::initBaseLine(), PNS::LINE_PLACER::Move(), PNS::MULTI_DRAGGER::multidragWalkaround(), PNS::NODE::NearestObstacle(), PNS::SHOVE::onCollidingArc(), PNS::SHOVE::onReverseCollidingVia(), PNS::DRAGGER::optimizeAndUpdateDraggedLine(), PNS::LINE_PLACER::optimizeTailHeadTransition(), PNS::SHOVE::patchTadpoleVia(), PNS::SHOVE::preShoveCleanup(), PNS_PCBNEW_RULE_RESOLVER::QueryConstraint(), PNS::COST_ESTIMATOR::Remove(), PNS::PLACEMENT_ALGO::removeLoops(), PNS::COST_ESTIMATOR::Replace(), PNS_LOG_PLAYER::ReplayLog(), PNS::DIFF_PAIR_PLACER::rhShoveOnly(), PNS::LINE_PLACER::rhWalkBase(), PNS::WALKAROUND::Route(), PNS::SHOVE::shoveLineFromLoneVia(), PNS::SHOVE::shoveLineToHullSet(), PNS::SHOVE::ShoveObstacleLine(), PNS::TOPOLOGY::SimplifyLine(), PNS::PLACEMENT_ALGO::simplifyNewLine(), PNS::WALKAROUND::singleStep(), PNS::OPTIMIZER::smartPadsSingle(), PNS::LINE_PLACER::splitHeadTail(), PNS::COMPONENT_DRAGGER::Start(), PNS::DRAGGER::startDragArc(), PNS::Tighten(), PNS::LINE_PLACER::updatePStart(), Walkaround(), and PNS::TOPOLOGY::walkTuningPath().
Clip the line to the nearest obstacle, traversing from the line's start vertex (0).
Returns the clipped line.
Definition at line 673 of file pns_line.cpp.
References SHAPE_LINE_CHAIN::Clear(), SHAPE_LINE_CHAIN::CSegment(), SHAPE_LINE_CHAIN::IsArcSegment(), LINE(), Line(), PNS::NODE::NearestObstacle(), SEG::NearestPoint(), SHAPE_LINE_CHAIN::NearestSegment(), SHAPE_LINE_CHAIN::Remove(), RemoveVia(), and SHAPE_LINE_CHAIN::Split().
| void LINE::ClipVertexRange | ( | int | aStart, |
| int | aEnd ) |
Clip the line to a given range of vertices.
We need to figure out which joints to keep after the clip operation, because arcs will have multiple vertices. It is assumed that anything calling this method will have determined the vertex range to clip based on joints, meaning we will never clip in the middle of an arc. Clipping in the middle of an arc would break this and various other things...
Definition at line 1468 of file pns_line.cpp.
References PNS::LINK_HOLDER::IsLinked(), m_line, and PNS::LINK_HOLDER::m_links.
Referenced by PNS::BLOCK_DRAGGER::clipToBlock(), and PNS::NODE::FindLinesBetweenJoints().
|
overridevirtual |
Return a deep copy of the item.
Implements PNS::ITEM.
Definition at line 160 of file pns_line.cpp.
References LINE().
Referenced by PNS::ITEM_SET::Add(), PNS::ITEM_SET::Prepend(), PNS::SHOVE::replaceLine(), and PNS::SHOVE::touchRootLine().
|
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.
| aHead | is the item to test for collision. |
| aNode | is the item to check for collision against. |
| aLayer | is the layer to check for collision against. |
| aCtx | is the collision search context. |
Definition at line 305 of file pns_item.cpp.
References collideSimple(), and ITEM().
Referenced by BOOST_FIXTURE_TEST_CASE(), 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().
|
privateinherited |
Definition at line 104 of file pns_item.cpp.
References actual, clearance, SHAPE::Collide(), collideSimple(), dyn_cast(), Edge_Cuts, PNS::NODE::GetClearance(), PNS::ROUTER::GetInstance(), PNS::ROUTER::GetInterface(), PNS::NODE::GetRuleResolver(), HasHole(), PNS::RULE_RESOLVER::HasUserDefinedPhysicalConstraint(), Hole(), HOLE_T, PNS::ROUTER_IFACE::IsFlashedOnLayer(), IsFreePad(), PNS::RULE_RESOLVER::IsInNetTie(), PNS::RULE_RESOLVER::IsKeepout(), PNS::RULE_RESOLVER::IsNetTieExclusion(), PNS::RULE_RESOLVER::IsNonPlatedSlot(), ITEM(), 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, PNS::HOLE::Net(), Net(), PNS::COLLISION_SEARCH_CONTEXT::obstacles, PNS::COLLISION_SEARCH_CONTEXT::options, PNS::NODE::QueryEdgeExclusions(), Shape(), and PNS::shouldWeConsiderHoleCollisions().
Referenced by Collide(), and collideSimple().
| bool LINE::CompareGeometry | ( | const LINE & | aOther | ) |
Return true if the line is geometrically identical as line aOther.
Definition at line 1394 of file pns_line.cpp.
References LINE(), and m_line.
Referenced by ROUTER_TOOL::OptimizeSelected().
|
inlineinherited |
Check if the segment aLink is a part of the line.
Definition at line 72 of file pns_link_holder.h.
References alg::contains(), and m_links.
Referenced by PNS::NODE::Add(), PNS::DIFF_PAIR::BuildMidpairIntersection(), PCB_TUNING_PATTERN::initBaseLine(), PNS::BLOCK_DRAGGER::isPinned(), and PNS::LINE::RemoveVia().
|
inlineprotectedinherited |
Copy m_links from the line aParent.
Definition at line 115 of file pns_link_holder.h.
References LINK_HOLDER(), and m_links.
Referenced by PNS::LINE::LINE(), and PNS::LINE::operator=().
|
private |
Take a copy of another line's via if it owns one, or share the via it borrows.
Definition at line 70 of file pns_line.cpp.
References PNS::VIA::Clone(), LINE(), PNS::ITEM::m_net, m_ownsVia, and m_via.
Referenced by LINE(), operator=(), and operator=().
| int LINE::CountCorners | ( | int | aAngles | ) | const |
Return the number of corners of angles specified by mask aAngles.
Definition at line 212 of file pns_line.cpp.
References DIRECTION_45::Angle(), and m_line.
Referenced by PNS::CORNER_COUNT_LIMIT_CONSTRAINT::Check(), PNS::OPTIMIZER::Optimize(), and PNS::OPTIMIZER::smartPadsSingle().
|
inline |
Return the aIdx-th point of the line.
Definition at line 157 of file pns_line.h.
References m_line.
Referenced by PNS::TOPOLOGY::AssembleTuningPath(), PNS::SHOVE::checkShoveDirection(), PNS::OPTIMIZER::fanoutCleanup(), PNS::NODE::FindLineEnds(), PNS::TOPOLOGY::followBranch(), PNS::TOPOLOGY::followTrivialPath(), PNS::getDanglingAnchor(), HasLoops(), PNS::WALKAROUND::Route(), PNS::SHOVE::Run(), PNS::SHOVE::sanityCheck(), PNS::SHOVE::shoveLineFromLoneVia(), PNS::SHOVE::shoveLineToHullSet(), PNS::SHOVE::ShoveObstacleLine(), PNS::LINE_PLACER::splitHeadTail(), and PNS::TOPOLOGY::walkTuningPath().
|
inline |
Definition at line 159 of file pns_line.h.
References m_line.
Referenced by PNS::DIFF_PAIR::BuildMidpairIntersection(), PNS::DIFF_PAIR::EndingPrimitives(), PNS::MULTI_DRAGGER::findNewLeaderSegment(), PNS::LINE_PLACER::FixRoute(), PNS::OPTIMIZER::mergeStep(), PNS::LINE_PLACER::optimizeTailHeadTransition(), PNS::SHOVE::ShoveObstacleLine(), and PNS::MULTI_DRAGGER::Start().
| void LINE::DragArc | ( | const VECTOR2I & | aP, |
| int | aIndex ) |
Definition at line 905 of file pns_line.cpp.
References SEG::A, std::abs(), anchor, SHAPE_LINE_CHAIN::Append(), SEG::B, CalcArcMid(), CIRCLE::Center, center, CIRCLE::ConstructFromTanTanPt(), cursor, VECTOR2< T >::EuclideanNorm(), SHAPE_ARC::GetArcMid(), SHAPE_ARC::GetCenter(), ADVANCED_CFG::GetCfg(), SHAPE_ARC::GetP0(), SHAPE_ARC::GetP1(), SHAPE_ARC::GetWidth(), SEG::IntersectLines(), KiROUND(), SEG::LineProject(), m_line, ADVANCED_CFG::m_MaxTangentAngleDeviation, M_PI, CIRCLE::NearestPoint(), SEG::NearestPoint(), pcbIUScale, CIRCLE::Radius, SHAPE_LINE_CHAIN::SetWidth(), SEG::Side(), VECTOR2< T >::x, and VECTOR2< T >::y.
Referenced by BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), PNS::DRAGGER::dragMarkObstacles(), PNS::DRAGGER::dragShove(), and PNS::DRAGGER::dragWalkaround().
| void LINE::DragCorner | ( | const VECTOR2I & | aP, |
| int | aIndex, | ||
| bool | aFreeAngle = false, | ||
| DIRECTION_45 | aPreferredEndingDirection = DIRECTION_45() ) |
Definition at line 878 of file pns_line.cpp.
References dragCorner45(), and dragCornerFree().
Referenced by PNS::BLOCK_DRAGGER::Drag(), PNS::COMPONENT_DRAGGER::Drag(), PNS::MULTI_DRAGGER::Drag(), PNS::DRAGGER::dragMarkObstacles(), PNS::DRAGGER::dragShove(), PNS::DRAGGER::dragViaMarkObstacles(), PNS::DRAGGER::dragViaWalkaround(), and PNS::DRAGGER::dragWalkaround().
|
private |
Definition at line 817 of file pns_line.cpp.
References PNS::dragCornerInternal(), m_line, path, SHAPE_LINE_CHAIN::Reverse(), and snapDraggedCorner().
Referenced by DragCorner().
|
private |
| void LINE::DragSegment | ( | const VECTOR2I & | aP, |
| int | aIndex, | ||
| bool | aFreeAngle = false ) |
Definition at line 892 of file pns_line.cpp.
References dragSegment45().
Referenced by PNS::BLOCK_DRAGGER::Drag(), PNS::DRAGGER::dragMarkObstacles(), PNS::DRAGGER::dragShove(), and PNS::DRAGGER::dragWalkaround().
|
private |
Definition at line 1224 of file pns_line.cpp.
References SEG::A, DIRECTION_45::ANG_HALF_FULL, DIRECTION_45::ANG_OBTUSE, DIRECTION_45::Angle(), SHAPE_LINE_CHAIN::Append(), SEG::B, index, SEG::Intersect(), SEG::IntersectLines(), DIRECTION_45::Left(), SHAPE_LINE_CHAIN::Length(), m_line, path, DIRECTION_45::Right(), snapToNeighbourSegments(), DIRECTION_45::ToVector(), and DIRECTION_45::UNDEFINED.
Referenced by DragSegment().
|
private |
|
private |
Free a via this line owns and forget whichever via it had.
Definition at line 89 of file pns_line.cpp.
References m_ownsVia, and m_via.
Referenced by AppendVia(), LinkVia(), operator=(), operator=(), RemoveVia(), and ~LINE().
|
inline |
Definition at line 204 of file pns_line.h.
References m_via.
Referenced by BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), PNS::NODE::CheckColliding(), PNS::SHOVE::checkShoveDirection(), PNS::OPTIMIZER::fanoutCleanup(), PNS::LINE_PLACER::FixRoute(), PNS::ROUTER::markViolations(), PNS::ROUTER::movePlacing(), PNS::NODE::NearestObstacle(), PNS::TOPOLOGY::NearestUnconnectedAnchorPoint(), PNS::SHOVE::onCollidingSegment(), PNS::SHOVE::onCollidingSolid(), PNS::SHOVE::onCollidingVia(), PNS::SHOVE::onReverseCollidingVia(), PNS::SHOVE::patchTadpoleVia(), PNS::SHOVE::replaceLine(), PNS::LINE_PLACER::rhShoveOnly(), PNS::LINE_PLACER::rhWalkBase(), PNS::WALKAROUND::Route(), PNS::SHOVE::Run(), PNS::SHOVE::shoveIteration(), and PNS::SHOVE::ShoveObstacleLine().
Definition at line 1690 of file pns_line.cpp.
References dyn_cast(), and PNS::LINK_HOLDER::Links().
Referenced by PNS::DIFF_PAIR::BuildMidpairIntersection().
Finds a linked SEGMENT whose endpoints match aSeg (either direction)
Definition at line 1675 of file pns_line.cpp.
References dyn_cast(), PNS::LINK_HOLDER::Links(), and SEG::Reversed().
| int LINE::FindSegment | ( | const SEGMENT * | aSeg | ) | const |
Definition at line 1662 of file pns_line.cpp.
References m_line, and PNS::SEGMENT::Seg().
|
virtualinherited |
Reimplemented in PNS::SEGMENT, and PNS::VIA.
Definition at line 338 of file pns_item.cpp.
References PNS::ROUTER::GetInstance(), PNS::ROUTER::GetInterface(), PNS::ROUTER_IFACE::GetNetName(), KindStr(), m_layers, and Net().
Referenced by PNS::NODE::Dump(), PNS::SEGMENT::Format(), PNS::VIA::Format(), and PNS::SHOVE::shoveIteration().
|
inline |
Definition at line 244 of file pns_line.h.
References m_blockingObstacle.
Referenced by PNS::ROUTER::markViolations().
|
inlineinherited |
Definition at line 77 of file pns_link_holder.h.
References m_links.
Referenced by PNS::DIFF_PAIR::EndingPrimitives(), DIFF_PHASE_SKEW_TOOL::getNetPaths(), PNS::PLACEMENT_ALGO::removeLoops(), and PNS::TOPOLOGY::SimplifyLine().
|
inline |
Definition at line 267 of file pns_line.h.
References m_snapThreshhold.
|
inlineinherited |
Definition at line 202 of file pns_item.h.
References m_sourceItem.
Referenced by PNS::NODE::AssembleLine(), PNS_KICAD_IFACE::createBoardItem(), PNS_KICAD_IFACE_BASE::GetLengthDelayCalculationItems(), PNS_VIEWER_IFACE::GetLengthDelayCalculationItems(), PNS::VIA::operator=(), PNS::SEGMENT::SEGMENT(), PNS::DP_MEANDER_PLACER::Start(), PNS::MEANDER_PLACER::Start(), PNS::MEANDER_SKEW_PLACER::Start(), and PNS::BLOCK_DRAGGER::wrapLink().
|
inlinevirtualinherited |
Reimplemented in PNS::SOLID, PNS::VIA, and PNS::VVIA.
Definition at line 307 of file pns_item.h.
Referenced by collideSimple(), PNS::NODE::Commit(), PNS::NODE::doRemove(), PNS::SHOVE::getClearance(), ROUTER_TOOL::handleLayerSwitch(), PNS::WALKAROUND::RestrictToCluster(), and ROUTER_PREVIEW_ITEM::Update().
| bool LINE::HasLockedSegments | ( | ) | const |
Definition at line 1625 of file pns_line.cpp.
References PNS::LINK_HOLDER::m_links, and PNS::MK_LOCKED.
Referenced by PNS::SHOVE::onCollidingArc(), and PNS::SHOVE::onCollidingSegment().
| bool LINE::HasLoops | ( | ) | const |
Definition at line 1515 of file pns_line.cpp.
References CPoint(), and PointCount().
Referenced by PNS::SHOVE::onCollidingSolid().
|
inlinevirtualinherited |
Reimplemented in PNS::VIA.
Definition at line 256 of file pns_item.h.
Referenced by RelevantShapeLayers().
|
inlinevirtualinherited |
Reimplemented in PNS::SOLID, and PNS::VIA.
Definition at line 308 of file pns_item.h.
Referenced by collideSimple(), PNS::NODE::Commit(), PNS::NODE::doRemove(), PNS::SHOVE::getClearance(), ROUTER_TOOL::handleLayerSwitch(), PNS::WALKAROUND::RestrictToCluster(), and ROUTER_PREVIEW_ITEM::Update().
|
inlinevirtualinherited |
Reimplemented in PNS::ARC, PNS::HOLE, PNS::SEGMENT, PNS::SOLID, and PNS::VIA.
Definition at line 164 of file pns_item.h.
Referenced by PNS::RULE_RESOLVER::HullCache(), and PNS_PCBNEW_RULE_RESOLVER::HullCache().
|
inlineinherited |
Definition at line 305 of file pns_item.h.
References m_isCompoundShapePrimitive.
|
inlineinherited |
Definition at line 292 of file pns_item.h.
References m_isFreePad, and ParentPadVia().
Referenced by MOCK_RULE_RESOLVER::Clearance(), PNS_PCBNEW_RULE_RESOLVER::Clearance(), collideSimple(), and TEMP_CLEARANCE_CACHE_KEY::makeParticipant().
|
inlineinherited |
Definition at line 66 of file pns_link_holder.h.
References m_links.
Referenced by PNS::NODE::Add(), PNS::LINE::ClipVertexRange(), PNS::DIFF_PAIR::EndingPrimitives(), PNS::TOPOLOGY::followTrivialPath(), PNS::LINE::IsLinkedChecked(), PNS::SHOVE::pushLineStack(), PNS::LINE::Rank(), PNS::OPTIMIZER::removeCachedSegments(), ShowLinks(), and PNS::TOPOLOGY::SimplifyLine().
|
inline |
Definition at line 128 of file pns_line.h.
References PNS::LINK_HOLDER::IsLinked(), PNS::LINK_HOLDER::LinkCount(), and ShapeCount().
|
inlineinherited |
Definition at line 282 of file pns_item.h.
References Marker(), and PNS::MK_LOCKED.
Referenced by BOOST_FIXTURE_TEST_CASE(), PNS_KICAD_IFACE::createBoardItem(), PNS::BLOCK_DRAGGER::isFixedByLock(), PNS::JOINT::IsLineCorner(), PNS::JOINT::NextSegment(), PNS::SHOVE::pushOrShoveVia(), and PNS::LINE_PLACER::removeAntennas().
|
inlineinherited |
Definition at line 288 of file pns_item.h.
References m_routable.
Referenced by PNS::NODE::addSolid(), PNS::NODE::removeSolidIndex(), and PNS::BLOCK_DRAGGER::scanRigidItem().
|
inlineinherited |
Definition at line 299 of file pns_item.h.
References m_isVirtual.
Referenced by PNS_KICAD_IFACE::DisplayItem(), PNS::NODE::GetClearance(), PNS::JOINT::NextSegment(), and PNS::NODE::QueryColliding().
|
inlineinherited |
Return the type (kind) of the item.
Definition at line 173 of file pns_item.h.
References m_kind.
Referenced by PNS::NODE::add(), PNS::TOPOLOGY::AssembleDiffPair(), PNS::NODE::AssembleLine(), PNS::TOPOLOGY::AssembleTrivialPath(), PNS::TOPOLOGY::AssembleTuningPath(), BOOST_FIXTURE_TEST_CASE(), PNS::OPTIMIZER::CacheRemove(), PNS::NODE::CheckColliding(), PNS::BLOCK_DRAGGER::classifySelectedLink(), 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::BLOCK_DRAGGER::displaceItem(), PNS::DIFF_PAIR_PLACER::findDpEndingPrimitives(), PNS::NODE::followLine(), PNS::LOGGER::formatRouterItemAsJSON(), PNS_PCBNEW_RULE_RESOLVER::getBoardItem(), PNS::getDanglingAnchor(), PNS::HELPERS::GetSnappedStartPoint(), PNS_KICAD_IFACE_BASE::ImportSizes(), PNS_KICAD_IFACE_BASE::inheritTrackWidthAndDpGap(), TEMP_CLEARANCE_CACHE_KEY::makeParticipant(), PNS_KICAD_IFACE::modifyBoardItem(), PNS::JOINT::NextSegment(), DIFF_PHASE_SKEW_TOOL::normalisePathItems(), PNS::OPTIMIZER::CACHE_VISITOR::operator()(), PNS::INDEX::Query(), PNS_PCBNEW_RULE_RESOLVER::QueryConstraint(), PNS::NODE::Remove(), PNS::LINE_PLACER::removeAntennas(), PNS::BLOCK_DRAGGER::scanRigidItem(), PNS::SEGMENT::SEGMENT(), PNS::SHOVE::shoveIteration(), PNS::OPTIMIZER::smartPadsSingle(), PNS::TOOL_BASE::snapToItem(), PNS::DRAGGER::Start(), PNS::LINE_PLACER::Start(), ROUTER_PREVIEW_ITEM::Update(), and PNS::BLOCK_DRAGGER::wrapLink().
|
inherited |
Definition at line 315 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 PNS::TOPOLOGY::AssembleTrivialPath(), PNS::TOPOLOGY::AssembleTuningPath(), Format(), PNS::LOGGER::formatRouterItemAsJSON(), and PNS::TOOL_BASE::pickSingleItem().
|
inlinevirtualinherited |
Definition at line 216 of file pns_item.h.
References Layers(), and PNS_LAYER_RANGE::Start().
Referenced by RECOVERED_LAYER_IFACE::AddItem(), PNS::TOPOLOGY::AssembleTuningPath(), PNS::BLOCK_DRAGGER::classifySelectedLink(), PNS::clipToOtherLine(), PNS::OPTIMIZER::fanoutCleanup(), PNS::TOPOLOGY::findLinesFromVia(), PNS::SHOVE::fixupViaCollisions(), PNS::LOGGER::formatRouterItemAsJSON(), PNS_KICAD_IFACE_BASE::GetLengthDelayCalculationItems(), PNS_VIEWER_IFACE::GetLengthDelayCalculationItems(), PNS_KICAD_IFACE_BASE::ImportSizes(), PNS_PCBNEW_RULE_RESOLVER::IsKeepout(), PNS_PCBNEW_RULE_RESOLVER::IsNetTieExclusion(), TEMP_CLEARANCE_CACHE_KEY::makeParticipant(), PNS::ROUTER::markViolations(), PNS::ROUTER::movePlacing(), PNS::NODE::NearestObstacle(), PNS::SHOVE::onCollidingSegment(), PNS::SHOVE::onCollidingSolid(), PNS::SHOVE::onCollidingVia(), PNS::SHOVE::onReverseCollidingVia(), PNS::MULTI_DRAGGER::reconstructOriginalDpCoupling(), PNS::OPTIMIZER::runSmartPads(), PNS::BLOCK_DRAGGER::scanRigidItem(), PNS::SHOVE::shoveIteration(), PNS::SHOVE::shoveLineFromLoneVia(), PNS::SHOVE::shoveLineToHullSet(), PNS::SHOVE::ShoveObstacleLine(), PNS::COMPONENT_DRAGGER::Start(), MOCK_PNS_KICAD_IFACE::TestInheritTrackWidth(), PNS_KICAD_IFACE_BASE::TouchesCopperZone(), and PNS::verifyDpBypass().
|
inlineinherited |
Definition at line 212 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::ARC::ARC(), PNS::TOPOLOGY::AssembleDiffPair(), PNS::NODE::AssembleLine(), BOOST_FIXTURE_TEST_CASE(), PNS::KEEP_TOPOLOGY_CONSTRAINT::Check(), MOCK_RULE_RESOLVER::Clearance(), PNS_PCBNEW_RULE_RESOLVER::Clearance(), PNS::HOLE::Clone(), PNS::VIA::Clone(), collideSimple(), comparePnsItems(), PNS::BLOCK_DRAGGER::coveredBySolid(), PNS_KICAD_IFACE::createBoardItem(), PNS::DIFF_PAIR_PLACER::findDpEndingPrimitives(), PNS::NODE::FindJoint(), PNS::NODE::FindLinesBetweenJoints(), PNS::NODE::findRedundantArc(), PNS::NODE::findRedundantArc(), PNS::NODE::findRedundantSegment(), PNS::NODE::findRedundantSegment(), PNS::NODE::FixupVirtualVias(), PNS::LOGGER::formatRouterItemAsJSON(), PNS::ROUTER::GetNearestRatnestAnchor(), ROUTER_TOOL::handleLayerSwitch(), PNS_KICAD_IFACE_BASE::IsFlashedOnLayer(), PNS_KICAD_IFACE_BASE::IsFlashedOnLayer(), Layer(), LayersOverlap(), PNS::LINE::LINE(), PNS::NODE::LockJoint(), PNS::VIA::MakeHandle(), TEMP_CLEARANCE_CACHE_KEY::makeParticipant(), 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::BLOCK_DRAGGER::scanRigidItem(), PNS::SEGMENT::SEGMENT(), PNS::SHOVE::shoveIteration(), PNS::COMPONENT_DRAGGER::Start(), PNS::DRAGGER::startDragArc(), ROUTER_PREVIEW_ITEM::Update(), PNS::DIFF_PAIR::updateLine(), PNS::VIA::VIA(), and PNS::BLOCK_DRAGGER::wrapLink().
|
inlineinherited |
Return true if the set of layers spanned by aOther overlaps our layers.
Definition at line 221 of file pns_item.h.
References ITEM(), Layers(), and PNS_LAYER_RANGE::Overlaps().
Referenced by PNS::SHOVE::onCollidingArc(), PNS::SHOVE::onCollidingSegment(), PNS::NODE::rebuildJoint(), and PNS::SHOVE::ShoveObstacleLine().
|
inline |
Modifiable accessor to the underlying shape.
Definition at line 148 of file pns_line.h.
References m_line.
Referenced by PNS::NODE::Add(), PNS::NODE::AssembleLine(), PNS::TOPOLOGY::AssembleTuningPath(), PNS::DIFF_PAIR_PLACER::attemptWalk(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), PNS::CORNER_COUNT_LIMIT_CONSTRAINT::Check(), ClipToNearestObstacle(), PNS::OPTIMIZER::dragFixCorner(), PNS::OPTIMIZER::dragFixCorners(), PNS::OPTIMIZER::mergeColinear(), PNS::OPTIMIZER::mergeFull(), PNS::OPTIMIZER::mergeObtuse(), PNS::LINE_PLACER::Move(), DIFF_PHASE_SKEW_TOOL::normalisePathItems(), PNS::SHOVE::onCollidingSegment(), PNS::SHOVE::onCollidingSolid(), PNS::SHOVE::onReverseCollidingVia(), PNS::DRAGGER::optimizeAndUpdateDraggedLine(), PCB_TUNING_PATTERN::recoverBaseline(), PNS::LINE_PLACER::rhWalkBase(), PNS::OPTIMIZER::runSmartPads(), PNS::SHOVE::shoveLineToHullSet(), PNS::WALKAROUND::singleStep(), and PNS::LINE_PLACER::splitHeadTail().
|
inlineinherited |
Add a reference to an item registered in a NODE that is a part of this line.
Definition at line 46 of file pns_link_holder.h.
References alg::contains(), and m_links.
Referenced by PNS::NODE::Add(), PNS::NODE::AssembleLine(), PNS::LINE::LinkVia(), and PNS::BLOCK_DRAGGER::wrapLink().
|
inlineinherited |
Return the number of segments that were assembled together to form this line.
Definition at line 92 of file pns_link_holder.h.
References m_links.
Referenced by checkLineUsesOnlyTrackWidth(), PNS::DIFF_PAIR::EndingPrimitives(), PNS::LINE::IsLinkedChecked(), PNS::SHOVE::onCollidingSegment(), PNS::SHOVE::pruneLineFromOptimizerQueue(), PNS::MULTI_DRAGGER::reconstructOriginalDpCoupling(), PNS::PLACEMENT_ALGO::removeLoops(), PNS::SHOVE::Run(), PNS::SHOVE::runOptimizer(), and PNS::MULTI_DRAGGER::tryAssembleDiffPair().
|
inlineinherited |
Return the list of links from the owning node that constitute this line (or NULL if the line is not linked).
Definition at line 63 of file pns_link_holder.h.
References m_links.
Referenced by PNS::TOPOLOGY::AssembleDiffPair(), PNS::TOPOLOGY::AssembleTuningPath(), checkLineUsesOnlyTrackWidth(), PNS::BLOCK_DRAGGER::classifyNeighbour(), PNS::TOPOLOGY::findLinesFromVia(), PNS::LINE::FindLinkContainingVertex(), PNS::LINE::FindLinkedSegment(), PNS::SHOVE::findRootLine(), PNS::TOPOLOGY::followBranch(), PNS::TOPOLOGY::followTrivialPath(), PNS::SHOVE::pruneLineFromOptimizerQueue(), PNS::MULTI_DRAGGER::reconstructOriginalDpCoupling(), PNS::NODE::Remove(), PNS::NODE::Remove(), PNS::OPTIMIZER::removeCachedSegments(), PNS::removeHead(), PCB_TUNING_PATTERN::removeToBaseline(), PNS::SHOVE::replaceLine(), PNS::COMPONENT_DRAGGER::Start(), PNS::SHOVE::touchRootLine(), PNS::SHOVE::unwindLineStack(), and PNS::TOPOLOGY::walkTuningPath().
|
inlineinherited |
Definition at line 64 of file pns_link_holder.h.
References m_links.
| void LINE::LinkVia | ( | VIA * | aVia | ) |
Definition at line 1424 of file pns_line.cpp.
References dropVia(), PNS::LINK_HOLDER::Link(), m_line, m_via, PNS::VIA::Pos(), and Reverse().
Referenced by PNS::SHOVE::patchTadpoleVia(), PNS::SHOVE::pushOrShoveVia(), and PNS::SHOVE::Run().
|
overridevirtual |
Reimplemented from PNS::ITEM.
Definition at line 168 of file pns_line.cpp.
References PNS::LINK_HOLDER::m_links, and PNS::ITEM::m_marker.
Referenced by PNS::SHOVE::onCollidingSolid().
|
overridevirtual |
Reimplemented from PNS::ITEM.
Definition at line 187 of file pns_line.cpp.
References PNS::LINK_HOLDER::m_links, and PNS::ITEM::m_marker.
Referenced by PNS::ARC::ARC(), PNS::SHOVE::onCollidingLine(), PNS::SHOVE::onCollidingSolid(), PNS::SEGMENT::SEGMENT(), and PNS::SHOVE::shoveLineToHullSet().
|
inlinevirtualinherited |
Reimplemented in PNS::HOLE, and PNS::JOINT.
Definition at line 210 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::ARC::ARC(), PNS::TOPOLOGY::AssembleDiffPair(), PNS::NODE::AssembleLine(), PNS::TOPOLOGY::AssembleTuningPath(), PNS::DIFF_PAIR_PLACER::attemptWalk(), PNS::LINE_PLACER::buildInitialLine(), PNS::KEEP_TOPOLOGY_CONSTRAINT::Check(), PNS::BLOCK_DRAGGER::classifySelectedLink(), MOCK_RULE_RESOLVER::Clearance(), PNS_PCBNEW_RULE_RESOLVER::Clearance(), PNS::VIA::Clone(), collideSimple(), comparePnsItems(), PNS_KICAD_IFACE::createBoardItem(), PNS::DIFF_PAIR::DIFF_PAIR(), PNS_PCBNEW_RULE_RESOLVER::DpNetPair(), PNS::OPTIMIZER::fanoutCleanup(), PNS::DIFF_PAIR_PLACER::findDpEndingPrimitives(), PNS::NODE::FindJoint(), PNS::TOPOLOGY::findLinesFromVia(), PNS::NODE::findRedundantArc(), PNS::NODE::findRedundantSegment(), PNS::LINE_PLACER::FixRoute(), Format(), PNS::LOGGER::formatRouterItemAsJSON(), PNS_PCBNEW_RULE_RESOLVER::getBoardItem(), ROUTER_PREVIEW_ITEM::getLayerColor(), PNS_KICAD_IFACE_BASE::ImportSizes(), PNS_KICAD_IFACE_BASE::inheritTrackWidthAndDpGap(), ROUTER_TOOL::InlineDrag(), PNS_PCBNEW_RULE_RESOLVER::IsNetTieExclusion(), PNS::ROUTER::isStartingPointRoutable(), PNS::LINE::LINE(), PNS::NODE::LockJoint(), PNS::VIA::MakeHandle(), TEMP_CLEARANCE_CACHE_KEY::makeParticipant(), PNS::LINE_PLACER::Move(), PNS::JOINT::NextSegment(), PNS::VIA::operator=(), PNS::DIFF_PAIR_PLACER::propagateDpHeadForces(), PNS_PCBNEW_RULE_RESOLVER::QueryConstraint(), PNS::NODE::rebuildJoint(), PNS::INDEX::Remove(), PNS::NODE::removeArcIndex(), PNS::NODE::removeSegmentIndex(), PNS::NODE::removeSolidIndex(), PNS::NODE::removeViaIndex(), PNS::DIFF_PAIR_PLACER::rhMarkObstacles(), PNS::DIFF_PAIR_PLACER::rhShoveOnly(), PNS::SHOVE::Run(), PNS::OPTIMIZER::runSmartPads(), PNS::BLOCK_DRAGGER::scanRigidItem(), PNS::SEGMENT::SEGMENT(), PNS::shouldWeConsiderHoleCollisions(), PNS::SHOVE::shoveIteration(), PNS::LINE_PLACER::Start(), PNS::DRAGGER::startDragArc(), PNS_KICAD_IFACE_BASE::TouchesCopperZone(), PNS::MULTI_DRAGGER::tryAssembleDiffPair(), PCB_TUNING_PATTERN::Update(), PNS::VIA::VIA(), PNS::TOPOLOGY::walkTuningPath(), and PNS::BLOCK_DRAGGER::wrapLink().
|
inlineinherited |
Definition at line 181 of file pns_item.h.
References m_kind.
Referenced by RECOVERED_LAYER_IFACE::AddItem(), PNS::DP_PRIMITIVE_PAIR::anchorDirection(), PNS::TOPOLOGY::AssembleTrivialPath(), PNS::TOPOLOGY::AssembleTuningPath(), PNS::ROUTER::BreakSegmentOrArc(), PNS::DP_GATEWAYS::BuildFromPrimitivePair(), PNS::ChangedArea(), PNS::TOOL_BASE::checkSnap(), PNS_KICAD_IFACE::DisplayItem(), PNS::OPTIMIZER::fanoutCleanup(), PNS::DIFF_PAIR_PLACER::findDpMidtraceIntersection(), PNS::SHOVE::fixupViaCollisions(), PNS::TOPOLOGY::followTrivialPath(), PNS_KICAD_IFACE_BASE::GetLengthDelayCalculationItems(), PNS_VIEWER_IFACE::GetLengthDelayCalculationItems(), DIFF_PHASE_SKEW_TOOL::getNetPaths(), ROUTER_TOOL::InlineDrag(), PNS::DRAGGER::IsDragOrigin(), PNS_PCBNEW_RULE_RESOLVER::IsDrilledHole(), PNS_KICAD_IFACE_BASE::IsFlashedOnLayer(), PNS_KICAD_IFACE_BASE::IsFlashedOnLayer(), isHole(), isHole(), PNS::LINE_PLACER::Move(), PNS::JOINT::NextSegment(), PNS::SHOVE::onCollidingVia(), PNS::NODE::DEFAULT_OBSTACLE_VISITOR::operator()(), ROUTER_TOOL::OptimizeSelected(), PCB_TUNING_PATTERN::recoverBaseline(), PNS_KICAD_IFACE::RemoveItem(), PNS_KICAD_IFACE_GENERATOR::RemoveItem(), PNS::SHOVE::replaceItems(), PNS::shouldWeConsiderHoleCollisions(), PNS::SHOVE::shoveIteration(), PNS::PLACEMENT_ALGO::simplifyNewLine(), PNS::SplitAdjacentArcs(), PNS::SplitAdjacentSegments(), PNS::DP_MEANDER_PLACER::Start(), PNS::MEANDER_PLACER::Start(), PNS::MEANDER_SKEW_PLACER::Start(), PNS::SHOVE::unwindLineStack(), and PNS::SHOVE::unwindLineStack().
Definition at line 100 of file pns_line.cpp.
References PNS::LINK_HOLDER::copyLinks(), copyVia(), dropVia(), LINE(), m_blockingObstacle, PNS::ITEM::m_layers, m_line, PNS::ITEM::m_marker, PNS::ITEM::m_movable, PNS::ITEM::m_net, PNS::OWNABLE_ITEM::m_owner, PNS::ITEM::m_parent, PNS::ITEM::m_rank, PNS::ITEM::m_routable, m_snapThreshhold, PNS::ITEM::m_sourceItem, and m_width.
Definition at line 130 of file pns_line.cpp.
References copyVia(), dropVia(), LINE(), m_blockingObstacle, PNS::ITEM::m_layers, m_line, PNS::LINK_HOLDER::m_links, PNS::ITEM::m_marker, PNS::ITEM::m_movable, PNS::ITEM::m_net, PNS::OWNABLE_ITEM::m_owner, PNS::ITEM::m_parent, PNS::ITEM::m_rank, PNS::ITEM::m_routable, m_snapThreshhold, PNS::ITEM::m_sourceItem, and m_width.
|
inlineinherited |
Return the owner of this item, or NULL if there's none.
Definition at line 72 of file pns_item.h.
References m_owner.
Referenced by PNS_PCBNEW_RULE_RESOLVER::Clearance(), PNS_KICAD_IFACE_BASE::inheritTrackWidthAndDpGap(), PNS::LINE_PLACER::Move(), PNS::ITEM::OwningNode(), and PNS::NODE::Remove().
|
virtualinherited |
Definition at line 354 of file pns_item.cpp.
References PNS::OWNABLE_ITEM::Owner(), and ParentPadVia().
Referenced by PNS::SHOVE::shoveIteration().
|
inlineinherited |
Definition at line 199 of file pns_item.h.
References m_parent.
Referenced by PNS::TOPOLOGY::AssembleTuningPath(), PNS_KICAD_IFACE_BASE::CalculateRoutedPathDelay(), PNS_VIEWER_IFACE::CalculateRoutedPathDelay(), PNS_KICAD_IFACE_BASE::CalculateRoutedPathLength(), PNS_VIEWER_IFACE::CalculateRoutedPathLength(), PNS_KICAD_IFACE::createBoardItem(), PNS_KICAD_IFACE::DisplayItem(), PNS::TOPOLOGY::findLinesFromVia(), PNS_KICAD_IFACE::HideItem(), isCopper(), isCopper(), PNS_PCBNEW_RULE_RESOLVER::IsDrilledHole(), PNS_KICAD_IFACE_BASE::IsFlashedOnLayer(), PNS_KICAD_IFACE_BASE::IsFlashedOnLayer(), PNS_KICAD_IFACE::IsItemVisible(), PNS_PCBNEW_RULE_RESOLVER::IsKeepout(), PNS_PCBNEW_RULE_RESOLVER::IsNonPlatedSlot(), PNS_KICAD_IFACE::modifyBoardItem(), PNS::VIA::operator=(), refOfSolid(), PNS::LINE_PLACER::removeAntennas(), PNS_KICAD_IFACE_BASE::RemoveBoardConnected(), 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 297 of file pns_item.h.
References ITEM().
Referenced by PNS_PCBNEW_RULE_RESOLVER::IsDrilledHole(), IsFreePad(), PNS_PCBNEW_RULE_RESOLVER::IsNonPlatedSlot(), and OwningNode().
|
inline |
Definition at line 152 of file pns_line.h.
References m_line.
Referenced by PNS::SHOVE::checkShoveDirection(), PNS::MULTI_DRAGGER::Drag(), PNS::OPTIMIZER::fanoutCleanup(), PNS::getDanglingAnchor(), HasLoops(), PNS::LINE_PLACER::Move(), PNS::TOPOLOGY::NearestUnconnectedAnchorPoint(), PNS::OPTIMIZER::removeCachedSegments(), PNS::WALKAROUND::Route(), PNS::LINE_PLACER::route(), PNS::SHOVE::Run(), PNS::SHOVE::ShoveObstacleLine(), PNS::TOPOLOGY::SimplifyLine(), PNS::PLACEMENT_ALGO::simplifyNewLine(), PNS::LINE_PLACER::splitHeadTail(), and PNS::DRAGGER::startDragArc().
|
overridevirtual |
Reimplemented from PNS::ITEM.
Definition at line 1448 of file pns_line.cpp.
References PNS::LINK_HOLDER::IsLinked(), PNS::LINK_HOLDER::m_links, and PNS::ITEM::m_rank.
Referenced by PNS::ARC::ARC(), PNS::SHOVE::onCollidingArc(), PNS::SHOVE::onCollidingSegment(), PNS::SHOVE::onCollidingSolid(), PNS::SHOVE::onReverseCollidingVia(), PNS::SEGMENT::SEGMENT(), and PNS::SHOVE::shoveIteration().
|
inherited |
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 83 of file pns_item.cpp.
References HasUniqueShapeLayers(), ITEM(), and UniqueShapeLayers().
Referenced by PNS::SHOVE::onCollidingVia(), PNS::SHOVE::onReverseCollidingVia(), PNS::DIFF_PAIR_PLACER::propagateDpHeadForces(), and PNS::VIA::PushoutForce().
| void LINE::RemoveVia | ( | ) |
Definition at line 1644 of file pns_line.cpp.
References PNS::LINK_HOLDER::ContainsLink(), dropVia(), m_via, and PNS::LINK_HOLDER::Unlink().
Referenced by Clear(), ClipToNearestObstacle(), PNS::SHOVE::onReverseCollidingVia(), PNS::SHOVE::ShoveObstacleLine(), and PNS::LINE_PLACER::splitHeadTail().
|
private |
Used to rebuild arcs in the walkaround since the graph only stores vertices.
This looks at points that are untouched between the output and the input and pushes the arc data back into the path
Definition at line 249 of file pns_line.cpp.
References SHAPE_LINE_CHAIN::Append(), SHAPE_LINE_CHAIN::ArcCount(), SHAPE_LINE_CHAIN::CPoint(), SHAPE_LINE_CHAIN::PointCount(), and SHAPE_LINE_CHAIN::Slice().
Referenced by Walkaround().
| void LINE::Reverse | ( | ) |
Reverse the point/vertex order.
Definition at line 1400 of file pns_line.cpp.
References m_line, and PNS::LINK_HOLDER::m_links.
Referenced by AppendVia(), PNS::BLOCK_DRAGGER::clipToBlock(), PNS::DRAGGER::findViaFanoutByHandle(), PNS::TOPOLOGY::followBranch(), LinkVia(), and DIFF_PHASE_SKEW_TOOL::reversePath().
|
inline |
Definition at line 151 of file pns_line.h.
References m_line.
Referenced by PNS::NODE::AssembleLine(), PNS::TOPOLOGY::AssembleTrivialPath(), PNS::TOPOLOGY::AssembleTuningPath(), PNS::MULTI_DRAGGER::Drag(), PNS::MULTI_DRAGGER::findNewLeaderSegment(), PNS::TOPOLOGY::followTrivialPath(), PNS::ROUTER::GetNearestRatnestAnchor(), DIFF_PHASE_SKEW_TOOL::getNetPaths(), PNS::OPTIMIZER::mergeStep(), PNS::LINE_PLACER::Move(), PNS::OPTIMIZER::Optimize(), PNS::LINE_PLACER::optimizeTailHeadTransition(), PNS::SHOVE::pushLineStack(), PNS::PLACEMENT_ALGO::removeLoops(), PNS::SHOVE::Run(), PNS::SHOVE::shoveIteration(), PNS::SHOVE::shoveLineToHullSet(), PNS::SHOVE::ShoveObstacleLine(), PNS::TOPOLOGY::SimplifyLine(), and PNS::Tighten().
|
inline |
Definition at line 243 of file pns_line.h.
References m_blockingObstacle.
|
inlinevirtualinherited |
Reimplemented in PNS::SOLID, and PNS::VIA.
Definition at line 309 of file pns_item.h.
|
inlineinherited |
Definition at line 304 of file pns_item.h.
References m_isCompoundShapePrimitive.
|
inlineinherited |
Definition at line 290 of file pns_item.h.
References m_isFreePad.
|
inlineinherited |
Definition at line 215 of file pns_item.h.
References m_layers.
Referenced by PNS::LINE_PLACER::buildInitialLine(), PNS::LINE_PLACER::FixRoute(), PNS_KICAD_IFACE_BASE::ImportSizes(), PNS::ROUTER::isStartingPointRoutable(), PNS::DIFF_PAIR_PLACER::propagateDpHeadForces(), PCB_TUNING_PATTERN::recoverBaseline(), and PNS::DIFF_PAIR::updateLine().
|
inlineinherited |
Definition at line 213 of file pns_item.h.
References m_layers.
Referenced by PNS::TOPOLOGY::AssembleDiffPair(), PNS::NODE::AssembleLine(), BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), PNS::HOLE::Clone(), PNS::VIA::Clone(), PNS::HOLE::MakeCircularHole(), makeTestTrack(), PNS::VIA::operator=(), PNS_LOG_FILE::parseCommonPnsProps(), PNS_LOG_FILE::parseLegacyCommonPnsProps(), PNS::VIA::VIA(), PNS::VIA::VIA(), and PNS::BLOCK_DRAGGER::wrapLink().
|
inlineinherited |
Definition at line 209 of file pns_item.h.
References m_net.
Referenced by PNS::NODE::AssembleLine(), BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), PNS::LINE_PLACER::buildInitialLine(), PNS::VIA::Clone(), PCB_TUNING_PATTERN::EditStart(), PNS::LINE_PLACER::FixRoute(), PNS_KICAD_IFACE_BASE::ImportSizes(), PNS::ROUTER::isStartingPointRoutable(), PNS::LINE_PLACER::Move(), PNS::VIA::operator=(), PNS_LOG_FILE::parseCommonPnsProps(), PNS_LOG_FILE::parseLegacyCommonPnsProps(), PCB_TUNING_PATTERN::recoverBaseline(), PNS::DIFF_PAIR::updateLine(), PNS::VIA::VIA(), PNS::VIA::VIA(), and PNS::BLOCK_DRAGGER::wrapLink().
|
inlineinherited |
Set the node that owns this item.
An item can belong to a single NODE or be unowned.
Definition at line 77 of file pns_item.h.
References m_owner.
Referenced by PNS::ITEM_SET::Add(), PNS::NODE::addArc(), PNS::NODE::addHole(), PNS::NODE::addSegment(), PNS::NODE::addSolid(), PNS::NODE::addVia(), PNS::NODE::AssembleLine(), PNS::HOLE::Clone(), PNS::NODE::Commit(), PNS::NODE::doRemove(), PNS::ITEM_SET::Prepend(), PNS::NODE::Remove(), PNS::NODE::Remove(), and PNS::NODE::~NODE().
|
inlineinherited |
Definition at line 191 of file pns_item.h.
References m_parent, and m_sourceItem.
Referenced by PNS_KICAD_IFACE::AddItem(), PNS_KICAD_IFACE_GENERATOR::AddItem(), PNS::NODE::AssembleLine(), PCB_TUNING_PATTERN::EditStart(), PNS::VIA::operator=(), and PNS::DIFF_PAIR::updateLine().
|
overridevirtual |
Reimplemented from PNS::ITEM.
Definition at line 1438 of file pns_line.cpp.
References PNS::LINK_HOLDER::m_links, and PNS::ITEM::m_rank.
Referenced by PNS::SHOVE::onCollidingArc(), PNS::SHOVE::onCollidingLine(), PNS::SHOVE::onCollidingSegment(), PNS::SHOVE::onCollidingSolid(), PNS::SHOVE::onReverseCollidingVia(), and PNS::SHOVE::Run().
|
inlineinherited |
Definition at line 287 of file pns_item.h.
References m_routable.
Referenced by BOOST_FIXTURE_TEST_CASE().
|
inline |
Assign a shape to the line (a polyline/line chain).
Definition at line 138 of file pns_line.h.
References m_line, and m_width.
Referenced by PNS::LINE_PLACER::buildInitialLine(), PNS::clipToOtherLine(), PNS::OPTIMIZER::fanoutCleanup(), PNS::ROUTER::isStartingPointRoutable(), PNS::OPTIMIZER::mergeFull(), PNS::SHOVE::onReverseCollidingVia(), PNS::SHOVE::preShoveCleanup(), PNS::LINE_PLACER::rhWalkBase(), PNS::SHOVE::shoveLineFromLoneVia(), PNS::SHOVE::shoveLineToHullSet(), PNS::TOPOLOGY::SimplifyLine(), PNS::PLACEMENT_ALGO::simplifyNewLine(), PNS::OPTIMIZER::smartPadsSingle(), PNS::LINE_PLACER::splitHeadTail(), PNS::tightenSegment(), PNS::LINE_PLACER::Trace(), PNS::DIFF_PAIR::updateLine(), and PNS::BLOCK_DRAGGER::wrapLink().
|
inline |
Definition at line 262 of file pns_line.h.
References m_snapThreshhold.
Referenced by PNS::DRAGGER::dragMarkObstacles(), PNS::DRAGGER::dragShove(), and PNS::DRAGGER::dragWalkaround().
|
inlineinherited |
Definition at line 201 of file pns_item.h.
References m_sourceItem.
Referenced by PNS::NODE::AssembleLine(), PNS::VIA::operator=(), PNS::DIFF_PAIR::updateLine(), and PNS::BLOCK_DRAGGER::wrapLink().
|
inline |
Definition at line 215 of file pns_line.h.
References PNS::VIA::ALL_LAYERS, m_via, and PNS::VIA::NORMAL.
|
inline |
Definition at line 224 of file pns_line.h.
References m_via.
|
inline |
Set line width.
Definition at line 162 of file pns_line.h.
References m_line, and m_width.
Referenced by PNS::NODE::AssembleLine(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), PNS::ROUTER::isStartingPointRoutable(), PCB_TUNING_PATTERN::recoverBaseline(), PCB_TUNING_PATTERN::resetToBaseline(), PNS::DIFF_PAIR::updateLine(), and PNS::BLOCK_DRAGGER::wrapLink().
|
inlineoverridevirtual |
Return the shape of the line.
Reimplemented from PNS::ITEM.
Definition at line 145 of file pns_line.h.
References m_line.
Referenced by PNS::SHOVE::onCollidingVia().
|
inline |
| void PNS::LINE::ShowLinks | ( | ) | const |
Print out all linked segments.
|
private |
Definition at line 1137 of file pns_line.cpp.
References SHAPE_LINE_CHAIN::CSegment(), SEG::IntersectLines(), m_snapThreshhold, and SHAPE_LINE_CHAIN::SegmentCount().
Referenced by dragCorner45().
|
private |
Definition at line 1179 of file pns_line.cpp.
References SEG::A, SHAPE_LINE_CHAIN::CSegment(), SEG::LineDistance(), m_snapThreshhold, and SHAPE_LINE_CHAIN::SegmentCount().
Referenced by dragSegment45().
|
inlinevirtualinherited |
Return a list of layers that have unique (potentially different) shapes.
Reimplemented in PNS::VIA.
Definition at line 254 of file pns_item.h.
Referenced by RelevantShapeLayers().
|
inlineinherited |
Definition at line 54 of file pns_link_holder.h.
References alg::contains(), and m_links.
Referenced by PNS::LINE::RemoveVia(), and PNS::SHOVE::replaceLine().
|
overridevirtual |
Reimplemented from PNS::ITEM.
Definition at line 178 of file pns_line.cpp.
References PNS::LINK_HOLDER::m_links, and PNS::ITEM::m_marker.
Referenced by PNS::BLOCK_DRAGGER::Drag(), PNS::COMPONENT_DRAGGER::Drag(), PNS::DRAGGER::dragShove(), PNS::SHOVE::onCollidingSolid(), and PNS::DRAGGER::optimizeAndUpdateDraggedLine().
|
inline |
Definition at line 212 of file pns_line.h.
References m_via.
Referenced by BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), PNS::NODE::CheckColliding(), PNS::SHOVE::checkShoveDirection(), PNS::LINE_PLACER::FixRoute(), PNS::ROUTER::markViolations(), PNS::ROUTER::movePlacing(), PNS::NODE::NearestObstacle(), PNS::SHOVE::onCollidingSolid(), PNS::SHOVE::onCollidingVia(), PNS::SHOVE::onReverseCollidingVia(), PNS::LINE_PLACER::rhShoveOnly(), PNS::LINE_PLACER::rhWalkBase(), PNS::WALKAROUND::Route(), PNS::SHOVE::Run(), PNS::SHOVE::shoveIteration(), PNS::SHOVE::shoveLineFromLoneVia(), and PNS::SHOVE::ShoveObstacleLine().
|
inline |
Definition at line 213 of file pns_line.h.
References m_via.
| bool LINE::Walkaround | ( | const SHAPE_LINE_CHAIN & | aObstacle, |
| SHAPE_LINE_CHAIN & | aPath, | ||
| bool | aCw ) const |
Definition at line 291 of file pns_line.cpp.
References SHAPE_LINE_CHAIN::Append(), PNS::areNeighbours(), CLastPoint(), CLine(), SHAPE_LINE_CHAIN::CPoint(), SHAPE_LINE_CHAIN::Find(), findVertex(), PNS::HullIntersection(), SEG::NearestPoint(), OUTSIDE, SHAPE_LINE_CHAIN::PointCount(), SHAPE_LINE_CHAIN::PointInside(), SHAPE_LINE_CHAIN_BASE::PointOnEdge(), restoreUntouchedArcs(), SHAPE_LINE_CHAIN::Reverse(), SHAPE_LINE_CHAIN::SegmentCount(), SHAPE_LINE_CHAIN::Simplify2(), and SHAPE_LINE_CHAIN::Split().
| bool PNS::LINE::Walkaround | ( | SHAPE_LINE_CHAIN | aObstacle, |
| SHAPE_LINE_CHAIN & | aPrePath, | ||
| SHAPE_LINE_CHAIN & | aWalk, | ||
| SHAPE_LINE_CHAIN & | aPost, | ||
| bool | aCw ) const |
Calculate a line tightly wrapping a convex hull of an obstacle object (aObstacle).
| aObstacle | is the obstacle to walk around. |
| aPrePath | is the path from origin to the obstacle. |
| aWalk | is the path around the obstacle. |
| aPost | is the path from obstacle till the end. |
| aCw | determines whether to walk around in clockwise or counter-clockwise direction. |
Referenced by PNS::SHOVE::shoveLineFromLoneVia(), and PNS::SHOVE::shoveLineToHullSet().
|
inline |
Return line width.
Definition at line 169 of file pns_line.h.
References m_width.
Referenced by PNS::TOPOLOGY::AssembleDiffPair(), BOOST_FIXTURE_TEST_CASE(), ChangedArea(), checkLineUsesOnlyTrackWidth(), PNS::OPTIMIZER::fanoutCleanup(), PNS::LINE_PLACER::FixRoute(), PNS::NODE::NearestObstacle(), PNS::SHOVE::onCollidingVia(), PNS::SHOVE::onReverseCollidingVia(), PNS_PCBNEW_RULE_RESOLVER::QueryConstraint(), PNS::SHOVE::shoveIteration(), PNS::SHOVE::shoveLineFromLoneVia(), PNS::SHOVE::shoveLineToHullSet(), PNS::SHOVE::ShoveObstacleLine(), and PNS::OPTIMIZER::smartPadsSingle().
|
private |
For mark obstacle mode.
Definition at line 311 of file pns_line.h.
Referenced by GetBlockingObstacle(), LINE(), LINE(), LINE(), LINE(), operator=(), operator=(), and SetBlockingObstacle().
|
protectedinherited |
Definition at line 336 of file pns_item.h.
Referenced by IsCompoundShapePrimitive(), ITEM(), ITEM(), and SetIsCompoundShapePrimitive().
|
protectedinherited |
Definition at line 335 of file pns_item.h.
Referenced by IsFreePad(), ITEM(), ITEM(), and SetIsFreePad().
|
protectedinherited |
Definition at line 334 of file pns_item.h.
Referenced by PNS::HOLE::Clone(), PNS::VIA::Clone(), IsVirtual(), ITEM(), ITEM(), PNS::VIA::operator=(), PNS::VIA::VIA(), PNS::VIA::VIA(), PNS::VIA::VIA(), and PNS::VVIA::VVIA().
|
protectedinherited |
Definition at line 320 of file pns_item.h.
Referenced by collideSimple(), ITEM(), ITEM(), Kind(), KindStr(), and OfKind().
|
protectedinherited |
Definition at line 327 of file pns_item.h.
Referenced by PNS::ARC::ARC(), PNS::ARC::ARC(), PNS::ARC::Clone(), PNS::SEGMENT::Clone(), collideSimple(), PNS::VIA::ConnectsLayer(), PNS::JOINT::Dump(), PNS::VIA::EffectiveLayer(), Format(), ITEM(), PNS::JOINT::JOINT(), PNS::JOINT::JOINT(), Layers(), PNS::LINE::LINE(), PNS::LINE::LINE(), PNS::LINE::LINE(), PNS::JOINT::Merge(), PNS::DIFF_PAIR::operator=(), PNS::DIFF_PAIR::operator=(), PNS::LINE::operator=(), PNS::LINE::operator=(), PNS::JOINT::Overlaps(), PNS::SEGMENT::SEGMENT(), PNS::SOLID::SetHole(), SetLayer(), SetLayers(), PNS::VIA::SetStackMode(), PNS::VIA::UniqueShapeLayers(), and PNS::JOINT::Unlink().
|
private |
The actual shape of the line.
Definition at line 293 of file pns_line.h.
Referenced by Anchor(), AnchorCount(), AppendVia(), ArcCount(), ChangedArea(), CLastPoint(), Clear(), CLine(), ClipVertexRange(), CompareGeometry(), CountCorners(), CPoint(), CSegment(), DragArc(), dragCorner45(), dragCornerFree(), dragSegment45(), FindSegment(), LINE(), LINE(), Line(), LinkVia(), operator=(), operator=(), PointCount(), Reverse(), SegmentCount(), SetShape(), SetWidth(), Shape(), and ShapeCount().
|
protectedinherited |
List of segments in the owning NODE (ITEM::m_owner) that constitute this line, or NULL if the line is not a part of any node.
Definition at line 122 of file pns_link_holder.h.
Referenced by PNS::DIFF_PAIR::ClearLinks(), ClearLinks(), PNS::LINE::ClipVertexRange(), ContainsLink(), copyLinks(), GetLink(), PNS::LINE::HasLockedSegments(), IsLinked(), Link(), LinkCount(), Links(), Links(), PNS::LINE::Mark(), PNS::LINE::Marker(), PNS::LINE::operator=(), PNS::LINE::Rank(), PNS::LINE::Reverse(), PNS::LINE::SetRank(), ShowLinks(), Unlink(), and PNS::LINE::Unmark().
|
mutableprotectedinherited |
Definition at line 331 of file pns_item.h.
Referenced by PNS::ARC::ARC(), PNS::ARC::ARC(), PNS::ARC::Clone(), PNS::HOLE::Clone(), PNS::SEGMENT::Clone(), PNS::VIA::Clone(), ITEM(), ITEM(), PNS::LINE::LINE(), Mark(), PNS::LINE::Mark(), Marker(), PNS::LINE::Marker(), PNS::LINE::operator=(), PNS::LINE::operator=(), PNS::SOLID::operator=(), PNS::VIA::operator=(), PNS::SEGMENT::SEGMENT(), Unmark(), PNS::LINE::Unmark(), and PNS::VIA::VIA().
|
protectedinherited |
Definition at line 329 of file pns_item.h.
Referenced by PNS::ARC::Clone(), PNS::VIA::Clone(), ITEM(), ITEM(), PNS::LINE::LINE(), PNS::LINE::operator=(), PNS::LINE::operator=(), PNS::SOLID::operator=(), PNS::VIA::operator=(), and PNS::SOLID::SOLID().
|
protectedinherited |
Definition at line 330 of file pns_item.h.
Referenced by PNS::LINE::AppendVia(), PNS::ARC::ARC(), PNS::ARC::ARC(), PNS::ARC::ARC(), PNS::ARC::Clone(), PNS::SEGMENT::Clone(), PNS::LINE::copyVia(), ITEM(), ITEM(), PNS::LINE::LINE(), PNS::LINE::LINE(), PNS::LINE::LINE(), PNS::HOLE::Net(), Net(), PNS::LINE::operator=(), PNS::LINE::operator=(), PNS::SEGMENT::SEGMENT(), PNS::SEGMENT::SEGMENT(), PNS::SEGMENT::SEGMENT(), and SetNet().
|
protectedinherited |
Definition at line 88 of file pns_item.h.
Referenced by BelongsTo(), PNS::ITEM::ITEM(), PNS::ITEM::ITEM(), PNS::LINE::operator=(), PNS::LINE::operator=(), OWNABLE_ITEM(), Owner(), and SetOwner().
|
private |
A via made by AppendVia() or copied from a line that owned its via is ours to free.
One given to LinkVia() belongs to a node and may be gone before this line is.
Definition at line 309 of file pns_line.h.
Referenced by AppendVia(), copyVia(), dropVia(), LINE(), LINE(), LINE(), and LINE().
|
protectedinherited |
Definition at line 321 of file pns_item.h.
Referenced by PNS::HOLE::BoardItem(), BoardItem(), PNS::ARC::Clone(), PNS::HOLE::Clone(), PNS::VIA::Clone(), collideSimple(), ITEM(), ITEM(), PNS::LINE::operator=(), PNS::LINE::operator=(), PNS::SOLID::operator=(), Parent(), PNS::SEGMENT::SEGMENT(), SetParent(), and PNS::DIFF_PAIR::updateLine().
|
protectedinherited |
Definition at line 332 of file pns_item.h.
Referenced by PNS::ARC::ARC(), PNS::ARC::ARC(), PNS::ARC::Clone(), PNS::HOLE::Clone(), PNS::SEGMENT::Clone(), PNS::VIA::Clone(), ITEM(), ITEM(), PNS::LINE::LINE(), PNS::LINE::LINE(), PNS::LINE::operator=(), PNS::LINE::operator=(), PNS::SOLID::operator=(), PNS::VIA::operator=(), Rank(), PNS::LINE::Rank(), PNS::SEGMENT::SEGMENT(), SetRank(), PNS::LINE::SetRank(), and PNS::VIA::VIA().
|
protectedinherited |
Definition at line 333 of file pns_item.h.
Referenced by PNS::ARC::Clone(), PNS::VIA::Clone(), IsRoutable(), ITEM(), ITEM(), PNS::LINE::operator=(), PNS::LINE::operator=(), PNS::SOLID::operator=(), PNS::VIA::operator=(), and SetRoutable().
|
private |
Width to smooth out jagged segments.
Definition at line 297 of file pns_line.h.
Referenced by GetSnapThreshhold(), LINE(), LINE(), LINE(), LINE(), operator=(), operator=(), SetSnapThreshhold(), snapDraggedCorner(), and snapToNeighbourSegments().
|
protectedinherited |
Definition at line 323 of file pns_item.h.
Referenced by PNS::ARC::Clone(), PNS::VIA::Clone(), GetSourceItem(), ITEM(), ITEM(), PNS::LINE::operator=(), PNS::LINE::operator=(), PNS::SOLID::operator=(), PNS::SEGMENT::SEGMENT(), SetParent(), SetSourceItem(), and PNS::DIFF_PAIR::updateLine().
|
private |
Definition at line 305 of file pns_line.h.
Referenced by AppendVia(), copyVia(), dropVia(), EndsWithVia(), LINE(), LINE(), LINE(), LINE(), LinkVia(), RemoveVia(), SetViaDiameter(), SetViaDrill(), Via(), and Via().
|
private |
Our width.
Definition at line 294 of file pns_line.h.
Referenced by LINE(), LINE(), LINE(), LINE(), operator=(), operator=(), SetShape(), SetWidth(), and Width().