30 #ifndef AVOID_OBSTACLE_H
31 #define AVOID_OBSTACLE_H
38 #include "libavoid/geometry.h"
48 typedef std::list<Obstacle *> ObstacleList;
80 Obstacle(Router *router, Polygon poly,
const unsigned int id = 0);
89 unsigned int id(
void)
const;
92 const Polygon& polygon(
void)
const;
95 Router *router(
void)
const;
98 virtual Point position(
void)
const = 0;
100 void setNewPoly(
const Polygon& poly);
101 VertInf *firstVert(
void);
102 VertInf *lastVert(
void);
103 void boundingBox(
BBox& bbox);
107 friend class ConnEnd;
108 friend class ShapeConnectionPin;
111 void computeVisibilityNaive(
void);
112 void computeVisibilitySweep(
void);
114 virtual void outputCode(FILE *fp)
const = 0;
115 void makeActive(
void);
116 void makeInactive(
void);
117 bool isActive(
void)
const;
118 void updatePinPolyLineVisibility(
void);
120 void removeFromGraph(
void);
121 void markForMove(
void);
122 void clearMoveMark(
void);
123 Point shapeCentre(
void);
125 VertInf *getPointVertex(
const Point& point);
127 void addFollowingConnEnd(ConnEnd *connEnd);
128 void removeFollowingConnEnd(ConnEnd *connEnd);
129 unsigned int addConnectionPin(ShapeConnectionPin *pin);
130 void removeConnectionPin(ShapeConnectionPin *pin);
131 void assignPinVisibilityTo(
const unsigned int pinClassId,
132 VertInf *dummyConnectionVert);
133 std::vector<Point> possiblePinPoints(
unsigned int pinClassId)
const;
141 ObstacleList::iterator m_router_obstacles_pos;
142 VertInf *m_first_vert;
143 VertInf *m_last_vert;
144 std::set<ConnEnd *> m_following_conns;
145 ShapeConnectionPinSet m_connection_pins;