int main(void) {
    Router *router = new Router(OrthogonalRouting);
    router->setRoutingParameter((RoutingParameter)0, 10);
    router->setRoutingParameter((RoutingParameter)1, 0);
    router->setRoutingParameter((RoutingParameter)2, 1000);
    router->setRoutingParameter((RoutingParameter)3, 4000);
    router->setRoutingParameter((RoutingParameter)4, 0);
    router->setRoutingParameter((RoutingParameter)5, 100);
    router->setRoutingParameter((RoutingParameter)6, 1);
    router->setRoutingParameter((RoutingParameter)7, 10);
    router->setRoutingParameter(reverseDirectionPenalty, 500);
    router->setRoutingOption((RoutingOption)0, false);
    router->setRoutingOption((RoutingOption)1, true);
    router->setRoutingOption((RoutingOption)2, false);
    router->setRoutingOption((RoutingOption)3, false);
    router->setRoutingOption((RoutingOption)4, true);
    router->setRoutingOption((RoutingOption)5, true);
    Polygon polygon;
    ConnRef *connRef = NULL;
    ConnEnd srcPt;
    ConnEnd dstPt;
    PolyLine newRoute;
    // shapeRef1
    polygon = Polygon(4);
    polygon.ps[0] = Point(0, 0);
    polygon.ps[1] = Point(0, 0);
    polygon.ps[2] = Point(0, 0);
    polygon.ps[3] = Point(0, 0);
    new ShapeRef(router, polygon, 1);

    // shapeRef2
    polygon = Polygon(4);
    polygon.ps[0] = Point(0, 0);
    polygon.ps[1] = Point(0, 0);
    polygon.ps[2] = Point(0, 0);
    polygon.ps[3] = Point(0, 0);
    new ShapeRef(router, polygon, 2);

    // shapeRef3
    polygon = Polygon(4);
    polygon.ps[0] = Point(0, 0);
    polygon.ps[1] = Point(0, 0);
    polygon.ps[2] = Point(0, 0);
    polygon.ps[3] = Point(0, 0);
    new ShapeRef(router, polygon, 3);

    // shapeRef4
    polygon = Polygon(4);
    polygon.ps[0] = Point(0, 0);
    polygon.ps[1] = Point(0, 0);
    polygon.ps[2] = Point(0, 0);
    polygon.ps[3] = Point(0, 0);
    new ShapeRef(router, polygon, 4);

    // shapeRef5
    polygon = Polygon(4);
    polygon.ps[0] = Point(501, 345);
    polygon.ps[1] = Point(501, 404);
    polygon.ps[2] = Point(421, 404);
    polygon.ps[3] = Point(421, 345);
    ShapeRef *shapeRef5 = new ShapeRef(router, polygon, 5);
    new ShapeConnectionPin(shapeRef5, 5, 1, 0.652542, true, 0, (ConnDirFlags) 8);
    new ShapeConnectionPin(shapeRef5, 6, 0, 0.79096, true, 0, (ConnDirFlags) 4);
    new ShapeConnectionPin(shapeRef5, 7, 0, 0.514124, true, 0, (ConnDirFlags) 4);

    // shapeRef6
    polygon = Polygon(4);
    polygon.ps[0] = Point(94, 251.5);
    polygon.ps[1] = Point(94, 315.5);
    polygon.ps[2] = Point(12, 315.5);
    polygon.ps[3] = Point(12, 251.5);
    ShapeRef *shapeRef6 = new ShapeRef(router, polygon, 6);
    new ShapeConnectionPin(shapeRef6, 8, 1, 0.640625, true, 0, (ConnDirFlags) 8);
    new ShapeConnectionPin(shapeRef6, 9, 0, 0.640625, true, 0, (ConnDirFlags) 4);

    // shapeRef7
    polygon = Polygon(4);
    polygon.ps[0] = Point(634.366, 262);
    polygon.ps[1] = Point(634.366, 305);
    polygon.ps[2] = Point(416.366, 305);
    polygon.ps[3] = Point(416.366, 262);
    ShapeRef *shapeRef7 = new ShapeRef(router, polygon, 7);
    new ShapeConnectionPin(shapeRef7, 10, 1, 0.709302, true, 0, (ConnDirFlags) 8);
    new ShapeConnectionPin(shapeRef7, 11, 0, 0.709302, true, 0, (ConnDirFlags) 4);

    // shapeRef8
    polygon = Polygon(4);
    polygon.ps[0] = Point(324, 147.167);
    polygon.ps[1] = Point(324, 206.167);
    polygon.ps[2] = Point(236, 206.167);
    polygon.ps[3] = Point(236, 147.167);
    ShapeRef *shapeRef8 = new ShapeRef(router, polygon, 8);
    new ShapeConnectionPin(shapeRef8, 12, 1, 0.652542, true, 0, (ConnDirFlags) 8);
    new ShapeConnectionPin(shapeRef8, 13, 0, 0.79096, true, 0, (ConnDirFlags) 4);
    new ShapeConnectionPin(shapeRef8, 14, 0, 0.514124, true, 0, (ConnDirFlags) 4);

    // shapeRef9
    polygon = Polygon(4);
    polygon.ps[0] = Point(816, 353.167);
    polygon.ps[1] = Point(816, 412.167);
    polygon.ps[2] = Point(735, 412.167);
    polygon.ps[3] = Point(735, 353.167);
    ShapeRef *shapeRef9 = new ShapeRef(router, polygon, 9);
    new ShapeConnectionPin(shapeRef9, 15, 1, 0.514124, true, 0, (ConnDirFlags) 8);
    new ShapeConnectionPin(shapeRef9, 16, 1, 0.79096, true, 0, (ConnDirFlags) 8);
    new ShapeConnectionPin(shapeRef9, 17, 0, 0.79096, true, 0, (ConnDirFlags) 4);
    new ShapeConnectionPin(shapeRef9, 18, 0, 0.514124, true, 0, (ConnDirFlags) 4);

    // shapeRef10
    polygon = Polygon(4);
    polygon.ps[0] = Point(981, 263.833);
    polygon.ps[1] = Point(981, 321.833);
    polygon.ps[2] = Point(828, 321.833);
    polygon.ps[3] = Point(828, 263.833);
    ShapeRef *shapeRef10 = new ShapeRef(router, polygon, 10);
    new ShapeConnectionPin(shapeRef10, 19, 0, 0.655172, true, 0, (ConnDirFlags) 4);

    // shapeRef11
    polygon = Polygon(4);
    polygon.ps[0] = Point(1011.49, 361.833);
    polygon.ps[1] = Point(1011.49, 419.833);
    polygon.ps[2] = Point(834.489, 419.833);
    polygon.ps[3] = Point(834.489, 361.833);
    ShapeRef *shapeRef11 = new ShapeRef(router, polygon, 11);
    new ShapeConnectionPin(shapeRef11, 20, 0, 0.655172, true, 0, (ConnDirFlags) 4);

    // shapeRef12
    polygon = Polygon(4);
    polygon.ps[0] = Point(511, 155.333);
    polygon.ps[1] = Point(511, 214.333);
    polygon.ps[2] = Point(422, 214.333);
    polygon.ps[3] = Point(422, 155.333);
    ShapeRef *shapeRef12 = new ShapeRef(router, polygon, 12);
    new ShapeConnectionPin(shapeRef12, 21, 1, 0.514124, true, 0, (ConnDirFlags) 8);
    new ShapeConnectionPin(shapeRef12, 22, 1, 0.79096, true, 0, (ConnDirFlags) 8);
    new ShapeConnectionPin(shapeRef12, 23, 0, 0.79096, true, 0, (ConnDirFlags) 4);
    new ShapeConnectionPin(shapeRef12, 24, 0, 0.514124, true, 0, (ConnDirFlags) 4);

    // shapeRef13
    polygon = Polygon(4);
    polygon.ps[0] = Point(690, 66);
    polygon.ps[1] = Point(690, 124);
    polygon.ps[2] = Point(523, 124);
    polygon.ps[3] = Point(523, 66);
    ShapeRef *shapeRef13 = new ShapeRef(router, polygon, 13);
    new ShapeConnectionPin(shapeRef13, 25, 0, 0.655172, true, 0, (ConnDirFlags) 4);

    // shapeRef14
    polygon = Polygon(4);
    polygon.ps[0] = Point(720.212, 164);
    polygon.ps[1] = Point(720.212, 222);
    polygon.ps[2] = Point(529.212, 222);
    polygon.ps[3] = Point(529.212, 164);
    ShapeRef *shapeRef14 = new ShapeRef(router, polygon, 14);
    new ShapeConnectionPin(shapeRef14, 26, 0, 0.655172, true, 0, (ConnDirFlags) 4);

    // shapeRef15
    polygon = Polygon(4);
    polygon.ps[0] = Point(217, 336.833);
    polygon.ps[1] = Point(217, 395.833);
    polygon.ps[2] = Point(98, 395.833);
    polygon.ps[3] = Point(98, 336.833);
    ShapeRef *shapeRef15 = new ShapeRef(router, polygon, 15);
    new ShapeConnectionPin(shapeRef15, 27, 1, 0.652542, true, 0, (ConnDirFlags) 8);
    new ShapeConnectionPin(shapeRef15, 28, 0, 0.652542, true, 0, (ConnDirFlags) 4);

    // shapeRef16
    polygon = Polygon(4);
    polygon.ps[0] = Point(413, 147.167);
    polygon.ps[1] = Point(413, 206.167);
    polygon.ps[2] = Point(336, 206.167);
    polygon.ps[3] = Point(336, 147.167);
    ShapeRef *shapeRef16 = new ShapeRef(router, polygon, 16);
    new ShapeConnectionPin(shapeRef16, 29, 1, 0.652542, true, 0, (ConnDirFlags) 8);
    new ShapeConnectionPin(shapeRef16, 30, 0, 0.652542, true, 0, (ConnDirFlags) 4);

    // shapeRef17
    polygon = Polygon(4);
    polygon.ps[0] = Point(306, 336.833);
    polygon.ps[1] = Point(306, 395.833);
    polygon.ps[2] = Point(229, 395.833);
    polygon.ps[3] = Point(229, 336.833);
    ShapeRef *shapeRef17 = new ShapeRef(router, polygon, 17);
    new ShapeConnectionPin(shapeRef17, 31, 1, 0.652542, true, 0, (ConnDirFlags) 8);
    new ShapeConnectionPin(shapeRef17, 32, 0, 0.652542, true, 0, (ConnDirFlags) 4);

    // shapeRef18
    polygon = Polygon(4);
    polygon.ps[0] = Point(175, 139);
    polygon.ps[1] = Point(175, 198);
    polygon.ps[2] = Point(98, 198);
    polygon.ps[3] = Point(98, 139);
    ShapeRef *shapeRef18 = new ShapeRef(router, polygon, 18);
    new ShapeConnectionPin(shapeRef18, 33, 1, 0.652542, true, 0, (ConnDirFlags) 8);
    new ShapeConnectionPin(shapeRef18, 34, 0, 0.652542, true, 0, (ConnDirFlags) 4);

    // shapeRef19
    polygon = Polygon(4);
    polygon.ps[0] = Point(409, 399.333);
    polygon.ps[1] = Point(409, 458.333);
    polygon.ps[2] = Point(298, 458.333);
    polygon.ps[3] = Point(298, 399.333);
    ShapeRef *shapeRef19 = new ShapeRef(router, polygon, 19);
    new ShapeConnectionPin(shapeRef19, 35, 1, 0.652542, true, 0, (ConnDirFlags) 8);

    // shapeRef20
    polygon = Polygon(4);
    polygon.ps[0] = Point(224, 40);
    polygon.ps[1] = Point(224, 99);
    polygon.ps[2] = Point(106, 99);
    polygon.ps[3] = Point(106, 40);
    ShapeRef *shapeRef20 = new ShapeRef(router, polygon, 20);
    new ShapeConnectionPin(shapeRef20, 36, 1, 0.652542, true, 0, (ConnDirFlags) 8);

    // shapeRef21
    polygon = Polygon(4);
    polygon.ps[0] = Point(604, 345);
    polygon.ps[1] = Point(604, 404);
    polygon.ps[2] = Point(513, 404);
    polygon.ps[3] = Point(513, 345);
    ShapeRef *shapeRef21 = new ShapeRef(router, polygon, 21);
    new ShapeConnectionPin(shapeRef21, 37, 1, 0.652542, true, 0, (ConnDirFlags) 8);
    new ShapeConnectionPin(shapeRef21, 38, 0, 0.652542, true, 0, (ConnDirFlags) 4);

    // connRef1
    connRef = new ConnRef(router, 1);
    srcPt = ConnEnd(shapeRef5, 5);
    connRef->setSourceEndpoint(srcPt);
    dstPt = ConnEnd(shapeRef21, 38);
    connRef->setDestEndpoint(dstPt);
    connRef->setRoutingType((ConnType)2);

    // connRef2
    connRef = new ConnRef(router, 2);
    srcPt = ConnEnd(shapeRef6, 8);
    connRef->setSourceEndpoint(srcPt);
    dstPt = ConnEnd(shapeRef18, 34);
    connRef->setDestEndpoint(dstPt);
    connRef->setRoutingType((ConnType)2);

    // connRef3
    connRef = new ConnRef(router, 3);
    srcPt = ConnEnd(shapeRef6, 8);
    connRef->setSourceEndpoint(srcPt);
    dstPt = ConnEnd(shapeRef15, 28);
    connRef->setDestEndpoint(dstPt);
    connRef->setRoutingType((ConnType)2);

    // connRef4
    connRef = new ConnRef(router, 4);
    srcPt = ConnEnd(shapeRef6, 8);
    connRef->setSourceEndpoint(srcPt);
    dstPt = ConnEnd(shapeRef12, 23);
    connRef->setDestEndpoint(dstPt);
    connRef->setRoutingType((ConnType)2);

    // connRef5
    connRef = new ConnRef(router, 5);
    srcPt = ConnEnd(shapeRef6, 8);
    connRef->setSourceEndpoint(srcPt);
    dstPt = ConnEnd(shapeRef7, 11);
    connRef->setDestEndpoint(dstPt);
    connRef->setRoutingType((ConnType)2);

    // connRef6
    connRef = new ConnRef(router, 6);
    srcPt = ConnEnd(shapeRef7, 10);
    connRef->setSourceEndpoint(srcPt);
    dstPt = ConnEnd(shapeRef9, 17);
    connRef->setDestEndpoint(dstPt);
    connRef->setRoutingType((ConnType)2);
    ConnRef *connector6 = connRef;

    // connRef7
    connRef = new ConnRef(router, 7);
    srcPt = ConnEnd(shapeRef8, 12);
    connRef->setSourceEndpoint(srcPt);
    dstPt = ConnEnd(shapeRef16, 30);
    connRef->setDestEndpoint(dstPt);
    connRef->setRoutingType((ConnType)2);

    // connRef8
    connRef = new ConnRef(router, 8);
    srcPt = ConnEnd(shapeRef9, 15);
    connRef->setSourceEndpoint(srcPt);
    dstPt = ConnEnd(shapeRef10, 19);
    connRef->setDestEndpoint(dstPt);
    connRef->setRoutingType((ConnType)2);

    // connRef9
    connRef = new ConnRef(router, 9);
    srcPt = ConnEnd(shapeRef9, 16);
    connRef->setSourceEndpoint(srcPt);
    dstPt = ConnEnd(shapeRef11, 20);
    connRef->setDestEndpoint(dstPt);
    connRef->setRoutingType((ConnType)2);

    // connRef10
    connRef = new ConnRef(router, 10);
    srcPt = ConnEnd(shapeRef12, 21);
    connRef->setSourceEndpoint(srcPt);
    dstPt = ConnEnd(shapeRef13, 25);
    connRef->setDestEndpoint(dstPt);
    connRef->setRoutingType((ConnType)2);

    // connRef11
    connRef = new ConnRef(router, 11);
    srcPt = ConnEnd(shapeRef12, 22);
    connRef->setSourceEndpoint(srcPt);
    dstPt = ConnEnd(shapeRef14, 26);
    connRef->setDestEndpoint(dstPt);
    connRef->setRoutingType((ConnType)2);

    // connRef12
    connRef = new ConnRef(router, 12);
    srcPt = ConnEnd(shapeRef15, 27);
    connRef->setSourceEndpoint(srcPt);
    dstPt = ConnEnd(shapeRef17, 32);
    connRef->setDestEndpoint(dstPt);
    connRef->setRoutingType((ConnType)2);

    // connRef13
    connRef = new ConnRef(router, 13);
    srcPt = ConnEnd(shapeRef16, 29);
    connRef->setSourceEndpoint(srcPt);
    dstPt = ConnEnd(shapeRef12, 24);
    connRef->setDestEndpoint(dstPt);
    connRef->setRoutingType((ConnType)2);

    // connRef14
    connRef = new ConnRef(router, 14);
    srcPt = ConnEnd(shapeRef17, 31);
    connRef->setSourceEndpoint(srcPt);
    dstPt = ConnEnd(shapeRef5, 7);
    connRef->setDestEndpoint(dstPt);
    connRef->setRoutingType((ConnType)2);

    // connRef15
    connRef = new ConnRef(router, 15);
    srcPt = ConnEnd(shapeRef18, 33);
    connRef->setSourceEndpoint(srcPt);
    dstPt = ConnEnd(shapeRef8, 14);
    connRef->setDestEndpoint(dstPt);
    connRef->setRoutingType((ConnType)2);

    // connRef16
    connRef = new ConnRef(router, 16);
    srcPt = ConnEnd(shapeRef19, 35);
    connRef->setSourceEndpoint(srcPt);
    dstPt = ConnEnd(shapeRef5, 7);
    connRef->setDestEndpoint(dstPt);
    connRef->setRoutingType((ConnType)2);

    // connRef17
    connRef = new ConnRef(router, 17);
    srcPt = ConnEnd(shapeRef20, 36);
    connRef->setSourceEndpoint(srcPt);
    dstPt = ConnEnd(shapeRef8, 14);
    connRef->setDestEndpoint(dstPt);
    connRef->setRoutingType((ConnType)2);

    // connRef18
    connRef = new ConnRef(router, 18);
    srcPt = ConnEnd(shapeRef21, 37);
    connRef->setSourceEndpoint(srcPt);
    dstPt = ConnEnd(shapeRef9, 18);
    connRef->setDestEndpoint(dstPt);
    connRef->setRoutingType((ConnType)2);

    router->processTransaction();
    // Test that connector 6 has three segments and doesnt loop right
    // around the shapes on the right due to the crossing penalty.
    bool suceeds = (connector6->displayRoute().size() == 4);

    //router->outputDiagram("output/forwardFlowingConnectors01");
    delete router;
    return (suceeds ? 0 : 1);
};
Пример #2
0
int main(void) {
    Router *router = new Router(OrthogonalRouting);
    router->setRoutingParameter((RoutingParameter)0, 50);
    router->setRoutingParameter((RoutingParameter)1, 0);
    router->setRoutingParameter((RoutingParameter)2, 0);
    router->setRoutingParameter((RoutingParameter)3, 4000);
    router->setRoutingParameter((RoutingParameter)4, 0);
    router->setRoutingParameter((RoutingParameter)5, 100);
    router->setRoutingParameter((RoutingParameter)6, 0);
    router->setRoutingParameter((RoutingParameter)7, 4);
    router->setRoutingOption((RoutingOption)0, true);
    router->setRoutingOption((RoutingOption)1, true);
    router->setRoutingOption((RoutingOption)2, false);
    router->setRoutingOption((RoutingOption)3, false);
    
    Polygon poly5(4);
    poly5.ps[0] = Point(365.3425124847556, 152.0752314071785);
    poly5.ps[1] = Point(365.3425124847556, 214.0752314071785);
    poly5.ps[2] = Point(303.3425124847556, 214.0752314071785);
    poly5.ps[3] = Point(303.3425124847556, 152.0752314071785);
    new ShapeRef(router, poly5, 5);
    
    Polygon poly7(4);
    poly7.ps[0] = Point(365.3425124847556, 24.07523140617849);
    poly7.ps[1] = Point(365.3425124847556, 86.07523140617849);
    poly7.ps[2] = Point(303.3425124847556, 86.07523140617849);
    poly7.ps[3] = Point(303.3425124847556, 24.07523140617849);
    new ShapeRef(router, poly7, 7);

    Polygon poly8(4);
    poly8.ps[0] = Point(541.6758458190889, 24.07523140617849);
    poly8.ps[1] = Point(541.6758458190889, 44.07523140617849);
    poly8.ps[2] = Point(509.6758458190889, 44.07523140617849);
    poly8.ps[3] = Point(509.6758458190889, 24.07523140617849);
    new ShapeRef(router, poly8, 8);

    Polygon poly10(4);
    poly10.ps[0] = Point(541.6758458190889, 66.07523140617849);
    poly10.ps[1] = Point(541.6758458190889, 86.07523140617849);
    poly10.ps[2] = Point(509.6758458190889, 86.07523140617849);
    poly10.ps[3] = Point(509.6758458190889, 66.07523140617849);
    new ShapeRef(router, poly10, 10);

    Polygon poly61(4);
    poly61.ps[0] = Point(420.3425124847556, 101.0752314061785);
    poly61.ps[1] = Point(420.3425124847556, 141.0752314061785);
    poly61.ps[2] = Point(344.3425124847556, 141.0752314061785);
    poly61.ps[3] = Point(344.3425124847556, 101.0752314061785);
    new ShapeRef(router, poly61, 61);

    Polygon poly92(4);
    poly92.ps[0] = Point(563.5758458190888, 34.07523140617849);
    poly92.ps[1] = Point(563.5758458190888, 76.07523140617849);
    poly92.ps[2] = Point(487.7758458190889, 76.07523140617849);
    poly92.ps[3] = Point(487.7758458190889, 34.07523140617849);
    new ShapeRef(router, poly92, 92);

    ConnRef *connRef109 = new ConnRef(router, 109);
    ConnEnd srcPt109(Point(510.6758458190889, 34.07523140617849), 4);
    connRef109->setSourceEndpoint(srcPt109);
    ConnEnd dstPt109(Point(334.3425124847556, 183.0752314071785), 15);
    connRef109->setDestEndpoint(dstPt109);
    connRef109->setRoutingType((ConnType)2);
    std::vector<Checkpoint> checkpoints109(1);
    checkpoints109[0] = Checkpoint(Point(487.6758458190889, 55.07523140617849), (ConnDirFlags) 15, (ConnDirFlags) 4);
    connRef109->setRoutingCheckpoints(checkpoints109);

    ConnRef *connRef110 = new ConnRef(router, 110);
    ConnEnd srcPt110(Point(510.6758458190889, 76.07523140617849), 4);
    connRef110->setSourceEndpoint(srcPt110);
    ConnEnd dstPt110(Point(334.3425124847556, 183.0752314071785), 15);
    connRef110->setDestEndpoint(dstPt110);
    connRef110->setRoutingType((ConnType)2);
    std::vector<Checkpoint> checkpoints110(1);
    checkpoints110[0] = Checkpoint(Point(487.6758458190889, 55.07523140617849), (ConnDirFlags) 15, (ConnDirFlags) 4);
    connRef110->setRoutingCheckpoints(checkpoints110);

    router->processTransaction();
    router->outputDiagram("output/checkpoints02");

    bool succeeded = true;
    double checkpointY = 55.07523140617849;
    Avoid::PolyLine route109 = connRef109->displayRoute();
    if (fabs(route109.ps[route109.size() - 3].y - checkpointY) < 2)
    {
        succeeded = false;
    }

    Avoid::PolyLine route110 = connRef110->displayRoute();
    if (fabs(route110.ps[route110.size() - 3].y - checkpointY) < 2)
    {
        succeeded = false;
    }

    delete router;
    return (succeeded) ? 0 : 1;
};
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(improveHyperedgeRoutesMovingJunctions, false);
    router->setRoutingOption(improveHyperedgeRoutesMovingAddingAndDeletingJunctions, true);
    router->setRoutingParameter(idealNudgingDistance, 25);

    Polygon poly2(4);
    poly2.ps[0] = Point(50354, 50975);
    poly2.ps[1] = Point(50354, 51060);
    poly2.ps[2] = Point(50296, 51060);
    poly2.ps[3] = Point(50296, 50975);
    ShapeRef *shapeRef2 = new ShapeRef(router, poly2, 2);
    new ShapeConnectionPin(shapeRef2, 1, 0.5, 1, true, 10, (ConnDirFlags) 1);

    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, 50975);
    poly430971008.ps[1] = Point(51004, 51060);
    poly430971008.ps[2] = Point(50946, 51060);
    poly430971008.ps[3] = Point(50946, 50975);
    ShapeRef *shapeRef430971008 = new ShapeRef(router, poly430971008, 430971008);
    new ShapeConnectionPin(shapeRef430971008, 1, 0.5, 0, true, 10, (ConnDirFlags) 1);

    JunctionRef *junctionRef513246008 = new JunctionRef(router, Point(50925, 50700), 513246008);
    /*
    // This may be useful if junction pins are modified.
    new ShapeConnectionPin(junctionRef513246008, 2147483646, (ConnDirFlags) 15);
    */
    JunctionRef *junctionRef4 = new JunctionRef(router, Point(50725, 50725), 4);

    ConnRef *connRef3 = new ConnRef(router, 3);
    ConnEnd srcPt3(shapeRef2, 1);
    connRef3->setSourceEndpoint(srcPt3);
    ConnEnd dstPt3(junctionRef513246008);
    connRef3->setDestEndpoint(dstPt3);
    connRef3->setRoutingType((ConnType)2);
    
    ConnRef *connRef5 = new ConnRef(router, 5);
    ConnEnd srcPt5(junctionRef4);
    connRef5->setSourceEndpoint(srcPt5);
    ConnEnd dstPt5(junctionRef513246008);
    connRef5->setDestEndpoint(dstPt5);
    connRef5->setRoutingType((ConnType)2);

    ConnRef *connRef513246009 = new ConnRef(router, 513246009);
    ConnEnd srcPt513246009(shapeRef39761567, 1);
    connRef513246009->setSourceEndpoint(srcPt513246009);
    ConnEnd dstPt513246009(junctionRef4);
    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(junctionRef4);
    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->outputInstanceToSVG("output/improveHyperedge04");

    bool overlaps = router->existsOrthogonalSegmentOverlap(true);
    delete router;
    return (overlaps) ? 1 : 0;
};
Пример #4
0
int main(void) {
    Router *router = new Router(
            PolyLineRouting | OrthogonalRouting);
    router->setRoutingPenalty((PenaltyType)0, 50);
    router->setRoutingPenalty((PenaltyType)1, 0);
    router->setRoutingPenalty((PenaltyType)2, 0);
    router->setRoutingPenalty((PenaltyType)3, 4000);
    router->setRoutingPenalty((PenaltyType)4, 0);
    router->setRoutingPenalty((PenaltyType)5, 100);
    router->setRoutingOption((RoutingOption)0, true);
    router->setRoutingOption((RoutingOption)1, true);
    router->setRoutingOption((RoutingOption)2, false);

    /*
    Polygon poly1(4);
    poly1.ps[0] = Point(541.101, 45);
    poly1.ps[1] = Point(541.101, 89);
    poly1.ps[2] = Point(274.101, 89);
    poly1.ps[3] = Point(274.101, 45);
    new ShapeRef(router, poly1, 1);

    Polygon poly2(4);
    poly2.ps[0] = Point(445.857, 111);
    poly2.ps[1] = Point(445.857, 276);
    poly2.ps[2] = Point(309.857, 276);
    poly2.ps[3] = Point(309.857, 111);
    new ShapeRef(router, poly2, 2);
    */

    Polygon poly3(4);
    poly3.ps[0] = Point(328, 368);
    poly3.ps[1] = Point(328, 400);
    poly3.ps[2] = Point(308, 400);
    poly3.ps[3] = Point(308, 368);
    new ShapeRef(router, poly3, 3);

    Polygon poly4(4);
    poly4.ps[0] = Point(328, 492);
    poly4.ps[1] = Point(328, 524);
    poly4.ps[2] = Point(308, 524);
    poly4.ps[3] = Point(308, 492);
    new ShapeRef(router, poly4, 4);

    /*
    Polygon poly5(4);
    poly5.ps[0] = Point(328, 629);
    poly5.ps[1] = Point(328, 661);
    poly5.ps[2] = Point(308, 661);
    poly5.ps[3] = Point(308, 629);
    new ShapeRef(router, poly5, 5);

    Polygon poly6(4);
    poly6.ps[0] = Point(511.857, 308);
    poly6.ps[1] = Point(511.857, 328);
    poly6.ps[2] = Point(479.857, 328);
    poly6.ps[3] = Point(479.857, 308);
    new ShapeRef(router, poly6, 6);

    Polygon poly7(4);
    poly7.ps[0] = Point(518.357, 629);
    poly7.ps[1] = Point(518.357, 661);
    poly7.ps[2] = Point(498.357, 661);
    poly7.ps[3] = Point(498.357, 629);
    new ShapeRef(router, poly7, 7);

    Polygon poly8(4);
    poly8.ps[0] = Point(827.857, 210);
    poly8.ps[1] = Point(827.857, 270);
    poly8.ps[2] = Point(545.857, 270);
    poly8.ps[3] = Point(545.857, 210);
    new ShapeRef(router, poly8, 8);

    Polygon poly9(4);
    poly9.ps[0] = Point(805.357, 409);
    poly9.ps[1] = Point(805.357, 469);
    poly9.ps[2] = Point(572.357, 469);
    poly9.ps[3] = Point(572.357, 409);
    new ShapeRef(router, poly9, 9);

    Polygon poly10(4);
    poly10.ps[0] = Point(157.5, 426);
    poly10.ps[1] = Point(157.5, 458);
    poly10.ps[2] = Point(137.5, 458);
    poly10.ps[3] = Point(137.5, 426);
    new ShapeRef(router, poly10, 10);

    Polygon poly11(4);
    poly11.ps[0] = Point(276, 597.655);
    poly11.ps[1] = Point(276, 657.655);
    poly11.ps[2] = Point(45, 657.655);
    poly11.ps[3] = Point(45, 597.655);
    new ShapeRef(router, poly11, 11);

    Polygon poly12(4);
    poly12.ps[0] = Point(349, 287);
    poly12.ps[1] = Point(349, 349);
    poly12.ps[2] = Point(287, 349);
    poly12.ps[3] = Point(287, 287);
    new ShapeRef(router, poly12, 12);
    */

    Polygon poly13(4);
    poly13.ps[0] = Point(349, 415);
    poly13.ps[1] = Point(349, 477);
    poly13.ps[2] = Point(287, 477);
    poly13.ps[3] = Point(287, 415);
    new ShapeRef(router, poly13, 13);

    /*
    Polygon poly14(4);
    poly14.ps[0] = Point(349, 676);
    poly14.ps[1] = Point(349, 738);
    poly14.ps[2] = Point(287, 738);
    poly14.ps[3] = Point(287, 676);
    new ShapeRef(router, poly14, 14);

    Polygon poly15(4);
    poly15.ps[0] = Point(349, 552);
    poly15.ps[1] = Point(349, 614);
    poly15.ps[2] = Point(287, 614);
    poly15.ps[3] = Point(287, 552);
    new ShapeRef(router, poly15, 15);

    Polygon poly16(4);
    poly16.ps[0] = Point(539.357, 676);
    poly16.ps[1] = Point(539.357, 738);
    poly16.ps[2] = Point(477.357, 738);
    poly16.ps[3] = Point(477.357, 676);
    new ShapeRef(router, poly16, 16);
    */

    Polygon poly17(4);
    poly17.ps[0] = Point(640.857, 336);
    poly17.ps[1] = Point(640.857, 398);
    poly17.ps[2] = Point(578.857, 398);
    poly17.ps[3] = Point(578.857, 336);
    new ShapeRef(router, poly17, 17);

    Polygon poly18(4);
    poly18.ps[0] = Point(404, 364);
    poly18.ps[1] = Point(404, 404);
    poly18.ps[2] = Point(328, 404);
    poly18.ps[3] = Point(328, 364);
    new ShapeRef(router, poly18, 18);

    Polygon poly19(4);
    poly19.ps[0] = Point(404, 488);
    poly19.ps[1] = Point(404, 528);
    poly19.ps[2] = Point(328, 528);
    poly19.ps[3] = Point(328, 488);
    new ShapeRef(router, poly19, 19);

    /*
    Polygon poly20(4);
    poly20.ps[0] = Point(404, 625);
    poly20.ps[1] = Point(404, 665);
    poly20.ps[2] = Point(328, 665);
    poly20.ps[3] = Point(328, 625);
    new ShapeRef(router, poly20, 20);

    Polygon poly21(4);
    poly21.ps[0] = Point(523.857, 248);
    poly21.ps[1] = Point(523.857, 308);
    poly21.ps[2] = Point(467.857, 308);
    poly21.ps[3] = Point(467.857, 248);
    new ShapeRef(router, poly21, 21);

    Polygon poly22(4);
    poly22.ps[0] = Point(594.357, 625);
    poly22.ps[1] = Point(594.357, 665);
    poly22.ps[2] = Point(518.357, 665);
    poly22.ps[3] = Point(518.357, 625);
    new ShapeRef(router, poly22, 22);

    Polygon poly23(4);
    poly23.ps[0] = Point(137.5, 422);
    poly23.ps[1] = Point(137.5, 462);
    poly23.ps[2] = Point(61.5, 462);
    poly23.ps[3] = Point(61.5, 422);
    new ShapeRef(router, poly23, 23);

    Polygon poly24(4);
    poly24.ps[0] = Point(398.357, 216.5);
    poly24.ps[1] = Point(398.357, 276.5);
    poly24.ps[2] = Point(358.357, 276.5);
    poly24.ps[3] = Point(358.357, 216.5);
    new ShapeRef(router, poly24, 24);

    Polygon poly25(4);
    poly25.ps[0] = Point(606.357, 220.5);
    poly25.ps[1] = Point(606.357, 260.5);
    poly25.ps[2] = Point(546.357, 260.5);
    poly25.ps[3] = Point(546.357, 220.5);
    new ShapeRef(router, poly25, 25);
    */

    Polygon poly26(4);
    poly26.ps[0] = Point(632.857, 419.5);
    poly26.ps[1] = Point(632.857, 459.5);
    poly26.ps[2] = Point(572.857, 459.5);
    poly26.ps[3] = Point(572.857, 419.5);
    new ShapeRef(router, poly26, 26);

    /*
    Polygon poly27(4);
    poly27.ps[0] = Point(276.5, 608.155);
    poly27.ps[1] = Point(276.5, 648.155);
    poly27.ps[2] = Point(216.5, 648.155);
    poly27.ps[3] = Point(216.5, 608.155);
    new ShapeRef(router, poly27, 27);

    ConnRef *connRef28 = new ConnRef(router, 28);
    ConnEnd srcPt28(Point(318, 399), 2);
    connRef28->setSourceEndpoint(srcPt28);
    ConnEnd dstPt28(Point(318, 446), 15);
    connRef28->setDestEndpoint(dstPt28);
    connRef28->setRoutingType((ConnType)2);

    ConnRef *connRef29 = new ConnRef(router, 29);
    ConnEnd srcPt29(Point(318, 523), 2);
    connRef29->setSourceEndpoint(srcPt29);
    ConnEnd dstPt29(Point(318, 583), 15);
    connRef29->setDestEndpoint(dstPt29);
    connRef29->setRoutingType((ConnType)2);
    */

    ConnRef *connRef30 = new ConnRef(router, 30);
    ConnEnd srcPt30(Point(318, 523), 2);
    connRef30->setSourceEndpoint(srcPt30);
    ConnEnd dstPt30(Point(609.857, 367), 15);
    connRef30->setDestEndpoint(dstPt30);
    connRef30->setRoutingType((ConnType)2);

    /*
    ConnRef *connRef31 = new ConnRef(router, 31);
    ConnEnd srcPt31(Point(318, 660), 2);
    connRef31->setSourceEndpoint(srcPt31);
    ConnEnd dstPt31(Point(318, 707), 15);
    connRef31->setDestEndpoint(dstPt31);
    connRef31->setRoutingType((ConnType)2);

    ConnRef *connRef32 = new ConnRef(router, 32);
    ConnEnd srcPt32(Point(480.857, 318), 4);
    connRef32->setSourceEndpoint(srcPt32);
    ConnEnd dstPt32(Point(318, 318), 15);
    connRef32->setDestEndpoint(dstPt32);
    connRef32->setRoutingType((ConnType)2);

    ConnRef *connRef33 = new ConnRef(router, 33);
    ConnEnd srcPt33(Point(510.857, 318), 8);
    connRef33->setSourceEndpoint(srcPt33);
    ConnEnd dstPt33(Point(609.857, 367), 15);
    connRef33->setDestEndpoint(dstPt33);
    connRef33->setRoutingType((ConnType)2);

    ConnRef *connRef34 = new ConnRef(router, 34);
    ConnEnd srcPt34(Point(508.357, 630), 1);
    connRef34->setSourceEndpoint(srcPt34);
    ConnEnd dstPt34(Point(318, 583), 15);
    connRef34->setDestEndpoint(dstPt34);
    connRef34->setRoutingType((ConnType)2);

    ConnRef *connRef35 = new ConnRef(router, 35);
    ConnEnd srcPt35(Point(147.5, 427), 1);
    connRef35->setSourceEndpoint(srcPt35);
    ConnEnd dstPt35(Point(318, 318), 15);
    connRef35->setDestEndpoint(dstPt35);
    connRef35->setRoutingType((ConnType)2);

    ConnRef *connRef36 = new ConnRef(router, 36);
    ConnEnd srcPt36(Point(147.5, 457), 2);
    connRef36->setSourceEndpoint(srcPt36);
    ConnEnd dstPt36(Point(318, 583), 15);
    connRef36->setDestEndpoint(dstPt36);
    connRef36->setRoutingType((ConnType)2);

    ConnRef *connRef37 = new ConnRef(router, 37);
    ConnEnd srcPt37(Point(318, 446), 15);
    connRef37->setSourceEndpoint(srcPt37);
    ConnEnd dstPt37(Point(318, 493), 1);
    connRef37->setDestEndpoint(dstPt37);
    connRef37->setRoutingType((ConnType)2);

    ConnRef *connRef38 = new ConnRef(router, 38);
    ConnEnd srcPt38(Point(508.357, 660), 2);
    connRef38->setSourceEndpoint(srcPt38);
    ConnEnd dstPt38(Point(508.357, 707), 15);
    connRef38->setDestEndpoint(dstPt38);
    connRef38->setRoutingType((ConnType)2);

    ConnRef *connRef39 = new ConnRef(router, 39);
    ConnEnd srcPt39(Point(376, 384), 4);
    connRef39->setSourceEndpoint(srcPt39);
    ConnEnd dstPt39(Point(318, 384), 8);
    connRef39->setDestEndpoint(dstPt39);
    connRef39->setRoutingType((ConnType)2);

    ConnRef *connRef40 = new ConnRef(router, 40);
    ConnEnd srcPt40(Point(376, 508), 4);
    connRef40->setSourceEndpoint(srcPt40);
    ConnEnd dstPt40(Point(318, 508), 8);
    connRef40->setDestEndpoint(dstPt40);
    connRef40->setRoutingType((ConnType)2);

    ConnRef *connRef41 = new ConnRef(router, 41);
    ConnEnd srcPt41(Point(376, 645), 4);
    connRef41->setSourceEndpoint(srcPt41);
    ConnEnd dstPt41(Point(318, 645), 8);
    connRef41->setDestEndpoint(dstPt41);
    connRef41->setRoutingType((ConnType)2);

    ConnRef *connRef42 = new ConnRef(router, 42);
    ConnEnd srcPt42(Point(495.857, 268), 2);
    connRef42->setSourceEndpoint(srcPt42);
    ConnEnd dstPt42(Point(495.857, 318), 1);
    connRef42->setDestEndpoint(dstPt42);
    connRef42->setRoutingType((ConnType)2);

    ConnRef *connRef43 = new ConnRef(router, 43);
    ConnEnd srcPt43(Point(566.357, 645), 4);
    connRef43->setSourceEndpoint(srcPt43);
    ConnEnd dstPt43(Point(508.357, 645), 8);
    connRef43->setDestEndpoint(dstPt43);
    connRef43->setRoutingType((ConnType)2);

    ConnRef *connRef44 = new ConnRef(router, 44);
    ConnEnd srcPt44(Point(89.5, 442), 8);
    connRef44->setSourceEndpoint(srcPt44);
    ConnEnd dstPt44(Point(147.5, 442), 4);
    connRef44->setDestEndpoint(dstPt44);
    connRef44->setRoutingType((ConnType)2);

    ConnRef *connRef45 = new ConnRef(router, 45);
    ConnEnd srcPt45(Point(318, 318), 15);
    connRef45->setSourceEndpoint(srcPt45);
    ConnEnd dstPt45(Point(318, 369), 1);
    connRef45->setDestEndpoint(dstPt45);
    connRef45->setRoutingType((ConnType)2);
    */

    ConnRef *connRef46 = new ConnRef(router, 46);
    ConnEnd srcPt46(Point(609.857, 367), 15);
    connRef46->setSourceEndpoint(srcPt46);
    ConnEnd dstPt46(Point(318, 369), 1);
    connRef46->setDestEndpoint(dstPt46);
    connRef46->setRoutingType((ConnType)2);

    /*
    ConnRef *connRef47 = new ConnRef(router, 47);
    ConnEnd srcPt47(Point(318, 583), 15);
    connRef47->setSourceEndpoint(srcPt47);
    ConnEnd dstPt47(Point(318, 630), 1);
    connRef47->setDestEndpoint(dstPt47);
    connRef47->setRoutingType((ConnType)2);

    ConnRef *connRef48 = new ConnRef(router, 48);
    ConnEnd srcPt48(Point(318, 318), 15);
    connRef48->setSourceEndpoint(srcPt48);
    ConnEnd dstPt48(Point(378.357, 271.5), 2);
    connRef48->setDestEndpoint(dstPt48);
    connRef48->setRoutingType((ConnType)2);

    ConnRef *connRef49 = new ConnRef(router, 49);
    ConnEnd srcPt49(Point(318, 318), 15);
    connRef49->setSourceEndpoint(srcPt49);
    ConnEnd dstPt49(Point(551.357, 240.5), 4);
    connRef49->setDestEndpoint(dstPt49);
    connRef49->setRoutingType((ConnType)2);
    */

    ConnRef *connRef50 = new ConnRef(router, 50);
    ConnEnd srcPt50(Point(609.857, 367), 15);
    connRef50->setSourceEndpoint(srcPt50);
    ConnEnd dstPt50(Point(577.857, 439.5), 4);
    connRef50->setDestEndpoint(dstPt50);
    connRef50->setRoutingType((ConnType)2);

    /*
    ConnRef *connRef51 = new ConnRef(router, 51);
    ConnEnd srcPt51(Point(318, 583), 15);
    connRef51->setSourceEndpoint(srcPt51);
    ConnEnd dstPt51(Point(271.5, 628.155), 8);
    connRef51->setDestEndpoint(dstPt51);
    connRef51->setRoutingType((ConnType)2);
    */

    router->processTransaction();
    router->outputDiagram("output/finalSegmentNudging2");
    bool atEnds = true;
    bool overlap = router->existsOrthogonalFixedSegmentOverlap(atEnds);
    delete router;
    return (overlap) ? 1 : 0;
};
Пример #5
0
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, 110);
    router->setRoutingPenalty((PenaltyType)5, 100);
    router->setRoutingOption((RoutingOption)0, false);
    router->setRoutingOption((RoutingOption)1, true);
    router->setRoutingParameter(idealNudgingDistance, 25);

    Polygon poly3075375(4);
    poly3075375.ps[0] = Point(51925, 52070);
    poly3075375.ps[1] = Point(51925, 52130);
    poly3075375.ps[2] = Point(51725, 52130);
    poly3075375.ps[3] = Point(51725, 52070);
    new ShapeRef(router, poly3075375, 3075375);

    Polygon poly101599344(4);
    poly101599344.ps[0] = Point(50275, 52410);
    poly101599344.ps[1] = Point(50275, 52490);
    poly101599344.ps[2] = Point(50075, 52490);
    poly101599344.ps[3] = Point(50075, 52410);
    new ShapeRef(router, poly101599344, 101599344);

    Polygon poly127957550(4);
    poly127957550.ps[0] = Point(52010, 51617);
    poly127957550.ps[1] = Point(52010, 51683);
    poly127957550.ps[2] = Point(51890, 51683);
    poly127957550.ps[3] = Point(51890, 51617);
    ShapeRef *shapeRef127957550 = new ShapeRef(router, poly127957550, 127957550);
    new ShapeConnectionPin(shapeRef127957550, 2147483646, 0.5, 0.5, true, 0, (ConnDirFlags) 1);
    new ShapeConnectionPin(shapeRef127957550, 2147483646, 0.5, 0.5, true, 0, (ConnDirFlags) 2);
    new ShapeConnectionPin(shapeRef127957550, 2147483646, 0.5, 0.5, true, 0, (ConnDirFlags) 4);
    new ShapeConnectionPin(shapeRef127957550, 2147483646, 0.5, 0.5, true, 0, (ConnDirFlags) 8);

    Polygon poly129612347(4);
    poly129612347.ps[0] = Point(51900, 51696);
    poly129612347.ps[1] = Point(51900, 51754);
    poly129612347.ps[2] = Point(51815, 51754);
    poly129612347.ps[3] = Point(51815, 51696);
    new ShapeRef(router, poly129612347, 129612347);

    Polygon poly203389050(4);
    poly203389050.ps[0] = Point(51825, 52260);
    poly203389050.ps[1] = Point(51825, 52340);
    poly203389050.ps[2] = Point(51625, 52340);
    poly203389050.ps[3] = Point(51625, 52260);
    new ShapeRef(router, poly203389050, 203389050);

    Polygon poly208676910(4);
    poly208676910.ps[0] = Point(51950, 51760);
    poly208676910.ps[1] = Point(51950, 51840);
    poly208676910.ps[2] = Point(51750, 51840);
    poly208676910.ps[3] = Point(51750, 51760);
    new ShapeRef(router, poly208676910, 208676910);

    Polygon poly219117032(4);
    poly219117032.ps[0] = Point(50225, 52070);
    poly219117032.ps[1] = Point(50225, 52130);
    poly219117032.ps[2] = Point(50025, 52130);
    poly219117032.ps[3] = Point(50025, 52070);
    new ShapeRef(router, poly219117032, 219117032);

    Polygon poly258454350(4);
    poly258454350.ps[0] = Point(50185, 51617);
    poly258454350.ps[1] = Point(50185, 51683);
    poly258454350.ps[2] = Point(50065, 51683);
    poly258454350.ps[3] = Point(50065, 51617);
    ShapeRef *shapeRef258454350 = new ShapeRef(router, poly258454350, 258454350);
    new ShapeConnectionPin(shapeRef258454350, 2147483646, 0.5, 0.5, true, 0, (ConnDirFlags) 1);
    new ShapeConnectionPin(shapeRef258454350, 2147483646, 0.5, 0.5, true, 0, (ConnDirFlags) 2);
    new ShapeConnectionPin(shapeRef258454350, 2147483646, 0.5, 0.5, true, 0, (ConnDirFlags) 4);
    new ShapeConnectionPin(shapeRef258454350, 2147483646, 0.5, 0.5, true, 0, (ConnDirFlags) 8);

    Polygon poly274504590(4);
    poly274504590.ps[0] = Point(51400, 52470);
    poly274504590.ps[1] = Point(51400, 52530);
    poly274504590.ps[2] = Point(51150, 52530);
    poly274504590.ps[3] = Point(51150, 52470);
    new ShapeRef(router, poly274504590, 274504590);

    Polygon poly320957826(4);
    poly320957826.ps[0] = Point(50275, 51910);
    poly320957826.ps[1] = Point(50275, 51990);
    poly320957826.ps[2] = Point(50075, 51990);
    poly320957826.ps[3] = Point(50075, 51910);
    new ShapeRef(router, poly320957826, 320957826);

    Polygon poly368436384(4);
    poly368436384.ps[0] = Point(50325, 51696);
    poly368436384.ps[1] = Point(50325, 51754);
    poly368436384.ps[2] = Point(50240, 51754);
    poly368436384.ps[3] = Point(50240, 51696);
    new ShapeRef(router, poly368436384, 368436384);

    Polygon poly381499178(4);
    poly381499178.ps[0] = Point(51850, 51345);
    poly381499178.ps[1] = Point(51850, 51405);
    poly381499178.ps[2] = Point(51650, 51405);
    poly381499178.ps[3] = Point(51650, 51345);
    new ShapeRef(router, poly381499178, 381499178);

    Polygon poly426410694(4);
    poly426410694.ps[0] = Point(50325, 52270);
    poly426410694.ps[1] = Point(50325, 52330);
    poly426410694.ps[2] = Point(50125, 52330);
    poly426410694.ps[3] = Point(50125, 52270);
    new ShapeRef(router, poly426410694, 426410694);

    Polygon poly428912890(4);
    poly428912890.ps[0] = Point(51825, 51510);
    poly428912890.ps[1] = Point(51825, 51590);
    poly428912890.ps[2] = Point(51625, 51590);
    poly428912890.ps[3] = Point(51625, 51510);
    new ShapeRef(router, poly428912890, 428912890);

    Polygon poly468897320(4);
    poly468897320.ps[0] = Point(50425, 51520);
    poly468897320.ps[1] = Point(50425, 51580);
    poly468897320.ps[2] = Point(50225, 51580);
    poly468897320.ps[3] = Point(50225, 51520);
    new ShapeRef(router, poly468897320, 468897320);

    Polygon poly517518507(4);
    poly517518507.ps[0] = Point(51925, 51910);
    poly517518507.ps[1] = Point(51925, 51990);
    poly517518507.ps[2] = Point(51725, 51990);
    poly517518507.ps[3] = Point(51725, 51910);
    new ShapeRef(router, poly517518507, 517518507);

    Polygon poly565878858(4);
    poly565878858.ps[0] = Point(51160, 52500);
    poly565878858.ps[1] = Point(51160, 52810);
    poly565878858.ps[2] = Point(50890, 52810);
    poly565878858.ps[3] = Point(50890, 52500);
    new ShapeRef(router, poly565878858, 565878858);

    Polygon poly706147100(4);
    poly706147100.ps[0] = Point(51160, 50990);
    poly706147100.ps[1] = Point(51160, 51300);
    poly706147100.ps[2] = Point(50890, 51300);
    poly706147100.ps[3] = Point(50890, 50990);
    new ShapeRef(router, poly706147100, 706147100);

    Polygon poly746254622(4);
    poly746254622.ps[0] = Point(50275, 51760);
    poly746254622.ps[1] = Point(50275, 51840);
    poly746254622.ps[2] = Point(50075, 51840);
    poly746254622.ps[3] = Point(50075, 51760);
    new ShapeRef(router, poly746254622, 746254622);

    Polygon poly829835240(4);
    poly829835240.ps[0] = Point(50425, 51360);
    poly829835240.ps[1] = Point(50425, 51440);
    poly829835240.ps[2] = Point(50225, 51440);
    poly829835240.ps[3] = Point(50225, 51360);
    new ShapeRef(router, poly829835240, 829835240);

    Polygon poly157548160(4);
    poly157548160.ps[0] = Point(51550, 51500);
    poly157548160.ps[1] = Point(51550, 52225);
    poly157548160.ps[2] = Point(50525, 52225);
    poly157548160.ps[3] = Point(50525, 51500);
    new ShapeRef(router, poly157548160, 157548160);

    ConnRef *connRef6675422 = new ConnRef(router, 6675422);
    ConnEnd srcPt6675422(Point(51100, 51290), 2);
    connRef6675422->setSourceEndpoint(srcPt6675422);
    ConnEnd dstPt6675422(Point(51150, 51510), 1);
    connRef6675422->setDestEndpoint(dstPt6675422);
    connRef6675422->setRoutingType((ConnType)2);

    ConnRef *connRef13259320 = new ConnRef(router, 13259320);
    ConnEnd srcPt13259320(Point(50535, 51675), 4);
    connRef13259320->setSourceEndpoint(srcPt13259320);
    ConnEnd dstPt13259320(Point(50315, 51725), 8);
    connRef13259320->setDestEndpoint(dstPt13259320);
    connRef13259320->setRoutingType((ConnType)2);

    ConnRef *connRef17108208 = new ConnRef(router, 17108208);
    ConnEnd srcPt17108208(Point(51540, 52050), 8);
    connRef17108208->setSourceEndpoint(srcPt17108208);
    ConnEnd dstPt17108208(Point(51735, 52100), 4);
    connRef17108208->setDestEndpoint(dstPt17108208);
    connRef17108208->setRoutingType((ConnType)2);

    ConnRef *connRef41442471 = new ConnRef(router, 41442471);
    ConnEnd srcPt41442471(Point(51075, 52215), 2);
    connRef41442471->setSourceEndpoint(srcPt41442471);
    ConnEnd dstPt41442471(Point(51050, 52510), 1);
    connRef41442471->setDestEndpoint(dstPt41442471);
    connRef41442471->setRoutingType((ConnType)2);

    ConnRef *connRef45863720 = new ConnRef(router, 45863720);
    ConnEnd srcPt45863720(Point(51660, 51375), 4);
    connRef45863720->setSourceEndpoint(srcPt45863720);
    ConnEnd dstPt45863720(Point(51300, 51510), 1);
    connRef45863720->setDestEndpoint(dstPt45863720);
    connRef45863720->setRoutingType((ConnType)2);

    ConnRef *connRef52653348 = new ConnRef(router, 52653348);
    ConnEnd srcPt52653348(Point(50535, 52050), 4);
    connRef52653348->setSourceEndpoint(srcPt52653348);
    ConnEnd dstPt52653348(Point(50215, 52100), 8);
    connRef52653348->setDestEndpoint(dstPt52653348);
    connRef52653348->setRoutingType((ConnType)2);

    ConnRef *connRef57649636 = new ConnRef(router, 57649636);
    ConnEnd srcPt57649636(Point(51540, 52125), 8);
    connRef57649636->setSourceEndpoint(srcPt57649636);
    ConnEnd dstPt57649636(Point(51915, 52100), 8);
    connRef57649636->setDestEndpoint(dstPt57649636);
    connRef57649636->setRoutingType((ConnType)2);

    ConnRef *connRef64735671 = new ConnRef(router, 64735671);
    ConnEnd srcPt64735671(Point(51375, 52215), 2);
    connRef64735671->setSourceEndpoint(srcPt64735671);
    ConnEnd dstPt64735671(Point(51815, 52300), 8);
    connRef64735671->setDestEndpoint(dstPt64735671);
    connRef64735671->setRoutingType((ConnType)2);

    ConnRef *connRef81789576 = new ConnRef(router, 81789576);
    ConnEnd srcPt81789576(Point(50950, 51290), 2);
    connRef81789576->setSourceEndpoint(srcPt81789576);
    ConnEnd dstPt81789576(Point(50925, 51510), 1);
    connRef81789576->setDestEndpoint(dstPt81789576);
    connRef81789576->setRoutingType((ConnType)2);

    ConnRef *connRef87742344 = new ConnRef(router, 87742344);
    ConnEnd srcPt87742344(Point(51540, 51600), 8);
    connRef87742344->setSourceEndpoint(srcPt87742344);
    ConnEnd dstPt87742344(shapeRef127957550, 2147483646);
    connRef87742344->setDestEndpoint(dstPt87742344);
    connRef87742344->setRoutingType((ConnType)2);

    ConnRef *connRef92624219 = new ConnRef(router, 92624219);
    ConnEnd srcPt92624219(Point(51450, 52215), 2);
    connRef92624219->setSourceEndpoint(srcPt92624219);
    ConnEnd dstPt92624219(Point(51635, 52300), 4);
    connRef92624219->setDestEndpoint(dstPt92624219);
    connRef92624219->setRoutingType((ConnType)2);

    ConnRef *connRef126568050 = new ConnRef(router, 126568050);
    ConnEnd srcPt126568050(Point(51540, 51975), 8);
    connRef126568050->setSourceEndpoint(srcPt126568050);
    ConnEnd dstPt126568050(Point(51915, 51950), 8);
    connRef126568050->setDestEndpoint(dstPt126568050);
    connRef126568050->setRoutingType((ConnType)2);

    ConnRef *connRef128113340 = new ConnRef(router, 128113340);
    ConnEnd srcPt128113340(Point(51300, 52215), 2);
    connRef128113340->setSourceEndpoint(srcPt128113340);
    ConnEnd dstPt128113340(Point(51390, 52500), 8);
    connRef128113340->setDestEndpoint(dstPt128113340);
    connRef128113340->setRoutingType((ConnType)2);

    ConnRef *connRef157642749 = new ConnRef(router, 157642749);
    ConnEnd srcPt157642749(Point(51225, 52215), 2);
    connRef157642749->setSourceEndpoint(srcPt157642749);
    // Problem point:
    ConnEnd dstPt157642749(Point(51160, 52500), 4);
    connRef157642749->setDestEndpoint(dstPt157642749);
    connRef157642749->setRoutingType((ConnType)2);

    ConnRef *connRef182970626 = new ConnRef(router, 182970626);
    ConnEnd srcPt182970626(Point(51000, 52215), 2);
    connRef182970626->setSourceEndpoint(srcPt182970626);
    ConnEnd dstPt182970626(Point(51000, 52510), 1);
    connRef182970626->setDestEndpoint(dstPt182970626);
    connRef182970626->setRoutingType((ConnType)2);

    ConnRef *connRef191618599 = new ConnRef(router, 191618599);
    ConnEnd srcPt191618599(Point(50535, 51900), 4);
    connRef191618599->setSourceEndpoint(srcPt191618599);
    ConnEnd dstPt191618599(Point(50265, 51950), 8);
    connRef191618599->setDestEndpoint(dstPt191618599);
    connRef191618599->setRoutingType((ConnType)2);

    ConnRef *connRef215646300 = new ConnRef(router, 215646300);
    ConnEnd srcPt215646300(Point(50415, 51400), 8);
    connRef215646300->setSourceEndpoint(srcPt215646300);
    ConnEnd dstPt215646300(Point(50775, 51510), 1);
    connRef215646300->setDestEndpoint(dstPt215646300);
    connRef215646300->setRoutingType((ConnType)2);

    ConnRef *connRef217181718 = new ConnRef(router, 217181718);
    ConnEnd srcPt217181718(Point(51000, 51290), 2);
    connRef217181718->setSourceEndpoint(srcPt217181718);
    ConnEnd dstPt217181718(Point(51000, 51510), 1);
    connRef217181718->setDestEndpoint(dstPt217181718);
    connRef217181718->setRoutingType((ConnType)2);

    ConnRef *connRef217236398 = new ConnRef(router, 217236398);
    ConnEnd srcPt217236398(Point(50700, 52215), 2);
    connRef217236398->setSourceEndpoint(srcPt217236398);
    ConnEnd dstPt217236398(Point(50135, 52300), 4);
    connRef217236398->setDestEndpoint(dstPt217236398);
    connRef217236398->setRoutingType((ConnType)2);

    ConnRef *connRef227676560 = new ConnRef(router, 227676560);
    ConnEnd srcPt227676560(Point(50850, 51510), 1);
    connRef227676560->setSourceEndpoint(srcPt227676560);
    ConnEnd dstPt227676560(Point(50235, 51400), 4);
    connRef227676560->setDestEndpoint(dstPt227676560);
    connRef227676560->setRoutingType((ConnType)2);

    ConnRef *connRef235740708 = new ConnRef(router, 235740708);
    ConnEnd srcPt235740708(Point(51540, 51675), 8);
    connRef235740708->setSourceEndpoint(srcPt235740708);
    ConnEnd dstPt235740708(Point(51870, 51725), 8);
    connRef235740708->setDestEndpoint(dstPt235740708);
    connRef235740708->setRoutingType((ConnType)2);

    ConnRef *connRef307166980 = new ConnRef(router, 307166980);
    ConnEnd srcPt307166980(Point(50925, 52215), 2);
    connRef307166980->setSourceEndpoint(srcPt307166980);
    ConnEnd dstPt307166980(Point(50950, 52510), 1);
    connRef307166980->setDestEndpoint(dstPt307166980);
    connRef307166980->setRoutingType((ConnType)2);

    ConnRef *connRef314353850 = new ConnRef(router, 314353850);
    ConnEnd srcPt314353850(Point(51050, 51290), 2);
    connRef314353850->setSourceEndpoint(srcPt314353850);
    ConnEnd dstPt314353850(Point(51075, 51510), 1);
    connRef314353850->setDestEndpoint(dstPt314353850);
    connRef314353850->setRoutingType((ConnType)2);

    ConnRef *connRef356343444 = new ConnRef(router, 356343444);
    ConnEnd srcPt356343444(Point(50625, 51510), 1);
    connRef356343444->setSourceEndpoint(srcPt356343444);
    ConnEnd dstPt356343444(Point(50415, 51550), 8);
    connRef356343444->setDestEndpoint(dstPt356343444);
    connRef356343444->setRoutingType((ConnType)2);

    ConnRef *connRef401560509 = new ConnRef(router, 401560509);
    ConnEnd srcPt401560509(Point(50625, 52215), 2);
    connRef401560509->setSourceEndpoint(srcPt401560509);
    ConnEnd dstPt401560509(Point(50315, 52300), 8);
    connRef401560509->setDestEndpoint(dstPt401560509);
    connRef401560509->setRoutingType((ConnType)2);

    ConnRef *connRef413072940 = new ConnRef(router, 413072940);
    ConnEnd srcPt413072940(Point(51840, 51375), 8);
    connRef413072940->setSourceEndpoint(srcPt413072940);
    ConnEnd dstPt413072940(Point(51225, 51510), 1);
    connRef413072940->setDestEndpoint(dstPt413072940);
    connRef413072940->setRoutingType((ConnType)2);

    ConnRef *connRef413766381 = new ConnRef(router, 413766381);
    ConnEnd srcPt413766381(Point(50535, 51750), 4);
    connRef413766381->setSourceEndpoint(srcPt413766381);
    ConnEnd dstPt413766381(Point(50265, 51800), 8);
    connRef413766381->setDestEndpoint(dstPt413766381);
    connRef413766381->setRoutingType((ConnType)2);

    ConnRef *connRef422359365 = new ConnRef(router, 422359365);
    ConnEnd srcPt422359365(Point(50535, 51825), 4);
    connRef422359365->setSourceEndpoint(srcPt422359365);
    ConnEnd dstPt422359365(Point(50085, 51800), 4);
    connRef422359365->setDestEndpoint(dstPt422359365);
    connRef422359365->setRoutingType((ConnType)2);

    ConnRef *connRef427415850 = new ConnRef(router, 427415850);
    ConnEnd srcPt427415850(Point(50775, 52215), 2);
    connRef427415850->setSourceEndpoint(srcPt427415850);
    ConnEnd dstPt427415850(Point(50265, 52450), 8);
    connRef427415850->setDestEndpoint(dstPt427415850);
    connRef427415850->setRoutingType((ConnType)2);

    ConnRef *connRef444649182 = new ConnRef(router, 444649182);
    ConnEnd srcPt444649182(Point(51540, 51750), 8);
    connRef444649182->setSourceEndpoint(srcPt444649182);
    ConnEnd dstPt444649182(Point(51760, 51800), 4);
    connRef444649182->setDestEndpoint(dstPt444649182);
    connRef444649182->setRoutingType((ConnType)2);

    ConnRef *connRef505297694 = new ConnRef(router, 505297694);
    ConnEnd srcPt505297694(Point(50700, 51510), 1);
    connRef505297694->setSourceEndpoint(srcPt505297694);
    ConnEnd dstPt505297694(Point(50235, 51550), 4);
    connRef505297694->setDestEndpoint(dstPt505297694);
    connRef505297694->setRoutingType((ConnType)2);

    ConnRef *connRef528809632 = new ConnRef(router, 528809632);
    ConnEnd srcPt528809632(Point(51540, 51900), 8);
    connRef528809632->setSourceEndpoint(srcPt528809632);
    ConnEnd dstPt528809632(Point(51735, 51950), 4);
    connRef528809632->setDestEndpoint(dstPt528809632);
    connRef528809632->setRoutingType((ConnType)2);

    ConnRef *connRef548127810 = new ConnRef(router, 548127810);
    ConnEnd srcPt548127810(Point(50535, 51975), 4);
    connRef548127810->setSourceEndpoint(srcPt548127810);
    ConnEnd dstPt548127810(Point(50085, 51950), 4);
    connRef548127810->setDestEndpoint(dstPt548127810);
    connRef548127810->setRoutingType((ConnType)2);

    ConnRef *connRef648819584 = new ConnRef(router, 648819584);
    ConnEnd srcPt648819584(Point(51540, 51825), 8);
    connRef648819584->setSourceEndpoint(srcPt648819584);
    ConnEnd dstPt648819584(Point(51940, 51800), 8);
    connRef648819584->setDestEndpoint(dstPt648819584);
    connRef648819584->setRoutingType((ConnType)2);

    ConnRef *connRef651183694 = new ConnRef(router, 651183694);
    ConnEnd srcPt651183694(Point(51635, 51550), 4);
    connRef651183694->setSourceEndpoint(srcPt651183694);
    ConnEnd dstPt651183694(Point(51450, 51510), 1);
    connRef651183694->setDestEndpoint(dstPt651183694);
    connRef651183694->setRoutingType((ConnType)2);

    ConnRef *connRef655025700 = new ConnRef(router, 655025700);
    ConnEnd srcPt655025700(Point(51150, 52215), 2);
    connRef655025700->setSourceEndpoint(srcPt655025700);
    ConnEnd dstPt655025700(Point(51100, 52510), 1);
    connRef655025700->setDestEndpoint(dstPt655025700);
    connRef655025700->setRoutingType((ConnType)2);

    ConnRef *connRef662151765 = new ConnRef(router, 662151765);
    ConnEnd srcPt662151765(Point(50535, 51600), 4);
    connRef662151765->setSourceEndpoint(srcPt662151765);
    ConnEnd dstPt662151765(shapeRef258454350, 2147483646);
    connRef662151765->setDestEndpoint(dstPt662151765);
    connRef662151765->setRoutingType((ConnType)2);

    ConnRef *connRef678159455 = new ConnRef(router, 678159455);
    ConnEnd srcPt678159455(Point(51815, 51550), 8);
    connRef678159455->setSourceEndpoint(srcPt678159455);
    ConnEnd dstPt678159455(Point(51375, 51510), 1);
    connRef678159455->setDestEndpoint(dstPt678159455);
    connRef678159455->setRoutingType((ConnType)2);

    ConnRef *connRef803304040 = new ConnRef(router, 803304040);
    ConnEnd srcPt803304040(Point(50850, 52215), 2);
    connRef803304040->setSourceEndpoint(srcPt803304040);
    ConnEnd dstPt803304040(Point(50085, 52450), 4);
    connRef803304040->setDestEndpoint(dstPt803304040);
    connRef803304040->setRoutingType((ConnType)2);

    ConnRef *connRef960638799 = new ConnRef(router, 960638799);
    ConnEnd srcPt960638799(Point(50535, 52125), 4);
    connRef960638799->setSourceEndpoint(srcPt960638799);
    ConnEnd dstPt960638799(Point(50035, 52100), 4);
    connRef960638799->setDestEndpoint(dstPt960638799);
    connRef960638799->setRoutingType((ConnType)2);

    router->processTransaction();
    router->outputDiagram("output/validPaths01");
    int result = router->existsInvalidOrthogonalPaths();
    delete router;
    return result;
};
Пример #6
0
int main(void) {
    Router *router = new Router(
            PolyLineRouting | OrthogonalRouting);
    router->setRoutingParameter((RoutingParameter)0, 50);
    router->setRoutingParameter((RoutingParameter)1, 0);
    router->setRoutingParameter((RoutingParameter)2, 0);
    router->setRoutingParameter((RoutingParameter)3, 4000);
    router->setRoutingParameter((RoutingParameter)4, 0);
    router->setRoutingParameter((RoutingParameter)5, 100);
    router->setRoutingParameter((RoutingParameter)6, 0);
    router->setRoutingParameter((RoutingParameter)7, 4);
    router->setRoutingOption((RoutingOption)0, true);
    router->setRoutingOption((RoutingOption)1, true);
    router->setRoutingOption((RoutingOption)2, false);
    router->setRoutingOption((RoutingOption)3, false);

    Polygon poly41(4);
    poly41.ps[0] = Point(918.6758458220888, 441.0752314081785);
    poly41.ps[1] = Point(918.6758458220888, 503.0752314081785);
    poly41.ps[2] = Point(856.6758458220888, 503.0752314081785);
    poly41.ps[3] = Point(856.6758458220888, 441.0752314081785);
    new ShapeRef(router, poly41, 41);


    Polygon poly43(4);
    poly43.ps[0] = Point(710.6758458200889, 441.0752314081785);
    poly43.ps[1] = Point(710.6758458200889, 461.0752314081785);
    poly43.ps[2] = Point(678.6758458200889, 461.0752314081785);
    poly43.ps[3] = Point(678.6758458200889, 441.0752314081785);
    new ShapeRef(router, poly43, 43);

    Polygon poly44(4);
    poly44.ps[0] = Point(710.6758458200889, 483.0752314081785);
    poly44.ps[1] = Point(710.6758458200889, 503.0752314081785);
    poly44.ps[2] = Point(678.6758458200889, 503.0752314081785);
    poly44.ps[3] = Point(678.6758458200889, 483.0752314081785);
    new ShapeRef(router, poly44, 44);

    ConnRef *connRef149 = new ConnRef(router, 149);
    ConnEnd srcPt149(Point(709.6758458200889, 451.0752314081785), 8);
    connRef149->setSourceEndpoint(srcPt149);
    ConnEnd dstPt149(Point(887.6758458220888, 472.0752314081786), 15);
    connRef149->setDestEndpoint(dstPt149);
    connRef149->setRoutingType((ConnType)2);
    std::vector<Checkpoint> checkpoints149(1);
    checkpoints149[0] = Checkpoint(Point(732.6758458200889, 472.0752314081785), (ConnDirFlags) 15, (ConnDirFlags) 8);
    connRef149->setRoutingCheckpoints(checkpoints149);

    ConnRef *connRef150 = new ConnRef(router, 150);
    ConnEnd srcPt150(Point(709.6758458200889, 493.0752314081785), 8);
    connRef150->setSourceEndpoint(srcPt150);
    ConnEnd dstPt150(Point(887.6758458220888, 472.0752314081786), 15);
    connRef150->setDestEndpoint(dstPt150);
    connRef150->setRoutingType((ConnType)2);
    std::vector<Checkpoint> checkpoints150(1);
    checkpoints150[0] = Checkpoint(Point(732.6758458200889, 472.0752314081785), (ConnDirFlags) 15, (ConnDirFlags) 8);
    connRef150->setRoutingCheckpoints(checkpoints150);

    router->processTransaction();
    router->outputDiagram("output/checkpoints03");

    bool succeeded = true;
    Avoid::PolyLine route149 = connRef149->displayRoute();
    Avoid::PolyLine route150 = connRef150->displayRoute();
    if (route149.size() > 4 || route150.size() > 4)
    {
	// Five segments weren't merged into three.  The segments in the shape
	// on right weren't shifted to align with the segments going through
	// the checkpoint.
	succeeded = false;
    }
    if (succeeded == true)
    {
	    // The segments were merged by were not centred around the 
	    // checkpoint.
	    double checkpointY = 472.0752314081785;
	    if (fabs(route149.ps[route149.size() - 1].y - checkpointY) < 2)
	    {
		succeeded = false;
	    }

	    if (fabs(route150.ps[route150.size() - 1].y - checkpointY) < 2)
	    {
		succeeded = false;
	    }
    }
    delete router;
    return (succeeded) ? 0 : 1;
};
Пример #7
0
int main(void) {
    Router *router = new Router(OrthogonalRouting);
    router->setRoutingParameter((RoutingParameter)0, 2);
    router->setRoutingParameter((RoutingParameter)1, 0);
    router->setRoutingParameter((RoutingParameter)2, 0);
    router->setRoutingParameter((RoutingParameter)3, 4000);
    router->setRoutingParameter((RoutingParameter)4, 9000);
    router->setRoutingParameter((RoutingParameter)5, 0);
    router->setRoutingParameter((RoutingParameter)6, 0);
    router->setRoutingParameter((RoutingParameter)7, 16);
    router->setRoutingParameter((RoutingParameter)8, 0);
    router->setRoutingOption((RoutingOption)0, false);
    router->setRoutingOption((RoutingOption)1, true);
    router->setRoutingOption((RoutingOption)2, false);
    router->setRoutingOption((RoutingOption)3, false);
    router->setRoutingOption((RoutingOption)4, true);
    router->setRoutingOption((RoutingOption)5, false);
    router->setRoutingOption((RoutingOption)6, true);
    Polygon polygon;
    ConnEnd srcPt;
    ConnEnd dstPt;
    ConnEnd heConnPt;
    PolyLine newRoute;
    ShapeConnectionPin *connPin = NULL;

    // shapeRef1
    polygon = Polygon(4);
    polygon.ps[0] = Point(450, 330);
    polygon.ps[1] = Point(490, 330);
    polygon.ps[2] = Point(490, 450);
    polygon.ps[3] = Point(450, 450);
    ShapeRef *shapeRef1 = new ShapeRef(router, polygon, 1);
    connPin = new ShapeConnectionPin(shapeRef1, 1, 0, 0.333333, true, 10, (ConnDirFlags) 0);
    connPin->setExclusive(false);
    connPin = new ShapeConnectionPin(shapeRef1, 2, 0, 0.666667, true, 10, (ConnDirFlags) 0);
    connPin->setExclusive(false);
    connPin = new ShapeConnectionPin(shapeRef1, 3, 1, 0.5, true, 10, (ConnDirFlags) 0);
    connPin->setExclusive(false);
    connPin = new ShapeConnectionPin(shapeRef1, 4, 0.5, 0, true, 10, (ConnDirFlags) 0);
    connPin->setExclusive(false);

    // shapeRef8
    polygon = Polygon(4);
    polygon.ps[0] = Point(502, 237.5);
    polygon.ps[1] = Point(502, 262.5);
    polygon.ps[2] = Point(438, 262.5);
    polygon.ps[3] = Point(438, 237.5);
    ShapeRef *shapeRef8 = new ShapeRef(router, polygon, 8);
    connPin = new ShapeConnectionPin(shapeRef8, 1, 0, 0.5, true, 1, (ConnDirFlags) 0);
    connPin = new ShapeConnectionPin(shapeRef8, 2, 1, 0.5, true, 1, (ConnDirFlags) 0);
    connPin = new ShapeConnectionPin(shapeRef8, 3, 0.5, 1, true, 1, (ConnDirFlags) 0);
    connPin = new ShapeConnectionPin(shapeRef8, 4, 0.5, 0, true, 1, (ConnDirFlags) 0);

    JunctionRef *junctionRef6 = new JunctionRef(router, Point(470, 300), 6);
    /*
    // This may be useful if junction pins are modified.
    connPin = new ShapeConnectionPin(junctionRef6, 2147483646, (ConnDirFlags) 15);
    */

    // connRef9
    ConnRef *connRef9 = new ConnRef(router, 9);
    srcPt = ConnEnd(junctionRef6);
    connRef9->setSourceEndpoint(srcPt);
    dstPt = ConnEnd(shapeRef8, 3);
    connRef9->setDestEndpoint(dstPt);
    connRef9->setRoutingType((ConnType)2);

#if 1
    // connRef10 - WITH BUG
    ConnRef *connRef10 = new ConnRef(router, 10);
    srcPt = ConnEnd(junctionRef6);
    connRef10->setSourceEndpoint(srcPt);
    dstPt = ConnEnd(shapeRef1, 4);
    connRef10->setDestEndpoint(dstPt);
    connRef10->setRoutingType((ConnType)2);
#else
    // connRef10 - WITHOUT BUG
    ConnRef *connRef10 = new ConnRef(router, 10);
    srcPt = ConnEnd(shapeRef1, 4);
    connRef10->setSourceEndpoint(srcPt);
    dstPt = ConnEnd(junctionRef6);
    connRef10->setDestEndpoint(dstPt);
    connRef10->setRoutingType((ConnType)2);
#endif

    //    router->deleteConnector(connRef5);
    router->processTransaction();

    ConnRef *mergedConn = junctionRef6->removeJunctionAndMergeConnectors();
    router->processTransaction();
    router->outputDiagram("output/removeJunctions01");

    std::pair<ConnEnd, ConnEnd> ends = mergedConn->endpointConnEnds();

    // Expected result: output images should be virtually identical.
    // Result: An endpoint seems to be disconnected from shapeRef8.
    bool isConnected = (ends.first.shape() == shapeRef8) || (ends.second.shape() == shapeRef8);

    delete router;
    return isConnected ? 0 : 1;
};