From fd733201b82f39655488a286c89142f321ef9dc9 Mon Sep 17 00:00:00 2001 From: Sylvain Chiron Date: Sat, 1 Jul 2017 13:36:41 +0200 Subject: Updated libs from the Adaptagrams project: libavoid, libcola and libvspc; changed the code to match the new API Signed-off-by: Sylvain Chiron --- src/libavoid/tests/improveHyperedge02.cpp | 90 +++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 src/libavoid/tests/improveHyperedge02.cpp (limited to 'src/libavoid/tests/improveHyperedge02.cpp') diff --git a/src/libavoid/tests/improveHyperedge02.cpp b/src/libavoid/tests/improveHyperedge02.cpp new file mode 100644 index 000000000..9eb1d2b6e --- /dev/null +++ b/src/libavoid/tests/improveHyperedge02.cpp @@ -0,0 +1,90 @@ +#include "libavoid/libavoid.h" +using namespace Avoid; +int main(void) { + Router *router = new Router( + PolyLineRouting | OrthogonalRouting); + router->setRoutingPenalty((PenaltyType)0, 50); + router->setRoutingPenalty((PenaltyType)1, 0); + router->setRoutingPenalty((PenaltyType)2, 200); + router->setRoutingPenalty((PenaltyType)3, 4000); + router->setRoutingPenalty((PenaltyType)4, 9000); + router->setRoutingPenalty((PenaltyType)5, 100); + router->setRoutingOption((RoutingOption)0, false); + router->setRoutingOption((RoutingOption)1, true); + router->setRoutingOption((RoutingOption)2, true); + router->setRoutingOption(improveHyperedgeRoutesMovingAddingAndDeletingJunctions, true); + router->setRoutingParameter(idealNudgingDistance, 25); + + Polygon poly39761567(4); + poly39761567.ps[0] = Point(50754, 50975); + poly39761567.ps[1] = Point(50754, 51060); + poly39761567.ps[2] = Point(50696, 51060); + poly39761567.ps[3] = Point(50696, 50975); + ShapeRef *shapeRef39761567 = new ShapeRef(router, poly39761567, 39761567); + new ShapeConnectionPin(shapeRef39761567, 1, 0.5, 0, true, 10, (ConnDirFlags) 1); + + Polygon poly115776716(4); + poly115776716.ps[0] = Point(51504, 50975); + poly115776716.ps[1] = Point(51504, 51060); + poly115776716.ps[2] = Point(51446, 51060); + poly115776716.ps[3] = Point(51446, 50975); + ShapeRef *shapeRef115776716 = new ShapeRef(router, poly115776716, 115776716); + new ShapeConnectionPin(shapeRef115776716, 1, 0.5, 0, true, 10, (ConnDirFlags) 1); + + Polygon poly238475293(4); + poly238475293.ps[0] = Point(50554, 50975); + poly238475293.ps[1] = Point(50554, 51060); + poly238475293.ps[2] = Point(50496, 51060); + poly238475293.ps[3] = Point(50496, 50975); + ShapeRef *shapeRef238475293 = new ShapeRef(router, poly238475293, 238475293); + new ShapeConnectionPin(shapeRef238475293, 1, 0.5, 0, true, 10, (ConnDirFlags) 1); + + Polygon poly430971008(4); + poly430971008.ps[0] = Point(51004, 50465); + poly430971008.ps[1] = Point(51004, 50550); + poly430971008.ps[2] = Point(50946, 50550); + poly430971008.ps[3] = Point(50946, 50465); + ShapeRef *shapeRef430971008 = new ShapeRef(router, poly430971008, 430971008); + new ShapeConnectionPin(shapeRef430971008, 1, 0.5, 1, true, 10, (ConnDirFlags) 2); + + JunctionRef *junctionRef513246008 = new JunctionRef(router, Point(50925, 50725), 513246008); + /* + // This may be useful if junction pins are modified. + new ShapeConnectionPin(junctionRef513246008, 2147483646, (ConnDirFlags) 15); + */ + + ConnRef *connRef513246009 = new ConnRef(router, 513246009); + ConnEnd srcPt513246009(shapeRef39761567, 1); + connRef513246009->setSourceEndpoint(srcPt513246009); + ConnEnd dstPt513246009(junctionRef513246008); + connRef513246009->setDestEndpoint(dstPt513246009); + connRef513246009->setRoutingType((ConnType)2); + + ConnRef *connRef513246010 = new ConnRef(router, 513246010); + ConnEnd srcPt513246010(junctionRef513246008); + connRef513246010->setSourceEndpoint(srcPt513246010); + ConnEnd dstPt513246010(shapeRef430971008, 1); + connRef513246010->setDestEndpoint(dstPt513246010); + connRef513246010->setRoutingType((ConnType)2); + + ConnRef *connRef513246011 = new ConnRef(router, 513246011); + ConnEnd srcPt513246011(junctionRef513246008); + connRef513246011->setSourceEndpoint(srcPt513246011); + ConnEnd dstPt513246011(shapeRef238475293, 1); + connRef513246011->setDestEndpoint(dstPt513246011); + connRef513246011->setRoutingType((ConnType)2); + + ConnRef *connRef513246012 = new ConnRef(router, 513246012); + ConnEnd srcPt513246012(shapeRef115776716, 1); + connRef513246012->setSourceEndpoint(srcPt513246012); + ConnEnd dstPt513246012(junctionRef513246008); + connRef513246012->setDestEndpoint(dstPt513246012); + connRef513246012->setRoutingType((ConnType)2); + + router->processTransaction(); + router->outputDiagram("output/improveHyperedge02"); + + bool overlaps = router->existsOrthogonalSegmentOverlap(true); + delete router; + return (overlaps) ? 1 : 0; +}; -- cgit v1.2.3