33#include "hurricane/Component.h"
34#include "hurricane/Occurrence.h"
35#include "hurricane/Pin.h"
46 class RoutingPad :
public Component {
48 static FastRTTI _fastRTTI;
50 static inline const FastRTTI& fastRTTI ();
51 virtual const FastRTTI& vfastRTTI ()
const;
58 static const uint32_t IsOnSegment = (1 << 4);
59 static const uint32_t IsOnPad = (1 << 5);
61 static const uint32_t HSmall = (1 << 6);
62 static const uint32_t VSmall = (1 << 7);
63 static const uint32_t VLarge = (1 << 8);
64 static const uint32_t Punctual = (1 << 9);
65 static const uint32_t M1Offgrid = (1 << 10);
66 static const uint32_t UserCenter = (1 << 11);
67 static const uint32_t SizeFlags = HSmall|VSmall|VLarge|Punctual|M1Offgrid;
68 static const uint32_t SelectedComponent = (1 << 11);
69 static const uint32_t RotateBottomMetal = (1 << 12);
71 static RoutingPad* create (
Net*,
Occurrence, uint32_t flags=0 );
76 inline bool isAtTopLevel ()
const;
77 inline bool isHSmall ()
const;
78 inline bool isVSmall ()
const;
79 inline bool isVLarge ()
const;
80 inline bool isPunctual ()
const;
81 inline bool isM1Offgrid ()
const;
82 inline bool rotateBottomMetal ()
const;
83 inline bool hasUserCenter ()
const;
84 inline bool hasSelectedComponent ()
const;
85 inline Point getUserCenter ()
const;
86 inline uint32_t getFlags ()
const;
95 virtual Point getPosition ()
const;
102 std::string getStringFlags ()
const;
107 inline void setUserCenter (
const Point& );
109 inline void setFlags ( uint32_t );
110 inline void unsetFlags ( uint32_t );
113 T* _getEntityAs ()
const;
114 virtual void _toJson ( JsonWriter* )
const;
115 virtual std::string _getTypeName ()
const {
return _TName(
"RoutingPad");};
116 virtual std::string _getString ()
const;
117 virtual Record* _getRecord ()
const;
119 virtual void _postCreate ();
120 virtual void _preDestroy ();
131 inline const FastRTTI& RoutingPad::fastRTTI () {
return _fastRTTI; }
134 inline bool RoutingPad::isAtTopLevel ()
const {
return _occurrence.getPath().isEmpty(); }
135 inline bool RoutingPad::isHSmall ()
const {
return (_flags & HSmall); }
136 inline bool RoutingPad::isVSmall ()
const {
return (_flags & VSmall); }
137 inline bool RoutingPad::isVLarge ()
const {
return (_flags & VLarge); }
138 inline bool RoutingPad::isPunctual ()
const {
return (_flags & Punctual); }
139 inline bool RoutingPad::isM1Offgrid ()
const {
return (_flags & M1Offgrid); }
140 inline bool RoutingPad::rotateBottomMetal ()
const {
return (_flags & RotateBottomMetal); }
141 inline bool RoutingPad::hasSelectedComponent ()
const {
return (_flags & SelectedComponent); }
142 inline bool RoutingPad::hasUserCenter ()
const {
return (_flags & UserCenter); }
143 inline Point RoutingPad::getUserCenter ()
const {
return (hasUserCenter()) ? _userCenter :
getCenter(); }
144 inline uint32_t RoutingPad::getFlags ()
const {
return _flags; }
146 inline void RoutingPad::setFlags ( uint32_t flags ) { _flags |= flags; }
147 inline void RoutingPad::unsetFlags ( uint32_t flags ) { _flags &= ~flags; }
148 inline void RoutingPad::setUserCenter (
const Point& center ) { _flags |= UserCenter; _userCenter = center; }
152 inline T* RoutingPad::_getEntityAs ()
const
154 if (not _occurrence.isValid())
return nullptr;
155 return dynamic_cast<T*
>( _occurrence.getEntity() );
162 class JsonRoutingPad :
public JsonComponent {
164 static void initialize ();
165 JsonRoutingPad (
unsigned long flags );
166 virtual std::string getTypeName ()
const;
167 virtual JsonRoutingPad* clone (
unsigned long flags )
const;
168 virtual void toData ( JsonStack& );
BasicLayer description (API)
Definition BasicLayer.h:42
Box description (API)
Definition Box.h:30
std::int64_t Unit
Definition DbU.h:67
Layer description (API)
Definition Layer.h:120
Net description (API)
Definition Net.h:46
Occurrence description (API)
Definition Occurrence.h:39
Pin description (API)
Definition Pin.h:41
Point description (API)
Definition Point.h:30
RoutingPad description (API)
Definition RoutingPad.h:46
virtual void translate(const DbU::Unit &dx, const DbU::Unit &dy)
static const uint32_t LowestLayer
Definition RoutingPad.h:56
virtual DbU::Unit getX() const
virtual Box getBoundingBox() const
void restorePlugOccurrence()
Occurrence getOccurrence() const
Definition RoutingPad.h:145
Occurrence getPlugOccurrence()
static const uint32_t ComponentSelection
Definition RoutingPad.h:60
static RoutingPad * create(Pin *)
DbU::Unit getTargetY() const
virtual DbU::Unit getY() const
DbU::Unit getSourceX() const
Component * setOnBestComponent(uint32_t flags)
bool isPlacedOccurrence(uint32_t flags) const
static const uint32_t ShowWarning
Definition RoutingPad.h:57
Point getTargetPosition() const
virtual Point getCenter() const
static const uint32_t HighestLayer
Definition RoutingPad.h:55
Component Inherit
Definition RoutingPad.h:53
void setExternalComponent(Component *)
DbU::Unit getTargetX() const
DbU::Unit getSourceY() const
Point getSourcePosition() const
virtual const Layer * getLayer() const
static const uint32_t BiggestArea
Definition RoutingPad.h:54
Segment description (API)
Definition Segment.h:33
Contains Almost Everything.
Definition BasicLayer.h:39