26 #include <math/vector2d.h> 28 #include <geometry/shape.h> 29 #include <geometry/shape_line_chain.h> 31 #include "pns_layerset.h" 33 class BOARD_CONNECTED_ITEM;
38 class PNS_HORIZON_PARENT_ITEM;
42 MK_VIOLATION = ( 1 << 3 ),
43 MK_LOCKED = ( 1 << 4 ),
44 MK_DP_COUPLED = ( 1 << 5 )
57 static const int UnusedNet = INT_MAX;
85 m_layers = aOther.m_layers;
87 m_movable = aOther.m_movable;
88 m_kind = aOther.m_kind;
89 m_parent = aOther.m_parent;
91 m_marker = aOther.m_marker;
92 m_rank = aOther.m_rank;
93 m_routable = aOther.m_routable;
113 virtual const SHAPE_LINE_CHAIN Hull(
int aClearance = 0,
int aWalkaroundThickness = 0 )
const 135 return ( aKindMask & m_kind ) != 0;
143 const std::string
KindStr()
const;
254 return m_owner == aNode;
278 virtual bool Collide(
const ITEM* aOther,
int aClearance,
bool aNeedMTV,
279 VECTOR2I& aMTV,
bool aDifferentNetsOnly =
true )
const;
286 bool Collide(
const ITEM* aOther,
int aClearance,
bool aDifferentNetsOnly =
true )
const 290 return Collide( aOther, aClearance,
false, dummy, aDifferentNetsOnly );
304 virtual void Mark(
int aMarker )
309 virtual void Unmark(
int aMarker = -1 )
311 m_marker &= ~aMarker;
314 virtual int Marker()
const 319 virtual void SetRank(
int aRank )
324 virtual int Rank()
const 329 virtual VECTOR2I Anchor(
int n )
const 334 virtual int AnchorCount()
const 339 bool IsLocked()
const 341 return Marker() & MK_LOCKED;
344 void SetRoutable(
bool aRoutable )
346 m_routable = aRoutable;
349 bool IsRoutable()
const 355 bool collideSimple(
const ITEM* aOther,
int aClearance,
bool aNeedMTV,
356 VECTOR2I& aMTV,
bool aDifferentNetsOnly )
const;
372 template<
typename T,
typename S >
373 std::unique_ptr< T > ItemCast( std::unique_ptr< S > aPtr )
375 static_assert(std::is_base_of< ITEM, S >::value,
"Need to be handed a ITEM!");
376 static_assert(std::is_base_of< ITEM, T >::value,
"Need to cast to an ITEM!");
377 return std::unique_ptr< T >(
static_cast<T*
>(aPtr.release()) );
380 template<
typename T >
381 std::unique_ptr< typename std::remove_const< T >::type >
Clone(
const T& aItem )
383 static_assert(std::is_base_of< ITEM, T >::value,
"Need to be handed an ITEM!");
384 return std::unique_ptr< typename std::remove_const< T >::type >( aItem.Clone() );
389 #endif // __PNS_ITEM_H Class ITEM.
Definition: pns_item.h:54
virtual ITEM * Clone() const =0
Function Clone()
void SetOwner(NODE *aOwner)
Functon SetOwner()
Definition: pns_item.h:242
virtual int Layer() const
Function Layer()
Definition: pns_item.h:220
Class NODE.
Definition: pns_node.h:136
void SetLayer(int aLayer)
Function SetLayer()
Definition: pns_item.h:200
Definition: pns_horizon_iface.hpp:28
void SetNet(int aNet)
Function SetNet()
Definition: pns_item.h:170
bool LayersOverlap(const ITEM *aOther) const
Function LayersOverlap()
Definition: pns_item.h:231
bool BelongsTo(NODE *aNode) const
Function BelongsTo()
Definition: pns_item.h:252
virtual const SHAPE * Shape() const
Function Shape()
Definition: pns_item.h:299
int Net() const
Function Net()
Definition: pns_item.h:180
void SetParent(const PNS_HORIZON_PARENT_ITEM *aParent)
Function SetParent()
Definition: pns_item.h:150
Class SHAPE.
Definition: shape.h:58
void SetLayers(const LAYER_RANGE &aLayers)
Function SetLayers()
Definition: pns_item.h:190
PnsKind
Supported item types
Definition: pns_item.h:60
const std::string KindStr() const
Function KindStr()
Definition: pns_item.cpp:63
Class SHAPE_LINE_CHAIN.
Definition: shape_line_chain.h:47
bool OfKind(int aKindMask) const
Function OfKind()
Definition: pns_item.h:133
PnsKind Kind() const
Function Kind()
Definition: pns_item.h:123
auto Parent() const
Function Parent()
Definition: pns_item.h:160
virtual bool Collide(const ITEM *aOther, int aClearance, bool aNeedMTV, VECTOR2I &aMTV, bool aDifferentNetsOnly=true) const
Function Collide()
Definition: pns_item.cpp:44
bool Collide(const ITEM *aOther, int aClearance, bool aDifferentNetsOnly=true) const
Function Collide()
Definition: pns_item.h:286
NODE * Owner() const
Function Owner()
Definition: pns_item.h:262
Definition: pns_algo_base.cpp:26
Class LAYER_RANGE.
Definition: pns_layerset.h:32
const LAYER_RANGE & Layers() const
Function Layers()
Definition: pns_item.h:210