|
KiCad PCB EDA Suite
|
#include <pns_block_dragger.h>
Classes | |
| struct | DRAGGED_CONNECTION |
Public Member Functions | |
| BLOCK_DRAGGER (ROUTER *aRouter) | |
| ~BLOCK_DRAGGER () | |
| bool | Start (const VECTOR2I &aP, ITEM_SET &aPrimitives) override |
| Sort the selection and the unselected copper touching it. | |
| bool | Drag (const VECTOR2I &aP) override |
| Rebuild the block at aP: displace rigid and bridge items, reroute connections. | |
| bool | FixRoute (bool aForceCommit) override |
| Commit the current branch if it is collision free or aForceCommit is set. | |
| NODE * | CurrentNode () const override |
| The current branch, or the world before the first Drag(). | |
| const std::vector< NET_HANDLE > | CurrentNets () const override |
| Unused for block dragging. | |
| virtual int | CurrentLayer () const override |
| Unused for block dragging. | |
| const ITEM_SET | Traces () override |
| Everything displaced or rerouted by the last Drag(). | |
| const std::vector< LINE > & | AnchoredLines () const |
| Selected arcs held at both ends, which cannot move. | |
| void | SetMode (PNS::DRAG_MODE aDragMode) override |
| virtual PNS::DRAG_MODE | Mode () const override |
| bool | GetForceMarkObstaclesMode (bool *aDragStatus) const override |
| virtual void | SetWorld (NODE *aWorld) |
| Function SetWorld() | |
| virtual std::vector< PNS::ITEM * > | GetLastCommittedLeaderSegments () |
| ROUTER * | Router () const |
| Return the instance of our router. | |
| ROUTING_SETTINGS & | Settings () const |
| Return current router settings. | |
| virtual LOGGER * | Logger () |
| Return the logger object, allowing to dump geometry to a file. | |
| void | SetLogger (LOGGER *aLogger) |
| void | SetDebugDecorator (DEBUG_DECORATOR *aDecorator) |
| Assign a debug decorator allowing this algo to draw extra graphics for visual debugging. | |
| DEBUG_DECORATOR * | Dbg () const |
| const BOX2I & | VisibleViewArea () const |
Protected Attributes | |
| NODE * | m_world |
| DEBUG_DECORATOR * | m_debugDecorator |
| ROUTER * | m_router |
| LOGGER * | m_logger |
Private Member Functions | |
| bool | isFixedByLock (ITEM *aItem) const |
| Unselected and locked, so it neither moves nor is rerouted. | |
| bool | isPinned (const JOINT *aJoint, const LINE &aOwnLine) const |
| Held in place by something outside the block. Links of aOwnLine do not count. | |
| bool | isHeldByBlock (const JOINT *aJoint) const |
| A selected pad or via sits on this joint. | |
| bool | coveredBySolid (const JOINT *aJoint, bool aSelected) const |
| A pad covers more than its anchor, so ask what really sits on the joint. | |
| bool | isBlockBoundary (const JOINT *aJoint) const |
| Copper at this joint is already sorted, so a walk stops here. | |
| void | classifySelectedLink (LINKED_ITEM *aLink) |
| Sort a selected segment or arc by what holds its ends. | |
| void | clipToBlock (LINE &aLine, const VECTOR2I &aEntry, LINKED_ITEM *aLink) const |
| Cut an assembled line back to the stretch between aEntry and the first block joint. | |
| void | classifyNeighbour (const JOINT *aJoint, LINKED_ITEM *aLink) |
| Sort unselected copper that touches the block at aJoint. | |
| void | scanJoint (const JOINT *aJoint) |
| Sort every unselected segment and arc on a joint. | |
| void | scanRigidItem (ITEM *aItem) |
| Sort the copper touching a selected pad or via. | |
| void | displaceItem (ITEM *aItem, const VECTOR2I &aDelta) |
| Replace aItem in the current branch with a copy moved by aDelta. | |
Static Private Member Functions | |
| static LINE | wrapLink (LINKED_ITEM *aLink) |
| A one link line, so no unselected copper is assembled into a selected segment. | |
Private Attributes | |
| std::set< ITEM * > | m_rigidItems |
| Selected pads and vias. | |
| std::set< ITEM * > | m_bridgeItems |
| Copper displaced whole with the block. | |
| std::vector< DRAGGED_CONNECTION > | m_conns |
| Copper rerouted to follow the block. | |
| std::vector< LINE > | m_anchoredLines |
| Selected arcs that cannot move. | |
| std::unordered_set< ITEM * > | m_selectedLinks |
| Selected segments and arcs. | |
| std::unordered_set< LINKED_ITEM * > | m_seenLinks |
| Already sorted. | |
| std::set< const JOINT * > | m_carriedJoints |
| Ends of selected copper that travel. | |
| bool | m_dragStatus |
| ITEM_SET | m_draggedItems |
| NODE * | m_currentNode |
| VECTOR2I | m_p0 |
| PNS::DRAG_MODE | m_mode |
Drags a mixed selection of pads, vias, segments and arcs as one block.
Start() sorts everything into four groups:
A joint is held when an unselected pad, via or locked item sits on it. Unselected copper at a block joint is followed to its far end and sorted the same way.
Drag() rebuilds a fresh branch each call. A block marks collisions, it never shoves.
Definition at line 51 of file pns_block_dragger.h.
| PNS::BLOCK_DRAGGER::BLOCK_DRAGGER | ( | ROUTER * | aRouter | ) |
Definition at line 37 of file pns_block_dragger.cpp.
References PNS::DM_BLOCK, PNS::DRAG_ALGO::DRAG_ALGO(), m_currentNode, m_dragStatus, and m_mode.
| PNS::BLOCK_DRAGGER::~BLOCK_DRAGGER | ( | ) |
Definition at line 46 of file pns_block_dragger.cpp.
|
inline |
Selected arcs held at both ends, which cannot move.
Definition at line 93 of file pns_block_dragger.h.
References m_anchoredLines.
Referenced by BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), and BOOST_FIXTURE_TEST_CASE().
|
private |
Sort unselected copper that touches the block at aJoint.
Definition at line 286 of file pns_block_dragger.cpp.
References SHAPE_LINE_CHAIN::CLastPoint(), PNS::LINE::CLine(), clipToBlock(), SHAPE_LINE_CHAIN::CPoint(), end, isFixedByLock(), isHeldByBlock(), isPinned(), PNS::LINK_HOLDER::Links(), m_bridgeItems, m_carriedJoints, m_conns, m_seenLinks, PNS::DRAG_ALGO::m_world, and PNS::JOINT::Pos().
Referenced by scanJoint(), and scanRigidItem().
|
private |
Sort a selected segment or arc by what holds its ends.
Definition at line 195 of file pns_block_dragger.cpp.
References PNS::ITEM::ARC_T, SHAPE_LINE_CHAIN::CLastPoint(), PNS::LINE::CLine(), SHAPE_LINE_CHAIN::CPoint(), end, isPinned(), PNS::ITEM::Kind(), PNS::ITEM::Layer(), m_anchoredLines, m_bridgeItems, m_carriedJoints, m_conns, m_seenLinks, PNS::DRAG_ALGO::m_world, PNS::ITEM::Net(), and wrapLink().
Referenced by Start().
|
private |
Cut an assembled line back to the stretch between aEntry and the first block joint.
Definition at line 231 of file pns_block_dragger.cpp.
References PNS::ITEM::Anchor(), chain, PNS::LINE::CLine(), PNS::LINE::ClipVertexRange(), isBlockBoundary(), PNS::DRAG_ALGO::m_world, and PNS::LINE::Reverse().
Referenced by classifyNeighbour().
|
private |
A pad covers more than its anchor, so ask what really sits on the joint.
aSelected picks between a solid the block carries and one it does not.
Definition at line 121 of file pns_block_dragger.cpp.
References PNS::ITEM_SET::CItems(), PNS::ITEM::Layers(), m_rigidItems, PNS::DRAG_ALGO::m_world, PNS::JOINT::Net(), PNS::JOINT::Pos(), PNS::ITEM::SOLID_T, and PNS::ITEM::VIA_T.
Referenced by isHeldByBlock(), and isPinned().
|
inlineoverridevirtual |
Unused for block dragging.
Implements PNS::DRAG_ALGO.
Definition at line 87 of file pns_block_dragger.h.
References UNDEFINED_LAYER.
|
inlineoverridevirtual |
Unused for block dragging.
Implements PNS::DRAG_ALGO.
Definition at line 84 of file pns_block_dragger.h.
|
overridevirtual |
The current branch, or the world before the first Drag().
Implements PNS::DRAG_ALGO.
Definition at line 496 of file pns_block_dragger.cpp.
References m_currentNode, and PNS::DRAG_ALGO::m_world.
Referenced by BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), and FixRoute().
|
inlineinherited |
Definition at line 78 of file pns_algo_base.h.
References m_debugDecorator.
Referenced by PNS::SHOVE::AddLockedSpringbackNode(), PNS::DIFF_PAIR_PLACER::attemptWalk(), PNS::DRAGGER::bestAnchorForPoint(), PNS::LINE_PLACER::buildInitialLine(), PNS::SHOVE::checkShoveDirection(), PNS::LINE_PLACER::clipAndCheckCollisions(), PNS::MEANDER_PLACER::doMove(), PNS::BLOCK_DRAGGER::Drag(), PNS::COMPONENT_DRAGGER::Drag(), PNS::MULTI_DRAGGER::Drag(), PNS::DRAGGER::dragShove(), PNS::DRAGGER::dragWalkaround(), PNS::DIFF_PAIR_PLACER::FindDpPrimitivePair(), PNS::MULTI_DRAGGER::findNewLeaderSegment(), PNS::DIFF_PAIR_PLACER::FixRoute(), PNS::SHOVE::fixupViaCollisions(), PNS::LINE_PLACER::handlePullback(), PNS::DIFF_PAIR_PLACER::initPlacement(), PNS::LINE_PLACER::mergeHead(), PNS::DIFF_PAIR_PLACER::Move(), PNS::DP_MEANDER_PLACER::Move(), PNS::MEANDER_SKEW_PLACER::Move(), PNS::MULTI_DRAGGER::multidragShove(), PNS::MULTI_DRAGGER::multidragWalkaround(), PNS::SHOVE::onCollidingArc(), PNS::SHOVE::onCollidingLine(), PNS::SHOVE::onCollidingSegment(), PNS::SHOVE::onCollidingSolid(), PNS::SHOVE::onCollidingVia(), PNS::SHOVE::onReverseCollidingVia(), PNS::DRAGGER::optimizeAndUpdateDraggedLine(), PNS::LINE_PLACER::optimizeTailHeadTransition(), PNS::SHOVE::preShoveCleanup(), PNS::SHOVE::pruneLineFromOptimizerQueue(), PNS::SHOVE::pruneRootLines(), PNS::SHOVE::pushLineStack(), PNS::SHOVE::pushOrShoveVia(), PNS::SHOVE::pushSpringback(), PNS::SHOVE::reconstructHeads(), PNS::MULTI_DRAGGER::reconstructOriginalDpCoupling(), PNS::SHOVE::reduceSpringback(), PNS::LINE_PLACER::reduceTail(), PNS::PLACEMENT_ALGO::removeLoops(), PNS::SHOVE::replaceItems(), PNS::SHOVE::replaceLine(), PNS::LINE_PLACER::rhShoveOnly(), PNS::LINE_PLACER::rhWalkBase(), PNS::LINE_PLACER::rhWalkOnly(), PNS::WALKAROUND::Route(), PNS::DIFF_PAIR_PLACER::routeHead(), PNS::LINE_PLACER::routeStep(), PNS::SHOVE::Run(), PNS::SHOVE::runOptimizer(), PNS::SHOVE::shoveIteration(), PNS::SHOVE::shoveLineToHullSet(), PNS::SHOVE::shoveMainLoop(), PNS::SHOVE::ShoveObstacleLine(), PNS::PLACEMENT_ALGO::simplifyNewLine(), PNS::WALKAROUND::singleStep(), PNS::LINE_PLACER::splitHeadTail(), PNS::DRAGGER::Start(), PNS::LINE_PLACER::Start(), PNS::MULTI_DRAGGER::Start(), PNS::SHOVE::touchRootLine(), PNS::SHOVE::touchRootLine(), PNS::LINE_PLACER::Trace(), PNS::MULTI_DRAGGER::tryAssembleDiffPair(), PNS::DRAGGER::tryWalkaround(), and PNS::MULTI_DRAGGER::tryWalkaround().
Replace aItem in the current branch with a copy moved by aDelta.
Definition at line 368 of file pns_block_dragger.cpp.
References SEG::A, PNS::ITEM::ARC_T, SEG::B, PNS::ARC::Clone(), PNS::SEGMENT::Clone(), PNS::SOLID::Clone(), PNS::ITEM::Kind(), m_currentNode, m_draggedItems, PNS::SOLID::Pos(), PNS::SEGMENT::Seg(), PNS::ITEM::SEGMENT_T, PNS::ITEM::SOLID_T, via, and PNS::ITEM::VIA_T.
Referenced by Drag().
|
overridevirtual |
Rebuild the block at aP: displace rigid and bridge items, reroute connections.
Implements PNS::DRAG_ALGO.
Definition at line 434 of file pns_block_dragger.cpp.
References BLUE, PNS::LINK_HOLDER::ClearLinks(), PNS::LINE::CLine(), PNS::ALGO_BASE::Dbg(), delta, displaceItem(), PNS::DM_FREE_ANGLE, PNS::LINE::DragCorner(), PNS::LINE::DragSegment(), SHAPE_LINE_CHAIN::Find(), m_bridgeItems, m_conns, m_currentNode, m_draggedItems, m_dragStatus, m_mode, m_p0, m_rigidItems, PNS::DRAG_ALGO::m_world, PNS_DBG, and PNS::LINE::Unmark().
Referenced by BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), and BOOST_FIXTURE_TEST_CASE().
|
overridevirtual |
Commit the current branch if it is collision free or aForceCommit is set.
Implements PNS::DRAG_ALGO.
Definition at line 479 of file pns_block_dragger.cpp.
References PNS::NODE::CheckColliding(), PNS::ROUTER::CommitRouting(), CurrentNode(), m_draggedItems, PNS::ALGO_BASE::Router(), and PNS::ALGO_BASE::Settings().
|
inlineoverridevirtual |
Implements PNS::DRAG_ALGO.
Definition at line 99 of file pns_block_dragger.h.
References m_dragStatus.
|
inlinevirtualinherited |
Reimplemented in PNS::MULTI_DRAGGER.
Definition at line 125 of file pns_drag_algo.h.
|
private |
Copper at this joint is already sorted, so a walk stops here.
Definition at line 153 of file pns_block_dragger.cpp.
References link, PNS::JOINT::LinkList(), m_carriedJoints, m_rigidItems, and m_selectedLinks.
Referenced by clipToBlock().
|
private |
Unselected and locked, so it neither moves nor is rerouted.
Definition at line 92 of file pns_block_dragger.cpp.
References PNS::ITEM::IsLocked(), m_rigidItems, and m_selectedLinks.
Referenced by classifyNeighbour(), and isPinned().
|
private |
A selected pad or via sits on this joint.
Definition at line 141 of file pns_block_dragger.cpp.
References coveredBySolid(), link, PNS::JOINT::LinkList(), and m_rigidItems.
Referenced by classifyNeighbour().
Held in place by something outside the block. Links of aOwnLine do not count.
Definition at line 99 of file pns_block_dragger.cpp.
References PNS::ITEM::ARC_T, PNS::LINK_HOLDER::ContainsLink(), coveredBySolid(), isFixedByLock(), link, PNS::JOINT::LinkList(), m_rigidItems, PNS::ITEM::SEGMENT_T, PNS::ITEM::SOLID_T, and PNS::ITEM::VIA_T.
Referenced by classifyNeighbour(), and classifySelectedLink().
|
virtualinherited |
Return the logger object, allowing to dump geometry to a file.
Definition at line 34 of file pns_algo_base.cpp.
References m_logger.
Referenced by PNS::LINE_PLACER::rhShoveOnly(), PNS::LINE_PLACER::rhWalkBase(), PNS::DRAGGER::Start(), PNS::MULTI_DRAGGER::Start(), PNS::DRAGGER::tryWalkaround(), and PNS::MULTI_DRAGGER::tryWalkaround().
|
inlineoverridevirtual |
|
inlineinherited |
Return the instance of our router.
Definition at line 54 of file pns_algo_base.h.
References m_router.
Referenced by PNS::DIFF_PAIR_PLACER::attemptWalk(), PNS::MEANDER_PLACER_BASE::chainNarrowingOffset(), PNS::MEANDER_PLACER_BASE::Clearance(), PNS::DIFF_PAIR_PLACER::CommitPlacement(), PNS::DP_MEANDER_PLACER::CommitPlacement(), PNS::LINE_PLACER::CommitPlacement(), PNS::MEANDER_PLACER::CommitPlacement(), PNS::BLOCK_DRAGGER::FixRoute(), PNS::COMPONENT_DRAGGER::FixRoute(), PNS::DIFF_PAIR_PLACER::FixRoute(), PNS::DRAGGER::FixRoute(), PNS::MULTI_DRAGGER::FixRoute(), PNS::MEANDER_PLACER_BASE::initChainExtras(), PNS::DIFF_PAIR_PLACER::initPlacement(), PNS::LINE_PLACER::initPlacement(), PNS::MEANDER_PLACER_BASE::lineDelay(), PNS::MEANDER_PLACER_BASE::lineLength(), PNS::DIFF_PAIR_PLACER::makeVia(), PNS::LINE_PLACER::makeVia(), PNS::MULTI_DRAGGER::multidragShove(), PNS::SHOVE::onCollidingSolid(), PNS::SHOVE::reconstructHeads(), PNS::MULTI_DRAGGER::reconstructOriginalDpCoupling(), PNS::LINE_PLACER::removeAntennas(), PNS::LINE_PLACER::rhWalkBase(), PNS::DIFF_PAIR_PLACER::routeHead(), PNS::SHOVE::Run(), PNS::SHOVE::shoveIteration(), PNS::DIFF_PAIR_PLACER::Start(), PNS::DP_MEANDER_PLACER::Start(), PNS::DRAGGER::Start(), PNS::LINE_PLACER::Start(), PNS::MEANDER_PLACER::Start(), PNS::MEANDER_SKEW_PLACER::Start(), PNS::MULTI_DRAGGER::Start(), PNS::DRAGGER::startDragArc(), PNS::MULTI_DRAGGER::tryAssembleDiffPair(), PNS::DRAGGER::tryWalkaround(), and PNS::MULTI_DRAGGER::tryWalkaround().
|
private |
Sort every unselected segment and arc on a joint.
Definition at line 320 of file pns_block_dragger.cpp.
References PNS::ITEM::ARC_T, classifyNeighbour(), link, PNS::JOINT::LinkList(), and PNS::ITEM::SEGMENT_T.
Referenced by scanRigidItem(), and Start().
|
private |
Sort the copper touching a selected pad or via.
Definition at line 333 of file pns_block_dragger.cpp.
References PNS::ITEM::ARC_T, SHAPE_LINE_CHAIN::BBox(), classifyNeighbour(), PNS::SOLID::Hull(), PNS::ITEM::IsRoutable(), PNS::ITEM::Kind(), PNS::ITEM::Layer(), PNS::ITEM::Layers(), link, PNS::DRAG_ALGO::m_world, PNS::ITEM::Net(), PNS::SOLID::Pos(), PNS::VIA::Pos(), scanJoint(), PNS::ITEM::SEGMENT_T, PNS::SOLID::Shape(), and PNS::ITEM::VIA_T.
Referenced by Start().
|
inlineinherited |
Assign a debug decorator allowing this algo to draw extra graphics for visual debugging.
Definition at line 73 of file pns_algo_base.h.
References m_debugDecorator.
Referenced by PNS::DIFF_PAIR_PLACER::attemptWalk(), PNS::SHOVE::onCollidingSolid(), PNS::LINE_PLACER::rhWalkBase(), PNS::SHOVE::SHOVE(), PNS::DRAGGER::tryWalkaround(), and PNS::MULTI_DRAGGER::tryWalkaround().
|
inlineinherited |
Definition at line 65 of file pns_algo_base.h.
References m_logger.
Referenced by PNS::LINE_PLACER::rhWalkBase(), PNS::DRAGGER::tryWalkaround(), and PNS::MULTI_DRAGGER::tryWalkaround().
|
inlineoverridevirtual |
Reimplemented from PNS::DRAG_ALGO.
Definition at line 95 of file pns_block_dragger.h.
References m_mode.
|
inherited |
Return current router settings.
Definition at line 28 of file pns_algo_base.cpp.
References m_router.
Referenced by PNS::DIFF_PAIR_PLACER::attemptWalk(), PNS::LINE_PLACER::buildInitialLine(), PNS::LINE_PLACER::CommitPlacement(), PNS::MULTI_DRAGGER::Drag(), PNS::DRAGGER::dragMarkObstacles(), PNS::DRAGGER::dragShove(), PNS::DRAGGER::dragWalkaround(), PNS::BLOCK_DRAGGER::FixRoute(), PNS::COMPONENT_DRAGGER::FixRoute(), PNS::DIFF_PAIR_PLACER::FixRoute(), PNS::LINE_PLACER::FixRoute(), PNS::MULTI_DRAGGER::FixRoute(), PNS::DIFF_PAIR_PLACER::Move(), PNS::LINE_PLACER::Move(), PNS::SHOVE::onCollidingSolid(), PNS::DRAGGER::optimizeAndUpdateDraggedLine(), PNS::DIFF_PAIR_PLACER::propagateDpHeadForces(), PNS::DRAGGER::propagateViaForces(), PNS::SHOVE::pushOrShoveVia(), PNS::LINE_PLACER::rhMarkObstacles(), PNS::LINE_PLACER::rhShoveOnly(), PNS::LINE_PLACER::rhWalkBase(), PNS::LINE_PLACER::rhWalkOnly(), PNS::DIFF_PAIR_PLACER::route(), PNS::LINE_PLACER::routeHead(), PNS::LINE_PLACER::routeStep(), PNS::SHOVE::runOptimizer(), PNS::SHOVE::shoveMainLoop(), PNS::WALKAROUND::singleStep(), PNS::DRAGGER::Start(), PNS::LINE_PLACER::Start(), PNS::MULTI_DRAGGER::Start(), PNS::DRAGGER::tryWalkaround(), PNS::MULTI_DRAGGER::tryWalkaround(), PNS::LINE_PLACER::UnfixRoute(), and PNS::WALKAROUND::WALKAROUND().
|
inlinevirtualinherited |
Function SetWorld()
Sets the board to work on.
Definition at line 61 of file pns_drag_algo.h.
References m_world.
Referenced by BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), and BOOST_FIXTURE_TEST_CASE().
Sort the selection and the unselected copper touching it.
| aP | is the point the drag starts from. |
| aPrimitives | is the selection: pads, vias, segments and arcs. |
Implements PNS::DRAG_ALGO.
Definition at line 51 of file pns_block_dragger.cpp.
References PNS::ITEM::ARC_T, classifySelectedLink(), PNS::ITEM_SET::Items(), m_anchoredLines, m_bridgeItems, m_carriedJoints, m_conns, m_currentNode, m_p0, m_rigidItems, m_seenLinks, m_selectedLinks, PNS::DRAG_ALGO::m_world, scanJoint(), scanRigidItem(), PNS::ITEM::SEGMENT_T, PNS::ITEM::SOLID_T, and PNS::ITEM::VIA_T.
Referenced by BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), and BOOST_FIXTURE_TEST_CASE().
|
overridevirtual |
Everything displaced or rerouted by the last Drag().
Implements PNS::DRAG_ALGO.
Definition at line 502 of file pns_block_dragger.cpp.
References m_draggedItems.
Referenced by BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), and BOOST_FIXTURE_TEST_CASE().
|
inherited |
Definition at line 40 of file pns_algo_base.cpp.
References m_router.
Referenced by PNS::SHOVE::runOptimizer().
|
staticprivate |
A one link line, so no unselected copper is assembled into a selected segment.
Definition at line 171 of file pns_block_dragger.cpp.
References PNS::ITEM::Anchor(), PNS::ITEM::ARC_T, chain, PNS::ITEM::GetSourceItem(), PNS::ITEM::Kind(), PNS::ITEM::Layers(), PNS::LINK_HOLDER::Link(), PNS::ITEM::Net(), PNS::ITEM::SetLayers(), PNS::ITEM::SetNet(), PNS::LINE::SetShape(), PNS::ITEM::SetSourceItem(), PNS::LINE::SetWidth(), and PNS::LINKED_ITEM::Width().
Referenced by classifySelectedLink().
|
private |
Selected arcs that cannot move.
Definition at line 153 of file pns_block_dragger.h.
Referenced by AnchoredLines(), classifySelectedLink(), and Start().
|
private |
Copper displaced whole with the block.
Definition at line 151 of file pns_block_dragger.h.
Referenced by classifyNeighbour(), classifySelectedLink(), Drag(), and Start().
|
private |
Ends of selected copper that travel.
Definition at line 158 of file pns_block_dragger.h.
Referenced by classifyNeighbour(), classifySelectedLink(), isBlockBoundary(), and Start().
|
private |
Copper rerouted to follow the block.
Definition at line 152 of file pns_block_dragger.h.
Referenced by classifyNeighbour(), classifySelectedLink(), Drag(), and Start().
|
private |
Definition at line 162 of file pns_block_dragger.h.
Referenced by BLOCK_DRAGGER(), CurrentNode(), displaceItem(), Drag(), and Start().
|
protectedinherited |
Definition at line 86 of file pns_algo_base.h.
Referenced by ALGO_BASE(), Dbg(), and SetDebugDecorator().
|
private |
Definition at line 161 of file pns_block_dragger.h.
Referenced by displaceItem(), Drag(), FixRoute(), and Traces().
|
private |
Definition at line 160 of file pns_block_dragger.h.
Referenced by BLOCK_DRAGGER(), Drag(), and GetForceMarkObstaclesMode().
|
protectedinherited |
Definition at line 88 of file pns_algo_base.h.
Referenced by ALGO_BASE(), Logger(), and SetLogger().
|
private |
Definition at line 164 of file pns_block_dragger.h.
Referenced by BLOCK_DRAGGER(), Drag(), Mode(), and SetMode().
|
private |
Definition at line 163 of file pns_block_dragger.h.
|
private |
Selected pads and vias.
Definition at line 150 of file pns_block_dragger.h.
Referenced by coveredBySolid(), Drag(), isBlockBoundary(), isFixedByLock(), isHeldByBlock(), isPinned(), and Start().
|
protectedinherited |
Definition at line 87 of file pns_algo_base.h.
Referenced by ALGO_BASE(), PNS::DP_MEANDER_PLACER::calculateTimeDomainTargets(), PNS::MEANDER_PLACER::calculateTimeDomainTargets(), PNS::MEANDER_SKEW_PLACER::calculateTimeDomainTargets(), PNS::MEANDER_PLACER::doMove(), PNS::LINE_PLACER::FixRoute(), PNS::DP_MEANDER_PLACER::Move(), PNS::MEANDER_SKEW_PLACER::Move(), Router(), Settings(), PNS::DIFF_PAIR_PLACER::updateLeadingRatLine(), PNS::LINE_PLACER::updateLeadingRatLine(), and VisibleViewArea().
|
private |
Already sorted.
Definition at line 157 of file pns_block_dragger.h.
Referenced by classifyNeighbour(), classifySelectedLink(), and Start().
|
private |
Selected segments and arcs.
Definition at line 156 of file pns_block_dragger.h.
Referenced by isBlockBoundary(), isFixedByLock(), and Start().
|
protectedinherited |
Definition at line 128 of file pns_drag_algo.h.
Referenced by PNS::DRAGGER::checkVirtualVia(), PNS::BLOCK_DRAGGER::classifyNeighbour(), PNS::BLOCK_DRAGGER::classifySelectedLink(), PNS::BLOCK_DRAGGER::clipToBlock(), PNS::BLOCK_DRAGGER::coveredBySolid(), PNS::BLOCK_DRAGGER::CurrentNode(), PNS::COMPONENT_DRAGGER::CurrentNode(), PNS::DRAGGER::CurrentNode(), PNS::MULTI_DRAGGER::CurrentNode(), PNS::BLOCK_DRAGGER::Drag(), PNS::COMPONENT_DRAGGER::Drag(), DRAG_ALGO(), PNS::DRAGGER::dragViaWalkaround(), PNS::DRAGGER::dragWalkaround(), PNS::DRAGGER::IsDragOrigin(), PNS::MULTI_DRAGGER::MULTI_DRAGGER(), PNS::MULTI_DRAGGER::multidragMarkObstacles(), PNS::MULTI_DRAGGER::multidragWalkaround(), PNS::BLOCK_DRAGGER::scanRigidItem(), SetWorld(), PNS::BLOCK_DRAGGER::Start(), PNS::COMPONENT_DRAGGER::Start(), PNS::DRAGGER::Start(), PNS::MULTI_DRAGGER::Start(), PNS::DRAGGER::startDragArc(), PNS::DRAGGER::startDragSegment(), and PNS::MULTI_DRAGGER::tryAssembleDiffPair().