22#ifndef __PNS_DRAGGER_H
23#define __PNS_DRAGGER_H
76 bool FixRoute(
bool aForceCommit )
override;
91 const std::vector<NET_HANDLE>
CurrentNets()
const override;
ITEM_SET m_draggedItems
If true, moves the connection lines without maintaining 45 degrees corners.
PNS::DRAG_MODE Mode() const override
void optimizeAndUpdateDraggedLine(LINE &aDragged, const LINE &aOrig, const VECTOR2I &aP)
ITEM_SET m_origViaConnections
const ITEM_SET findViaFanoutByHandle(NODE *aNode, const VIA_HANDLE &handle)
bool startDragSegment(const VECTOR2D &aP, SEGMENT *aSeg)
VECTOR2D m_lastValidPoint
Contains the list of items that are currently modified by the dragger.
virtual bool Start(const VECTOR2I &aP, ITEM_SET &aPrimitives) override
Function Start()
NODE * CurrentNode() const override
Function CurrentNode()
bool dragViaMarkObstacles(const VIA_HANDLE &aHandle, NODE *aNode, const VECTOR2I &aP)
bool Drag(const VECTOR2I &aP) override
Function Drag()
const LINE & GetOriginalLine()
bool startDragVia(VIA *aVia)
int m_draggedSegmentIndex
bool pointHasBadCorner(const SHAPE_LINE_CHAIN &aLine, int aVertexIndex) const
const std::vector< NET_HANDLE > CurrentNets() const override
Function CurrentNets()
int CurrentLayer() const override
Function CurrentLayer()
bool dragShove(const VECTOR2I &aP)
void SetMode(PNS::DRAG_MODE aDragMode) override
bool dragMarkObstacles(const VECTOR2I &aP)
bool FixRoute(bool aForceCommit) override
Function FixRoute()
std::unique_ptr< SHOVE > m_shove
bool dragWalkaround(const VECTOR2I &aP)
const LINE & GetLastDragSolution()
VVIA * checkVirtualVia(const VECTOR2D &aP, SEGMENT *aSeg)
When the cursor is unreachable (e.g.
bool dragViaWalkaround(const VIA_HANDLE &aHandle, NODE *aNode, const VECTOR2I &aP)
bool GetForceMarkObstaclesMode(bool *aDragStatus) const override
bool m_forceMarkObstaclesMode
const ITEM_SET Traces() override
Function Traces()
bool tryWalkaround(NODE *aNode, LINE &aOrig, LINE &aWalk)
VECTOR2I bestAnchorForPoint(const SHAPE_LINE_CHAIN &aLine, const VECTOR2I &aP) const
Returns true if the vertex at aVertexIndex has a non-obtuse corner.
bool startDragArc(const VECTOR2D &aP, ARC *aArc)
MOUSE_TRAIL_TRACER m_mouseTrailTracer
bool propagateViaForces(NODE *node, std::set< VIA * > &vias)
DRAG_ALGO(ROUTER *aRouter)
Represents a track on a PCB, connecting two non-trivial joints (that is, vias, pads,...
Keep the router "world" - i.e.
Perform various optimizations of the lines being routed, attempting to make the lines shorter and les...
The actual Push and Shove algorithm.
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.
VECTOR2< int32_t > VECTOR2I
VECTOR2< double > VECTOR2D