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 } |
< 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 (const 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 () 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 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 |
void | AppendVia (const 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) |
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) |
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 |
virtual BOARD_ITEM * | BoardItem () const |
void | SetNet (NET_HANDLE aNet) |
virtual NET_HANDLE | Net () const |
const LAYER_RANGE & | Layers () const |
void | SetLayers (const LAYER_RANGE &aLayers) |
void | SetLayer (int aLayer) |
virtual int | Layer () const |
bool | LayersOverlap (const ITEM *aOther) const |
Return true if the set of layers spanned by aOther overlaps our layers. | |
bool | Collide (const ITEM *aHead, const NODE *aNode, COLLISION_SEARCH_CONTEXT *aCtx=nullptr) const |
Check for a collision (clearance violation) with between us and item aOther. | |
virtual 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 |
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) |
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, 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 60 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 |
Definition at line 100 of file pns_item.h.
|
inline |
Makes an empty line.
Definition at line 66 of file pns_line.h.
References m_snapThreshhold, m_via, and m_width.
Referenced by Clone().
PNS::LINE::LINE | ( | const LINE & | aOther | ) |
Definition at line 38 of file pns_line.cpp.
References PNS::VIA::Clone(), PNS::LINK_HOLDER::copyLinks(), m_blockingObstacle, PNS::ITEM::m_layers, PNS::ITEM::m_marker, PNS::ITEM::m_movable, PNS::ITEM::m_net, PNS::ITEM::m_rank, m_via, PNS::ITEM::SetNet(), and PNS::OWNABLE_ITEM::SetOwner().
|
inline |
Copy properties (net, layers, etc.) from a base line and replaces the shape by another.
Definition at line 80 of file pns_line.h.
References PNS::ITEM::m_layers, PNS::ITEM::m_net, and m_via.
|
inline |
Construct a LINE for a lone VIA (ie a stitching via).
Definition at line 95 of file pns_line.h.
References PNS::VIA::Clone(), PNS::VIA::Diameter(), PNS::ITEM::Layers(), PNS::ITEM::m_layers, PNS::ITEM::m_net, PNS::ITEM::m_rank, m_snapThreshhold, m_via, m_width, PNS::ITEM::Net(), and PNS::ITEM::Rank().
PNS::LINE::~LINE | ( | ) |
Definition at line 65 of file pns_line.cpp.
References PNS::OWNABLE_ITEM::BelongsTo(), and m_via.
|
inlinevirtualinherited |
Reimplemented in PNS::SOLID, PNS::ARC, PNS::SEGMENT, and PNS::VIA.
Definition at line 237 of file pns_item.h.
Referenced by PNS::DP_PRIMITIVE_PAIR::anchorDirection(), PNS::TOPOLOGY::AssembleDiffPair(), PNS::DP_PRIMITIVE_PAIR::CursorOrientation(), PNS::DP_PRIMITIVE_PAIR::DP_PRIMITIVE_PAIR(), PNS::NODE::followLine(), PNS_PCBNEW_RULE_RESOLVER::getBoardItem(), PNS::getDanglingAnchor(), PNS::ROUTER::getNearestRatnestAnchor(), PNS_KICAD_IFACE_BASE::ImportSizes(), PNS::TOPOLOGY::NearestUnconnectedAnchorPoint(), PNS::TOOL_BASE::pickSingleItem(), PCB_TUNING_PATTERN::recoverBaseline(), and PNS::TOOL_BASE::snapToItem().
|
inlinevirtualinherited |
Reimplemented in PNS::ARC, PNS::SEGMENT, PNS::SOLID, and PNS::VIA.
Definition at line 242 of file pns_item.h.
Referenced by PNS::TOPOLOGY::AssembleDiffPair().
void PNS::LINE::AppendVia | ( | const VIA & | aVia | ) |
Definition at line 1051 of file pns_line.cpp.
References PNS::VIA::Clone(), SHAPE_LINE_CHAIN::CPoint(), m_line, PNS::ITEM::m_net, m_via, SHAPE_LINE_CHAIN::PointCount(), PNS::VIA::Pos(), Reverse(), PNS::ITEM::SetNet(), and PNS::OWNABLE_ITEM::SetOwner().
Referenced by PNS::LINE_PLACER::buildInitialLine(), PNS::SHOVE::onReverseCollidingVia(), PNS::LINE_PLACER::rhShoveOnly(), PNS::LINE_PLACER::rhWalkBase(), PNS::LINE_PLACER::rhWalkOnly(), and PNS::DIFF_PAIR::updateLine().
|
inline |
Definition at line 140 of file pns_line.h.
References SHAPE_LINE_CHAIN::ArcCount(), and m_line.
Referenced by PNS::OPTIMIZER::Optimize().
|
inlineinherited |
Definition at line 81 of file pns_item.h.
References PNS::OWNABLE_ITEM::m_owner.
Referenced by PNS::NODE::addSolid(), PNS::NODE::addVia(), PNS::NODE::doRemove(), PNS::NODE::Remove(), RemoveVia(), PNS::SOLID::SetHole(), PNS::VIA::SetHole(), ~LINE(), PNS::NODE::~NODE(), and PNS::VIA::~VIA().
|
inlinevirtualinherited |
Reimplemented in PNS::HOLE.
Definition at line 191 of file pns_item.h.
References PNS::ITEM::m_parent.
Referenced by isEdge(), PNS_PCBNEW_RULE_RESOLVER::IsInNetTie(), PNS_PCBNEW_RULE_RESOLVER::IsNetTieExclusion(), PNS_PCBNEW_RULE_RESOLVER::QueryConstraint(), and ROUTER_PREVIEW_ITEM::ROUTER_PREVIEW_ITEM().
Definition at line 1172 of file pns_line.cpp.
References SEG::Contains(), SHAPE_LINE_CHAIN::CPoint(), SHAPE_LINE_CHAIN::CSegment(), PNS::extendBox(), BOX2< Vec >::Inflate(), m_line, SHAPE_LINE_CHAIN::PointCount(), SHAPE_LINE_CHAIN::Simplify(), and Width().
Referenced by PNS::ChangedArea(), and PNS::DRAGGER::optimizeAndUpdateDraggedLine().
|
inlinestatic |
Definition at line 109 of file pns_line.h.
References PNS::ITEM::Kind(), and PNS::ITEM::LINE_T.
void PNS::LINE::Clear | ( | ) |
Definition at line 1264 of file pns_line.cpp.
References SHAPE_LINE_CHAIN::Clear(), m_line, and RemoveVia().
Referenced by PNS::LINE_PLACER::rhWalkBase(), PNS::LINE_PLACER::routeStep(), 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 67 of file pns_link_holder.h.
References PNS::LINK_HOLDER::m_links.
Referenced by PNS::DIFF_PAIR::ClearLinks(), PNS::COMPONENT_DRAGGER::Drag(), PNS::DRAGGER::dragMarkObstacles(), PNS::DRAGGER::dragShove(), PNS::DRAGGER::dragViaMarkObstacles(), PNS::DRAGGER::dragViaWalkaround(), PNS::SHOVE::onCollidingSolid(), PNS::SHOVE::onReverseCollidingVia(), PNS::OPTIMIZER::Optimize(), PNS::DRAGGER::optimizeAndUpdateDraggedLine(), PNS::NODE::Remove(), PNS::WALKAROUND::Route(), PNS::SHOVE::ShoveLines(), PNS::SHOVE::ShoveMultiLines(), and PNS::SHOVE::ShoveObstacleLine().
|
inline |
Definition at line 136 of file pns_line.h.
References m_line.
Referenced by PNS::COST_ESTIMATOR::Add(), PNS::TOPOLOGY::AssembleTuningPath(), PNS::DIFF_PAIR_PLACER::attemptWalk(), PNS::KEEP_TOPOLOGY_CONSTRAINT::Check(), PNS::NODE::CheckColliding(), PNS::SHOVE::checkShoveDirection(), PNS::COST_ESTIMATOR::CornerCost(), PNS::DIFF_PAIR::DIFF_PAIR(), PNS::MEANDER_PLACER::doMove(), PNS::DRAGGER::dragShove(), PNS::DRAGGER::dragViaMarkObstacles(), PNS::DRAGGER::dragViaWalkaround(), PNS::DRAGGER::dragWalkaround(), PNS::OPTIMIZER::fanoutCleanup(), PNS::NODE::FindLinesBetweenJoints(), PNS::LINE_PLACER::FixRoute(), PNS::TOPOLOGY::followTrivialPath(), getPNSLine(), PCB_TUNING_PATTERN::initBaseLine(), PNS::LINE_PLACER::Move(), PNS::NODE::NearestObstacle(), PNS::SHOVE::onCollidingArc(), PNS::SHOVE::onCollidingSegment(), PNS::SHOVE::onReverseCollidingVia(), PNS::DRAGGER::optimizeAndUpdateDraggedLine(), PNS::LINE_PLACER::optimizeTailHeadTransition(), PNS::COST_ESTIMATOR::Remove(), PNS::LINE_PLACER::removeLoops(), PNS::COST_ESTIMATOR::Replace(), PNS_LOG_PLAYER::ReplayLog(), 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::DRAGGER::startDragSegment(), PNS::Tighten(), PNS::LINE_PLACER::Trace(), PNS::DRAGGER::tryWalkaround(), PNS::LINE_PLACER::updatePStart(), and Walkaround().
Clip the line to a given range of vertices.
Definition at line 566 of file pns_line.cpp.
References SHAPE_LINE_CHAIN::Clear(), SHAPE_LINE_CHAIN::CSegment(), SHAPE_LINE_CHAIN::IsArcSegment(), Line(), PNS::NODE::NearestObstacle(), SEG::NearestPoint(), SHAPE_LINE_CHAIN::NearestSegment(), SHAPE_LINE_CHAIN::Remove(), RemoveVia(), and SHAPE_LINE_CHAIN::Split().
void PNS::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 1094 of file pns_line.cpp.
References PNS::LINK_HOLDER::IsLinked(), m_line, PNS::LINK_HOLDER::m_links, SHAPE_LINE_CHAIN::NextShape(), SHAPE_LINE_CHAIN::PointCount(), and SHAPE_LINE_CHAIN::Slice().
Referenced by PNS::NODE::FindLinesBetweenJoints().
|
overridevirtual |
Return a deep copy of the item.
Implements PNS::ITEM.
Definition at line 101 of file pns_line.cpp.
References LINE().
Referenced by PNS::ITEM_SET::Add(), PNS::ITEM_SET::Prepend(), and PNS::SHOVE::replaceLine().
|
inherited |
Check for a collision (clearance violation) with between us and item aOther.
Collision checking takes all PCB stuff into account (layers, nets, DRC rules). Optionally returns a minimum translation vector for force propagation algorithm.
aOther | is the item to check collision against. |
Definition at line 273 of file pns_item.cpp.
References PNS::ITEM::collideSimple().
Referenced by PNS::SHOVE::fixupViaCollisions(), PNS::SHOVE::onCollidingSolid(), PNS::NODE::DEFAULT_OBSTACLE_VISITOR::operator()(), PNS::OPTIMIZER::CACHE_VISITOR::operator()(), PNS::SHOVE::shoveLineFromLoneVia(), PNS::SHOVE::shoveLineToHullSet(), PNS::COMPONENT_DRAGGER::Start(), and PNS::verifyDpBypass().
|
privateinherited |
Definition at line 93 of file pns_item.cpp.
References SHAPE::Collide(), PNS::ITEM::collideSimple(), Edge_Cuts, PNS::NODE::GetClearance(), PNS::ROUTER::GetInstance(), PNS::ROUTER::GetInterface(), BOARD_ITEM::GetLayer(), PNS::NODE::GetRuleResolver(), PNS::ITEM::Hole(), PNS::ITEM::HOLE_T, PNS::ROUTER_IFACE::IsFlashedOnLayer(), PNS::ITEM::IsFreePad(), PNS::RULE_RESOLVER::IsInNetTie(), PNS::RULE_RESOLVER::IsKeepout(), PNS::RULE_RESOLVER::IsNetTieExclusion(), PNS::RULE_RESOLVER::IsNonPlatedSlot(), PNS::ITEM::Kind(), PNS::ITEM::Layers(), PNS::ITEM::LINE_T, PNS::OBSTACLE::m_clearance, PNS::COLLISION_SEARCH_OPTIONS::m_differentNetsOnly, PNS::OBSTACLE::m_distFirst, PNS::OBSTACLE::m_head, PNS::OBSTACLE::m_item, PNS::ITEM::m_kind, PNS::ITEM::m_layers, PNS::OBSTACLE::m_maxFanoutWidth, PNS::COLLISION_SEARCH_OPTIONS::m_overrideClearance, PNS::ITEM::m_parent, PNS::COLLISION_SEARCH_OPTIONS::m_useClearanceEpsilon, PNS::ITEM::Net(), PNS::COLLISION_SEARCH_CONTEXT::obstacles, PNS::COLLISION_SEARCH_CONTEXT::options, LAYER_RANGE::Overlaps(), PNS::NODE::QueryEdgeExclusions(), PNS::ITEM::Shape(), and PNS::shouldWeConsiderHoleCollisions().
Referenced by PNS::ITEM::Collide(), and PNS::ITEM::collideSimple().
bool PNS::LINE::CompareGeometry | ( | const LINE & | aOther | ) |
Reverse the point/vertex order.
Definition at line 1037 of file pns_line.cpp.
References SHAPE_LINE_CHAIN::CompareGeometry(), and m_line.
|
inlineinherited |
Definition at line 56 of file pns_link_holder.h.
References alg::contains(), and PNS::LINK_HOLDER::m_links.
Referenced by PNS::TOOL_BASE::checkSnap(), and PCB_TUNING_PATTERN::initBaseLine().
|
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 96 of file pns_link_holder.h.
References PNS::LINK_HOLDER::m_links.
Referenced by LINE(), and operator=().
int PNS::LINE::CountCorners | ( | int | aAngles | ) | const |
Definition at line 153 of file pns_line.cpp.
References DIRECTION_45::Angle(), SHAPE_LINE_CHAIN::CSegment(), m_line, and SHAPE_LINE_CHAIN::SegmentCount().
Referenced by PNS::CORNER_COUNT_LIMIT_CONSTRAINT::Check(), PNS::LINE_PLACER::mergeHead(), PNS::OPTIMIZER::Optimize(), and PNS::OPTIMIZER::smartPadsSingle().
|
inline |
Definition at line 144 of file pns_line.h.
References SHAPE_LINE_CHAIN::CPoint(), and m_line.
Referenced by PNS::AREA_CONSTRAINT::Check(), PNS::SHOVE::checkShoveDirection(), PNS::OPTIMIZER::fanoutCleanup(), PNS::NODE::FindLineEnds(), PNS::TOPOLOGY::followTrivialPath(), PNS::getDanglingAnchor(), HasLoops(), PNS::TOPOLOGY::LeadingRatLine(), PNS::LINE_PLACER::Move(), PNS::TOPOLOGY::NearestUnconnectedAnchorPoint(), PNS::LINE_PLACER::rhShoveOnly(), PNS::LINE_PLACER::rhWalkBase(), PNS::LINE_PLACER::rhWalkOnly(), PNS::WALKAROUND::Route(), PNS::LINE_PLACER::route(), PNS::SHOVE::sanityCheck(), PNS::SHOVE::shoveLineFromLoneVia(), PNS::SHOVE::ShoveLines(), PNS::SHOVE::shoveLineToHullSet(), PNS::WALKAROUND::singleStep(), PNS::LINE_PLACER::splitHeadTail(), and Walkaround().
|
inline |
Set line width.
Definition at line 145 of file pns_line.h.
References SHAPE_LINE_CHAIN::CSegment(), and m_line.
Referenced by PNS::DIFF_PAIR::EndingPrimitives(), PNS::LINE_PLACER::FixRoute(), PNS::LINE_PLACER::FlipPosture(), PNS::OPTIMIZER::mergeStep(), PNS::LINE_PLACER::optimizeTailHeadTransition(), and PNS::SHOVE::ShoveObstacleLine().
void PNS::LINE::DragCorner | ( | const VECTOR2I & | aP, |
int | aIndex, | ||
bool | aFreeAngle = false |
||
) |
Definition at line 754 of file pns_line.cpp.
References dragCorner45(), and dragCornerFree().
Referenced by PNS::COMPONENT_DRAGGER::Drag(), PNS::DRAGGER::dragMarkObstacles(), PNS::DRAGGER::dragShove(), PNS::DRAGGER::dragViaMarkObstacles(), PNS::DRAGGER::dragViaWalkaround(), and PNS::DRAGGER::dragWalkaround().
|
private |
Definition at line 693 of file pns_line.cpp.
References SHAPE_LINE_CHAIN::CPoint(), PNS::dragCornerInternal(), SHAPE_LINE_CHAIN::Insert(), SHAPE_LINE_CHAIN::IsPtOnArc(), m_line, path, SHAPE_LINE_CHAIN::Reverse(), SHAPE_LINE_CHAIN::SegmentCount(), SHAPE_LINE_CHAIN::Slice(), snapDraggedCorner(), and SHAPE_LINE_CHAIN::Width().
Referenced by DragCorner().
|
private |
Definition at line 727 of file pns_line.cpp.
References SHAPE_LINE_CHAIN::GetPoint(), SHAPE_LINE_CHAIN::Insert(), SHAPE_LINE_CHAIN::IsArcSegment(), SHAPE_LINE_CHAIN::IsPtOnArc(), m_line, SHAPE_LINE_CHAIN::PointCount(), SHAPE_LINE_CHAIN::SetPoint(), and SHAPE_LINE_CHAIN::Simplify().
Referenced by DragCorner().
void PNS::LINE::DragSegment | ( | const VECTOR2I & | aP, |
int | aIndex, | ||
bool | aFreeAngle = false |
||
) |
Definition at line 768 of file pns_line.cpp.
References dragSegment45().
Referenced by PNS::DRAGGER::dragMarkObstacles(), PNS::DRAGGER::dragShove(), and PNS::DRAGGER::dragWalkaround().
|
private |
Definition at line 867 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, SEG::Intersect(), SEG::IntersectLines(), DIRECTION_45::Left(), SHAPE_LINE_CHAIN::Length(), m_line, path, SHAPE_LINE_CHAIN::PointCount(), SHAPE_LINE_CHAIN::Replace(), DIRECTION_45::Right(), SHAPE_LINE_CHAIN::SegmentCount(), SHAPE_LINE_CHAIN::Simplify(), snapToNeighbourSegments(), DIRECTION_45::ToVector(), and DIRECTION_45::UNDEFINED.
Referenced by DragSegment().
|
private |
|
inline |
Definition at line 188 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::LINE_PLACER::rhShoveOnly(), PNS::LINE_PLACER::rhWalkBase(), PNS::WALKAROUND::Route(), PNS::LINE_PLACER::routeStep(), PNS::SHOVE::shoveIteration(), PNS::SHOVE::ShoveLines(), PNS::SHOVE::ShoveMultiLines(), PNS::SHOVE::ShoveObstacleLine(), and PNS::LINE_PLACER::UpdateSizes().
|
virtualinherited |
Reimplemented in PNS::SEGMENT, and PNS::VIA.
Definition at line 305 of file pns_item.cpp.
References LAYER_RANGE::End(), PNS::ROUTER::GetInstance(), PNS::ROUTER::GetInterface(), PNS::ROUTER_IFACE::GetNetName(), PNS::ITEM::KindStr(), PNS::ITEM::m_layers, PNS::ITEM::Net(), and LAYER_RANGE::Start().
Referenced by PNS::NODE::Dump(), PNS::SEGMENT::Format(), PNS::VIA::Format(), and PNS::SHOVE::shoveIteration().
|
inline |
Definition at line 204 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 61 of file pns_link_holder.h.
References PNS::LINK_HOLDER::m_links.
Referenced by PNS::LINE_PLACER::removeLoops(), PNS::TOPOLOGY::SimplifyLine(), PNS::DP_MEANDER_PLACER::Start(), and PNS::MEANDER_SKEW_PLACER::Start().
|
inline |
Definition at line 224 of file pns_line.h.
References m_snapThreshhold.
|
inlinevirtualinherited |
Reimplemented in PNS::SOLID, PNS::VIA, and PNS::VVIA.
Definition at line 272 of file pns_item.h.
Referenced by PNS::NODE::Commit(), PNS::NODE::doRemove(), and PNS::SHOVE::getClearance().
bool PNS::LINE::HasLockedSegments | ( | ) | const |
Definition at line 1253 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 PNS::LINE::HasLoops | ( | ) | const |
Definition at line 1143 of file pns_line.cpp.
References CPoint(), and PointCount().
Referenced by PNS::SHOVE::onCollidingSolid().
|
inlinevirtualinherited |
Reimplemented in PNS::SOLID, and PNS::VIA.
Definition at line 273 of file pns_item.h.
Referenced by PNS::ITEM::collideSimple(), PNS::NODE::Commit(), PNS::NODE::doRemove(), PNS::SHOVE::getClearance(), ROUTER_PREVIEW_ITEM::ROUTER_PREVIEW_ITEM(), and ROUTER_PREVIEW_ITEM::Update().
|
inlinevirtualinherited |
Reimplemented in PNS::ARC, PNS::SEGMENT, PNS::HOLE, PNS::SOLID, and PNS::VIA.
Definition at line 158 of file pns_item.h.
|
inlineinherited |
Definition at line 270 of file pns_item.h.
References PNS::ITEM::m_isCompoundShapePrimitive.
|
inlineinherited |
Definition at line 257 of file pns_item.h.
References PNS::ITEM::m_isFreePad, and PNS::ITEM::ParentPadVia().
Referenced by PNS::ITEM::collideSimple().
|
inlineinherited |
Check if the segment aLink is a part of the line.
Definition at line 50 of file pns_link_holder.h.
References PNS::LINK_HOLDER::m_links.
Referenced by PNS::NODE::Add(), ClipVertexRange(), PNS::TOPOLOGY::followTrivialPath(), IsLinkedChecked(), PNS::DIFF_PAIR::NLine(), PNS::DIFF_PAIR::PLine(), Rank(), PNS::OPTIMIZER::removeCachedSegments(), PNS::LINK_HOLDER::ShowLinks(), and PNS::TOPOLOGY::SimplifyLine().
|
inline |
Assign a shape to the line (a polyline/line chain).
Definition at line 119 of file pns_line.h.
References PNS::LINK_HOLDER::IsLinked(), PNS::LINK_HOLDER::LinkCount(), and ShapeCount().
Referenced by PNS::SHOVE::pushLineStack().
|
inlineinherited |
Definition at line 247 of file pns_item.h.
References PNS::ITEM::Marker(), and PNS::MK_LOCKED.
Referenced by ROUTER_TOOL::InlineBreakTrack(), PNS::JOINT::IsLineCorner(), ROUTER_TOOL::performDragging(), and PNS::SHOVE::pushOrShoveVia().
|
inlineinherited |
Definition at line 253 of file pns_item.h.
References PNS::ITEM::m_routable.
Referenced by PNS::NODE::addSolid(), and PNS::NODE::removeSolidIndex().
|
inlineinherited |
Definition at line 264 of file pns_item.h.
References PNS::ITEM::m_isVirtual.
Referenced by PNS_KICAD_IFACE::DisplayItem(), PNS::NODE::GetClearance(), and PNS::NODE::QueryColliding().
|
inlineinherited |
Return the type (kind) of the item.
Definition at line 167 of file pns_item.h.
References PNS::ITEM::m_kind.
Referenced by PNS::NODE::add(), PNS::TOPOLOGY::AssembleDiffPair(), PNS::NODE::AssembleLine(), PNS::TOPOLOGY::AssembleTrivialPath(), PNS::OPTIMIZER::CacheRemove(), PNS::NODE::CheckColliding(), PNS::ARC::ClassOf(), PNS::DIFF_PAIR::ClassOf(), ClassOf(), PNS::SEGMENT::ClassOf(), PNS::SOLID::ClassOf(), PNS::VIA::ClassOf(), PNS::ITEM::collideSimple(), comparePnsItems(), PNS::OPTIMIZER::computeBreakouts(), PNS_KICAD_IFACE::createBoardItem(), PNS::DIFF_PAIR_PLACER::FindDpPrimitivePair(), PNS::NODE::followLine(), PNS_PCBNEW_RULE_RESOLVER::getBoardItem(), PNS::getDanglingAnchor(), PNS::MEANDER_PLACER_BASE::getSnappedStartPoint(), PNS_KICAD_IFACE_BASE::ImportSizes(), PNS_KICAD_IFACE_BASE::inheritTrackWidth(), PNS_KICAD_IFACE::modifyBoardItem(), PNS::JOINT::NextSegment(), PNS::OPTIMIZER::CACHE_VISITOR::operator()(), ROUTER_TOOL::performDragging(), PNS::INDEX::Query(), PNS::NODE::Remove(), PNS::SHOVE::shoveIteration(), PNS::OPTIMIZER::smartPadsSingle(), PNS::TOOL_BASE::snapToItem(), PNS::LINE_PLACER::Start(), PNS::DRAGGER::Start(), ROUTER_PREVIEW_ITEM::Update(), and PNS::LINE_PLACER::UpdateSizes().
|
inherited |
Definition at line 282 of file pns_item.cpp.
References PNS::ITEM::ARC_T, PNS::ITEM::DIFF_PAIR_T, PNS::ITEM::HOLE_T, PNS::ITEM::JOINT_T, PNS::ITEM::LINE_T, PNS::ITEM::m_kind, PNS::ITEM::SEGMENT_T, PNS::ITEM::SOLID_T, and PNS::ITEM::VIA_T.
Referenced by PNS::ITEM::Format(), PNS::TOOL_BASE::pickSingleItem(), and PNS::TOOL_BASE::updateEndItem().
|
inlinevirtualinherited |
Definition at line 200 of file pns_item.h.
References PNS::ITEM::Layers(), and LAYER_RANGE::Start().
Referenced by PNS::TOPOLOGY::AssembleTuningPath(), PNS::DRAGGER::CurrentLayer(), PNS::OPTIMIZER::fanoutCleanup(), PNS_KICAD_IFACE_BASE::ImportSizes(), PNS_PCBNEW_RULE_RESOLVER::IsKeepout(), PNS_PCBNEW_RULE_RESOLVER::IsNetTieExclusion(), PNS::MEANDER_PLACER_BASE::lineLength(), PNS::ROUTER::markViolations(), PNS::NODE::NearestObstacle(), PNS::SHOVE::onCollidingSegment(), PNS::OPTIMIZER::runSmartPads(), PNS::SHOVE::shoveLineFromLoneVia(), and PNS::SHOVE::ShoveObstacleLine().
|
inlineinherited |
Definition at line 196 of file pns_item.h.
References PNS::ITEM::m_layers.
Referenced by PNS::INDEX::Add(), PNS::NODE::Add(), PNS::NODE::addArc(), PNS::NODE::addSegment(), PNS::NODE::addSolid(), PNS::NODE::addVia(), PNS::ARC::ARC(), PNS::TOPOLOGY::AssembleDiffPair(), PNS::NODE::AssembleLine(), PNS::KEEP_TOPOLOGY_CONSTRAINT::Check(), PNS_PCBNEW_RULE_RESOLVER::Clearance(), MOCK_RULE_RESOLVER::Clearance(), PNS::HOLE::Clone(), PNS::VIA::Clone(), PNS::ITEM::collideSimple(), comparePnsItems(), PNS_KICAD_IFACE::createBoardItem(), PNS::DP_MEANDER_PLACER::CurrentLayer(), PNS::MEANDER_PLACER::CurrentLayer(), PNS::DIFF_PAIR_PLACER::FindDpPrimitivePair(), PNS::NODE::FindJoint(), PNS::NODE::FindLinesBetweenJoints(), PNS::NODE::findRedundantArc(), PNS::NODE::findRedundantSegment(), PNS::NODE::FixupVirtualVias(), PNS::ROUTER::getNearestRatnestAnchor(), ROUTER_TOOL::getStartLayer(), PNS_KICAD_IFACE_BASE::IsFlashedOnLayer(), PNS::ITEM::Layer(), PNS::ITEM::LayersOverlap(), LINE(), PNS::NODE::LockJoint(), PNS::VIA::MakeHandle(), PNS::ROUTER::markViolations(), PNS::TOPOLOGY::NearestUnconnectedAnchorPoint(), PNS::SHOVE::onCollidingSolid(), PNS::VIA::operator=(), PNS::TOOL_BASE::pickSingleItem(), PNS::INDEX::Query(), PNS::INDEX::Remove(), PNS::NODE::removeArcIndex(), PNS::NODE::removeSegmentIndex(), PNS::NODE::removeSolidIndex(), PNS::NODE::removeViaIndex(), PNS_LOG_PLAYER::ReplayLog(), PNS::SEGMENT::SEGMENT(), PNS::LINE_PLACER::SetLayer(), PNS::COMPONENT_DRAGGER::Start(), ROUTER_PREVIEW_ITEM::Update(), PNS::TOOL_BASE::updateEndItem(), PNS::DIFF_PAIR::updateLine(), PNS::TOOL_BASE::updateStartItem(), and PNS::VIA::VIA().
|
inlineinherited |
Return true if the set of layers spanned by aOther overlaps our layers.
Definition at line 205 of file pns_item.h.
References PNS::ITEM::Layers(), and LAYER_RANGE::Overlaps().
Referenced by PNS::MEANDER_PLACER_BASE::lineLength(), PNS::SHOVE::onCollidingArc(), PNS::SHOVE::onCollidingSegment(), PNS::NODE::rebuildJoint(), and PNS::SHOVE::ShoveObstacleLine().
|
inline |
Definition at line 135 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::LINE_PLACER::FixRoute(), PNS::LINE_PLACER::handlePullback(), PNS::LINE_PLACER::handleSelfIntersections(), PNS::LINE_PLACER::initPlacement(), PNS::OPTIMIZER::mergeColinear(), PNS::OPTIMIZER::mergeFull(), PNS::LINE_PLACER::mergeHead(), PNS::OPTIMIZER::mergeObtuse(), PNS::SHOVE::onCollidingSolid(), PNS::SHOVE::onReverseCollidingVia(), PNS::LINE_PLACER::optimizeTailHeadTransition(), PCB_TUNING_PATTERN::recoverBaseline(), PNS::LINE_PLACER::reduceTail(), PNS::LINE_PLACER::rhWalkBase(), PNS::WALKAROUND::Route(), PNS::LINE_PLACER::routeStep(), PNS::OPTIMIZER::runSmartPads(), PNS::LINE_PLACER::SetLayer(), PNS::LINE_PLACER::splitHeadTail(), and PNS::LINE_PLACER::UnfixRoute().
|
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 40 of file pns_link_holder.h.
References PNS::LINK_HOLDER::m_links.
Referenced by PNS::NODE::Add(), and PNS::NODE::AssembleLine().
|
inlineinherited |
Definition at line 73 of file pns_link_holder.h.
References PNS::LINK_HOLDER::m_links.
Referenced by IsLinkedChecked(), and PNS::LINE_PLACER::removeLoops().
|
inlineinherited |
Definition at line 47 of file pns_link_holder.h.
References PNS::LINK_HOLDER::m_links.
Referenced by PNS::TOPOLOGY::AssembleDiffPair(), PNS::SHOVE::findRootLine(), PNS::TOPOLOGY::followTrivialPath(), PNS::SHOVE::popLineStack(), PNS::NODE::Remove(), PNS::OPTIMIZER::removeCachedSegments(), PCB_TUNING_PATTERN::removeToBaseline(), PNS::SHOVE::replaceLine(), PNS::SHOVE::ShoveObstacleLine(), PNS::COMPONENT_DRAGGER::Start(), and PNS::SHOVE::unwindLineStack().
|
inlineinherited |
Definition at line 48 of file pns_link_holder.h.
References PNS::LINK_HOLDER::m_links.
|
overridevirtual |
Reimplemented from PNS::ITEM.
Definition at line 109 of file pns_line.cpp.
References PNS::LINK_HOLDER::m_links, and PNS::ITEM::m_marker.
Referenced by PNS::SHOVE::onCollidingSolid(), PNS::SHOVE::ShoveLines(), PNS::SHOVE::ShoveMultiLines(), and PNS::SHOVE::ShoveObstacleLine().
|
overridevirtual |
Reimplemented from PNS::ITEM.
Definition at line 128 of file pns_line.cpp.
References PNS::LINK_HOLDER::m_links, and PNS::ITEM::m_marker.
Referenced by PNS::ARC::ARC(), PNS::SHOVE::onCollidingArc(), PNS::SHOVE::onCollidingLine(), PNS::SHOVE::onCollidingSegment(), PNS::SHOVE::onCollidingSolid(), PNS::SEGMENT::SEGMENT(), PNS::SHOVE::shoveLineToHullSet(), and PNS::SHOVE::ShoveObstacleLine().
|
inlinevirtualinherited |
Reimplemented in PNS::HOLE, and PNS::JOINT.
Definition at line 194 of file pns_item.h.
References PNS::ITEM::m_net.
Referenced by PNS::INDEX::Add(), PNS::NODE::Add(), PNS::NODE::addArc(), PNS::NODE::addSegment(), PNS::NODE::addSolid(), PNS::NODE::addVia(), PNS::ARC::ARC(), PNS::TOPOLOGY::AssembleCluster(), PNS::TOPOLOGY::AssembleDiffPair(), PNS::NODE::AssembleLine(), PNS::LINE_PLACER::buildInitialLine(), PNS::KEEP_TOPOLOGY_CONSTRAINT::Check(), PNS::VIA::Clone(), PNS::ITEM::collideSimple(), comparePnsItems(), PNS_KICAD_IFACE::createBoardItem(), PNS::DRAGGER::CurrentNets(), PNS::MEANDER_PLACER::CurrentNets(), PNS::DIFF_PAIR::DIFF_PAIR(), PNS_PCBNEW_RULE_RESOLVER::DpNetPair(), PNS::OPTIMIZER::fanoutCleanup(), PNS::DIFF_PAIR_PLACER::FindDpPrimitivePair(), PNS::NODE::FindJoint(), PNS::NODE::findRedundantArc(), PNS::NODE::findRedundantSegment(), PNS::LINE_PLACER::FixRoute(), PNS::ITEM::Format(), PNS_PCBNEW_RULE_RESOLVER::getBoardItem(), PNS_KICAD_IFACE_BASE::ImportSizes(), ROUTER_TOOL::InlineDrag(), PNS_PCBNEW_RULE_RESOLVER::IsNetTieExclusion(), PNS::ROUTER::isStartingPointRoutable(), LINE(), PNS::NODE::LockJoint(), PNS::VIA::MakeHandle(), PNS::LINE_PLACER::Move(), PNS::MEANDER_SKEW_PLACER::Move(), PNS::HOLE::Net(), PNS::VIA::operator=(), PNS::MEANDER_SKEW_PLACER::origPathLength(), ROUTER_TOOL::performDragging(), ROUTER_TOOL::prepareInteractive(), PNS::NODE::rebuildJoint(), PNS::INDEX::Remove(), PNS::NODE::removeArcIndex(), PNS::NODE::removeSegmentIndex(), PNS::NODE::removeSolidIndex(), PNS::NODE::removeViaIndex(), PNS::OPTIMIZER::runSmartPads(), PNS::SEGMENT::SEGMENT(), PNS::shouldWeConsiderHoleCollisions(), PNS::SHOVE::ShoveObstacleLine(), PNS::DIFF_PAIR_PLACER::Start(), PNS::LINE_PLACER::Start(), PNS::MEANDER_SKEW_PLACER::Start(), PCB_TUNING_PATTERN::Update(), and PNS::VIA::VIA().
|
inlineinherited |
Definition at line 175 of file pns_item.h.
References PNS::ITEM::m_kind.
Referenced by PNS::DP_PRIMITIVE_PAIR::anchorDirection(), PNS::TOPOLOGY::AssembleCluster(), PNS::TOPOLOGY::AssembleTrivialPath(), PNS::ROUTER::BreakSegmentOrArc(), ROUTER_TOOL::breakTrack(), PNS::DP_GATEWAYS::BuildFromPrimitivePair(), PNS::ChangedArea(), PNS::TOOL_BASE::checkSnap(), PNS::DP_PRIMITIVE_PAIR::CursorOrientation(), PNS::DP_PRIMITIVE_PAIR::Directional(), PNS_KICAD_IFACE::DisplayItem(), PNS::OPTIMIZER::fanoutCleanup(), PNS::SHOVE::fixupViaCollisions(), isHole(), PNS::MEANDER_PLACER_BASE::lineLength(), PNS::SHOVE::onCollidingVia(), PNS::NODE::DEFAULT_OBSTACLE_VISITOR::operator()(), PCB_TUNING_PATTERN::recoverBaseline(), PNS_KICAD_IFACE::RemoveItem(), PNS_KICAD_IFACE_GENERATOR::RemoveItem(), PNS::LINE_PLACER::SetLayer(), PNS::shouldWeConsiderHoleCollisions(), PNS::SHOVE::shoveIteration(), PNS::LINE_PLACER::simplifyNewLine(), PNS::LINE_PLACER::SplitAdjacentArcs(), PNS::LINE_PLACER::SplitAdjacentSegments(), PNS::DP_MEANDER_PLACER::Start(), PNS::MEANDER_PLACER::Start(), PNS::MEANDER_SKEW_PLACER::Start(), and PNS::SHOVE::unwindLineStack().
Definition at line 72 of file pns_line.cpp.
References PNS::VIA::Clone(), PNS::LINK_HOLDER::copyLinks(), 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_rank, m_snapThreshhold, m_via, m_width, PNS::ITEM::SetNet(), and PNS::OWNABLE_ITEM::SetOwner().
|
inlineinherited |
Return the owner of this item, or NULL if there's none.
Definition at line 71 of file pns_item.h.
References PNS::OWNABLE_ITEM::m_owner.
Referenced by PNS_PCBNEW_RULE_RESOLVER::Clearance(), PNS_KICAD_IFACE_BASE::inheritTrackWidth(), PNS::LINE_PLACER::Move(), PNS::ITEM::OwningNode(), PNS::NODE::Remove(), and PNS::LINE_PLACER::rhShoveOnly().
|
virtualinherited |
Definition at line 321 of file pns_item.cpp.
References PNS::OWNABLE_ITEM::Owner(), and PNS::ITEM::ParentPadVia().
|
inlineinherited |
Definition at line 186 of file pns_item.h.
References PNS::ITEM::m_parent.
Referenced by PNS::HOLE::BoardItem(), PNS_KICAD_IFACE::createBoardItem(), PNS_KICAD_IFACE::DisplayItem(), PNS_KICAD_IFACE::HideItem(), isCopper(), PNS_PCBNEW_RULE_RESOLVER::IsDrilledHole(), PNS_KICAD_IFACE_BASE::IsFlashedOnLayer(), PNS_KICAD_IFACE::IsItemVisible(), PNS_PCBNEW_RULE_RESOLVER::IsKeepout(), PNS_PCBNEW_RULE_RESOLVER::IsNonPlatedSlot(), PNS::LOGGER::Log(), PNS_KICAD_IFACE::modifyBoardItem(), PNS_KICAD_IFACE::RemoveItem(), PNS_KICAD_IFACE_GENERATOR::RemoveItem(), PNS::SHOVE::shoveIteration(), and PNS::LINE_PLACER::Start().
|
inlinevirtualinherited |
Reimplemented in PNS::HOLE.
Definition at line 262 of file pns_item.h.
Referenced by PNS::ITEM::IsFreePad(), PNS_PCBNEW_RULE_RESOLVER::IsNonPlatedSlot(), and PNS::ITEM::OwningNode().
|
inline |
Definition at line 139 of file pns_line.h.
References m_line, and SHAPE_LINE_CHAIN::PointCount().
Referenced by PNS::LINE_PLACER::buildInitialLine(), PNS::OPTIMIZER::fanoutCleanup(), PNS::getDanglingAnchor(), HasLoops(), PNS::LINE_PLACER::Move(), PNS::TOPOLOGY::NearestUnconnectedAnchorPoint(), PNS::OPTIMIZER::removeCachedSegments(), PNS::WALKAROUND::Route(), PNS::LINE_PLACER::route(), PNS::LINE_PLACER::routeStep(), PNS::TOPOLOGY::SimplifyLine(), PNS::LINE_PLACER::simplifyNewLine(), PNS::LINE_PLACER::splitHeadTail(), and PNS::DRAGGER::startDragSegment().
|
overridevirtual |
Reimplemented from PNS::ITEM.
Definition at line 1074 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::onCollidingLine(), PNS::SHOVE::onCollidingSegment(), PNS::SHOVE::onCollidingSolid(), PNS::SHOVE::onReverseCollidingVia(), PNS::SEGMENT::SEGMENT(), and PNS::SHOVE::shoveIteration().
void PNS::LINE::RemoveVia | ( | ) |
Definition at line 1271 of file pns_line.cpp.
References PNS::OWNABLE_ITEM::BelongsTo(), and m_via.
Referenced by Clear(), ClipToNearestObstacle(), PNS::LINE_PLACER::FixRoute(), PNS::LINE_PLACER::initPlacement(), PNS::SHOVE::onReverseCollidingVia(), PNS::DIFF_PAIR::RemoveVias(), PNS::LINE_PLACER::SetLayer(), PNS::LINE_PLACER::splitHeadTail(), PNS::LINE_PLACER::ToggleVia(), and PNS::LINE_PLACER::UnfixRoute().
void PNS::LINE::Reverse | ( | ) |
Clip the line to the nearest obstacle, traversing from the line's start vertex (0).
Returns the clipped line.
Definition at line 1043 of file pns_line.cpp.
References m_line, PNS::LINK_HOLDER::m_links, and SHAPE_LINE_CHAIN::Reverse().
Referenced by AppendVia(), PNS::DRAGGER::findViaFanoutByHandle(), and PNS::TOPOLOGY::followTrivialPath().
|
inline |
Definition at line 138 of file pns_line.h.
References m_line, and SHAPE_LINE_CHAIN::SegmentCount().
Referenced by PNS::NODE::AssembleLine(), PNS::LINE_PLACER::FlipPosture(), PNS::ROUTER::getNearestRatnestAnchor(), PNS::MEANDER_PLACER::HasPlacedAnything(), PNS::OPTIMIZER::mergeStep(), PNS::LINE_PLACER::Move(), PNS::OPTIMIZER::Optimize(), PNS::LINE_PLACER::optimizeTailHeadTransition(), PNS::SHOVE::pushLineStack(), PNS::LINE_PLACER::removeLoops(), PNS::WALKAROUND::Route(), PNS::LINE_PLACER::setInitialDirection(), PNS::SHOVE::ShoveLines(), PNS::SHOVE::ShoveMultiLines(), PNS::SHOVE::ShoveObstacleLine(), PNS::TOPOLOGY::SimplifyLine(), PNS::DP_MEANDER_PLACER::Start(), PNS::MEANDER_SKEW_PLACER::Start(), and PNS::Tighten().
|
inline |
Definition at line 203 of file pns_line.h.
References m_blockingObstacle.
Referenced by PNS::LINE_PLACER::rhMarkObstacles().
|
inlinevirtualinherited |
Reimplemented in PNS::SOLID, and PNS::VIA.
Definition at line 274 of file pns_item.h.
|
inlineinherited |
Definition at line 269 of file pns_item.h.
References PNS::ITEM::m_isCompoundShapePrimitive.
|
inlineinherited |
Definition at line 255 of file pns_item.h.
References PNS::ITEM::m_isFreePad.
|
inlineinherited |
Definition at line 199 of file pns_item.h.
References PNS::ITEM::m_layers.
Referenced by PNS::LINE_PLACER::buildInitialLine(), PNS::LINE_PLACER::FixRoute(), PNS_KICAD_IFACE_BASE::ImportSizes(), PNS::LINE_PLACER::initPlacement(), PNS::ROUTER::isStartingPointRoutable(), PNS::DIFF_PAIR_PLACER::propagateDpHeadForces(), PCB_TUNING_PATTERN::recoverBaseline(), PNS::DIFF_PAIR_PLACER::routeHead(), PNS::LINE_PLACER::SetLayer(), PNS::LINE_PLACER::UnfixRoute(), and PNS::DIFF_PAIR::updateLine().
|
inlineinherited |
Definition at line 197 of file pns_item.h.
References PNS::ITEM::m_layers.
Referenced by PNS::TOPOLOGY::AssembleDiffPair(), PNS::NODE::AssembleLine(), PNS::HOLE::Clone(), PNS::VIA::Clone(), PNS::HOLE::MakeCircularHole(), PNS::VIA::operator=(), PNS_LOG_FILE::parseCommonPnsProps(), PNS::SOLID::SetHole(), PNS::VIA::SetHole(), and PNS::VIA::VIA().
|
inlineinherited |
Definition at line 193 of file pns_item.h.
References PNS::ITEM::m_net.
Referenced by AppendVia(), PNS::NODE::AssembleLine(), PNS::LINE_PLACER::buildInitialLine(), PNS::VIA::Clone(), PCB_TUNING_PATTERN::EditStart(), PNS::LINE_PLACER::FixRoute(), PNS_KICAD_IFACE_BASE::ImportSizes(), PNS::LINE_PLACER::initPlacement(), PNS::ROUTER::isStartingPointRoutable(), LINE(), operator=(), PNS::VIA::operator=(), PNS_LOG_FILE::parseCommonPnsProps(), PCB_TUNING_PATTERN::recoverBaseline(), PNS::DIFF_PAIR::updateLine(), and PNS::VIA::VIA().
|
inlineinherited |
Set the node that owns this item.
An item can belong to a single NODE or be unowned.
Definition at line 76 of file pns_item.h.
References PNS::OWNABLE_ITEM::m_owner.
Referenced by PNS::ITEM_SET::Add(), PNS::NODE::addArc(), PNS::NODE::addHole(), PNS::NODE::addSegment(), PNS::NODE::addSolid(), PNS::NODE::addVia(), AppendVia(), PNS::NODE::AssembleLine(), PNS::HOLE::Clone(), PNS::NODE::Commit(), PNS::NODE::doRemove(), LINE(), operator=(), PNS::ITEM_SET::Prepend(), PNS::NODE::Remove(), PNS::SOLID::SetHole(), and PNS::VIA::SetHole().
|
inlineinherited |
Definition at line 185 of file pns_item.h.
References PNS::ITEM::m_parent.
Referenced by PNS_KICAD_IFACE::AddItem(), PNS_KICAD_IFACE_GENERATOR::AddItem(), and PCB_TUNING_PATTERN::EditStart().
|
overridevirtual |
Reimplemented from PNS::ITEM.
Definition at line 1064 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(), PNS::SHOVE::ShoveLines(), and PNS::SHOVE::ShoveMultiLines().
|
inlineinherited |
Definition at line 252 of file pns_item.h.
References PNS::ITEM::m_routable.
|
inline |
Return the shape of the line.
Definition at line 125 of file pns_line.h.
References m_line, m_width, and SHAPE_LINE_CHAIN::SetWidth().
Referenced by PNS::LINE_PLACER::buildInitialLine(), PNS::OPTIMIZER::fanoutCleanup(), PNS::ROUTER::isStartingPointRoutable(), PNS::OPTIMIZER::mergeFull(), PNS::SHOVE::onReverseCollidingVia(), PNS::LINE_PLACER::rhWalkBase(), PNS::SHOVE::shoveLineFromLoneVia(), PNS::SHOVE::shoveLineToHullSet(), PNS::TOPOLOGY::SimplifyLine(), PNS::LINE_PLACER::simplifyNewLine(), PNS::WALKAROUND::singleStep(), PNS::OPTIMIZER::smartPadsSingle(), PNS::LINE_PLACER::splitHeadTail(), PNS::tightenSegment(), PNS::LINE_PLACER::Trace(), and PNS::DIFF_PAIR::updateLine().
|
inline |
Definition at line 219 of file pns_line.h.
References m_snapThreshhold.
Referenced by PNS::DRAGGER::dragMarkObstacles(), PNS::DRAGGER::dragShove(), and PNS::DRAGGER::dragWalkaround().
|
inline |
Definition at line 196 of file pns_line.h.
References m_via, and PNS::VIA::SetDiameter().
Referenced by PNS::LINE_PLACER::UpdateSizes().
|
inline |
Definition at line 197 of file pns_line.h.
References m_via, and PNS::VIA::SetDrill().
Referenced by PNS::LINE_PLACER::UpdateSizes().
|
inline |
Return line width.
Definition at line 148 of file pns_line.h.
References m_line, m_width, and SHAPE_LINE_CHAIN::SetWidth().
Referenced by PNS::NODE::AssembleLine(), PNS::LINE_PLACER::initPlacement(), PNS::ROUTER::isStartingPointRoutable(), PCB_TUNING_PATTERN::recoverBaseline(), PNS::DIFF_PAIR::updateLine(), and PNS::LINE_PLACER::UpdateSizes().
|
inlineoverridevirtual |
Modifiable accessor to the underlying shape.
Reimplemented from PNS::ITEM.
Definition at line 132 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 141 of file pns_line.h.
References m_line, and SHAPE_LINE_CHAIN::ShapeCount().
Referenced by IsLinkedChecked(), and PNS::LINE_PLACER::routeStep().
void PNS::LINE::ShowLinks | ( | ) | const |
|
private |
Definition at line 780 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 822 of file pns_line.cpp.
References SEG::A, SHAPE_LINE_CHAIN::CSegment(), SEG::LineDistance(), m_snapThreshhold, and SHAPE_LINE_CHAIN::SegmentCount().
Referenced by dragSegment45().
|
overridevirtual |
Reimplemented from PNS::ITEM.
Definition at line 119 of file pns_line.cpp.
References PNS::LINK_HOLDER::m_links, and PNS::ITEM::m_marker.
Referenced by PNS::COMPONENT_DRAGGER::Drag(), PNS::DRAGGER::dragShove(), PNS::SHOVE::onCollidingSolid(), and PNS::DRAGGER::optimizeAndUpdateDraggedLine().
|
inline |
Definition at line 193 of file pns_line.h.
References m_via.
Referenced by PNS::NODE::CheckColliding(), PNS::DIFF_PAIR_PLACER::FixRoute(), 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::shoveIteration(), PNS::SHOVE::shoveLineFromLoneVia(), PNS::SHOVE::ShoveLines(), PNS::SHOVE::ShoveMultiLines(), and PNS::SHOVE::ShoveObstacleLine().
|
inline |
Definition at line 194 of file pns_line.h.
References m_via.
bool PNS::LINE::Walkaround | ( | const SHAPE_LINE_CHAIN & | aObstacle, |
SHAPE_LINE_CHAIN & | aPath, | ||
bool | aCw | ||
) | const |
Print out all linked segments.
Definition at line 189 of file pns_line.cpp.
References SHAPE_LINE_CHAIN::Append(), PNS::areNeighbours(), CLine(), CPoint(), SHAPE_LINE_CHAIN::CPoint(), SHAPE_LINE_CHAIN::Find(), findVertex(), PNS::HullIntersection(), INSIDE, 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(), and SHAPE_LINE_CHAIN::Split().
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 PNS::WALKAROUND::singleStep().
|
inline |
Return true if the line is geometrically identical as line aOther.
Definition at line 155 of file pns_line.h.
References m_width.
Referenced by PNS::TOPOLOGY::AssembleDiffPair(), ChangedArea(), PNS::MEANDER_PLACER::doMove(), PNS::DRAGGER::dragMarkObstacles(), PNS::DRAGGER::dragShove(), PNS::DRAGGER::dragWalkaround(), PNS::OPTIMIZER::fanoutCleanup(), PNS::LINE_PLACER::FixRoute(), PNS::NODE::NearestObstacle(), PNS::SHOVE::onCollidingVia(), PNS::LINE_PLACER::rhMarkObstacles(), PNS::SHOVE::shoveIteration(), PNS::SHOVE::shoveLineFromLoneVia(), PNS::SHOVE::shoveLineToHullSet(), PNS::SHOVE::ShoveObstacleLine(), PNS::WALKAROUND::singleStep(), PNS::OPTIMIZER::smartPadsSingle(), PNS::LINE_PLACER::Start(), PNS::MEANDER_PLACER::Start(), and PNS::MEANDER_SKEW_PLACER::Start().
|
private |
For mark obstacle mode.
Definition at line 249 of file pns_line.h.
Referenced by GetBlockingObstacle(), LINE(), operator=(), and SetBlockingObstacle().
|
protectedinherited |
Definition at line 297 of file pns_item.h.
Referenced by PNS::ITEM::IsCompoundShapePrimitive(), PNS::ITEM::ITEM(), and PNS::ITEM::SetIsCompoundShapePrimitive().
|
protectedinherited |
Definition at line 296 of file pns_item.h.
Referenced by PNS::ITEM::IsFreePad(), PNS::ITEM::ITEM(), and PNS::ITEM::SetIsFreePad().
|
protectedinherited |
Definition at line 295 of file pns_item.h.
Referenced by PNS::HOLE::Clone(), PNS::VIA::Clone(), PNS::ITEM::IsVirtual(), PNS::ITEM::ITEM(), PNS::VIA::operator=(), PNS::VIA::VIA(), and PNS::VVIA::VVIA().
|
protectedinherited |
Definition at line 285 of file pns_item.h.
Referenced by PNS::ITEM::collideSimple(), PNS::ITEM::ITEM(), PNS::ITEM::Kind(), PNS::ITEM::KindStr(), and PNS::ITEM::OfKind().
|
protectedinherited |
Definition at line 288 of file pns_item.h.
Referenced by PNS::ARC::ARC(), PNS::ARC::Clone(), PNS::SEGMENT::Clone(), PNS::ITEM::collideSimple(), PNS::JOINT::Dump(), PNS::ITEM::Format(), PNS::ITEM::ITEM(), PNS::JOINT::JOINT(), PNS::ITEM::Layers(), LINE(), PNS::JOINT::Merge(), operator=(), PNS::JOINT::Overlaps(), PNS::SEGMENT::SEGMENT(), PNS::SOLID::SetHole(), PNS::VIA::SetHole(), PNS::ITEM::SetLayer(), and PNS::ITEM::SetLayers().
|
private |
The actual shape of the line.
Definition at line 241 of file pns_line.h.
Referenced by AppendVia(), ArcCount(), ChangedArea(), Clear(), CLine(), ClipVertexRange(), CompareGeometry(), CountCorners(), CPoint(), CSegment(), dragCorner45(), dragCornerFree(), dragSegment45(), Line(), operator=(), PointCount(), Reverse(), SegmentCount(), SetShape(), SetWidth(), Shape(), and ShapeCount().
|
protectedinherited |
Definition at line 103 of file pns_link_holder.h.
Referenced by PNS::LINK_HOLDER::ClearLinks(), PNS::DIFF_PAIR::ClearLinks(), ClipVertexRange(), PNS::LINK_HOLDER::ContainsLink(), PNS::LINK_HOLDER::copyLinks(), PNS::LINK_HOLDER::GetLink(), HasLockedSegments(), PNS::LINK_HOLDER::IsLinked(), PNS::LINK_HOLDER::Link(), PNS::LINK_HOLDER::LinkCount(), PNS::LINK_HOLDER::Links(), Mark(), Marker(), Rank(), Reverse(), SetRank(), PNS::LINK_HOLDER::ShowLinks(), and Unmark().
|
mutableprotectedinherited |
Definition at line 292 of file pns_item.h.
Referenced by PNS::ARC::ARC(), PNS::ARC::Clone(), PNS::HOLE::Clone(), PNS::SEGMENT::Clone(), PNS::VIA::Clone(), PNS::ITEM::ITEM(), LINE(), PNS::ITEM::Mark(), Mark(), PNS::ITEM::Marker(), Marker(), operator=(), PNS::VIA::operator=(), PNS::SEGMENT::SEGMENT(), PNS::ITEM::Unmark(), Unmark(), and PNS::VIA::VIA().
|
protectedinherited |
Definition at line 290 of file pns_item.h.
Referenced by PNS::ITEM::ITEM(), LINE(), operator=(), and PNS::SOLID::SOLID().
|
protectedinherited |
Definition at line 291 of file pns_item.h.
Referenced by AppendVia(), PNS::ARC::ARC(), PNS::ARC::Clone(), PNS::SEGMENT::Clone(), PNS::ITEM::ITEM(), LINE(), PNS::ITEM::Net(), PNS::HOLE::Net(), operator=(), PNS::SEGMENT::SEGMENT(), and PNS::ITEM::SetNet().
|
protectedinherited |
Definition at line 87 of file pns_item.h.
Referenced by PNS::OWNABLE_ITEM::BelongsTo(), PNS::ITEM::ITEM(), operator=(), PNS::OWNABLE_ITEM::Owner(), and PNS::OWNABLE_ITEM::SetOwner().
|
protectedinherited |
Definition at line 287 of file pns_item.h.
Referenced by PNS::ITEM::BoardItem(), PNS::HOLE::BoardItem(), PNS::HOLE::Clone(), PNS::VIA::Clone(), PNS::ITEM::collideSimple(), PNS::ITEM::ITEM(), PNS::ITEM::Parent(), and PNS::ITEM::SetParent().
|
protectedinherited |
Definition at line 293 of file pns_item.h.
Referenced by PNS::ARC::ARC(), PNS::ARC::Clone(), PNS::HOLE::Clone(), PNS::SEGMENT::Clone(), PNS::VIA::Clone(), PNS::ITEM::ITEM(), LINE(), operator=(), PNS::VIA::operator=(), PNS::ITEM::Rank(), Rank(), PNS::SEGMENT::SEGMENT(), PNS::ITEM::SetRank(), SetRank(), and PNS::VIA::VIA().
|
protectedinherited |
Definition at line 294 of file pns_item.h.
Referenced by PNS::ITEM::IsRoutable(), PNS::ITEM::ITEM(), and PNS::ITEM::SetRoutable().
|
private |
Width to smooth out jagged segments.
Definition at line 245 of file pns_line.h.
Referenced by GetSnapThreshhold(), LINE(), operator=(), SetSnapThreshhold(), snapDraggedCorner(), and snapToNeighbourSegments().
|
private |
Definition at line 247 of file pns_line.h.
Referenced by AppendVia(), EndsWithVia(), LINE(), operator=(), RemoveVia(), SetViaDiameter(), SetViaDrill(), Via(), and ~LINE().
|
private |
Our width.
Definition at line 242 of file pns_line.h.
Referenced by LINE(), operator=(), SetShape(), SetWidth(), and Width().