Horizon
|
Base class for PNS router board items. More...
#include <pns_item.h>
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 ITEM * | Clone () 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_ITEM * | Parent () const |
void | SetNet (int aNet) |
int | Net () const |
const LAYER_RANGE & | Layers () 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. | |
NODE * | Owner () 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 SHAPE * | Shape () const |
Return the geometrical shape of the item. | |
virtual const SHAPE * | Hole () 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_ITEM * | m_parent |
NODE * | m_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 |
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.
|
inline |
|
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.
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.
aOther | is the item to check collision against. |
|
inline |
Set the node that owns this item.
An item can belong to a single NODE or be unowned.
|
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.