23#ifndef __PNS_DIFF_PAIR_H 
   24#define __PNS_DIFF_PAIR_H 
  181    void SetFitVias( 
bool aEnable, 
int aDiameter = 0, 
int aViaGap = -1 )
 
 
  197                       bool aViaMode = 
false );
 
 
  240                           const SEG& aCoupledN, 
const SEG& aParentN, 
int aIndexN ) :
 
 
 
  371            m_n = std::move( aOther.m_n );
 
  372            m_p = std::move( aOther.m_p );
 
  373            m_line_n = std::move( aOther.m_line_n );
 
  374            m_line_p = std::move( aOther.m_line_p );
 
  382            m_gap = aOther.m_gap;
 
 
  428        m_n.SetWidth( aWidth );
 
  429        m_p.SetWidth( aWidth );
 
 
  527        return ( 
m_n.SegmentCount() == 0 ) || ( 
m_p.SegmentCount() == 0 );
 
 
 
Represent route directions & corner angles in a 45-degree metric.
 
Basic class for a differential pair.
 
bool CheckConnectionAngle(const DIFF_PAIR &aOther, int allowedAngles) const
 
void AppendVias(const VIA &aViaP, const VIA &aViaN)
 
const SHAPE_LINE_CHAIN & CN() const
 
DP_PRIMITIVE_PAIR EndingPrimitives()
 
std::vector< COUPLED_SEGMENTS > COUPLED_SEGMENTS_VEC
 
const RANGED_NUM< int > GapConstraint() const
 
double CoupledLength() const
 
bool BuildInitial(const DP_GATEWAY &aEntry, const DP_GATEWAY &aTarget, bool aPrefDiagonal)
 
void Append(const DIFF_PAIR &aOther)
 
void SetViaDiameter(int aDiameter)
 
RANGED_NUM< int > m_gapConstraint
 
void updateLine(LINE &aLine, const SHAPE_LINE_CHAIN &aShape, NET_HANDLE aNet, const VIA &aVia)
 
double TotalLength() const
 
void SetViaDrill(int aDrill)
 
virtual void ClearLinks() override
Return the number of segments that were assembled together to form this line.
 
void SetShape(const DIFF_PAIR &aPair)
 
double CoupledLengthFactor() const
 
void SetShape(const SHAPE_LINE_CHAIN &aP, const SHAPE_LINE_CHAIN &aN, bool aSwapLanes=false)
 
bool EndsWithVias() const
 
DIFF_PAIR(const LINE &aLineP, const LINE &aLineN, int aGap=0)
 
DIFF_PAIR & operator=(const DIFF_PAIR &aOther)
 
DIFF_PAIR * Clone() const override
Return a deep copy of the item.
 
static bool ClassOf(const ITEM *aItem)
 
void SetNets(NET_HANDLE aP, NET_HANDLE aN)
 
DIFF_PAIR(const DIFF_PAIR &aOther)
 
DIFF_PAIR & operator=(DIFF_PAIR &&aOther) noexcept
 
const SHAPE_LINE_CHAIN & CP() const
 
DIFF_PAIR(const SHAPE_LINE_CHAIN &aP, const SHAPE_LINE_CHAIN &aN, int aGap=0)
 
void CoupledSegmentPairs(COUPLED_SEGMENTS_VEC &aPairs) const
 
void SetWidth(int aWidth)
 
A set of gateways calculated for the cursor or starting/ending primitive pair.
 
void SetFitVias(bool aEnable, int aDiameter=0, int aViaGap=-1)
 
void BuildFromPrimitivePair(const DP_PRIMITIVE_PAIR &aPair, bool aPreferDiagonal)
 
bool FitGateways(DP_GATEWAYS &aEntry, DP_GATEWAYS &aTarget, bool aPrefDiagonal, DIFF_PAIR &aDp)
 
void BuildGeneric(const VECTOR2I &p0_p, const VECTOR2I &p0_n, bool aBuildEntries=false, bool aViaMode=false)
 
std::vector< DP_GATEWAY > & Gateways()
 
bool checkDiagonalAlignment(const VECTOR2I &a, const VECTOR2I &b) const
 
void BuildOrthoProjections(DP_GATEWAYS &aEntries, const VECTOR2I &aCursorPos, int aOrthoScore)
 
void buildDpContinuation(const DP_PRIMITIVE_PAIR &aPair, bool aIsDiagonal)
 
std::vector< DP_GATEWAY > m_gateways
 
const std::vector< DP_GATEWAY > & CGateways() const
 
void FilterByOrientation(int aAngleMask, DIRECTION_45 aRefOrientation)
 
void BuildForCursor(const VECTOR2I &aCursorPos)
 
void buildEntries(const VECTOR2I &p0_p, const VECTOR2I &p0_n)
 
Define a "gateway" for routing a differential pair - e.g.
 
SHAPE_LINE_CHAIN m_entryP
 
const SHAPE_LINE_CHAIN & EntryP() const
 
bool HasEntryLines() const
 
int AllowedAngles() const
 
const VECTOR2I & AnchorN() const
 
SHAPE_LINE_CHAIN m_entryN
 
void SetEntryLines(const SHAPE_LINE_CHAIN &aEntryP, const SHAPE_LINE_CHAIN &aEntryN)
 
const VECTOR2I & AnchorP() const
 
const SHAPE_LINE_CHAIN & EntryN() const
 
const DIFF_PAIR Entry() const
 
DP_GATEWAY(const VECTOR2I &aAnchorP, const VECTOR2I &aAnchorN, bool aIsDiagonal, int aAllowedEntryAngles=DIRECTION_45::ANG_OBTUSE, int aPriority=0)
 
void SetPriority(int aPriority)
 
Store starting/ending primitives (pads, vias or segments) for a differential pair.
 
DIRECTION_45 DirN() const
 
const VECTOR2I & AnchorN() const
 
const VECTOR2I & AnchorP() const
 
DIRECTION_45 anchorDirection(const ITEM *aItem, const VECTOR2I &aP) const
 
void CursorOrientation(const VECTOR2I &aCursorPos, VECTOR2I &aMidpoint, VECTOR2I &aDirection) const
 
DP_PRIMITIVE_PAIR & operator=(const DP_PRIMITIVE_PAIR &aOther)
 
void SetAnchors(const VECTOR2I &aAnchorP, const VECTOR2I &aAnchorN)
 
DIRECTION_45 DirP() const
 
virtual HOLE * Clone() const override
Return a deep copy of the item.
 
Base class for PNS router board items.
 
BOARD_ITEM * m_sourceItem
 
void SetSourceItem(BOARD_ITEM *aSourceItem)
 
const PNS_LAYER_RANGE & Layers() const
 
virtual NET_HANDLE Net() const
 
PnsKind Kind() const
Return the type (kind) of the item.
 
void SetNet(NET_HANDLE aNet)
 
void SetLayer(int aLayer)
 
void SetParent(BOARD_ITEM *aParent)
 
Represents a track on a PCB, connecting two non-trivial joints (that is, vias, pads,...
 
void SetShape(const SHAPE_LINE_CHAIN &aLine)
Return the shape of the line.
 
const SHAPE_LINE_CHAIN & CLine() const
 
void AppendVia(const VIA &aVia)
 
void SetWidth(int aWidth)
Return line width.
 
std::vector< LINKED_ITEM * > m_links
 
LINK_HOLDER(PnsKind aKind)
Add a reference to an item registered in a NODE that is a part of this line.
 
virtual HOLE * Hole() const override
 
static constexpr int ALL_LAYERS
 
Represent a polyline containing arcs as well as line segments: A chain of connected line and/or arc s...
 
Push and Shove diff pair dimensions (gap) settings dialog.
 
COUPLED_SEGMENTS(const SEG &aCoupledP, const SEG &aParentP, int aIndexP, const SEG &aCoupledN, const SEG &aParentN, int aIndexN)
 
VECTOR2< int32_t > VECTOR2I