Horizon
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Static Public Attributes | Protected Attributes | List of all members
PNS::ITEM Class Referenceabstract

Base class for PNS router board items. More...

#include <pns_item.h>

Inheritance diagram for PNS::ITEM:
PNS::JOINT PNS::LINKED_ITEM PNS::LINK_HOLDER PNS::SOLID PNS::VIA PNS::ARC PNS::SEGMENT PNS::DIFF_PAIR PNS::LINE PNS::VVIA

Public Types

enum  PnsKind {
  SOLID_T = 1 , LINE_T = 2 , JOINT_T = 4 , SEGMENT_T = 8 ,
  ARC_T = 16 , VIA_T = 32 , DIFF_PAIR_T = 64 , ANY_T = 0xff
}
 

Public Member Functions

 ITEM (PnsKind aKind)
 
 ITEM (const ITEM &aOther)
 
virtual ITEMClone () const =0
 Return a deep copy of the item.
 
virtual const SHAPE_LINE_CHAIN Hull (int aClearance=0, int aWalkaroundThickness=0, int aLayer=-1) const
 
virtual const SHAPE_LINE_CHAIN HoleHull (int aClearance, int aWalkaroundThickness, int aLayer) const
 
PnsKind Kind () const
 Return the type (kind) of the item.
 
bool OfKind (int aKindMask) const
 Return true if the item's type matches the mask aKindMask.
 
std::string KindStr () const
 Returns the kind of the item, as string.
 
void SetParent (const PNS_HORIZON_PARENT_ITEM *aParent)
 
const PNS_HORIZON_PARENT_ITEMParent () const
 
void SetNet (int aNet)
 
int Net () const
 
const LAYER_RANGELayers () const
 
void SetLayers (const LAYER_RANGE &aLayers)
 
void SetLayer (int aLayer)
 
virtual int Layer () const
 
bool LayersOverlap (const ITEM *aOther) const
 Return true if the set of layers spanned by aOther overlaps our layers.
 
NODEOwner () const
 Return the owner of this item, or NULL if there's none.
 
void SetOwner (NODE *aOwner)
 Set the node that owns this item.
 
bool BelongsTo (NODE *aNode) const
 
bool Collide (const ITEM *aOther, const NODE *aNode, bool aDifferentNetsOnly=true) const
 Check for a collision (clearance violation) with between us and item aOther.
 
virtual const SHAPEShape () const
 Return the geometrical shape of the item.
 
virtual const SHAPEHole () const
 
virtual void Mark (int aMarker) const
 
virtual void Unmark (int aMarker=-1) const
 
virtual int Marker () const
 
virtual void SetRank (int aRank)
 
virtual int Rank () const
 
virtual VECTOR2I Anchor (int n) const
 
virtual int AnchorCount () const
 
bool IsLocked () const
 
void SetRoutable (bool aRoutable)
 
bool IsRoutable () const
 
bool IsVirtual () const
 
void SetIsCompoundShapePrimitive ()
 
bool IsCompoundShapePrimitive () const
 

Static Public Attributes

static const int UnusedNet = INT_MAX
 Supported item types.
 

Protected Attributes

PnsKind m_kind
 
const PNS_HORIZON_PARENT_ITEMm_parent
 
NODEm_owner
 
LAYER_RANGE m_layers
 
bool m_movable
 
int m_net
 
int m_marker
 
int m_rank
 
bool m_routable
 
bool m_isVirtual
 
bool m_isCompoundShapePrimitive
 

Detailed Description

Base class for PNS router board items.

Implements the shared properties of all PCB items net, spanned layers, geometric shape and reference to owning model.

Member Function Documentation

◆ BelongsTo()

bool PNS::ITEM::BelongsTo ( NODE aNode) const
inline
Returns
true if the item is owned by the node aNode.

◆ Clone()

virtual ITEM * PNS::ITEM::Clone ( ) const
pure virtual

Return a deep copy of the item.

Implemented in PNS::ARC, PNS::DIFF_PAIR, PNS::JOINT, PNS::LINE, PNS::SEGMENT, PNS::SOLID, and PNS::VIA.

◆ Collide()

bool PNS::ITEM::Collide ( const ITEM aOther,
const NODE aNode,
bool  aDifferentNetsOnly = true 
) const

Check for a collision (clearance violation) with between us and item aOther.

Collision checking takes all PCB stuff into account (layers, nets, DRC rules). Optionally returns a minimum translation vector for force propagation algorithm.

Parameters
aOtheris the item to check collision against.
Returns
true, if a collision was found.

◆ SetOwner()

void PNS::ITEM::SetOwner ( NODE aOwner)
inline

Set the node that owns this item.

An item can belong to a single NODE or be unowned.

◆ Shape()

virtual const SHAPE * PNS::ITEM::Shape ( ) const
inlinevirtual

Return the geometrical shape of the item.

Used for collision detection and spatial indexing.

Reimplemented in PNS::ARC, PNS::LINE, PNS::SEGMENT, PNS::SOLID, and PNS::VIA.


The documentation for this class was generated from the following files: