22 #ifndef __PNS_LINE_PLACER_H
23 #define __PNS_LINE_PLACER_H
25 #include <math/vector2d.h>
27 #include <geometry/shape.h>
28 #include <geometry/shape_line_chain.h>
30 #include "pns_sizes_settings.h"
34 #include "pns_placement_algo.h"
98 bool SetLayer(
int aLayer )
override;
148 return std::vector<int>( 1, m_currentNet );
158 return m_currentLayer;
221 void updateLeadingRatLine();
228 void setWorld(
NODE* aWorld );
235 void initPlacement();
243 void setInitialDirection(
const DIRECTION_45& aDirection );
251 void removeLoops(
NODE* aNode,
LINE& aLatest );
260 void simplifyNewLine(
NODE* aNode,
SEGMENT* aLatest );
269 bool checkObtusity(
const SEG& aA,
const SEG& aB )
const;
279 bool handleSelfIntersections();
288 bool handlePullback();
308 bool reduceTail(
const VECTOR2I& aEnd );
317 bool optimizeTailHeadTransition();
336 void routeStep(
const VECTOR2I& aP );
338 const LINE reduceToNearestObstacle(
const LINE& aOriginalLine );
340 bool rhStopAtNearestObstacle(
const VECTOR2I& aP,
LINE& aNewHead );
350 bool rhMarkObstacles(
const VECTOR2I& aP,
LINE& aNewHead );
354 bool buildInitialLine(
const VECTOR2I& aP,
LINE& aHead,
bool aInvertPosture =
false );
376 std::unique_ptr< SHOVE > m_shove;
392 VECTOR2I m_currentEnd, m_currentStart;
395 PNS_MODE m_currentMode;
399 bool m_chainedPlacement;
Class DIRECTION_45.
Definition: direction45.h:37
Definition: pns_itemset.h:40
Class ITEM.
Definition: pns_item.h:55
Class LINE_PLACER.
Definition: pns_line_placer.h:53
bool SetLayer(int aLayer) override
Function SetLayer()
Definition: pns_line_placer.cpp:876
const LINE Trace() const
Function Trace()
Definition: pns_line_placer.cpp:811
const VECTOR2I & CurrentEnd() const override
Function CurrentEnd()
Definition: pns_line_placer.h:136
void UpdateSizes(const SIZES_SETTINGS &aSizes) override
Function UpdateSizes()
Definition: pns_line_placer.cpp:1177
void SetOrthoMode(bool aOrthoMode) override
Function SetOrthoMode()
Definition: pns_line_placer.cpp:1199
bool Start(const VECTOR2I &aP, ITEM *aStartItem) override
Function Start()
Definition: pns_line_placer.cpp:899
const LINE & Head() const
Function Head()
Definition: pns_line_placer.h:106
LOGGER * Logger() override
Returns the logger object, allowing to dump geometry to a file.
Definition: pns_line_placer.cpp:1273
NODE * CurrentNode(bool aLoopsRemoved=false) const override
Function CurrentNode()
Definition: pns_line_placer.cpp:836
bool SplitAdjacentSegments(NODE *aNode, ITEM *aSeg, const VECTOR2I &aP)
Function SplitAdjacentSegments()
Definition: pns_line_placer.cpp:845
int CurrentLayer() const override
Function CurrentLayer()
Definition: pns_line_placer.h:156
const LINE & Tail() const
Function Tail()
Definition: pns_line_placer.h:114
void FlipPosture() override
Function FlipPosture()
Definition: pns_line_placer.cpp:829
void GetModifiedNets(std::vector< int > &aNets) const override
Function GetModifiedNets.
Definition: pns_line_placer.cpp:1268
const std::vector< int > CurrentNets() const override
Function CurrentNet()
Definition: pns_line_placer.h:146
bool IsPlacingVia() const override
Function IsPlacingVia()
Definition: pns_line_placer.h:186
bool Move(const VECTOR2I &aP, ITEM *aEndItem) override
Function Move()
Definition: pns_line_placer.cpp:958
const ITEM_SET Traces() override
Function Traces()
Definition: pns_line_placer.cpp:822
bool FixRoute(const VECTOR2I &aP, ITEM *aEndItem, bool aForceFinish) override
Function FixRoute()
Definition: pns_line_placer.cpp:998
bool ToggleVia(bool aEnabled) override
Function ToggleVia()
Definition: pns_line_placer.cpp:77
Definition: pns_line.h:61
Definition: pns_logger.h:40
Class NODE.
Definition: pns_node.h:138
Class PLACEMENT_ALGO.
Definition: pns_placement_algo.h:46
Definition: pns_router.h:113
Definition: pns_segment.h:39
Definition: pns_sizes_settings.h:37