Inkscape
Vector Graphics Editor
Loading...
Searching...
No Matches
Avoid Namespace Reference

libavoid: Object-avoiding orthogonal and polyline connector routing library. More...

Classes

class  ActionInfo
 
class  AStarPath
 
class  Block
 
class  Blocks
 
class  Box
 A bounding box, represented by the top-left and bottom-right corners. More...
 
class  Checkpoint
 A checkpoint is a point that the route for a particular connector must visit. More...
 
class  ClusterRef
 The ClusterRef class represents a cluster object. More...
 
class  CmpConnPinPtr
 
struct  CmpEdgeInf
 
struct  CmpNodePos
 
class  CmpNodesInDim
 
class  CompareConstraints
 
class  ConnectorCrossings
 
class  ConnEnd
 The ConnEnd class represents different possible endpoints for connectors. More...
 
class  ConnRef
 The ConnRef class represents a connector object. More...
 
class  ConnRerouteFlagDelegate
 
class  Constraint
 
class  DebugHandler
 
struct  delete_object
 
class  Edge
 A line between two points. More...
 
class  EdgeInf
 
class  EdgeList
 
struct  Event
 
struct  HeapCmpVertInf
 
class  HyperedgeImprover
 
struct  HyperedgeNewAndDeletedObjectLists
 The HyperedgeNewAndDeletedObjectLists class stores lists of objects created and deleted during hyperedge improvement. More...
 
class  HyperedgeRerouter
 The HyperedgeRerouter class is a convenience object that can be used to register hyperedges to be rerouted, improving the placement of their junctions and connector paths. More...
 
struct  HyperedgeTreeEdge
 
struct  HyperedgeTreeNode
 
class  IncSolver
 
class  JunctionRef
 The JunctionRef class represents a fixed or free-floating point that connectors can be attached to. More...
 
struct  LineRep
 
class  MinimumTerminalSpanningTree
 
class  Node
 
class  Obstacle
 
class  Point
 The Point class defines a point in the plane. More...
 
class  Polygon
 A dynamic Polygon, to which points can be easily added and removed. More...
 
class  PolygonInterface
 A common interface used by the Polygon classes. More...
 
struct  PositionStats
 
class  PtOrder
 
class  Rectangle
 A Rectangle, a simpler way to define the polygon for square or rectangular shapes. More...
 
class  ReferencingPolygon
 A Polygon which just references its points from other Polygons. More...
 
class  Router
 The Router class represents a libavoid router instance. More...
 
class  ShapeConnectionPin
 The ShapeConnectionPin class represents a fixed point or "pin" on a shape that can be connected to. More...
 
class  ShapeRef
 The ShapeRef class represents a shape object. More...
 
class  ShiftSegment
 
class  Timer
 
class  TopologyAddonInterface
 
struct  UnsatisfiableException
 
struct  UnsatisfiedConstraint
 
class  Variable
 
class  VertID
 
class  VertInf
 
class  VertInfList
 

Typedefs

typedef std::list< std::pair< unsigned int, ConnEnd > > ConnUpdateList
 
typedef std::list< ActionInfoActionInfoList
 
typedef std::pair< unsigned int, unsigned int > ConnectionPinIds
 
typedef std::set< ShapeConnectionPin *, CmpConnPinPtrShapeConnectionPinSet
 
typedef std::list< ConnRef * > ConnRefList
 A list of ConnRef objects.
 
typedef std::pair< Point *, ConnRef * > PtConnPtrPair
 
typedef std::vector< PtConnPtrPairPointRepVector
 
typedef std::list< std::pair< size_t, size_t > > NodeIndexPairLinkList
 
typedef std::map< Avoid::Point, PtOrderPtOrderMap
 
typedef std::set< Avoid::PointPointSet
 
typedef std::pair< int, unsigned int > CrossingsInfoPair
 
typedef std::vector< Avoid::PointPointList
 
typedef std::vector< PointListSharedPathList
 
typedef unsigned int ConnDirFlags
 One or more Avoid::ConnDirFlag options.
 
typedef Point Vector
 A vector, represented by the Point class.
 
typedef Polygon PolyLine
 A multi-segment line, represented with the Polygon class.
 
typedef std::list< int > ShapeList
 
typedef std::list< bool * > FlagList
 
typedef std::list< ConnEndConnEndList
 A list of ConnEnd objects.
 
typedef std::list< JunctionRef * > JunctionRefList
 A list of JunctionRef objects.
 
typedef std::list< VertInf * > VertexList
 
typedef std::set< ConnRef * > ConnRefSet
 
typedef std::set< VertInf * > VertexSet
 
typedef std::vector< JunctionRef * > JunctionRefVector
 
typedef std::vector< ConnEndListConnEndListVector
 
typedef std::vector< ConnRefListConnRefListVector
 
typedef std::vector< JunctionRefListJunctionRefListVector
 
typedef std::vector< VertexSetVertexSetVector
 
typedef std::list< ShiftSegment * > ShiftSegmentList
 
typedef std::map< JunctionRef *, ShiftSegmentListRootSegmentsMap
 
typedef std::map< JunctionRef *, HyperedgeTreeNode * > JunctionHyperedgeTreeNodeMap
 
typedef std::set< JunctionRef * > JunctionSet
 
typedef std::set< HyperedgeTreeNode *, CmpNodesInDimOrderedHENodeSet
 
typedef std::map< VertInf *, HyperedgeTreeNode * > VertexNodeMap
 
typedef std::list< VertexSetVertexSetList
 
typedef std::pair< EdgeInf *, VertInf * > LayeredOrthogonalEdge
 
typedef std::list< LayeredOrthogonalEdgeLayeredOrthogonalEdgeList
 
typedef std::list< Obstacle * > ObstacleList
 
typedef std::pair< double, ConnRef * > ConnCostRef
 
typedef std::set< ConnCostRef, CmpConnCostRef > ConnCostRefSet
 
typedef std::list< ConnCostRefSetConnCostRefSetList
 
typedef std::map< ConnRef *, std::set< ConnRef * > > CrossingConnectorsMap
 
typedef std::list< CrossingConnectorsMapCrossingConnectorsMapList
 
typedef std::list< ConnCostRefConnCostRefList
 
typedef std::list< LineRepLineReps
 
typedef std::list< unsigned int > IntList
 
typedef std::list< ClusterRef * > ClusterRefList
 
typedef enum RoutingParameter PenaltyType
 
typedef std::set< Node *, CmpNodePosNodeSet
 
typedef std::list< ShapeRef * > ShapeRefList
 
typedef unsigned long long int bigclock_t
 
typedef std::list< EdgeInf * > EdgeInfList
 
typedef std::pair< VertInf *, VertInf * > VertexPair
 
typedef unsigned short VertIDProps
 
typedef std::set< unsigned int > ShapeSet
 
typedef std::map< VertID, ShapeSetContainsMap
 
typedef std::set< PointPair > VertSet
 
typedef std::list< EdgePair > SweepEdgeList
 
typedef std::list< std::map< Variable *, double > > VarOffsetMapList
 
typedef std::vector< Variable * > Variables
 
typedef std::vector< Constraint * > Constraints
 
typedef std::priority_queue< Constraint *, std::vector< Constraint * >, CompareConstraintsHeap
 

Enumerations

enum  ActionType {
  ShapeMove , ShapeAdd , ShapeRemove , JunctionMove ,
  JunctionAdd , JunctionRemove , ConnChange , ConnectionPinChange
}
 
enum  ConnType { ConnType_None = 0 , ConnType_PolyLine = 1 , ConnType_Orthogonal = 2 }
 Describes the type of routing that is performed for each connector. More...
 
enum  ConnDirFlag {
  ConnDirNone = 0 , ConnDirUp = 1 , ConnDirDown = 2 , ConnDirLeft = 4 ,
  ConnDirRight = 8 , ConnDirAll = 15
}
 Flags that can be passed to the ConnEnd constructor to specify which sides of a shape this point should have visibility to if it is located within the shape's area. More...
 
enum  ConnEndType { ConnEndPoint , ConnEndShapePin , ConnEndJunction , ConnEndEmpty }
 Types that describe the kind a connection that a ConnEnd represents. More...
 
enum  RouterFlag { PolyLineRouting = 1 , OrthogonalRouting = 2 }
 Flags that can be passed to the router during initialisation to specify options. More...
 
enum  RoutingParameter {
  segmentPenalty = 0 , anglePenalty , crossingPenalty , clusterCrossingPenalty ,
  fixedSharedPathPenalty , portDirectionPenalty , shapeBufferDistance , idealNudgingDistance ,
  reverseDirectionPenalty , lastRoutingParameterMarker
}
 Types of routing parameters and penalties that can be used to tailor the style and improve the quality of the connector routes produced. More...
 
enum  RoutingOption {
  nudgeOrthogonalSegmentsConnectedToShapes = 0 , improveHyperedgeRoutesMovingJunctions , penaliseOrthogonalSharedPathsAtConnEnds , nudgeOrthogonalTouchingColinearSegments ,
  performUnifyingNudgingPreprocessingStep , improveHyperedgeRoutesMovingAddingAndDeletingJunctions , nudgeSharedPathsWithCommonEndPoint , lastRoutingOptionMarker
}
 Types of routing options that can be enabled. More...
 
enum  TransactionPhases {
  TransactionPhaseOrthogonalVisibilityGraphScanX = 1 , TransactionPhaseOrthogonalVisibilityGraphScanY , TransactionPhaseRouteSearch , TransactionPhaseCrossingDetection ,
  TransactionPhaseRerouteSearch , TransactionPhaseOrthogonalNudgingX , TransactionPhaseOrthogonalNudgingY , TransactionPhaseCompleted
}
 Types of routing phases reported by Router::shouldContinueTransactionWithProgress(). More...
 
enum  EventType {
  Open = 1 , SegOpen = 2 , ConnPoint = 3 , SegClose = 4 ,
  Close = 5
}
 
enum  ShapeTransformationType {
  TransformationType_CW90 = 0 , TransformationType_CW180 = 1 , TransformationType_CW270 = 2 , TransformationType_FlipX = 3 ,
  TransformationType_FlipY = 4
}
 Describes the type of transformation that has been applied to a shape having its transformConnectionPinPositions() method called. More...
 
enum  TimerIndex {
  tmAdd , tmDel , tmMov , tmPth ,
  tmOrthogGraph , tmOrthogRoute , tmOrthogCentre , tmOrthogNudge ,
  tmHyperedgeForest , tmHyperedgeMTST , tmHyperedgeImprove , tmHyperedgeAlt ,
  tmCount
}
 

Functions

Point midpoint (Point a, Point b)
 
bool validateBendPoint (VertInf *aInf, VertInf *bInf, VertInf *cInf)
 
static int midVertexNumber (const Point &p0, const Point &p1, const Point &c)
 
void splitBranchingSegments (Avoid::Polygon &poly, bool polyIsConn, Avoid::Polygon &conn, const double tolerance)
 
static int segDir (const Point &p1, const Point &p2)
 
static bool posInlineWithConnEndSegs (const double pos, const size_t dim, const Avoid::Polygon &poly, const Avoid::Polygon &conn)
 
static double pathLength (Avoid::Point **c_path, Avoid::Point **p_path, size_t size)
 
void db_printf (const char *fmt,...)
 
void err_printf (const char *fmt,...)
 
bool inBetween (const Point &a, const Point &b, const Point &c)
 
bool colinear (const Point &a, const Point &b, const Point &c, const double tolerance)
 
bool pointOnLine (const Point &a, const Point &b, const Point &c, const double tolerance)
 
bool segmentIntersect (const Point &a, const Point &b, const Point &c, const Point &d)
 
bool segmentShapeIntersect (const Point &e1, const Point &e2, const Point &s1, const Point &s2, bool &seenIntersectionAtEndpoint)
 
bool inValidRegion (bool IgnoreRegions, const Point &a0, const Point &a1, const Point &a2, const Point &b)
 
int cornerSide (const Point &c1, const Point &c2, const Point &c3, const Point &p)
 
double euclideanDist (const Point &a, const Point &b)
 
double manhattanDist (const Point &a, const Point &b)
 
double dist (const Point &a, const Point &b)
 
double totalLength (const Polygon &poly)
 
double angle (const Point &a, const Point &b, const Point &c)
 
bool inPoly (const Polygon &poly, const Point &q, bool countBorder)
 
bool inPolyGen (const PolygonInterface &argpoly, const Point &q)
 
int segmentIntersectPoint (const Point &a1, const Point &a2, const Point &b1, const Point &b2, double *x, double *y)
 
int rayIntersectPoint (const Point &a1, const Point &a2, const Point &b1, const Point &b2, double *x, double *y)
 
double rotationalAngle (const Point &p)
 
static int vecDir (const Point &a, const Point &b, const Point &c, const double maybeZero=0.0)
 
static Point projection (const Point &a, const Point &b, const Point &c)
 
static Point unitNormalForEdge (const Point &pt1, const Point &pt2)
 
static void shorten_line (double &x1, double &y1, double &x2, double &y2, const unsigned int mode, const double shorten_length)
 
static int orthogTurnOrder (const Point &a, const Point &b, const Point &c)
 
static bool CmpHyperedgeSegmentDirOrder (const ShiftSegment *lhsSuper, const ShiftSegment *rhsSuper)
 
static bool travellingForwardOnConnector (ConnRef *conn, JunctionRef *junction)
 
static double Dot (const Point &l, const Point &r)
 
static double CrossLength (const Point &l, const Point &r)
 
static double angleBetween (const Point &p1, const Point &p2, const Point &p3)
 
static void constructPolygonPath (Polygon &connRoute, VertInf *inf2, VertInf *inf3, ANode *inf1Node)
 
static int dimDirection (double difference)
 
static double cost (ConnRef *lineRef, const double dist, VertInf *inf2, VertInf *inf3, ANode *inf1Node)
 
static void printDirections (FILE *fp, unsigned int directions)
 
static unsigned int orthogonalDirectionsCount (const unsigned int directions)
 
static unsigned int orthogonalDirection (const Point &a, const Point &b)
 
static unsigned int dirRight (unsigned int direction)
 
static unsigned int dirLeft (unsigned int direction)
 
static unsigned int dirReverse (unsigned int direction)
 
int bends (const Point &curr, unsigned int currDir, const Point &dest, unsigned int destDir)
 
static double estimatedCostSpecific (ConnRef *lineRef, const Point *last, const Point &curr, const VertInf *costTar, const unsigned int costTarDirs)
 
static bool pointAlignedWithOneOf (const Point &point, const std::vector< Point > &points, const size_t dim)
 
void generateStaticOrthogonalVisGraph (Router *router)
 
void improveOrthogonalRoutes (Router *router)
 
static double cheapEstimatedCost (ConnRef *lineRef)
 
static double AngleAFromThreeSides (const double a, const double b, const double c)
 
static void reduceRange (double &val)
 
int compare_events (const void *a, const void *b)
 
void buildConnectorRouteCheckpointCache (Router *router)
 
void clearConnectorRouteCheckpointCache (Router *router)
 
static void processShiftEvent (NodeSet &scanline, Event *e, size_t dim, unsigned int pass)
 
void buildOrthogonalChannelInfo (Router *router, const size_t dim, ShiftSegmentList &segmentList)
 
static double absoluteOffsetInverse (double offset, const Box &shapeBox, size_t toDim)
 
ostream & operator<< (ostream &os, const VertID &vID)
 
bool directVis (VertInf *src, VertInf *dst)
 
static const VertID dummyOrthogID (0, 0)
 
static const VertID dummyOrthogShapeID (0, 0, VertID::PROP_OrthShapeEdge)
 
static void vertexSweep (VertInf *vert)
 
void vertexVisibility (VertInf *point, VertInf *partner, bool knownNew, const bool gen_contains)
 
static bool sweepVisible (SweepEdgeList &T, const PointPair &point, std::set< unsigned int > &onBorderIDs, int *blocker)
 
ostream & operator<< (ostream &os, const Block &b)
 
std::ostream & operator<< (std::ostream &os, const Constraint &c)
 
std::ostream & operator<< (std::ostream &os, const Variable &v)
 
Constraints constraintsRemovingRedundantEqualities (Variables const &vars, Constraints const &constraints)
 

Variables

static const unsigned int CONNECTIONPIN_UNSET = INT_MAX
 
static const unsigned int CONNECTIONPIN_CENTRE = INT_MAX - 1
 
static const double ATTACH_POS_TOP = 0
 
static const double ATTACH_POS_CENTRE = 0.5
 
static const double ATTACH_POS_BOTTOM = 1
 
static const double ATTACH_POS_LEFT = ATTACH_POS_TOP
 
static const double ATTACH_POS_RIGHT = ATTACH_POS_BOTTOM
 
static const double ATTACH_POS_MIN_OFFSET = 0
 
static const double ATTACH_POS_MAX_OFFSET = -1
 
const unsigned int CROSSING_NONE = 0
 
const unsigned int CROSSING_TOUCHES = 1
 
const unsigned int CROSSING_SHARES_PATH = 2
 
const unsigned int CROSSING_SHARES_PATH_AT_END = 4
 
const unsigned int CROSSING_SHARES_FIXED_SEGMENT = 8
 
static const int DONT_INTERSECT = 0
 
static const int DO_INTERSECT = 1
 
static const int PARALLEL = 3
 
static const unsigned int SHORTEN_NONE = 0
 
static const unsigned int SHORTEN_START = 1
 
static const unsigned int SHORTEN_END = 2
 
static const unsigned int SHORTEN_BOTH = SHORTEN_START | SHORTEN_END
 
static const size_t XDIM = 0
 
static const size_t YDIM = 1
 
static const unsigned short kUnassignedVertexNumber = 8
 Constant value representing an unassigned vertex number.
 
static const unsigned short kShapeConnectionPin = 9
 Constant value representing a ShapeConnectionPin.
 
static const unsigned int CostDirectionN = 1
 
static const unsigned int CostDirectionE = 2
 
static const unsigned int CostDirectionS = 4
 
static const unsigned int CostDirectionW = 8
 
static const double LIMIT = 100000000
 
static const unsigned int runningTo = 1
 
static const unsigned int runningFrom = 2
 
static const unsigned int runningToAndFrom = runningTo | runningFrom
 
static const double zeroParamValue = 0
 
static const double chooseSensibleParamValue = -1
 
static const double CHANNEL_MAX = 100000000
 
static const char * timerNames []
 
static const bool timerStart = true
 
static const bool timerDelay = false
 
static const size_t TIMER_VARIABLES_COUNT = 2
 
static const unsigned int XL_EDGE = 1
 
static const unsigned int XL_CONN = 2
 
static const unsigned int XH_EDGE = 4
 
static const unsigned int XH_CONN = 8
 
static const unsigned int YL_EDGE = 16
 
static const unsigned int YL_CONN = 32
 
static const unsigned int YH_EDGE = 64
 
static const unsigned int YH_CONN = 128
 
static const double ZERO_UPPERBOUND =-1e-10
 
static const double LAGRANGIAN_TOLERANCE =-1e-4
 

Detailed Description

libavoid: Object-avoiding orthogonal and polyline connector routing library.

You should use libavoid via an instance of the Router class.

Typedef Documentation

◆ ActionInfoList

typedef std::list<ActionInfo> Avoid::ActionInfoList

Definition at line 84 of file actioninfo.h.

◆ bigclock_t

typedef unsigned long long int Avoid::bigclock_t

Definition at line 49 of file timer.h.

◆ ClusterRefList

typedef std::list< ClusterRef * > Avoid::ClusterRefList

Definition at line 63 of file router.h.

◆ ConnCostRef

typedef std::pair<double, ConnRef *> Avoid::ConnCostRef

Definition at line 1036 of file router.cpp.

◆ ConnCostRefList

typedef std::list<ConnCostRef> Avoid::ConnCostRefList

Definition at line 1405 of file router.cpp.

◆ ConnCostRefSet

typedef std::set<ConnCostRef, CmpConnCostRef> Avoid::ConnCostRefSet

Definition at line 1051 of file router.cpp.

◆ ConnCostRefSetList

Definition at line 1052 of file router.cpp.

◆ ConnDirFlags

typedef unsigned int Avoid::ConnDirFlags

One or more Avoid::ConnDirFlag options.

Definition at line 83 of file connend.h.

◆ ConnectionPinIds

typedef std::pair<unsigned int, unsigned int> Avoid::ConnectionPinIds

Definition at line 53 of file connectionpin.h.

◆ ConnEndList

typedef std::list<ConnEnd> Avoid::ConnEndList

A list of ConnEnd objects.

Definition at line 47 of file hyperedge.h.

◆ ConnEndListVector

typedef std::vector<ConnEndList> Avoid::ConnEndListVector

Definition at line 60 of file hyperedge.h.

◆ ConnRefList

typedef std::list< ConnRef * > Avoid::ConnRefList

A list of ConnRef objects.

Definition at line 48 of file connector.h.

◆ ConnRefListVector

typedef std::vector<ConnRefList> Avoid::ConnRefListVector

Definition at line 61 of file hyperedge.h.

◆ ConnRefSet

typedef std::set<ConnRef *> Avoid::ConnRefSet

Definition at line 56 of file hyperedge.h.

◆ ConnUpdateList

typedef std::list<std::pair<unsigned int, ConnEnd> > Avoid::ConnUpdateList

Definition at line 57 of file actioninfo.h.

◆ Constraints

typedef std::vector< Constraint * > Avoid::Constraints

Definition at line 83 of file vpsc.h.

◆ ContainsMap

typedef std::map<VertID, ShapeSet> Avoid::ContainsMap

Definition at line 218 of file vertices.h.

◆ CrossingConnectorsMap

typedef std::map<ConnRef *, std::set<ConnRef *> > Avoid::CrossingConnectorsMap

Definition at line 1078 of file router.cpp.

◆ CrossingConnectorsMapList

Definition at line 1081 of file router.cpp.

◆ CrossingsInfoPair

typedef std::pair<int, unsigned int> Avoid::CrossingsInfoPair

Definition at line 508 of file connector.h.

◆ EdgeInfList

typedef std::list<EdgeInf *> Avoid::EdgeInfList

Definition at line 44 of file vertices.h.

◆ FlagList

typedef std::list<bool *> Avoid::FlagList

Definition at line 43 of file graph.h.

◆ Heap

typedef std::priority_queue<Constraint*,std::vector<Constraint*>, CompareConstraints> Avoid::Heap

Definition at line 98 of file vpsc.h.

◆ IntList

typedef std::list<unsigned int> Avoid::IntList

Definition at line 58 of file router.h.

◆ JunctionHyperedgeTreeNodeMap

Definition at line 46 of file hyperedgeimprover.h.

◆ JunctionRefList

typedef std::list< JunctionRef * > Avoid::JunctionRefList

A list of JunctionRef objects.

Definition at line 53 of file hyperedge.h.

◆ JunctionRefListVector

Definition at line 62 of file hyperedge.h.

◆ JunctionRefVector

typedef std::vector<JunctionRef *> Avoid::JunctionRefVector

Definition at line 59 of file hyperedge.h.

◆ JunctionSet

typedef std::set< JunctionRef * > Avoid::JunctionSet

Definition at line 47 of file hyperedgeimprover.h.

◆ LayeredOrthogonalEdge

typedef std::pair<EdgeInf *, VertInf *> Avoid::LayeredOrthogonalEdge

Definition at line 46 of file mtst.h.

◆ LayeredOrthogonalEdgeList

Definition at line 47 of file mtst.h.

◆ LineReps

typedef std::list<LineRep> Avoid::LineReps

Definition at line 55 of file router.h.

◆ NodeIndexPairLinkList

typedef std::list<std::pair<size_t, size_t> > Avoid::NodeIndexPairLinkList

Definition at line 473 of file connector.h.

◆ NodeSet

typedef std::set<Node*,CmpNodePos> Avoid::NodeSet

Definition at line 76 of file scanline.h.

◆ ObstacleList

typedef std::list< Obstacle * > Avoid::ObstacleList

Definition at line 49 of file obstacle.h.

◆ OrderedHENodeSet

Definition at line 62 of file hyperedgetree.h.

◆ PenaltyType

Definition at line 170 of file router.h.

◆ PointList

typedef std::vector<Avoid::Point> Avoid::PointList

Definition at line 509 of file connector.h.

◆ PointRepVector

typedef std::vector< PtConnPtrPair > Avoid::PointRepVector

Definition at line 472 of file connector.h.

◆ PointSet

typedef std::set<Avoid::Point> Avoid::PointSet

Definition at line 498 of file connector.h.

◆ PolyLine

A multi-segment line, represented with the Polygon class.

Definition at line 328 of file geomtypes.h.

◆ PtConnPtrPair

typedef std::pair<Point *, ConnRef *> Avoid::PtConnPtrPair

Definition at line 470 of file connector.h.

◆ PtOrderMap

Definition at line 497 of file connector.h.

◆ RootSegmentsMap

Definition at line 44 of file hyperedgeimprover.h.

◆ ShapeConnectionPinSet

Definition at line 296 of file connectionpin.h.

◆ ShapeList

typedef std::list<int> Avoid::ShapeList

Definition at line 42 of file graph.h.

◆ ShapeRefList

typedef std::list<ShapeRef *> Avoid::ShapeRefList

Definition at line 53 of file shape.h.

◆ ShapeSet

typedef std::set<unsigned int> Avoid::ShapeSet

Definition at line 217 of file vertices.h.

◆ SharedPathList

typedef std::vector<PointList> Avoid::SharedPathList

Definition at line 510 of file connector.h.

◆ ShiftSegmentList

typedef std::list< ShiftSegment * > Avoid::ShiftSegmentList

Definition at line 43 of file hyperedgeimprover.h.

◆ SweepEdgeList

typedef std::list<EdgePair> Avoid::SweepEdgeList

Definition at line 316 of file visibility.cpp.

◆ Variables

typedef std::vector<Variable*> Avoid::Variables

Definition at line 82 of file vpsc.h.

◆ VarOffsetMapList

typedef std::list<std::map<Variable *, double> > Avoid::VarOffsetMapList

Definition at line 1397 of file vpsc.cpp.

◆ Vector

A vector, represented by the Point class.

Definition at line 128 of file geomtypes.h.

◆ VertexList

typedef std::list<VertInf *> Avoid::VertexList

Definition at line 55 of file hyperedge.h.

◆ VertexNodeMap

Definition at line 128 of file hyperedgetree.h.

◆ VertexPair

typedef std::pair<VertInf *, VertInf *> Avoid::VertexPair

Definition at line 45 of file vertices.h.

◆ VertexSet

typedef std::set<VertInf *> Avoid::VertexSet

Definition at line 57 of file hyperedge.h.

◆ VertexSetList

typedef std::list<VertexSet> Avoid::VertexSetList

Definition at line 44 of file mtst.h.

◆ VertexSetVector

typedef std::vector<VertexSet> Avoid::VertexSetVector

Definition at line 63 of file hyperedge.h.

◆ VertIDProps

typedef unsigned short Avoid::VertIDProps

Definition at line 48 of file vertices.h.

◆ VertSet

typedef std::set<PointPair > Avoid::VertSet

Definition at line 210 of file visibility.cpp.

Enumeration Type Documentation

◆ ActionType

Enumerator
ShapeMove 
ShapeAdd 
ShapeRemove 
JunctionMove 
JunctionAdd 
JunctionRemove 
ConnChange 
ConnectionPinChange 

Definition at line 46 of file actioninfo.h.

◆ ConnDirFlag

Flags that can be passed to the ConnEnd constructor to specify which sides of a shape this point should have visibility to if it is located within the shape's area.

Like SVG, libavoid considers the Y-axis to point downwards, that is, like screen coordinates the coordinates increase from left-to-right and also from top-to-bottom.

Enumerator
ConnDirNone 
ConnDirUp 

This option specifies the point should be given visibility to the top of the shape that it is located within.

ConnDirDown 

This option specifies the point should be given visibility to the bottom of the shape that it is located within.

ConnDirLeft 

This option specifies the point should be given visibility to the left side of the shape that it is located within.

ConnDirRight 

This option specifies the point should be given visibility to the right side of the shape that it is located within.

ConnDirAll 

This option, provided for convenience, specifies the point should be given visibility to all four sides of the shape that it is located within.

Definition at line 62 of file connend.h.

◆ ConnEndType

Types that describe the kind a connection that a ConnEnd represents.

Enumerator
ConnEndPoint 

The ConnEnd represents a free-floating point that may or may not have visibility in specific directions.

ConnEndShapePin 

The ConnEnd attaches to a specific ShapeConnectionPin on a shape.

ConnEndJunction 

The ConnEnd attaches to a junction.

ConnEndEmpty 

The ConnEnd is empty and doesn't have any information set.

Definition at line 89 of file connend.h.

◆ ConnType

Describes the type of routing that is performed for each connector.

Enumerator
ConnType_None 
ConnType_PolyLine 

The connector path will be a shortest-path poly-line that routes around obstacles.

ConnType_Orthogonal 

The connector path will be a shortest-path orthogonal poly-line (only vertical and horizontal line segments) that routes around obstacles.

Definition at line 53 of file connector.h.

◆ EventType

Enumerator
Open 
SegOpen 
ConnPoint 
SegClose 
Close 

Definition at line 108 of file scanline.h.

◆ RouterFlag

Flags that can be passed to the router during initialisation to specify options.

Enumerator
PolyLineRouting 

This option specifies that the router should maintain the structures necessary to allow poly-line connector routing.

OrthogonalRouting 

This option specifies that the router should maintain the structures necessary to allow orthogonal connector routing.

Definition at line 70 of file router.h.

◆ RoutingOption

Types of routing options that can be enabled.

Enumerator
nudgeOrthogonalSegmentsConnectedToShapes 

This option causes the final segments of connectors, which are attached to shapes, to be nudged apart.

Usually these segments are fixed, since they are considered to be attached to ports.

Defaults to false.

This option also causes routes running through the same checkpoint to be nudged apart.

This option has no effect if nudgeSharedPathsWithCommonEndPoint is set to false,

Note
This will allow routes to be nudged up to the bounds of shapes.
improveHyperedgeRoutesMovingJunctions 

This option causes hyperedge routes to be locally improved fixing obviously bad paths.

As part of this process libavoid will effectively move junctions, setting new ideal positions which can be accessed via JunctionRef::recommendedPosition() for each junction.

Defaults to true.

This will not add or remove junctions, so will keep the hyperedge topology the same. Better routes can be achieved by enabling the improveHyperedgeRoutesMovingAddingAndDeletingJunctions option.

If initial sensible positions for junctions in hyperedges are not known you can register those hyperedges with the HyperedgeRerouter class for complete rerouting.

See also
improveHyperedgeRoutesMovingAddingAndDeletingJunctions
Router::hyperedgeRerouter()
penaliseOrthogonalSharedPathsAtConnEnds 

This option penalises and attempts to reroute orthogonal shared connector paths terminating at a common junction or shape connection pin.

When multiple connector paths enter or leave the same side of a junction (or shape pin), the router will attempt to reroute these to different sides of the junction or different shape pins.

Defaults to false.

This option depends on the fixedSharedPathPenalty penalty having been set.

See also
fixedSharedPathPenalty
Note
This option is still experimental! It is not recommended for normal use.
nudgeOrthogonalTouchingColinearSegments 

This option can be used to control whether collinear line segments that touch just at their ends will be nudged apart.

The overlap will usually be resolved in the other dimension, so this is not usually required.

Defaults to false.

performUnifyingNudgingPreprocessingStep 

This option can be used to control whether the router performs a preprocessing step before orthogonal nudging where is tries to unify segments and centre them in free space.

This generally results in better quality ordering and nudging.

Defaults to true.

You may wish to turn this off for large examples where it can be very slow and will make little difference.

improveHyperedgeRoutesMovingAddingAndDeletingJunctions 

This option causes hyperedge routes to be locally improved fixing obviously bad paths.

It can cause junctions and connectors to be added or removed from hyperedges. To get details of these changes for each connector you can call Router::newAndDeletedObjectListsFromHyperedgeImprovement().

As part of this process libavoid will effectively move junctions by setting new ideal positions for each remaining or added junction, which can be read from JunctionRef::recommendedPosition() for each junction.

Defaults to false.

If set, this option overrides the improveHyperedgeRoutesMovingJunctions option.

If initial sensible positions for junctions in hyperedges are not known you can register those hyperedges with the HyperedgeRerouter class for complete rerouting.

See also
improveHyperedgeRoutesMovingJunctions
Router::hyperedgeRerouter()
nudgeSharedPathsWithCommonEndPoint 

This option determines whether intermediate segments of connectors that are attached to common endpoints will be nudged apart.

Usually these segments get nudged apart, but you may want to turn this off if you would prefer that entire shared paths terminating at a common end point should overlap.

Defaults to true.

lastRoutingOptionMarker 

Definition at line 174 of file router.h.

◆ RoutingParameter

Types of routing parameters and penalties that can be used to tailor the style and improve the quality of the connector routes produced.

Enumerator
segmentPenalty 

This penalty is applied for each segment in the connector path beyond the first.

This should always normally be set when doing orthogonal routing to prevent step-like connector paths.

Note
This penalty must be set (i.e., be greater than zero) in order for orthogonal connector nudging to be performed, since this requires reasonable initial routes.
anglePenalty 

This penalty is applied in its full amount to tight acute bends in the connector path.

A smaller portion of the penalty is applied for slight bends, i.e., where the bend is close to 180 degrees. This is useful for polyline routing where there is some evidence that tighter corners are worse for readability, but that slight bends might not be so bad, especially when smoothed by curves.

crossingPenalty 

This penalty is applied whenever a connector path crosses another connector path.

It takes shared paths into consideration and the penalty is only applied if there is an actual crossing.

Note
This penalty is still experimental! It is not recommended for normal use.
clusterCrossingPenalty 

This penalty is applied whenever a connector path crosses a cluster boundary.

Note
This penalty is still experimental! It is not recommended for normal use.
This penalty is very slow. You can override the method Router::shouldContinueTransactionWithProgress() to check progress and possibly cancel overly slow transactions.
fixedSharedPathPenalty 

This penalty is applied whenever a connector path shares some segments with an immovable portion of an existing connector route (such as the first or last segment of a connector).

Note
This penalty is still experimental! It is not recommended for normal use.
portDirectionPenalty 

This penalty is applied to port selection choice when the other end of the connector being routed does not appear in any of the 90 degree visibility cones centered on the visibility directions for the port.

Note
This penalty is still experimental! It is not recommended for normal use.
This penalty is very slow. You can override the method Router::shouldContinueTransactionWithProgress() to check progress and possibly cancel overly slow transactions.
shapeBufferDistance 

This parameter defines the spacing distance that will be added to the sides of each shape when determining obstacle sizes for routing.

This controls how closely connectors pass shapes, and can be used to prevent connectors overlapping with shape boundaries. By default, this distance is set to a value of 0.

idealNudgingDistance 

This parameter defines the spacing distance that will be used for nudging apart overlapping corners and line segments of connectors.

By default, this distance is set to a value of 4.

reverseDirectionPenalty 

This penalty is applied whenever a connector path travels in the direction opposite of the destination from the source endpoint.

By default this penalty is set to zero. This shouldn't be needed in most cases but can be useful if you use penalties such as crossingPenalty which cause connectors to loop around obstacles.

lastRoutingParameterMarker 

Definition at line 88 of file router.h.

◆ ShapeTransformationType

Describes the type of transformation that has been applied to a shape having its transformConnectionPinPositions() method called.

Enumerator
TransformationType_CW90 

The shape has been rotated clockwise by 90 degrees.

TransformationType_CW180 

The shape has been rotated clockwise by 180 degrees.

TransformationType_CW270 

The shape has been rotated clockwise by 270 degrees.

TransformationType_FlipX 

The shape has been flipped horizontally in the X-dimension.

TransformationType_FlipY 

The shape has been flipped vertically in the Y-dimension.

Definition at line 57 of file shape.h.

◆ TimerIndex

Enumerator
tmAdd 
tmDel 
tmMov 
tmPth 
tmOrthogGraph 
tmOrthogRoute 
tmOrthogCentre 
tmOrthogNudge 
tmHyperedgeForest 
tmHyperedgeMTST 
tmHyperedgeImprove 
tmHyperedgeAlt 
tmCount 

Definition at line 51 of file timer.h.

◆ TransactionPhases

Types of routing phases reported by Router::shouldContinueTransactionWithProgress().

This phases will occur in the order given here, but each phase may take varying amounts of time.

Enumerator
TransactionPhaseOrthogonalVisibilityGraphScanX 

The orthogonal visibility graph is built by conducting a scan in each dimension.

This is the x-dimension.

TransactionPhaseOrthogonalVisibilityGraphScanY 

The orthogonal visibility graph is built by conducting a scan in each dimension.

This is the y-dimension.

TransactionPhaseRouteSearch 

Initial routes are searched for in the visibility graph.

TransactionPhaseCrossingDetection 

With crossing penalties enabled, crossing detection is performed to find all crossings.

TransactionPhaseRerouteSearch 

Crossing connectors are rerouted to search for better routes.

TransactionPhaseOrthogonalNudgingX 

Orthogonal edge segments are nudged apart in the x-dimension.

TransactionPhaseOrthogonalNudgingY 

Orthogonal edge segments are nudged apart in the y-dimension.

TransactionPhaseCompleted 

Not a real phase, but represents the router is finished (or has aborted) the transaction and you may interact with is again.

Definition at line 299 of file router.h.

Function Documentation

◆ absoluteOffsetInverse()

static double Avoid::absoluteOffsetInverse ( double  offset,
const Box shapeBox,
size_t  toDim 
)
static

◆ angle()

double Avoid::angle ( const Point a,
const Point b,
const Point c 
)

Definition at line 330 of file geometry.cpp.

References c, Avoid::Point::x, and Avoid::Point::y.

Referenced by Avoid::ConnEnd::assignPinVisibilityTo().

◆ AngleAFromThreeSides()

static double Avoid::AngleAFromThreeSides ( const double  a,
const double  b,
const double  c 
)
static

Definition at line 1754 of file router.cpp.

References c.

◆ angleBetween()

static double Avoid::angleBetween ( const Point p1,
const Point p2,
const Point p3 
)
static

Definition at line 194 of file makepath.cpp.

References CrossLength(), Dot(), Avoid::Point::x, and Avoid::Point::y.

Referenced by cost().

◆ bends()

int Avoid::bends ( const Point curr,
unsigned int  currDir,
const Point dest,
unsigned int  destDir 
)

Definition at line 646 of file makepath.cpp.

References dirLeft(), dirReverse(), dirRight(), and orthogonalDirection().

Referenced by estimatedCostSpecific().

◆ buildConnectorRouteCheckpointCache()

◆ buildOrthogonalChannelInfo()

void Avoid::buildOrthogonalChannelInfo ( Router router,
const size_t  dim,
ShiftSegmentList segmentList 
)

◆ cheapEstimatedCost()

static double Avoid::cheapEstimatedCost ( ConnRef lineRef)
static

◆ clearConnectorRouteCheckpointCache()

void Avoid::clearConnectorRouteCheckpointCache ( Router router)

◆ CmpHyperedgeSegmentDirOrder()

static bool Avoid::CmpHyperedgeSegmentDirOrder ( const ShiftSegment lhsSuper,
const ShiftSegment rhsSuper 
)
static

Definition at line 253 of file hyperedgeimprover.cpp.

◆ colinear()

bool Avoid::colinear ( const Point a,
const Point b,
const Point c,
const double  tolerance 
)

◆ compare_events()

int Avoid::compare_events ( const void *  a,
const void *  b 
)

Definition at line 294 of file scanline.cpp.

References Avoid::Event::pos, Avoid::Event::type, and Avoid::Event::v.

Referenced by buildOrthogonalChannelInfo().

◆ constraintsRemovingRedundantEqualities()

Constraints Avoid::constraintsRemovingRedundantEqualities ( Variables const &  vars,
Constraints const &  constraints 
)

Definition at line 1468 of file vpsc.cpp.

References c.

◆ constructPolygonPath()

static void Avoid::constructPolygonPath ( Polygon connRoute,
VertInf inf2,
VertInf inf3,
ANode *  inf1Node 
)
static

Definition at line 212 of file makepath.cpp.

References Avoid::Point::id, Avoid::VertInf::point, Avoid::Polygon::ps, Avoid::Polygon::size(), and vecDir().

Referenced by cost().

◆ cornerSide()

int Avoid::cornerSide ( const Point c1,
const Point c2,
const Point c3,
const Point p 
)

Definition at line 261 of file geometry.cpp.

References vecDir().

Referenced by Avoid::ConnectorCrossings::countForSegment().

◆ cost()

◆ CrossLength()

static double Avoid::CrossLength ( const Point l,
const Point r 
)
static

Definition at line 185 of file makepath.cpp.

References Avoid::Point::x, and Avoid::Point::y.

Referenced by angleBetween().

◆ db_printf()

◆ dimDirection()

static int Avoid::dimDirection ( double  difference)
inlinestatic

Definition at line 290 of file makepath.cpp.

Referenced by cost().

◆ directVis()

◆ dirLeft()

static unsigned int Avoid::dirLeft ( unsigned int  direction)
static

Definition at line 589 of file makepath.cpp.

References CostDirectionE, CostDirectionN, CostDirectionS, and CostDirectionW.

Referenced by bends().

◆ dirReverse()

static unsigned int Avoid::dirReverse ( unsigned int  direction)
static

Definition at line 614 of file makepath.cpp.

References CostDirectionE, CostDirectionN, CostDirectionS, and CostDirectionW.

Referenced by bends().

◆ dirRight()

static unsigned int Avoid::dirRight ( unsigned int  direction)
static

Definition at line 564 of file makepath.cpp.

References CostDirectionE, CostDirectionN, CostDirectionS, and CostDirectionW.

Referenced by bends().

◆ dist()

◆ Dot()

static double Avoid::Dot ( const Point l,
const Point r 
)
static

Definition at line 180 of file makepath.cpp.

References Avoid::Point::x, and Avoid::Point::y.

Referenced by angleBetween().

◆ dummyOrthogID()

◆ dummyOrthogShapeID()

static const VertID Avoid::dummyOrthogShapeID ( ,
,
VertID::PROP_OrthShapeEdge   
)
static

◆ err_printf()

◆ estimatedCostSpecific()

static double Avoid::estimatedCostSpecific ( ConnRef lineRef,
const Point last,
const Point curr,
const VertInf costTar,
const unsigned int  costTarDirs 
)
static

◆ euclideanDist()

◆ generateStaticOrthogonalVisGraph()

void Avoid::generateStaticOrthogonalVisGraph ( Router router)
extern

◆ improveOrthogonalRoutes()

void Avoid::improveOrthogonalRoutes ( Router router)
extern

◆ inBetween()

bool Avoid::inBetween ( const Point a,
const Point b,
const Point c 
)

Definition at line 55 of file geometry.cpp.

References c, vecDir(), Avoid::Point::x, and Avoid::Point::y.

Referenced by pointOnLine().

◆ inPoly()

bool Avoid::inPoly ( const Polygon poly,
const Point q,
bool  countBorder 
)

◆ inPolyGen()

bool Avoid::inPolyGen ( const PolygonInterface argpoly,
const Point q 
)

◆ inValidRegion()

bool Avoid::inValidRegion ( bool  IgnoreRegions,
const Point a0,
const Point a1,
const Point a2,
const Point b 
)

Definition at line 199 of file geometry.cpp.

References vecDir().

Referenced by Avoid::EdgeInf::checkVis(), and vertexSweep().

◆ manhattanDist()

double Avoid::manhattanDist ( const Point a,
const Point b 
)

◆ midpoint()

Point Avoid::midpoint ( Point  a,
Point  b 
)

Definition at line 683 of file connector.cpp.

References midpoint(), Avoid::Point::x, and Avoid::Point::y.

Referenced by midpoint(), and Avoid::ConnRef::splitAtSegment().

◆ midVertexNumber()

static int Avoid::midVertexNumber ( const Point p0,
const Point p1,
const Point c 
)
static

◆ operator<<() [1/4]

ostream & Avoid::operator<< ( std::ostream &  os,
const Block b 
)

Definition at line 1281 of file vpsc.cpp.

◆ operator<<() [2/4]

ostream & Avoid::operator<< ( std::ostream &  os,
const VertID vID 
)

Definition at line 149 of file vertices.cpp.

◆ operator<<() [3/4]

std::ostream & Avoid::operator<< ( std::ostream &  os,
const Constraint c 
)

Definition at line 1340 of file vpsc.cpp.

◆ operator<<() [4/4]

std::ostream & Avoid::operator<< ( std::ostream &  os,
const Variable v 
)

Definition at line 1389 of file vpsc.cpp.

◆ orthogonalDirection()

static unsigned int Avoid::orthogonalDirection ( const Point a,
const Point b 
)
static

◆ orthogonalDirectionsCount()

static unsigned int Avoid::orthogonalDirectionsCount ( const unsigned int  directions)
static

Definition at line 515 of file makepath.cpp.

References CostDirectionE, CostDirectionN, CostDirectionS, and CostDirectionW.

Referenced by estimatedCostSpecific().

◆ orthogTurnOrder()

static int Avoid::orthogTurnOrder ( const Point a,
const Point b,
const Point c 
)
inlinestatic

Definition at line 85 of file graph.cpp.

References c, vecDir(), Avoid::Point::x, and Avoid::Point::y.

Referenced by Avoid::EdgeInf::rotationLessThan().

◆ pathLength()

static double Avoid::pathLength ( Avoid::Point **  c_path,
Avoid::Point **  p_path,
size_t  size 
)
static

Definition at line 1721 of file connector.cpp.

References manhattanDist(), and size.

Referenced by Avoid::ConnectorCrossings::countForSegment().

◆ pointAlignedWithOneOf()

static bool Avoid::pointAlignedWithOneOf ( const Point point,
const std::vector< Point > &  points,
const size_t  dim 
)
inlinestatic

Definition at line 899 of file makepath.cpp.

◆ pointOnLine()

bool Avoid::pointOnLine ( const Point a,
const Point b,
const Point c,
const double  tolerance 
)

◆ posInlineWithConnEndSegs()

static bool Avoid::posInlineWithConnEndSegs ( const double  pos,
const size_t  dim,
const Avoid::Polygon poly,
const Avoid::Polygon conn 
)
static

◆ printDirections()

static void Avoid::printDirections ( FILE *  fp,
unsigned int  directions 
)
static

Definition at line 493 of file makepath.cpp.

References CostDirectionE, CostDirectionN, CostDirectionS, and CostDirectionW.

◆ processShiftEvent()

static void Avoid::processShiftEvent ( NodeSet scanline,
Event e,
size_t  dim,
unsigned int  pass 
)
static

◆ projection()

static Point Avoid::projection ( const Point a,
const Point b,
const Point c 
)
inlinestatic

Definition at line 99 of file geometry.h.

References c, Avoid::Point::x, and Avoid::Point::y.

◆ rayIntersectPoint()

int Avoid::rayIntersectPoint ( const Point a1,
const Point a2,
const Point b1,
const Point b2,
double *  x,
double *  y 
)

Definition at line 576 of file geometry.cpp.

References DO_INTERSECT, num, PARALLEL, Avoid::Point::x, and Avoid::Point::y.

◆ reduceRange()

static void Avoid::reduceRange ( double &  val)
static

Definition at line 2163 of file router.cpp.

References LIMIT.

Referenced by Avoid::Router::outputDiagramSVG(), and Avoid::Router::outputInstanceToSVG().

◆ rotationalAngle()

double Avoid::rotationalAngle ( const Point p)

Definition at line 611 of file geometry.cpp.

References ang(), Avoid::Point::x, and Avoid::Point::y.

Referenced by Avoid::ConnEnd::assignPinVisibilityTo().

◆ segDir()

static int Avoid::segDir ( const Point p1,
const Point p2 
)
static

Definition at line 1653 of file connector.cpp.

References result, Avoid::Point::x, and Avoid::Point::y.

Referenced by Avoid::ConnectorCrossings::countForSegment().

◆ segmentIntersect()

bool Avoid::segmentIntersect ( const Point a,
const Point b,
const Point c,
const Point d 
)

Definition at line 132 of file geometry.cpp.

References c, and vecDir().

Referenced by directVis(), segmentShapeIntersect(), and vertexSweep().

◆ segmentIntersectPoint()

int Avoid::segmentIntersectPoint ( const Point a1,
const Point a2,
const Point b1,
const Point b2,
double *  x,
double *  y 
)

◆ segmentShapeIntersect()

bool Avoid::segmentShapeIntersect ( const Point e1,
const Point e2,
const Point s1,
const Point s2,
bool &  seenIntersectionAtEndpoint 
)

◆ shorten_line()

static void Avoid::shorten_line ( double &  x1,
double &  y1,
double &  x2,
double &  y2,
const unsigned int  mode,
const double  shorten_length 
)
static

Definition at line 415 of file geomtypes.cpp.

References mode, SHORTEN_BOTH, SHORTEN_END, SHORTEN_NONE, SHORTEN_START, and sign().

Referenced by Avoid::Polygon::curvedPolyline().

◆ splitBranchingSegments()

void Avoid::splitBranchingSegments ( Avoid::Polygon poly,
bool  polyIsConn,
Avoid::Polygon conn,
const double  tolerance 
)

◆ sweepVisible()

static bool Avoid::sweepVisible ( SweepEdgeList T,
const PointPair &  point,
std::set< unsigned int > &  onBorderIDs,
int *  blocker 
)
static

Definition at line 350 of file visibility.cpp.

References Avoid::Router::contains, end, and visible.

Referenced by vertexSweep().

◆ totalLength()

double Avoid::totalLength ( const Polygon poly)

Definition at line 319 of file geometry.cpp.

References dist(), Avoid::Polygon::ps, and Avoid::Polygon::size().

◆ travellingForwardOnConnector()

static bool Avoid::travellingForwardOnConnector ( ConnRef conn,
JunctionRef junction 
)
static

◆ unitNormalForEdge()

static Point Avoid::unitNormalForEdge ( const Point pt1,
const Point pt2 
)
static

Definition at line 289 of file geomtypes.cpp.

References Avoid::Point::x, and Avoid::Point::y.

Referenced by Avoid::PolygonInterface::offsetPolygon().

◆ validateBendPoint()

◆ vecDir()

static int Avoid::vecDir ( const Point a,
const Point b,
const Point c,
const double  maybeZero = 0.0 
)
inlinestatic

◆ vertexSweep()

◆ vertexVisibility()

Variable Documentation

◆ ATTACH_POS_BOTTOM

const double Avoid::ATTACH_POS_BOTTOM = 1
static

◆ ATTACH_POS_CENTRE

const double Avoid::ATTACH_POS_CENTRE = 0.5
static

Definition at line 58 of file connectionpin.h.

Referenced by main().

◆ ATTACH_POS_LEFT

const double Avoid::ATTACH_POS_LEFT = ATTACH_POS_TOP
static

◆ ATTACH_POS_MAX_OFFSET

const double Avoid::ATTACH_POS_MAX_OFFSET = -1
static

Definition at line 64 of file connectionpin.h.

Referenced by absoluteOffsetInverse(), and Avoid::ShapeConnectionPin::position().

◆ ATTACH_POS_MIN_OFFSET

const double Avoid::ATTACH_POS_MIN_OFFSET = 0
static

Definition at line 63 of file connectionpin.h.

Referenced by absoluteOffsetInverse(), and Avoid::ShapeConnectionPin::position().

◆ ATTACH_POS_RIGHT

const double Avoid::ATTACH_POS_RIGHT = ATTACH_POS_BOTTOM
static

◆ ATTACH_POS_TOP

const double Avoid::ATTACH_POS_TOP = 0
static

◆ CHANNEL_MAX

const double Avoid::CHANNEL_MAX = 100000000
static

Definition at line 37 of file scanline.h.

◆ chooseSensibleParamValue

const double Avoid::chooseSensibleParamValue = -1
static

Definition at line 344 of file router.h.

◆ CONNECTIONPIN_CENTRE

const unsigned int Avoid::CONNECTIONPIN_CENTRE = INT_MAX - 1
static

Definition at line 45 of file connectionpin.h.

Referenced by Avoid::JunctionRef::JunctionRef(), and main().

◆ CONNECTIONPIN_UNSET

const unsigned int Avoid::CONNECTIONPIN_UNSET = INT_MAX
static

◆ CostDirectionE

const unsigned int Avoid::CostDirectionE = 2
static

◆ CostDirectionN

const unsigned int Avoid::CostDirectionN = 1
static

◆ CostDirectionS

const unsigned int Avoid::CostDirectionS = 4
static

◆ CostDirectionW

const unsigned int Avoid::CostDirectionW = 8
static

◆ CROSSING_NONE

const unsigned int Avoid::CROSSING_NONE = 0

Definition at line 501 of file connector.h.

Referenced by Avoid::ConnectorCrossings::clear().

◆ CROSSING_SHARES_FIXED_SEGMENT

const unsigned int Avoid::CROSSING_SHARES_FIXED_SEGMENT = 8

◆ CROSSING_SHARES_PATH

◆ CROSSING_SHARES_PATH_AT_END

◆ CROSSING_TOUCHES

const unsigned int Avoid::CROSSING_TOUCHES = 1

◆ DO_INTERSECT

const int Avoid::DO_INTERSECT = 1
static

◆ DONT_INTERSECT

const int Avoid::DONT_INTERSECT = 0
static

Definition at line 116 of file geometry.h.

Referenced by segmentIntersectPoint().

◆ kShapeConnectionPin

const unsigned short Avoid::kShapeConnectionPin = 9
static

◆ kUnassignedVertexNumber

const unsigned short Avoid::kUnassignedVertexNumber = 8
static

◆ LAGRANGIAN_TOLERANCE

const double Avoid::LAGRANGIAN_TOLERANCE =-1e-4
static

Definition at line 58 of file vpsc.cpp.

Referenced by Avoid::IncSolver::splitBlocks().

◆ LIMIT

const double Avoid::LIMIT = 100000000
static

◆ PARALLEL

const int Avoid::PARALLEL = 3
static

Definition at line 118 of file geometry.h.

Referenced by rayIntersectPoint(), and segmentIntersectPoint().

◆ runningFrom

const unsigned int Avoid::runningFrom = 2
static

Definition at line 82 of file router.h.

Referenced by Avoid::Router::attachedConns(), and Avoid::Router::attachedShapes().

◆ runningTo

const unsigned int Avoid::runningTo = 1
static

Definition at line 81 of file router.h.

Referenced by Avoid::Router::attachedConns(), and Avoid::Router::attachedShapes().

◆ runningToAndFrom

const unsigned int Avoid::runningToAndFrom = runningTo | runningFrom
static

Definition at line 83 of file router.h.

◆ SHORTEN_BOTH

const unsigned int Avoid::SHORTEN_BOTH = SHORTEN_START | SHORTEN_END
static

Definition at line 408 of file geomtypes.cpp.

Referenced by Avoid::Polygon::curvedPolyline(), and shorten_line().

◆ SHORTEN_END

const unsigned int Avoid::SHORTEN_END = 2
static

Definition at line 407 of file geomtypes.cpp.

Referenced by Avoid::Polygon::curvedPolyline(), and shorten_line().

◆ SHORTEN_NONE

const unsigned int Avoid::SHORTEN_NONE = 0
static

Definition at line 405 of file geomtypes.cpp.

Referenced by shorten_line().

◆ SHORTEN_START

const unsigned int Avoid::SHORTEN_START = 1
static

Definition at line 406 of file geomtypes.cpp.

Referenced by Avoid::Polygon::curvedPolyline(), and shorten_line().

◆ TIMER_VARIABLES_COUNT

const size_t Avoid::TIMER_VARIABLES_COUNT = 2
static

◆ timerDelay

const bool Avoid::timerDelay = false
static

Definition at line 69 of file timer.h.

◆ timerNames

const char* Avoid::timerNames[]
static
Initial value:
=
{
"Adds",
"Dels",
"Movs",
"Pths",
"OrthogGraph",
"OrthogRoute",
"OrthogCentre",
"OrthogNudge",
"HyperedgeForest",
"HyperedgeMTST",
"HyperedgeImprove",
"HyperedgeAlt"
}

Definition at line 109 of file timer.cpp.

Referenced by Avoid::Timer::printAll().

◆ timerStart

const bool Avoid::timerStart = true
static

Definition at line 68 of file timer.h.

◆ XDIM

◆ XH_CONN

const unsigned int Avoid::XH_CONN = 8
static

Definition at line 179 of file vertices.h.

◆ XH_EDGE

const unsigned int Avoid::XH_EDGE = 4
static

Definition at line 178 of file vertices.h.

◆ XL_CONN

const unsigned int Avoid::XL_CONN = 2
static

Definition at line 177 of file vertices.h.

◆ XL_EDGE

const unsigned int Avoid::XL_EDGE = 1
static

Definition at line 176 of file vertices.h.

◆ YDIM

◆ YH_CONN

const unsigned int Avoid::YH_CONN = 128
static

Definition at line 183 of file vertices.h.

◆ YH_EDGE

const unsigned int Avoid::YH_EDGE = 64
static

Definition at line 182 of file vertices.h.

◆ YL_CONN

const unsigned int Avoid::YL_CONN = 32
static

Definition at line 181 of file vertices.h.

◆ YL_EDGE

const unsigned int Avoid::YL_EDGE = 16
static

Definition at line 180 of file vertices.h.

◆ ZERO_UPPERBOUND

const double Avoid::ZERO_UPPERBOUND =-1e-10
static

Definition at line 57 of file vpsc.cpp.

Referenced by Avoid::IncSolver::mostViolated(), and Avoid::IncSolver::satisfy().

◆ zeroParamValue

const double Avoid::zeroParamValue = 0
static

Definition at line 343 of file router.h.