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) |
bool | IsLinkedChecked () const |
Assign a shape to the line (a polyline/line chain). | |
void | SetShape (const SHAPE_LINE_CHAIN &aLine) |
Return the shape of the line. | |
const SHAPE * | Shape (int aLayer) const override |
Modifiable accessor to the underlying shape. | |
SHAPE_LINE_CHAIN & | Line () |
const SHAPE_LINE_CHAIN & | CLine () const |
int | SegmentCount () const |
int | PointCount () const |
int | ArcCount () const |
int | ShapeCount () const |
Return the aIdx-th point of the line. | |
const VECTOR2I & | CPoint (int aIdx) const |
const VECTOR2I & | CLastPoint () const |
const SEG | CSegment (int aIdx) const |
Set line width. | |
void | SetWidth (int aWidth) |
Return line width. | |
int | Width () const |
Return true if the line is geometrically identical as line aOther. | |
bool | CompareGeometry (const LINE &aOther) |
Reverse the point/vertex order. | |
void | Reverse () |
Clip the line to the nearest obstacle, traversing from the line's start vertex (0). | |
const LINE | ClipToNearestObstacle (NODE *aNode) const |
Clip the line to a given range of vertices. | |
void | ClipVertexRange (int aStart, int aEnd) |
Return the number of corners of angles specified by mask aAngles. | |
int | CountCorners (int aAngles) const |
bool | Walkaround (SHAPE_LINE_CHAIN aObstacle, SHAPE_LINE_CHAIN &aPre, 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 |
Print out all linked segments. | |
void | ShowLinks () const |
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 |
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 | 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 |
void | Link (LINKED_ITEM *aLink) |
void | Unlink (const LINKED_ITEM *aLink) |
Return the list of links from the owning node that constitute this line (or NULL if the line is not linked). | |
std::vector< LINKED_ITEM * > & | Links () |
const std::vector< LINKED_ITEM * > & | Links () const |
bool | IsLinked () const |
Check if the segment aLink is a part of the line. | |
bool | ContainsLink (const LINKED_ITEM *aItem) const |
LINKED_ITEM * | GetLink (int aIndex) const |
Erase the linking information. Used to detach the line from the owning node. | |
virtual void | ClearLinks () |
Return the number of segments that were assembled together to form this line. | |
int | LinkCount () 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 |
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. | |
virtual VECTOR2I | Anchor (int n) const |
virtual int | AnchorCount () const |
bool | IsLocked () const |
void | SetRoutable (bool aRoutable) |
bool | IsRoutable () const |
void | SetIsFreePad (bool aIsFreePad=true) |
bool | IsFreePad () const |
virtual ITEM * | ParentPadVia () const |
bool | IsVirtual () const |
void | SetIsCompoundShapePrimitive () |
bool | IsCompoundShapePrimitive () const |
virtual bool | HasHole () const |
virtual HOLE * | Hole () const |
virtual void | SetHole (HOLE *aHole) |
virtual const std::string | Format () const |
virtual const NODE * | OwningNode () const |
const ITEM_OWNER * | Owner () const |
Return the owner of this item, or NULL if there's none. | |
void | SetOwner (const ITEM_OWNER *aOwner) |
Set the node that owns this item. | |
bool | BelongsTo (const ITEM_OWNER *aNode) const |
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 |
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) |
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 |
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 |
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_snapThreshhold, m_via, and m_width.
Referenced by ChangedArea(), ClipToNearestObstacle(), Clone(), CompareGeometry(), LINE(), LINE(), and operator=().
LINE::LINE | ( | const LINE & | aOther | ) |
Definition at line 38 of file pns_line.cpp.
References LINE(), PNS::LINK_HOLDER::LINK_HOLDER(), PNS::ITEM::m_layers, m_line, PNS::ITEM::m_movable, PNS::ITEM::m_net, 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 81 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_snapThreshhold, m_via, and m_width.
|
inline |
Construct a LINE for a lone VIA (ie a stitching via).
Definition at line 96 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, PNS::ITEM::m_rank, m_snapThreshhold, m_via, m_width, PNS::ITEM::Net(), PNS::ITEM::Rank(), and PNS_LAYER_RANGE::Start().
LINE::~LINE | ( | ) |
|
inlinevirtualinherited |
Reimplemented in PNS::ARC, PNS::SEGMENT, PNS::SOLID, and PNS::VIA.
Definition at line 268 of file pns_item.h.
Referenced by PNS::DP_PRIMITIVE_PAIR::anchorDirection(), PNS::TOPOLOGY::AssembleDiffPair(), 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 273 of file pns_item.h.
Referenced by PNS::TOPOLOGY::AssembleDiffPair().
void LINE::AppendVia | ( | const VIA & | aVia | ) |
Definition at line 1085 of file pns_line.cpp.
References AppendVia(), PNS::VIA::Clone(), m_line, PNS::ITEM::m_net, m_via, PNS::VIA::Pos(), and Reverse().
Referenced by AppendVia(), 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 142 of file pns_line.h.
References m_line.
Referenced by PNS::OPTIMIZER::Optimize().
|
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::LINE::operator=(), 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 isEdge(), isEdge(), PNS_PCBNEW_RULE_RESOLVER::IsInNetTie(), PNS_PCBNEW_RULE_RESOLVER::IsNetTieExclusion(), PNS_PCBNEW_RULE_RESOLVER::QueryConstraint(), and ROUTER_PREVIEW_ITEM::ROUTER_PREVIEW_ITEM().
Definition at line 1218 of file pns_line.cpp.
References ChangedArea(), 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(), ChangedArea(), and PNS::DRAGGER::optimizeAndUpdateDraggedLine().
|
inlinestatic |
Definition at line 111 of file pns_line.h.
References PNS::ITEM::Kind(), and PNS::ITEM::LINE_T.
|
inline |
Definition at line 147 of file pns_line.h.
References m_line.
Referenced by 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::SHOVE::Run(), PNS::SHOVE::sanityCheck(), PNS::SHOVE::shoveLineFromLoneVia(), PNS::SHOVE::shoveLineToHullSet(), PNS::SHOVE::ShoveObstacleLine(), PNS::LINE_PLACER::splitHeadTail(), and Walkaround().
void LINE::Clear | ( | ) |
Definition at line 1310 of file pns_line.cpp.
References Clear(), PNS::LINK_HOLDER::ClearLinks(), m_line, and RemoveVia().
Referenced by Clear(), PNS::LINE_PLACER::rhWalkBase(), and PNS::LINE_PLACER::splitHeadTail().
|
inlinevirtualinherited |
Return the number of segments that were assembled together to form this line.
Reimplemented in PNS::DIFF_PAIR.
Definition at line 81 of file pns_link_holder.h.
References m_links.
Referenced by PNS::LINE::Clear(), 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(), PNS::SHOVE::preShoveCleanup(), PNS::NODE::Remove(), PNS::LINE_PLACER::removeLoops(), and PNS::SHOVE::ShoveObstacleLine().
|
inline |
Definition at line 138 of file pns_line.h.
References m_line.
Referenced by PNS::COST_ESTIMATOR::Add(), PNS::DIFF_PAIR_PLACER::attemptWalk(), PNS::KEEP_TOPOLOGY_CONSTRAINT::Check(), PNS::NODE::CheckColliding(), PNS::SHOVE::checkShoveDirection(), PNS::clipToOtherLine(), PNS::COST_ESTIMATOR::CornerCost(), PNS::DIFF_PAIR::DIFF_PAIR(), PNS::DRAGGER::dragViaMarkObstacles(), PNS::DRAGGER::dragViaWalkaround(), PNS::DRAGGER::dragWalkaround(), PNS::OPTIMIZER::fanoutCleanup(), PNS::NODE::FindLinesBetweenJoints(), PNS::LINE_PLACER::FixRoute(), PNS::TOPOLOGY::followBranch(), getPNSLine(), PCB_TUNING_PATTERN::initBaseLine(), PNS::LINE_PLACER::Move(), PNS::MULTI_DRAGGER::multidragWalkaround(), PNS::NODE::NearestObstacle(), PNS::SHOVE::onCollidingArc(), PNS::SHOVE::onCollidingSegment(), PNS::SHOVE::onReverseCollidingVia(), PNS::DRAGGER::optimizeAndUpdateDraggedLine(), PNS::LINE_PLACER::optimizeTailHeadTransition(), PNS::SHOVE::patchTadpoleVia(), PNS::SHOVE::preShoveCleanup(), PNS::COST_ESTIMATOR::Remove(), PNS::LINE_PLACER::removeLoops(), PNS::COST_ESTIMATOR::Replace(), PNS_LOG_PLAYER::ReplayLog(), PNS::DIFF_PAIR_PLACER::rhShoveOnly(), PNS::LINE_PLACER::rhWalkBase(), PNS::WALKAROUND::Route(), PNS::SHOVE::shoveLineToHullSet(), PNS::SHOVE::ShoveObstacleLine(), PNS::TOPOLOGY::SimplifyLine(), PNS::LINE_PLACER::simplifyNewLine(), PNS::WALKAROUND::singleStep(), PNS::OPTIMIZER::smartPadsSingle(), PNS::LINE_PLACER::splitHeadTail(), PNS::COMPONENT_DRAGGER::Start(), PNS::Tighten(), PNS::LINE_PLACER::updatePStart(), and Walkaround().
Clip the line to a given range of vertices.
Definition at line 583 of file pns_line.cpp.
References SHAPE_LINE_CHAIN::Clear(), ClipToNearestObstacle(), 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().
Referenced by ClipToNearestObstacle().
void LINE::ClipVertexRange | ( | int | aStart, |
int | aEnd ) |
Return the number of corners of angles specified by mask aAngles.
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 1140 of file pns_line.cpp.
References ClipVertexRange(), PNS::LINK_HOLDER::IsLinked(), m_line, and PNS::LINK_HOLDER::m_links.
Referenced by ClipVertexRange(), and PNS::NODE::FindLinesBetweenJoints().
|
overridevirtual |
Return a deep copy of the item.
Implements PNS::ITEM.
Definition at line 119 of file pns_line.cpp.
References Clone(), LINE, and LINE().
Referenced by PNS::ITEM_SET::Add(), Clone(), PNS::DRAGGER::optimizeAndUpdateDraggedLine(), PNS::ITEM_SET::Prepend(), PNS::SHOVE::replaceLine(), PNS::LINE_PLACER::rhShoveOnly(), 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.
aOther | is the item to check collision against. |
Definition at line 305 of file pns_item.cpp.
References collideSimple(), and ITEM().
Referenced by PNS::clipToOtherLine(), PNS::SHOVE::fixupViaCollisions(), PNS::SHOVE::onCollidingSolid(), PNS::NODE::DEFAULT_OBSTACLE_VISITOR::operator()(), PNS::OPTIMIZER::CACHE_VISITOR::operator()(), PNS::SHOVE::shoveIteration(), PNS::SHOVE::shoveLineFromLoneVia(), PNS::SHOVE::shoveLineToHullSet(), PNS::COMPONENT_DRAGGER::Start(), and PNS::verifyDpBypass().
|
privateinherited |
Definition at line 115 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(), 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 | ) |
Reverse the point/vertex order.
Definition at line 1071 of file pns_line.cpp.
References CompareGeometry(), LINE(), and m_line.
Referenced by CompareGeometry().
|
inlineinherited |
Definition at line 67 of file pns_link_holder.h.
References alg::contains(), and m_links.
Referenced by PNS::NODE::Add(), PNS::TOOL_BASE::checkSnap(), PCB_TUNING_PATTERN::initBaseLine(), and PNS::LINE::RemoveVia().
|
inlineprotectedinherited |
< Copy m_links from the line aParent.
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 110 of file pns_link_holder.h.
References LINK_HOLDER(), and m_links.
Referenced by PNS::LINE::operator=().
int LINE::CountCorners | ( | int | aAngles | ) | const |
Definition at line 171 of file pns_line.cpp.
References DIRECTION_45::Angle(), CountCorners(), and m_line.
Referenced by PNS::CORNER_COUNT_LIMIT_CONSTRAINT::Check(), CountCorners(), PNS::OPTIMIZER::Optimize(), and PNS::OPTIMIZER::smartPadsSingle().
|
inline |
Definition at line 146 of file pns_line.h.
References m_line.
Referenced by 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(), and PNS::LINE_PLACER::splitHeadTail().
|
inline |
Set line width.
Definition at line 148 of file pns_line.h.
References m_line.
Referenced by PNS::DIFF_PAIR::EndingPrimitives(), PNS::MULTI_DRAGGER::findNewLeaderSegment(), PNS::LINE_PLACER::FixRoute(), PNS::OPTIMIZER::mergeStep(), PNS::LINE_PLACER::optimizeTailHeadTransition(), and PNS::SHOVE::ShoveObstacleLine().
void LINE::DragCorner | ( | const VECTOR2I & | aP, |
int | aIndex, | ||
bool | aFreeAngle = false, | ||
DIRECTION_45 | aPreferredEndingDirection = DIRECTION_45() ) |
Definition at line 788 of file pns_line.cpp.
References DragCorner(), dragCorner45(), and dragCornerFree().
Referenced by PNS::COMPONENT_DRAGGER::Drag(), PNS::MULTI_DRAGGER::Drag(), DragCorner(), PNS::DRAGGER::dragMarkObstacles(), PNS::DRAGGER::dragShove(), PNS::DRAGGER::dragViaMarkObstacles(), PNS::DRAGGER::dragViaWalkaround(), and PNS::DRAGGER::dragWalkaround().
|
private |
Definition at line 727 of file pns_line.cpp.
References dragCorner45(), PNS::dragCornerInternal(), m_line, path, and snapDraggedCorner().
Referenced by DragCorner(), and dragCorner45().
|
private |
Definition at line 761 of file pns_line.cpp.
References dragCornerFree(), and m_line.
Referenced by DragCorner(), and dragCornerFree().
void LINE::DragSegment | ( | const VECTOR2I & | aP, |
int | aIndex, | ||
bool | aFreeAngle = false ) |
Definition at line 802 of file pns_line.cpp.
References DragSegment(), and dragSegment45().
Referenced by PNS::DRAGGER::dragMarkObstacles(), DragSegment(), PNS::DRAGGER::dragShove(), and PNS::DRAGGER::dragWalkaround().
|
private |
Definition at line 901 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, dragSegment45(), 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(), and dragSegment45().
|
private |
|
inline |
Definition at line 191 of file pns_line.h.
References m_via.
Referenced by PNS::NODE::CheckColliding(), 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().
int LINE::FindSegment | ( | const SEGMENT * | aSeg | ) | const |
Definition at line 1341 of file pns_line.cpp.
References FindSegment(), m_line, and PNS::SEGMENT::Seg().
Referenced by FindSegment().
|
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 218 of file pns_line.h.
References m_blockingObstacle.
Referenced by PNS::ROUTER::markViolations().
|
inlineinherited |
Erase the linking information. Used to detach the line from the owning node.
Definition at line 72 of file pns_link_holder.h.
References m_links.
Referenced by PNS::LINE_PLACER::removeLoops(), and PNS::TOPOLOGY::SimplifyLine().
|
inline |
Definition at line 238 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(), and PNS::MEANDER_SKEW_PLACER::Start().
|
inlinevirtualinherited |
Reimplemented in PNS::SOLID, PNS::VIA, and PNS::VVIA.
Definition at line 303 of file pns_item.h.
Referenced by collideSimple(), PNS::NODE::Commit(), PNS::NODE::doRemove(), PNS::SHOVE::getClearance(), PNS::WALKAROUND::RestrictToCluster(), and ROUTER_PREVIEW_ITEM::Update().
bool LINE::HasLockedSegments | ( | ) | const |
Definition at line 1299 of file pns_line.cpp.
References HasLockedSegments(), PNS::LINK_HOLDER::m_links, and PNS::MK_LOCKED.
Referenced by HasLockedSegments(), PNS::SHOVE::onCollidingArc(), and PNS::SHOVE::onCollidingSegment().
bool LINE::HasLoops | ( | ) | const |
Definition at line 1189 of file pns_line.cpp.
References CPoint(), HasLoops(), and PointCount().
Referenced by HasLoops(), and PNS::SHOVE::onCollidingSolid().
|
inlinevirtualinherited |
Reimplemented in PNS::VIA.
Definition at line 252 of file pns_item.h.
Referenced by RelevantShapeLayers().
|
inlinevirtualinherited |
Reimplemented in PNS::SOLID, and PNS::VIA.
Definition at line 304 of file pns_item.h.
Referenced by collideSimple(), PNS::NODE::Commit(), PNS::NODE::doRemove(), PNS::SHOVE::getClearance(), 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.
|
inlineinherited |
Definition at line 301 of file pns_item.h.
References m_isCompoundShapePrimitive.
|
inlineinherited |
Definition at line 288 of file pns_item.h.
References m_isFreePad, and ParentPadVia().
Referenced by collideSimple().
|
inlineinherited |
Check if the segment aLink is a part of the line.
Definition at line 61 of file pns_link_holder.h.
References m_links.
Referenced by PNS::NODE::Add(), PNS::LINE::ClipVertexRange(), PNS::TOPOLOGY::followTrivialPath(), PNS::LINE::IsLinkedChecked(), PNS::SHOVE::pushLineStack(), PNS::LINE::Rank(), PNS::OPTIMIZER::removeCachedSegments(), ShowLinks(), and PNS::TOPOLOGY::SimplifyLine().
|
inline |
Assign a shape to the line (a polyline/line chain).
Definition at line 121 of file pns_line.h.
References PNS::LINK_HOLDER::IsLinked(), PNS::LINK_HOLDER::LinkCount(), and ShapeCount().
|
inlineinherited |
Definition at line 278 of file pns_item.h.
References Marker(), and PNS::MK_LOCKED.
Referenced by PNS::JOINT::IsLineCorner(), PNS::JOINT::NextSegment(), and PNS::SHOVE::pushOrShoveVia().
|
inlineinherited |
Definition at line 284 of file pns_item.h.
References m_routable.
Referenced by PNS::NODE::addSolid(), and PNS::NODE::removeSolidIndex().
|
inlineinherited |
Definition at line 295 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::OPTIMIZER::CacheRemove(), PNS::NODE::CheckColliding(), PNS::ARC::ClassOf(), PNS::DIFF_PAIR::ClassOf(), PNS::LINE::ClassOf(), PNS::SEGMENT::ClassOf(), PNS::SOLID::ClassOf(), PNS::VIA::ClassOf(), collideSimple(), comparePnsItems(), PNS::OPTIMIZER::computeBreakouts(), PNS_KICAD_IFACE::createBoardItem(), PNS::DIFF_PAIR_PLACER::FindDpPrimitivePair(), PNS::NODE::followLine(), PNS_PCBNEW_RULE_RESOLVER::getBoardItem(), PNS::getDanglingAnchor(), PNS::MEANDER_PLACER_BASE::getSnappedStartPoint(), PNS_KICAD_IFACE_BASE::ImportSizes(), PNS_KICAD_IFACE_BASE::inheritTrackWidth(), PNS_KICAD_IFACE::modifyBoardItem(), PNS::JOINT::NextSegment(), PNS::OPTIMIZER::CACHE_VISITOR::operator()(), PNS::INDEX::Query(), PNS::NODE::Remove(), PNS::SEGMENT::SEGMENT(), PNS::SHOVE::shoveIteration(), PNS::OPTIMIZER::smartPadsSingle(), PNS::TOOL_BASE::snapToItem(), PNS::DRAGGER::Start(), PNS::LINE_PLACER::Start(), and ROUTER_PREVIEW_ITEM::Update().
|
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 Format(), and PNS::TOOL_BASE::pickSingleItem().
|
inlinevirtualinherited |
Definition at line 216 of file pns_item.h.
References Layers(), and PNS_LAYER_RANGE::Start().
Referenced by PNS::TOPOLOGY::AssembleTuningPath(), PNS::clipToOtherLine(), PNS::OPTIMIZER::fanoutCleanup(), PNS::SHOVE::fixupViaCollisions(), PNS_KICAD_IFACE_BASE::getLengthDelayCalculationItems(), PNS_VIEWER_IFACE::getLengthDelayCalculationItems(), PNS_KICAD_IFACE_BASE::ImportSizes(), PNS_PCBNEW_RULE_RESOLVER::IsKeepout(), PNS_PCBNEW_RULE_RESOLVER::IsNetTieExclusion(), PNS::ROUTER::markViolations(), PNS::ROUTER::movePlacing(), PNS::NODE::NearestObstacle(), PNS::SHOVE::onCollidingSegment(), PNS::SHOVE::onCollidingSolid(), PNS::SHOVE::onCollidingVia(), PNS::SHOVE::onReverseCollidingVia(), PNS::OPTIMIZER::runSmartPads(), PNS::SHOVE::shoveIteration(), PNS::SHOVE::shoveLineFromLoneVia(), PNS::SHOVE::shoveLineToHullSet(), PNS::SHOVE::ShoveObstacleLine(), PNS::COMPONENT_DRAGGER::Start(), 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(), PNS::KEEP_TOPOLOGY_CONSTRAINT::Check(), MOCK_RULE_RESOLVER::Clearance(), PNS_PCBNEW_RULE_RESOLVER::Clearance(), PNS::HOLE::Clone(), PNS::VIA::Clone(), collideSimple(), comparePnsItems(), PNS_KICAD_IFACE::createBoardItem(), PNS::DIFF_PAIR_PLACER::FindDpPrimitivePair(), PNS::NODE::FindJoint(), PNS::NODE::FindLinesBetweenJoints(), PNS::NODE::findRedundantArc(), PNS::NODE::findRedundantArc(), PNS::NODE::findRedundantSegment(), PNS::NODE::findRedundantSegment(), PNS::NODE::FixupVirtualVias(), PNS::ROUTER::GetNearestRatnestAnchor(), PNS_KICAD_IFACE_BASE::IsFlashedOnLayer(), PNS_KICAD_IFACE_BASE::IsFlashedOnLayer(), Layer(), LayersOverlap(), PNS::LINE::LINE(), PNS::NODE::LockJoint(), PNS::VIA::MakeHandle(), PNS::ROUTER::markViolations(), PNS::TOPOLOGY::NearestUnconnectedAnchorPoint(), PNS::JOINT::NextSegment(), PNS::SHOVE::onCollidingSolid(), PNS::VIA::operator=(), PNS::TOOL_BASE::pickSingleItem(), PNS::INDEX::Query(), PNS::INDEX::Remove(), PNS::NODE::removeArcIndex(), PNS::NODE::removeSegmentIndex(), PNS::NODE::removeSolidIndex(), PNS::NODE::removeViaIndex(), PNS_LOG_PLAYER::ReplayLog(), PNS::SEGMENT::SEGMENT(), PNS::SHOVE::shoveIteration(), PNS::COMPONENT_DRAGGER::Start(), ROUTER_PREVIEW_ITEM::Update(), PNS::DIFF_PAIR::updateLine(), and PNS::VIA::VIA().
|
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 |
Definition at line 137 of file pns_line.h.
References m_line.
Referenced by PNS::NODE::Add(), PNS::NODE::AssembleLine(), PNS::TOPOLOGY::AssembleTuningPath(), PNS::DIFF_PAIR_PLACER::attemptWalk(), PNS::CORNER_COUNT_LIMIT_CONSTRAINT::Check(), ClipToNearestObstacle(), PNS::OPTIMIZER::mergeColinear(), PNS::OPTIMIZER::mergeFull(), PNS::OPTIMIZER::mergeObtuse(), PNS::LINE_PLACER::Move(), 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 |
Definition at line 42 of file pns_link_holder.h.
References alg::contains(), and m_links.
Referenced by PNS::NODE::Add(), PNS::NODE::AssembleLine(), and PNS::LINE::LinkVia().
|
inlineinherited |
Definition at line 87 of file pns_link_holder.h.
References m_links.
Referenced by PNS::LINE::IsLinkedChecked(), PNS::SHOVE::onCollidingSegment(), PNS::SHOVE::pruneLineFromOptimizerQueue(), PNS::LINE_PLACER::removeLoops(), PNS::SHOVE::replaceLine(), PNS::SHOVE::Run(), and PNS::SHOVE::runOptimizer().
|
inlineinherited |
Definition at line 58 of file pns_link_holder.h.
References m_links.
Referenced by PNS::TOPOLOGY::AssembleDiffPair(), PNS::SHOVE::findRootLine(), PNS::TOPOLOGY::followBranch(), PNS::TOPOLOGY::followTrivialPath(), PNS::SHOVE::pruneLineFromOptimizerQueue(), 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(), and PNS::SHOVE::unwindLineStack().
|
inlineinherited |
Definition at line 59 of file pns_link_holder.h.
References m_links.
void LINE::LinkVia | ( | VIA * | aVia | ) |
Definition at line 1098 of file pns_line.cpp.
References PNS::LINK_HOLDER::Link(), LinkVia(), m_line, m_via, PNS::VIA::Pos(), and Reverse().
Referenced by LinkVia(), PNS::SHOVE::patchTadpoleVia(), PNS::SHOVE::pushOrShoveVia(), and PNS::SHOVE::Run().
|
overridevirtual |
Reimplemented from PNS::ITEM.
Definition at line 127 of file pns_line.cpp.
References PNS::LINK_HOLDER::m_links, PNS::ITEM::m_marker, and Mark().
Referenced by Mark(), and PNS::SHOVE::onCollidingSolid().
|
overridevirtual |
Reimplemented from PNS::ITEM.
Definition at line 146 of file pns_line.cpp.
References PNS::LINK_HOLDER::m_links, PNS::ITEM::m_marker, and Marker().
Referenced by PNS::ARC::ARC(), Marker(), 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::AssembleCluster(), PNS::TOPOLOGY::AssembleDiffPair(), PNS::NODE::AssembleLine(), PNS::LINE_PLACER::buildInitialLine(), PNS::KEEP_TOPOLOGY_CONSTRAINT::Check(), PNS::VIA::Clone(), collideSimple(), comparePnsItems(), PNS_KICAD_IFACE::createBoardItem(), PNS::DIFF_PAIR::DIFF_PAIR(), PNS_PCBNEW_RULE_RESOLVER::DpNetPair(), PNS::OPTIMIZER::fanoutCleanup(), PNS::DIFF_PAIR_PLACER::FindDpPrimitivePair(), PNS::NODE::FindJoint(), PNS::NODE::findRedundantArc(), PNS::NODE::findRedundantSegment(), PNS::LINE_PLACER::FixRoute(), Format(), PNS_PCBNEW_RULE_RESOLVER::getBoardItem(), PNS_KICAD_IFACE_BASE::ImportSizes(), ROUTER_TOOL::InlineDrag(), PNS_PCBNEW_RULE_RESOLVER::IsNetTieExclusion(), PNS::ROUTER::isStartingPointRoutable(), PNS::LINE::LINE(), PNS::NODE::LockJoint(), PNS::VIA::MakeHandle(), PNS::LINE_PLACER::Move(), PNS::JOINT::NextSegment(), PNS::VIA::operator=(), PNS::NODE::rebuildJoint(), PNS::INDEX::Remove(), PNS::NODE::removeArcIndex(), PNS::NODE::removeSegmentIndex(), PNS::NODE::removeSolidIndex(), PNS::NODE::removeViaIndex(), PNS::SHOVE::Run(), PNS::OPTIMIZER::runSmartPads(), PNS::SEGMENT::SEGMENT(), PNS::shouldWeConsiderHoleCollisions(), PNS::SHOVE::shoveIteration(), PNS::LINE_PLACER::Start(), PCB_TUNING_PATTERN::Update(), and PNS::VIA::VIA().
|
inlineinherited |
Definition at line 181 of file pns_item.h.
References m_kind.
Referenced by PNS::DP_PRIMITIVE_PAIR::anchorDirection(), PNS::TOPOLOGY::AssembleCluster(), PNS::TOPOLOGY::AssembleTrivialPath(), PNS::ROUTER::BreakSegmentOrArc(), PNS::DP_GATEWAYS::BuildFromPrimitivePair(), PNS::ChangedArea(), PNS::TOOL_BASE::checkSnap(), PNS_KICAD_IFACE::DisplayItem(), PNS::OPTIMIZER::fanoutCleanup(), PNS::SHOVE::fixupViaCollisions(), PNS_KICAD_IFACE_BASE::getLengthDelayCalculationItems(), PNS_VIEWER_IFACE::getLengthDelayCalculationItems(), ROUTER_TOOL::InlineDrag(), 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()(), PCB_TUNING_PATTERN::recoverBaseline(), PNS_KICAD_IFACE::RemoveItem(), PNS_KICAD_IFACE_GENERATOR::RemoveItem(), PNS::SHOVE::replaceItems(), 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(), PNS::SHOVE::unwindLineStack(), and PNS::SHOVE::unwindLineStack().
Definition at line 79 of file pns_line.cpp.
References PNS::OWNABLE_ITEM::BelongsTo(), PNS::VIA::Clone(), PNS::LINK_HOLDER::copyLinks(), 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, m_via, m_width, and operator=().
Referenced by operator=().
|
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::inheritTrackWidth(), 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_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_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=(), 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 293 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 141 of file pns_line.h.
References m_line.
Referenced by PNS::MULTI_DRAGGER::Drag(), PNS::OPTIMIZER::fanoutCleanup(), PNS::getDanglingAnchor(), HasLoops(), PNS::LINE_PLACER::Move(), PNS::TOPOLOGY::NearestUnconnectedAnchorPoint(), PNS::OPTIMIZER::removeCachedSegments(), PNS::WALKAROUND::Route(), PNS::SHOVE::Run(), PNS::SHOVE::ShoveObstacleLine(), PNS::TOPOLOGY::SimplifyLine(), PNS::LINE_PLACER::simplifyNewLine(), and PNS::LINE_PLACER::splitHeadTail().
|
overridevirtual |
Reimplemented from PNS::ITEM.
Definition at line 1120 of file pns_line.cpp.
References PNS::LINK_HOLDER::IsLinked(), PNS::LINK_HOLDER::m_links, PNS::ITEM::m_rank, and Rank().
Referenced by PNS::ARC::ARC(), PNS::SHOVE::onCollidingArc(), PNS::SHOVE::onCollidingSegment(), PNS::SHOVE::onCollidingSolid(), PNS::SHOVE::onReverseCollidingVia(), Rank(), 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 94 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 1318 of file pns_line.cpp.
References PNS::LINK_HOLDER::ContainsLink(), m_via, RemoveVia(), and PNS::LINK_HOLDER::Unlink().
Referenced by Clear(), ClipToNearestObstacle(), PNS::SHOVE::onReverseCollidingVia(), RemoveVia(), PNS::SHOVE::ShoveObstacleLine(), and PNS::LINE_PLACER::splitHeadTail().
void LINE::Reverse | ( | ) |
Clip the line to the nearest obstacle, traversing from the line's start vertex (0).
Returns the clipped line.
Definition at line 1077 of file pns_line.cpp.
References m_line, PNS::LINK_HOLDER::m_links, and Reverse().
Referenced by AppendVia(), PNS::DRAGGER::findViaFanoutByHandle(), PNS::TOPOLOGY::followBranch(), LinkVia(), and Reverse().
|
inline |
Definition at line 140 of file pns_line.h.
References m_line.
Referenced by PNS::NODE::AssembleLine(), PNS::MULTI_DRAGGER::findNewLeaderSegment(), PNS::ROUTER::GetNearestRatnestAnchor(), PNS::OPTIMIZER::mergeStep(), PNS::LINE_PLACER::Move(), PNS::OPTIMIZER::Optimize(), PNS::LINE_PLACER::optimizeTailHeadTransition(), PNS::SHOVE::pushLineStack(), PNS::LINE_PLACER::removeLoops(), PNS::SHOVE::replaceLine(), PNS::SHOVE::Run(), PNS::SHOVE::shoveIteration(), PNS::SHOVE::shoveLineToHullSet(), PNS::SHOVE::ShoveObstacleLine(), PNS::TOPOLOGY::SimplifyLine(), and PNS::Tighten().
|
inline |
Definition at line 217 of file pns_line.h.
References m_blockingObstacle.
|
inlinevirtualinherited |
Reimplemented in PNS::SOLID, and PNS::VIA.
Definition at line 305 of file pns_item.h.
|
inlineinherited |
Definition at line 300 of file pns_item.h.
References m_isCompoundShapePrimitive.
|
inlineinherited |
Definition at line 286 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(), PNS::HOLE::Clone(), PNS::VIA::Clone(), PNS::HOLE::MakeCircularHole(), PNS::VIA::operator=(), PNS_LOG_FILE::parseCommonPnsProps(), PNS::VIA::VIA(), and PNS::VIA::VIA().
|
inlineinherited |
Definition at line 209 of file pns_item.h.
References m_net.
Referenced by PNS::NODE::AssembleLine(), PNS::LINE_PLACER::buildInitialLine(), PNS::VIA::Clone(), PCB_TUNING_PATTERN::EditStart(), PNS::LINE_PLACER::FixRoute(), PNS_KICAD_IFACE_BASE::ImportSizes(), PNS::ROUTER::isStartingPointRoutable(), PNS::VIA::operator=(), PNS_LOG_FILE::parseCommonPnsProps(), PCB_TUNING_PATTERN::recoverBaseline(), PNS::DIFF_PAIR::updateLine(), PNS::VIA::VIA(), 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 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(), and PNS::NODE::Remove().
|
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 1110 of file pns_line.cpp.
References PNS::LINK_HOLDER::m_links, PNS::ITEM::m_rank, and SetRank().
Referenced by PNS::SHOVE::onCollidingArc(), PNS::SHOVE::onCollidingLine(), PNS::SHOVE::onCollidingSegment(), PNS::SHOVE::onCollidingSolid(), PNS::SHOVE::onReverseCollidingVia(), PNS::SHOVE::Run(), and SetRank().
|
inlineinherited |
Definition at line 283 of file pns_item.h.
References m_routable.
|
inline |
Return the shape of the line.
Definition at line 127 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::LINE_PLACER::simplifyNewLine(), PNS::OPTIMIZER::smartPadsSingle(), PNS::LINE_PLACER::splitHeadTail(), PNS::tightenSegment(), PNS::LINE_PLACER::Trace(), and PNS::DIFF_PAIR::updateLine().
|
inline |
Definition at line 233 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=(), and PNS::DIFF_PAIR::updateLine().
|
inline |
Definition at line 202 of file pns_line.h.
References PNS::VIA::ALL_LAYERS, m_via, and PNS::VIA::NORMAL.
|
inline |
Definition at line 211 of file pns_line.h.
References m_via.
|
inline |
Return line width.
Definition at line 151 of file pns_line.h.
References m_line, and m_width.
Referenced by PNS::NODE::AssembleLine(), PNS::ROUTER::isStartingPointRoutable(), PCB_TUNING_PATTERN::recoverBaseline(), and PNS::DIFF_PAIR::updateLine().
|
inlineoverridevirtual |
Modifiable accessor to the underlying shape.
Reimplemented from PNS::ITEM.
Definition at line 134 of file pns_line.h.
References m_line.
Referenced by PNS::SHOVE::onCollidingVia().
|
inline |
Return the aIdx-th point of the line.
Definition at line 143 of file pns_line.h.
References m_line.
Referenced by IsLinkedChecked().
void PNS::LINE::ShowLinks | ( | ) | const |
|
private |
Definition at line 814 of file pns_line.cpp.
References SHAPE_LINE_CHAIN::CSegment(), SEG::IntersectLines(), m_snapThreshhold, SHAPE_LINE_CHAIN::SegmentCount(), and snapDraggedCorner().
Referenced by dragCorner45(), and snapDraggedCorner().
|
private |
Definition at line 856 of file pns_line.cpp.
References SEG::A, SHAPE_LINE_CHAIN::CSegment(), SEG::LineDistance(), m_snapThreshhold, SHAPE_LINE_CHAIN::SegmentCount(), and snapToNeighbourSegments().
Referenced by dragSegment45(), and snapToNeighbourSegments().
|
inlinevirtualinherited |
Return a list of layers that have unique (potentially different) shapes.
Reimplemented in PNS::VIA.
Definition at line 250 of file pns_item.h.
Referenced by RelevantShapeLayers().
|
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 49 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 137 of file pns_line.cpp.
References PNS::LINK_HOLDER::m_links, PNS::ITEM::m_marker, and Unmark().
Referenced by PNS::COMPONENT_DRAGGER::Drag(), PNS::DRAGGER::dragShove(), PNS::SHOVE::onCollidingSolid(), PNS::DRAGGER::optimizeAndUpdateDraggedLine(), and Unmark().
|
inline |
Definition at line 199 of file pns_line.h.
References m_via.
Referenced by PNS::NODE::CheckColliding(), 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 200 of file pns_line.h.
References m_via.
bool LINE::Walkaround | ( | const SHAPE_LINE_CHAIN & | aObstacle, |
SHAPE_LINE_CHAIN & | aPath, | ||
bool | aCw ) const |
Print out all linked segments.
Definition at line 207 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_BASE::PointInside(), SHAPE_LINE_CHAIN_BASE::PointOnEdge(), SHAPE_LINE_CHAIN::Reverse(), SHAPE_LINE_CHAIN::SegmentCount(), SHAPE_LINE_CHAIN::Split(), and Walkaround().
bool PNS::LINE::Walkaround | ( | SHAPE_LINE_CHAIN | aObstacle, |
SHAPE_LINE_CHAIN & | aPre, | ||
SHAPE_LINE_CHAIN & | aWalk, | ||
SHAPE_LINE_CHAIN & | aPost, | ||
bool | aCw ) const |
Calculate a line tightly wrapping a convex hull of an obstacle object (aObstacle).
aPrePath | is the path from origin to the obstacle. |
aWalkaroundPath | is the path around the obstacle. |
aPostPath | 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(), PNS::SHOVE::shoveLineToHullSet(), and Walkaround().
|
inline |
Return true if the line is geometrically identical as line aOther.
Definition at line 158 of file pns_line.h.
References m_width.
Referenced by PNS::TOPOLOGY::AssembleDiffPair(), ChangedArea(), PNS::OPTIMIZER::fanoutCleanup(), PNS::LINE_PLACER::FixRoute(), PNS::NODE::NearestObstacle(), PNS::SHOVE::onCollidingVia(), PNS::SHOVE::onReverseCollidingVia(), PNS::SHOVE::shoveIteration(), PNS::SHOVE::shoveLineFromLoneVia(), PNS::SHOVE::shoveLineToHullSet(), PNS::SHOVE::ShoveObstacleLine(), and PNS::OPTIMIZER::smartPadsSingle().
|
private |
For mark obstacle mode.
Definition at line 262 of file pns_line.h.
Referenced by GetBlockingObstacle(), LINE(), LINE(), LINE(), operator=(), and SetBlockingObstacle().
|
protectedinherited |
Definition at line 332 of file pns_item.h.
Referenced by IsCompoundShapePrimitive(), ITEM(), ITEM(), and SetIsCompoundShapePrimitive().
|
protectedinherited |
Definition at line 331 of file pns_item.h.
Referenced by IsFreePad(), ITEM(), ITEM(), and SetIsFreePad().
|
protectedinherited |
Definition at line 330 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 316 of file pns_item.h.
Referenced by collideSimple(), ITEM(), ITEM(), Kind(), KindStr(), and OfKind().
|
protectedinherited |
Definition at line 323 of file pns_item.h.
Referenced by PNS::ARC::ARC(), PNS::ARC::ARC(), PNS::ARC::Clone(), PNS::SEGMENT::Clone(), PNS::VIA::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::LINE::operator=(), PNS::JOINT::Overlaps(), PNS::SEGMENT::SEGMENT(), PNS::SOLID::SetHole(), PNS::VIA::SetHole(), SetLayer(), SetLayers(), PNS::VIA::SetStackMode(), PNS::VIA::UniqueShapeLayers(), and PNS::JOINT::Unlink().
|
private |
The actual shape of the line.
Definition at line 255 of file pns_line.h.
Referenced by AppendVia(), ArcCount(), ChangedArea(), CLastPoint(), Clear(), CLine(), ClipVertexRange(), CompareGeometry(), CountCorners(), CPoint(), CSegment(), dragCorner45(), dragCornerFree(), dragSegment45(), FindSegment(), LINE(), LINE(), Line(), LinkVia(), operator=(), PointCount(), Reverse(), SegmentCount(), SetShape(), SetWidth(), Shape(), and ShapeCount().
|
protectedinherited |
Definition at line 117 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::Rank(), PNS::LINE::Reverse(), PNS::LINE::SetRank(), ShowLinks(), Unlink(), and PNS::LINE::Unmark().
|
mutableprotectedinherited |
Definition at line 327 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(), Mark(), PNS::LINE::Mark(), Marker(), PNS::LINE::Marker(), PNS::LINE::operator=(), PNS::SOLID::operator=(), PNS::VIA::operator=(), PNS::SEGMENT::SEGMENT(), Unmark(), PNS::LINE::Unmark(), and PNS::VIA::VIA().
|
protectedinherited |
Definition at line 325 of file pns_item.h.
Referenced by PNS::ARC::Clone(), PNS::VIA::Clone(), ITEM(), ITEM(), PNS::LINE::LINE(), PNS::LINE::operator=(), PNS::SOLID::operator=(), PNS::VIA::operator=(), and PNS::SOLID::SOLID().
|
protectedinherited |
Definition at line 326 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(), ITEM(), ITEM(), PNS::LINE::LINE(), PNS::LINE::LINE(), PNS::LINE::LINE(), PNS::HOLE::Net(), Net(), PNS::LINE::operator=(), 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=(), OWNABLE_ITEM(), Owner(), and SetOwner().
|
protectedinherited |
Definition at line 317 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::SOLID::operator=(), Parent(), PNS::SEGMENT::SEGMENT(), SetParent(), and PNS::DIFF_PAIR::updateLine().
|
protectedinherited |
Definition at line 328 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::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 329 of file pns_item.h.
Referenced by PNS::ARC::Clone(), PNS::VIA::Clone(), IsRoutable(), ITEM(), ITEM(), PNS::LINE::operator=(), PNS::SOLID::operator=(), PNS::VIA::operator=(), and SetRoutable().
|
private |
Width to smooth out jagged segments.
Definition at line 259 of file pns_line.h.
Referenced by GetSnapThreshhold(), LINE(), LINE(), LINE(), LINE(), operator=(), SetSnapThreshhold(), snapDraggedCorner(), and snapToNeighbourSegments().
|
protectedinherited |
Definition at line 319 of file pns_item.h.
Referenced by PNS::ARC::Clone(), PNS::VIA::Clone(), GetSourceItem(), ITEM(), ITEM(), PNS::LINE::operator=(), PNS::SOLID::operator=(), PNS::SEGMENT::SEGMENT(), SetParent(), SetSourceItem(), and PNS::DIFF_PAIR::updateLine().
|
private |
Definition at line 261 of file pns_line.h.
Referenced by AppendVia(), EndsWithVia(), LINE(), LINE(), LINE(), LINE(), LinkVia(), operator=(), RemoveVia(), SetViaDiameter(), SetViaDrill(), Via(), Via(), and ~LINE().
|
private |
Our width.
Definition at line 256 of file pns_line.h.
Referenced by LINE(), LINE(), LINE(), LINE(), operator=(), SetShape(), SetWidth(), and Width().