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 --- doc/HACKING.fr.txt | 35 +- src/conn-avoid-ref.cpp | 15 +- src/graphlayout.cpp | 193 +- src/libavoid/CMakeLists.txt | 21 + src/libavoid/Doxyfile | 1867 ++ src/libavoid/LICENSE.LGPL | 460 + src/libavoid/Makefile.am | 91 + src/libavoid/README | 31 +- src/libavoid/actioninfo.cpp | 187 + src/libavoid/actioninfo.h | 88 + src/libavoid/assertions.h | 15 +- src/libavoid/connectionpin.cpp | 476 + src/libavoid/connectionpin.h | 303 + src/libavoid/connector.cpp | 1902 +- src/libavoid/connector.h | 462 +- src/libavoid/connend.cpp | 434 + src/libavoid/connend.h | 267 + src/libavoid/debug.h | 70 +- src/libavoid/debughandler.h | 138 + src/libavoid/dllexport.h | 39 + src/libavoid/doc/description.doc | 73 + src/libavoid/doc/example.doc | 122 + src/libavoid/doc/header.html | 19 + src/libavoid/geometry.cpp | 89 +- src/libavoid/geometry.h | 12 +- src/libavoid/geomtypes.cpp | 306 +- src/libavoid/geomtypes.h | 123 +- src/libavoid/graph.cpp | 387 +- src/libavoid/graph.h | 59 +- src/libavoid/hyperedge.cpp | 388 + src/libavoid/hyperedge.h | 223 + src/libavoid/hyperedgeimprover.cpp | 1231 + src/libavoid/hyperedgeimprover.h | 159 + src/libavoid/hyperedgetree.cpp | 821 + src/libavoid/hyperedgetree.h | 143 + src/libavoid/junction.cpp | 232 + src/libavoid/junction.h | 197 + src/libavoid/libavoid.h | 18 +- src/libavoid/libavoid.pc.in | 12 + src/libavoid/libavoid.sln | 196 + src/libavoid/libavoid.vcxproj | 195 + src/libavoid/makefile.in | 17 - src/libavoid/makepath.cpp | 1431 +- src/libavoid/makepath.h | 20 +- src/libavoid/mtst.cpp | 1095 + src/libavoid/mtst.h | 134 + src/libavoid/obstacle.cpp | 355 + src/libavoid/obstacle.h | 150 + src/libavoid/orthogonal.cpp | 2980 ++- src/libavoid/orthogonal.h | 6 +- src/libavoid/router.cpp | 2235 +- src/libavoid/router.h | 697 +- src/libavoid/scanline.cpp | 561 + src/libavoid/scanline.h | 136 + src/libavoid/shape.cpp | 401 +- src/libavoid/shape.h | 129 +- src/libavoid/tests/2junctions.cpp | 108 + src/libavoid/tests/Makefile.am | 217 + src/libavoid/tests/buildOrthogonalChannelInfo1.cpp | 65 + src/libavoid/tests/checkpointNudging1.cpp | 2592 ++ src/libavoid/tests/checkpointNudging2.cpp | 2606 ++ src/libavoid/tests/checkpointNudging3.cpp | 5242 ++++ src/libavoid/tests/checkpoints01.cpp | 62 + src/libavoid/tests/checkpoints02.cpp | 105 + src/libavoid/tests/checkpoints03.cpp | 96 + src/libavoid/tests/complex.cpp | 107 + src/libavoid/tests/connectionpin01.cpp | 68 + src/libavoid/tests/connectionpin02.cpp | 113 + src/libavoid/tests/connectionpin03.cpp | 328 + src/libavoid/tests/connendmove.cpp | 85 + src/libavoid/tests/corneroverlap01.cpp | 154 + src/libavoid/tests/endlessLoop01.cpp | 142 + src/libavoid/tests/example.cpp | 81 + src/libavoid/tests/finalSegmentNudging1.cpp | 5227 ++++ src/libavoid/tests/finalSegmentNudging2.cpp | 397 + src/libavoid/tests/finalSegmentNudging3.cpp | 2658 ++ src/libavoid/tests/forwardFlowingConnectors01.cpp | 380 + src/libavoid/tests/freeFloatingDirection01.cpp | 3321 +++ src/libavoid/tests/hola01.cpp | 1006 + src/libavoid/tests/hyperedge01.cpp | 285 + src/libavoid/tests/hyperedge02.cpp | 99 + src/libavoid/tests/hyperedgeLoop1.cpp | 87 + src/libavoid/tests/hyperedgeRerouting01.cpp | 150 + src/libavoid/tests/improveHyperedge01.cpp | 109 + src/libavoid/tests/improveHyperedge02.cpp | 90 + src/libavoid/tests/improveHyperedge03.cpp | 90 + src/libavoid/tests/improveHyperedge04.cpp | 113 + src/libavoid/tests/improveHyperedge05.cpp | 154 + src/libavoid/tests/improveHyperedge06.cpp | 92 + src/libavoid/tests/infinity.cpp | 26 + src/libavoid/tests/inline.cpp | 73 + src/libavoid/tests/inlineOverlap09.cpp | 401 + src/libavoid/tests/inlineOverlap10.cpp | 93 + src/libavoid/tests/inlineOverlap11.cpp | 187 + src/libavoid/tests/inlineShapes.cpp | 97 + src/libavoid/tests/inlineoverlap01.cpp | 25 + src/libavoid/tests/inlineoverlap02.cpp | 62 + src/libavoid/tests/inlineoverlap03.cpp | 55 + src/libavoid/tests/inlineoverlap04.cpp | 62 + src/libavoid/tests/inlineoverlap05.cpp | 69 + src/libavoid/tests/inlineoverlap06.cpp | 62 + src/libavoid/tests/inlineoverlap07.cpp | 75 + src/libavoid/tests/inlineoverlap08.cpp | 120 + src/libavoid/tests/junction01.cpp | 55 + src/libavoid/tests/junction02.cpp | 55 + src/libavoid/tests/junction03.cpp | 55 + src/libavoid/tests/junction04.cpp | 100 + src/libavoid/tests/latesetup.cpp | 94 + src/libavoid/tests/lineSegWrapperCrash1.cpp | 1884 ++ src/libavoid/tests/lineSegWrapperCrash2.cpp | 1884 ++ src/libavoid/tests/lineSegWrapperCrash3.cpp | 1884 ++ src/libavoid/tests/lineSegWrapperCrash4.cpp | 1884 ++ src/libavoid/tests/lineSegWrapperCrash5.cpp | 1884 ++ src/libavoid/tests/lineSegWrapperCrash6.cpp | 1884 ++ src/libavoid/tests/lineSegWrapperCrash7.cpp | 1884 ++ src/libavoid/tests/lineSegWrapperCrash8.cpp | 1884 ++ src/libavoid/tests/msctests/2junctions.vcxproj | 152 + .../msctests/buildOrthogonalChannelInfo1.vcxproj | 152 + .../tests/msctests/checkpointNudging1.vcxproj | 152 + .../tests/msctests/checkpointNudging2.vcxproj | 152 + src/libavoid/tests/msctests/checkpoints01.vcxproj | 152 + .../tests/msctests/connectionpin01.vcxproj | 152 + .../tests/msctests/connectionpin02.vcxproj | 152 + .../tests/msctests/connectionpin03.vcxproj | 152 + src/libavoid/tests/msctests/connendmove.vcxproj | 152 + .../tests/msctests/corneroverlap01.vcxproj | 152 + src/libavoid/tests/msctests/example.vcxproj | 152 + .../tests/msctests/finalSegmentNudging1.vcxproj | 152 + .../tests/msctests/finalSegmentNudging2.vcxproj | 152 + .../tests/msctests/finalSegmentNudging3.vcxproj | 152 + .../tests/msctests/freeFloatingDirection01.vcxproj | 152 + src/libavoid/tests/msctests/junction01.vcxproj | 152 + src/libavoid/tests/multiconnact.cpp | 75 + src/libavoid/tests/node1.cpp | 68 + src/libavoid/tests/nudgeCrossing01.cpp | 2665 ++ src/libavoid/tests/nudgeintobug.cpp | 40 + src/libavoid/tests/nudgeold.cpp | 80 + src/libavoid/tests/nudgingSkipsCheckpoint01.cpp | 1507 ++ src/libavoid/tests/nudgingSkipsCheckpoint02.cpp | 3054 +++ src/libavoid/tests/orderassertion.cpp | 1720 ++ src/libavoid/tests/orthordering01.cpp | 92 + src/libavoid/tests/orthordering02.cpp | 92 + src/libavoid/tests/output/README.txt | 1 + src/libavoid/tests/overlappingRects.cpp | 2327 ++ src/libavoid/tests/penaltyRerouting01.cpp | 369 + src/libavoid/tests/performance01.cpp | 7665 ++++++ src/libavoid/tests/reallyslowrouting.cpp | 7099 +++++ src/libavoid/tests/removeJunctions01.cpp | 103 + src/libavoid/tests/restrictedNudging.cpp | 68 + src/libavoid/tests/slowrouting.cpp | 1459 ++ src/libavoid/tests/tjunct.cpp | 48 + src/libavoid/tests/treeRootCrash01.cpp | 140 + src/libavoid/tests/treeRootCrash02.cpp | 243 + src/libavoid/tests/unsatisfiableRangeAssertion.cpp | 25789 ++++++++++++++++++ src/libavoid/tests/validPaths01.cpp | 457 + src/libavoid/tests/validPaths02.cpp | 53 + src/libavoid/tests/vertlineassertion.cpp | 2214 ++ src/libavoid/timer.cpp | 178 +- src/libavoid/timer.h | 74 +- src/libavoid/vertices.cpp | 237 +- src/libavoid/vertices.h | 94 +- src/libavoid/viscluster.cpp | 60 +- src/libavoid/viscluster.h | 91 +- src/libavoid/visibility.cpp | 234 +- src/libavoid/visibility.h | 11 +- src/libavoid/vpsc.cpp | 477 +- src/libavoid/vpsc.h | 130 +- src/libcola/CMakeLists.txt | 14 +- src/libcola/Makefile.am | 60 + src/libcola/box.cpp | 111 + src/libcola/box.h | 82 + src/libcola/cc_clustercontainmentconstraints.cpp | 194 + src/libcola/cc_clustercontainmentconstraints.h | 52 + src/libcola/cc_nonoverlapconstraints.cpp | 647 + src/libcola/cc_nonoverlapconstraints.h | 98 + src/libcola/cluster.cpp | 719 + src/libcola/cluster.h | 371 + src/libcola/cola.cpp | 829 +- src/libcola/cola.h | 1031 +- src/libcola/cola_log.h | 203 + src/libcola/colafd.cpp | 1490 ++ src/libcola/commondefs.h | 103 + src/libcola/compound_constraints.cpp | 1671 ++ src/libcola/compound_constraints.h | 827 + src/libcola/conjugate_gradient.cpp | 124 +- src/libcola/conjugate_gradient.h | 35 +- src/libcola/connected_components.cpp | 88 +- src/libcola/connected_components.h | 54 + src/libcola/convex_hull.cpp | 129 + src/libcola/convex_hull.h | 31 + src/libcola/cycle_detector.cpp | 249 - src/libcola/cycle_detector.h | 55 - src/libcola/defs.h | 132 - src/libcola/doc/description.doc | 50 + src/libcola/exceptions.h | 54 + src/libcola/gradient_projection.cpp | 614 +- src/libcola/gradient_projection.h | 388 +- src/libcola/libcola.pc.in | 11 + src/libcola/output_svg.cpp | 389 + src/libcola/output_svg.h | 80 + src/libcola/pseudorandom.cpp | 48 + src/libcola/pseudorandom.h | 44 + src/libcola/shapepair.cpp | 47 + src/libcola/shapepair.h | 47 + src/libcola/shortest_paths.cpp | 102 - src/libcola/shortest_paths.h | 248 +- src/libcola/sparse_matrix.h | 140 + src/libcola/straightener.cpp | 759 +- src/libcola/straightener.h | 484 +- src/libcola/tests/FixedRelativeConstraint01.cpp | 51 + src/libcola/tests/Makefile.am | 68 + src/libcola/tests/StillOverlap01.cpp | 221 + src/libcola/tests/StillOverlap02.cpp | 1863 ++ src/libcola/tests/boundary.cpp | 121 + src/libcola/tests/connected_components.cpp | 69 + src/libcola/tests/constrained.cpp | 99 + src/libcola/tests/containment.cpp | 89 + src/libcola/tests/containment2.cpp | 157 + src/libcola/tests/convex_hull.cpp | 180 + src/libcola/tests/cycle_detector.cpp | 386 + src/libcola/tests/data/1138_bus.txt | 1458 ++ src/libcola/tests/data/uetzNetworkGSC-all.gml | 26139 +++++++++++++++++++ src/libcola/tests/gml_graph.cpp | 257 + src/libcola/tests/graphlayouttest.h | 275 + src/libcola/tests/initialOverlap.cpp | 168 + src/libcola/tests/invalid.cpp | 80 + src/libcola/tests/large_graph.cpp | 144 + src/libcola/tests/makefeasible.cpp | 366 + src/libcola/tests/makefeasible02.cpp | 932 + src/libcola/tests/makemovie.sh | 10 + src/libcola/tests/max_acyclic_subgraph.cpp | 346 + src/libcola/tests/overlappingClusters01.cpp | 333 + src/libcola/tests/overlappingClusters02.cpp | 100 + src/libcola/tests/overlappingClusters04.cpp | 61 + src/libcola/tests/page_bounds.cpp | 102 + src/libcola/tests/planar.cpp | 287 + src/libcola/tests/random_graph.cpp | 113 + src/libcola/tests/rectangularClusters01.cpp | 1135 + src/libcola/tests/rectclustershapecontainment.cpp | 2173 ++ src/libcola/tests/resize.cpp | 132 + src/libcola/tests/runtest.sh | 8 + src/libcola/tests/scale_free.cpp | 135 + src/libcola/tests/shortest_paths.cpp | 140 + src/libcola/tests/small_graph.cpp | 111 + src/libcola/tests/sparse_matrix.cpp | 88 + src/libcola/tests/test_cg.cpp | 164 + src/libcola/tests/topology.cpp | 177 + src/libcola/tests/trees.cpp | 103 + src/libcola/tests/unconstrained.cpp | 71 + src/libcola/tests/unsatisfiable.cpp | 85 + src/libcola/tests/view_cd_output.sh | 43 + src/libcola/tests/view_mas_output.sh | 43 + src/libcola/unused.h | 26 + src/libvpsc/CMakeLists.txt | 17 +- src/libvpsc/Makefile.am | 42 + src/libvpsc/assertions.h | 102 + src/libvpsc/block.cpp | 845 +- src/libvpsc/block.h | 163 +- src/libvpsc/blocks.cpp | 333 +- src/libvpsc/blocks.h | 140 +- src/libvpsc/cbuffer.cpp | 95 + src/libvpsc/cbuffer.h | 49 + src/libvpsc/constraint.cpp | 224 +- src/libvpsc/constraint.h | 161 +- src/libvpsc/doc/description.doc | 36 + src/libvpsc/exceptions.h | 36 + src/libvpsc/generate-constraints.cpp | 309 - src/libvpsc/generate-constraints.h | 84 - src/libvpsc/isnan.h | 74 + src/libvpsc/libvpsc.pc.in | 12 + src/libvpsc/linesegment.h | 138 + src/libvpsc/pairing_heap.h | 394 + src/libvpsc/pairingheap/PairingHeap.cpp | 335 - src/libvpsc/pairingheap/PairingHeap.h | 125 - src/libvpsc/pairingheap/dsexceptions.h | 9 - src/libvpsc/placement_SolveVPSC.h | 53 - src/libvpsc/rectangle.cpp | 745 + src/libvpsc/rectangle.h | 302 + src/libvpsc/remove_rectangle_overlap.cpp | 106 - src/libvpsc/remove_rectangle_overlap.h | 34 - src/libvpsc/solve_VPSC.cpp | 812 +- src/libvpsc/solve_VPSC.h | 176 +- src/libvpsc/tests/Makefile.am | 15 + src/libvpsc/tests/block.cpp | 105 + src/libvpsc/tests/cycle.cpp | 106 + src/libvpsc/tests/rectangleoverlap.cpp | 660 + src/libvpsc/tests/satisfy_inc.cpp | 666 + src/libvpsc/variable.cpp | 31 +- src/libvpsc/variable.h | 79 +- src/removeoverlap.cpp | 116 +- src/sp-conn-end-pair.cpp | 120 +- src/ui/tools/connector-tool.cpp | 3 +- 292 files changed, 178976 insertions(+), 8048 deletions(-) create mode 100644 src/libavoid/Doxyfile create mode 100644 src/libavoid/LICENSE.LGPL create mode 100644 src/libavoid/Makefile.am create mode 100644 src/libavoid/actioninfo.cpp create mode 100644 src/libavoid/actioninfo.h create mode 100644 src/libavoid/connectionpin.cpp create mode 100644 src/libavoid/connectionpin.h create mode 100644 src/libavoid/connend.cpp create mode 100644 src/libavoid/connend.h create mode 100644 src/libavoid/debughandler.h create mode 100644 src/libavoid/dllexport.h create mode 100644 src/libavoid/doc/description.doc create mode 100644 src/libavoid/doc/example.doc create mode 100644 src/libavoid/doc/header.html create mode 100644 src/libavoid/hyperedge.cpp create mode 100644 src/libavoid/hyperedge.h create mode 100644 src/libavoid/hyperedgeimprover.cpp create mode 100644 src/libavoid/hyperedgeimprover.h create mode 100644 src/libavoid/hyperedgetree.cpp create mode 100644 src/libavoid/hyperedgetree.h create mode 100644 src/libavoid/junction.cpp create mode 100644 src/libavoid/junction.h create mode 100644 src/libavoid/libavoid.pc.in create mode 100755 src/libavoid/libavoid.sln create mode 100755 src/libavoid/libavoid.vcxproj delete mode 100644 src/libavoid/makefile.in create mode 100644 src/libavoid/mtst.cpp create mode 100644 src/libavoid/mtst.h create mode 100644 src/libavoid/obstacle.cpp create mode 100644 src/libavoid/obstacle.h create mode 100644 src/libavoid/scanline.cpp create mode 100644 src/libavoid/scanline.h create mode 100644 src/libavoid/tests/2junctions.cpp create mode 100644 src/libavoid/tests/Makefile.am create mode 100644 src/libavoid/tests/buildOrthogonalChannelInfo1.cpp create mode 100644 src/libavoid/tests/checkpointNudging1.cpp create mode 100644 src/libavoid/tests/checkpointNudging2.cpp create mode 100644 src/libavoid/tests/checkpointNudging3.cpp create mode 100644 src/libavoid/tests/checkpoints01.cpp create mode 100644 src/libavoid/tests/checkpoints02.cpp create mode 100644 src/libavoid/tests/checkpoints03.cpp create mode 100644 src/libavoid/tests/complex.cpp create mode 100644 src/libavoid/tests/connectionpin01.cpp create mode 100644 src/libavoid/tests/connectionpin02.cpp create mode 100644 src/libavoid/tests/connectionpin03.cpp create mode 100644 src/libavoid/tests/connendmove.cpp create mode 100644 src/libavoid/tests/corneroverlap01.cpp create mode 100644 src/libavoid/tests/endlessLoop01.cpp create mode 100644 src/libavoid/tests/example.cpp create mode 100644 src/libavoid/tests/finalSegmentNudging1.cpp create mode 100644 src/libavoid/tests/finalSegmentNudging2.cpp create mode 100644 src/libavoid/tests/finalSegmentNudging3.cpp create mode 100644 src/libavoid/tests/forwardFlowingConnectors01.cpp create mode 100644 src/libavoid/tests/freeFloatingDirection01.cpp create mode 100644 src/libavoid/tests/hola01.cpp create mode 100644 src/libavoid/tests/hyperedge01.cpp create mode 100644 src/libavoid/tests/hyperedge02.cpp create mode 100644 src/libavoid/tests/hyperedgeLoop1.cpp create mode 100644 src/libavoid/tests/hyperedgeRerouting01.cpp create mode 100644 src/libavoid/tests/improveHyperedge01.cpp create mode 100644 src/libavoid/tests/improveHyperedge02.cpp create mode 100644 src/libavoid/tests/improveHyperedge03.cpp create mode 100644 src/libavoid/tests/improveHyperedge04.cpp create mode 100644 src/libavoid/tests/improveHyperedge05.cpp create mode 100644 src/libavoid/tests/improveHyperedge06.cpp create mode 100644 src/libavoid/tests/infinity.cpp create mode 100644 src/libavoid/tests/inline.cpp create mode 100644 src/libavoid/tests/inlineOverlap09.cpp create mode 100644 src/libavoid/tests/inlineOverlap10.cpp create mode 100644 src/libavoid/tests/inlineOverlap11.cpp create mode 100644 src/libavoid/tests/inlineShapes.cpp create mode 100644 src/libavoid/tests/inlineoverlap01.cpp create mode 100644 src/libavoid/tests/inlineoverlap02.cpp create mode 100644 src/libavoid/tests/inlineoverlap03.cpp create mode 100644 src/libavoid/tests/inlineoverlap04.cpp create mode 100644 src/libavoid/tests/inlineoverlap05.cpp create mode 100644 src/libavoid/tests/inlineoverlap06.cpp create mode 100644 src/libavoid/tests/inlineoverlap07.cpp create mode 100644 src/libavoid/tests/inlineoverlap08.cpp create mode 100644 src/libavoid/tests/junction01.cpp create mode 100644 src/libavoid/tests/junction02.cpp create mode 100644 src/libavoid/tests/junction03.cpp create mode 100644 src/libavoid/tests/junction04.cpp create mode 100644 src/libavoid/tests/latesetup.cpp create mode 100644 src/libavoid/tests/lineSegWrapperCrash1.cpp create mode 100644 src/libavoid/tests/lineSegWrapperCrash2.cpp create mode 100644 src/libavoid/tests/lineSegWrapperCrash3.cpp create mode 100644 src/libavoid/tests/lineSegWrapperCrash4.cpp create mode 100644 src/libavoid/tests/lineSegWrapperCrash5.cpp create mode 100644 src/libavoid/tests/lineSegWrapperCrash6.cpp create mode 100644 src/libavoid/tests/lineSegWrapperCrash7.cpp create mode 100644 src/libavoid/tests/lineSegWrapperCrash8.cpp create mode 100755 src/libavoid/tests/msctests/2junctions.vcxproj create mode 100755 src/libavoid/tests/msctests/buildOrthogonalChannelInfo1.vcxproj create mode 100755 src/libavoid/tests/msctests/checkpointNudging1.vcxproj create mode 100755 src/libavoid/tests/msctests/checkpointNudging2.vcxproj create mode 100755 src/libavoid/tests/msctests/checkpoints01.vcxproj create mode 100755 src/libavoid/tests/msctests/connectionpin01.vcxproj create mode 100755 src/libavoid/tests/msctests/connectionpin02.vcxproj create mode 100755 src/libavoid/tests/msctests/connectionpin03.vcxproj create mode 100755 src/libavoid/tests/msctests/connendmove.vcxproj create mode 100755 src/libavoid/tests/msctests/corneroverlap01.vcxproj create mode 100755 src/libavoid/tests/msctests/example.vcxproj create mode 100755 src/libavoid/tests/msctests/finalSegmentNudging1.vcxproj create mode 100755 src/libavoid/tests/msctests/finalSegmentNudging2.vcxproj create mode 100755 src/libavoid/tests/msctests/finalSegmentNudging3.vcxproj create mode 100755 src/libavoid/tests/msctests/freeFloatingDirection01.vcxproj create mode 100755 src/libavoid/tests/msctests/junction01.vcxproj create mode 100644 src/libavoid/tests/multiconnact.cpp create mode 100644 src/libavoid/tests/node1.cpp create mode 100644 src/libavoid/tests/nudgeCrossing01.cpp create mode 100644 src/libavoid/tests/nudgeintobug.cpp create mode 100644 src/libavoid/tests/nudgeold.cpp create mode 100644 src/libavoid/tests/nudgingSkipsCheckpoint01.cpp create mode 100644 src/libavoid/tests/nudgingSkipsCheckpoint02.cpp create mode 100644 src/libavoid/tests/orderassertion.cpp create mode 100644 src/libavoid/tests/orthordering01.cpp create mode 100644 src/libavoid/tests/orthordering02.cpp create mode 100644 src/libavoid/tests/output/README.txt create mode 100644 src/libavoid/tests/overlappingRects.cpp create mode 100644 src/libavoid/tests/penaltyRerouting01.cpp create mode 100644 src/libavoid/tests/performance01.cpp create mode 100644 src/libavoid/tests/reallyslowrouting.cpp create mode 100644 src/libavoid/tests/removeJunctions01.cpp create mode 100644 src/libavoid/tests/restrictedNudging.cpp create mode 100644 src/libavoid/tests/slowrouting.cpp create mode 100644 src/libavoid/tests/tjunct.cpp create mode 100644 src/libavoid/tests/treeRootCrash01.cpp create mode 100644 src/libavoid/tests/treeRootCrash02.cpp create mode 100644 src/libavoid/tests/unsatisfiableRangeAssertion.cpp create mode 100644 src/libavoid/tests/validPaths01.cpp create mode 100644 src/libavoid/tests/validPaths02.cpp create mode 100644 src/libavoid/tests/vertlineassertion.cpp create mode 100644 src/libcola/Makefile.am create mode 100644 src/libcola/box.cpp create mode 100644 src/libcola/box.h create mode 100644 src/libcola/cc_clustercontainmentconstraints.cpp create mode 100644 src/libcola/cc_clustercontainmentconstraints.h create mode 100644 src/libcola/cc_nonoverlapconstraints.cpp create mode 100644 src/libcola/cc_nonoverlapconstraints.h create mode 100644 src/libcola/cluster.cpp create mode 100644 src/libcola/cluster.h create mode 100644 src/libcola/cola_log.h create mode 100644 src/libcola/colafd.cpp create mode 100644 src/libcola/commondefs.h create mode 100644 src/libcola/compound_constraints.cpp create mode 100644 src/libcola/compound_constraints.h create mode 100644 src/libcola/connected_components.h create mode 100644 src/libcola/convex_hull.cpp create mode 100644 src/libcola/convex_hull.h delete mode 100644 src/libcola/cycle_detector.cpp delete mode 100644 src/libcola/cycle_detector.h delete mode 100644 src/libcola/defs.h create mode 100644 src/libcola/doc/description.doc create mode 100644 src/libcola/exceptions.h create mode 100644 src/libcola/libcola.pc.in create mode 100644 src/libcola/output_svg.cpp create mode 100644 src/libcola/output_svg.h create mode 100644 src/libcola/pseudorandom.cpp create mode 100644 src/libcola/pseudorandom.h create mode 100644 src/libcola/shapepair.cpp create mode 100644 src/libcola/shapepair.h delete mode 100644 src/libcola/shortest_paths.cpp create mode 100644 src/libcola/sparse_matrix.h create mode 100755 src/libcola/tests/FixedRelativeConstraint01.cpp create mode 100644 src/libcola/tests/Makefile.am create mode 100755 src/libcola/tests/StillOverlap01.cpp create mode 100755 src/libcola/tests/StillOverlap02.cpp create mode 100644 src/libcola/tests/boundary.cpp create mode 100644 src/libcola/tests/connected_components.cpp create mode 100644 src/libcola/tests/constrained.cpp create mode 100644 src/libcola/tests/containment.cpp create mode 100644 src/libcola/tests/containment2.cpp create mode 100644 src/libcola/tests/convex_hull.cpp create mode 100644 src/libcola/tests/cycle_detector.cpp create mode 100644 src/libcola/tests/data/1138_bus.txt create mode 100644 src/libcola/tests/data/uetzNetworkGSC-all.gml create mode 100644 src/libcola/tests/gml_graph.cpp create mode 100644 src/libcola/tests/graphlayouttest.h create mode 100644 src/libcola/tests/initialOverlap.cpp create mode 100644 src/libcola/tests/invalid.cpp create mode 100644 src/libcola/tests/large_graph.cpp create mode 100644 src/libcola/tests/makefeasible.cpp create mode 100755 src/libcola/tests/makefeasible02.cpp create mode 100644 src/libcola/tests/makemovie.sh create mode 100644 src/libcola/tests/max_acyclic_subgraph.cpp create mode 100644 src/libcola/tests/overlappingClusters01.cpp create mode 100644 src/libcola/tests/overlappingClusters02.cpp create mode 100644 src/libcola/tests/overlappingClusters04.cpp create mode 100644 src/libcola/tests/page_bounds.cpp create mode 100644 src/libcola/tests/planar.cpp create mode 100644 src/libcola/tests/random_graph.cpp create mode 100644 src/libcola/tests/rectangularClusters01.cpp create mode 100644 src/libcola/tests/rectclustershapecontainment.cpp create mode 100644 src/libcola/tests/resize.cpp create mode 100755 src/libcola/tests/runtest.sh create mode 100644 src/libcola/tests/scale_free.cpp create mode 100644 src/libcola/tests/shortest_paths.cpp create mode 100644 src/libcola/tests/small_graph.cpp create mode 100644 src/libcola/tests/sparse_matrix.cpp create mode 100644 src/libcola/tests/test_cg.cpp create mode 100644 src/libcola/tests/topology.cpp create mode 100644 src/libcola/tests/trees.cpp create mode 100644 src/libcola/tests/unconstrained.cpp create mode 100644 src/libcola/tests/unsatisfiable.cpp create mode 100755 src/libcola/tests/view_cd_output.sh create mode 100755 src/libcola/tests/view_mas_output.sh create mode 100644 src/libcola/unused.h create mode 100644 src/libvpsc/Makefile.am create mode 100644 src/libvpsc/assertions.h create mode 100644 src/libvpsc/cbuffer.cpp create mode 100644 src/libvpsc/cbuffer.h create mode 100644 src/libvpsc/doc/description.doc create mode 100644 src/libvpsc/exceptions.h delete mode 100644 src/libvpsc/generate-constraints.cpp delete mode 100644 src/libvpsc/generate-constraints.h create mode 100644 src/libvpsc/isnan.h create mode 100644 src/libvpsc/libvpsc.pc.in create mode 100644 src/libvpsc/linesegment.h create mode 100644 src/libvpsc/pairing_heap.h delete mode 100644 src/libvpsc/pairingheap/PairingHeap.cpp delete mode 100644 src/libvpsc/pairingheap/PairingHeap.h delete mode 100644 src/libvpsc/pairingheap/dsexceptions.h delete mode 100644 src/libvpsc/placement_SolveVPSC.h create mode 100644 src/libvpsc/rectangle.cpp create mode 100644 src/libvpsc/rectangle.h delete mode 100644 src/libvpsc/remove_rectangle_overlap.cpp delete mode 100644 src/libvpsc/remove_rectangle_overlap.h create mode 100644 src/libvpsc/tests/Makefile.am create mode 100644 src/libvpsc/tests/block.cpp create mode 100644 src/libvpsc/tests/cycle.cpp create mode 100644 src/libvpsc/tests/rectangleoverlap.cpp create mode 100644 src/libvpsc/tests/satisfy_inc.cpp diff --git a/doc/HACKING.fr.txt b/doc/HACKING.fr.txt index e551aac0f..4c6c4a4a8 100644 --- a/doc/HACKING.fr.txt +++ b/doc/HACKING.fr.txt @@ -24,25 +24,26 @@ suggestions pour les développeurs. Contribuer à Inkscape ===================== Inkscape accepte volontiers vos contributions pour aider à en faire un -programme de dessin totalement conforme à la norme SVG pour la communeauté du +programme de dessin totalement conforme à la norme SVG pour la communauté du logiciel libre. Alors que beaucoup de développeurs travaillent sur la correction de bugs et la création de nouvelles fonctionnalités, il est important de noter que même les non-programmeurs peuvent contribuer à la puissance et au succès d'Inkscape. Vous avez probablement une idée d'une chose sur laquelle vous aimeriez -travailler. Sinon, voivi quelques façons d'apporter votre aide : +travailler. Sinon, voici quelques façons d'apporter votre aide : * Sélectionner un bug, le corriger et envoyer un path ("diff -uNrp" ou - "cvs diff -up") + "cvs diff -up") * Choisir une fonctionnalité que vous aimeriez développer et la coder * Si vous maîtrisez une langue en plus de l'anglais, travailler sur le - fichier i18n de celle-ci dans le répertoire /po + fichier i18n de celle-ci dans le répertoire /po * Trouver un nouveau bug et le rapporter - * Aider à répondre aux questions des nouveaux "Inkscapeurs" sur Jabber, IRC - ou les mailing lists - * Ecrire un article pour la promotion d'Inkscape - * Ecrire un HOWTO décrivant une astuce ou technique que vous avez trouvé + * Aider à répondre aux questions des nouveaux « Inkscapeurs » sur Jabber, + IRC ou les listes de diffusion + * Écrire un article pour la promotion d'Inkscape + * Produire un tutoriel décrivant une astuce ou technique que vous avez + trouvée Accès BZR @@ -56,11 +57,11 @@ simple : fournir deux contributions et demander un accès. Décisions de patch ================== -Notre ligne de conduite quant aux modifications du code est "coder d'abord, -poser les questions ensuite". Quand quelqu'un a une idée, plutôt que de la +Notre ligne de conduite quant aux modifications du code est « coder d'abord, +poser les questions ensuite ». Quand quelqu'un a une idée, plutôt que de la débattre sans fin, nous encourageons les gens à aller de l'avant et coder -quelquechose (même un prototypage). Ce code est ensuite incorporé dans la -branche de développement afin de l'essayer, le tester, le pousser et +quelque chose (même un prototypage). Ce code est ensuite incorporé dans la +branche de développement afin de l'essayer, le tester, le publier et l'améliorer. Nous pensons que la meilleure façon de vérifier qu'une idée est bonne est de la tester en conditions réelles. @@ -74,9 +75,9 @@ ne vous intéresse pas, inspirez-vous du style du code environnant, de façon à rester au moins cohérent. -Makefiles -========= -Les fichiers Makefiles du répertoire src sont plus ou moins fusionnés dans le +Fichiers Makefile +================= +Les fichiers Makefile du répertoire src sont plus ou moins fusionnés dans le fichier src/Makefile.am qui fournit les informations nécessaires aux fichiers Makefile_insert de chaque répertoire. @@ -87,5 +88,5 @@ dans un Makefile_insert peuvent être utilisées dans un autre. En conséquence, envisagez soit d'ajouter un préfixe `blah_' au nom de toutes les variables que vous définiriez dans blah/Makefile_insert (si cela doit rester local pour ce Makefile_insert), ou en mettre la définition dans -src/Makefile.am. En particulier, les fichiers check_PROGRAMS, DISTCLEANFILES, -etc sont dans src/Makefile.am. +src/Makefile.am. En particulier, les fichiers check_PROGRAMS, DISTCLEANFILES, +etc. sont dans src/Makefile.am. diff --git a/src/conn-avoid-ref.cpp b/src/conn-avoid-ref.cpp index 71743fda5..5e7942f19 100644 --- a/src/conn-avoid-ref.cpp +++ b/src/conn-avoid-ref.cpp @@ -24,6 +24,7 @@ #include "sp-conn-end.h" #include "sp-path.h" #include "libavoid/router.h" +#include "libavoid/shape.h" #include "xml/node.h" #include "document.h" #include "desktop.h" @@ -57,12 +58,10 @@ SPAvoidRef::~SPAvoidRef() // If the document is being destroyed then the router instance // and the ShapeRefs will have been destroyed with it. - const bool routerInstanceExists = (item->document->router != NULL); + Router *router = item->document->router; - if (shapeRef && routerInstanceExists) { - // Deleting the shapeRef will remove it completely from - // an existing Router instance. - delete shapeRef; + if (shapeRef && router) { + router->deleteShape(shapeRef); } shapeRef = NULL; } @@ -117,17 +116,13 @@ void SPAvoidRef::handleSettingChange(void) GQuark itemID = g_quark_from_string(id); shapeRef = new Avoid::ShapeRef(router, poly, itemID); - - router->addShape(shapeRef); } } else { g_assert(shapeRef); - // Deleting the shapeRef will remove it completely from - // an existing Router instance. - delete shapeRef; + router->deleteShape(shapeRef); shapeRef = NULL; } } diff --git a/src/graphlayout.cpp b/src/graphlayout.cpp index 52bb6b6a2..ba8cd10d5 100644 --- a/src/graphlayout.cpp +++ b/src/graphlayout.cpp @@ -28,26 +28,32 @@ #include "conn-avoid-ref.h" #include "libavoid/router.h" #include "libcola/cola.h" +#include "libcola/connected_components.h" using namespace std; using namespace cola; using namespace vpsc; + /** * Returns true if item is a connector */ -bool isConnector(SPItem const *const i) { - SPPath *path = NULL; - if(SP_IS_PATH(i)) { - path = SP_PATH(i); +bool isConnector(SPItem const * const item) { + SPPath * path = NULL; + if (SP_IS_PATH(item)) { + path = SP_PATH(item); } return path && path->connEndPair.isAutoRoutingConn(); } -struct CheckProgress : TestConvergence { - CheckProgress(double d,unsigned i,list& - selected,vector& rs,map& nodelookup) : - TestConvergence(d,i), selected(selected), rs(rs), nodelookup(nodelookup) {} - bool operator()(double new_stress, double* X, double* Y) { +struct CheckProgress: TestConvergence { + CheckProgress(double d, unsigned i, list & selected, Rectangles & rs, + map & nodelookup) + : TestConvergence(d, i) + , selected(selected) + , rs(rs) + , nodelookup(nodelookup) + {} + bool operator()(const double new_stress, valarray & X, valarray & Y) { /* This is where, if we wanted to animate the layout, we would need to update * the positions of all objects and redraw the canvas and maybe sleep a bit cout << "stress="<& selected; - vector& rs; - map& nodelookup; + list & selected; + Rectangles & rs; + map & nodelookup; }; /** * Scans the items list and places those items that are * not connectors in filtered */ -void filterConnectors(std::vector const &items, list &filtered) { - for(std::vector::const_iterator i = items.begin();i !=items.end(); ++i){ - SPItem *item = *i; - if(!isConnector(item)) { +void filterConnectors(std::vector const & items, list & filtered) { + for (SPItem * item: items) { + if (!isConnector(item)) { filtered.push_back(item); } } } + /** -* Takes a list of inkscape items, extracts the graph defined by -* connectors between them, and uses graph layout techniques to find -* a nice layout -*/ -void graphlayout(std::vector const &items) { - if(items.empty()) { - return; - } + * Takes a list of inkscape items, extracts the graph defined by + * connectors between them, and uses graph layout techniques to find + * a nice layout + */ +void graphlayout(std::vector const & items) { + if (items.empty()) return; - list selected; - filterConnectors(items,selected); - if (selected.empty()) return; + list selected; + filterConnectors(items, selected); - const unsigned n=selected.size(); - //Check 2 or more selected objects - if (n < 2) return; + if (selected.size() < 2) return; // add the connector spacing to the size of node bounding boxes // so that connectors can always be routed between shapes - SPDesktop* desktop = SP_ACTIVE_DESKTOP; + SPDesktop * desktop = SP_ACTIVE_DESKTOP; double spacing = 0; - if(desktop) spacing = desktop->namedview->connector_spacing+0.1; + if (desktop) spacing = desktop->namedview->connector_spacing + 0.1; - map nodelookup; - vector rs; + map nodelookup; + Rectangles rs; vector es; - for (list::iterator i(selected.begin()); - i != selected.end(); - ++i) - { - SPItem *u=*i; - Geom::OptRect const item_box = u->desktopVisualBounds(); - if(item_box) { + for (SPItem * item: selected) { + Geom::OptRect const item_box = item->desktopVisualBounds(); + if (item_box) { Geom::Point ll(item_box->min()); Geom::Point ur(item_box->max()); - nodelookup[u->getId()]=rs.size(); - rs.push_back(new Rectangle(ll[0]-spacing,ur[0]+spacing, - ll[1]-spacing,ur[1]+spacing)); + nodelookup[item->getId()] = rs.size(); + rs.push_back(new Rectangle(ll[0] - spacing, ur[0] + spacing, + ll[1] - spacing, ur[1] + spacing)); } else { // I'm not actually sure if it's possible for something with a // NULL item-box to be attached to a connector in which case we // should never get to here... but if such a null box can occur it's // probably pretty safe to simply ignore - //fprintf(stderr,"NULL item_box found in graphlayout, ignoring!\n"); + //fprintf(stderr, "NULL item_box found in graphlayout, ignoring!\n"); } } - Inkscape::Preferences *prefs = Inkscape::Preferences::get(); - SimpleConstraints scx,scy; + Inkscape::Preferences * prefs = Inkscape::Preferences::get(); + CompoundConstraints constraints; double ideal_connector_length = prefs->getDouble("/tools/connector/length", 100.0); double directed_edge_height_modifier = 1.0; - bool directed = prefs->getBool("/tools/connector/directedlayout"); + bool directed = prefs->getBool("/tools/connector/directedlayout"); bool avoid_overlaps = prefs->getBool("/tools/connector/avoidoverlaplayout"); - for (list::iterator i(selected.begin()); - i != selected.end(); - ++i) - { - SPItem *iu=*i; - map::iterator i_iter=nodelookup.find(iu->getId()); - map::iterator i_iter_end=nodelookup.end(); - if(i_iter==i_iter_end) { - continue; - } - unsigned u=i_iter->second; - std::vector nlist=iu->avoidRef->getAttachedConnectors(Avoid::runningFrom); - list connectors; + for (SPItem * item: selected) { + map::iterator i_iter=nodelookup.find(item->getId()); + if (i_iter == nodelookup.end()) continue; + unsigned u = i_iter->second; + vector nlist = item->avoidRef->getAttachedConnectors(Avoid::runningFrom); + list connectors; connectors.insert(connectors.end(), nlist.begin(), nlist.end()); - for (list::iterator j(connectors.begin()); - j != connectors.end(); - ++j) { - SPItem *conn=*j; - SPItem *iv; - SPItem *items[2]; + for (SPItem * conn: connectors) { + SPItem * iv; + SPItem * items[2]; assert(isConnector(conn)); SP_PATH(conn)->connEndPair.getAttachedItems(items); - if(items[0]==iu) { - iv=items[1]; + if (items[0] == item) { + iv = items[1]; } else { - iv=items[0]; + iv = items[0]; } if (iv == NULL) { @@ -179,62 +166,52 @@ void graphlayout(std::vector const &items) { // If iv not in nodelookup we again treat the connector // as disconnected and continue - map::iterator v_pair=nodelookup.find(iv->getId()); - if(v_pair!=nodelookup.end()) { - unsigned v=v_pair->second; + map::iterator v_pair = nodelookup.find(iv->getId()); + if (v_pair != nodelookup.end()) { + unsigned v = v_pair->second; //cout << "Edge: (" << u <<","<style->marker_end.set) { - if(directed && strcmp(conn->style->marker_end.value,"none")) { - scy.push_back(new SimpleConstraint(v, u, - (ideal_connector_length * directed_edge_height_modifier))); + es.push_back(make_pair(u, v)); + if (conn->style->marker_end.set) { + if (directed && strcmp(conn->style->marker_end.value, "none")) { + constraints.push_back(new SeparationConstraint(YDIM, v, u, + ideal_connector_length * directed_edge_height_modifier)); } } } } } - const unsigned E = es.size(); - double eweights[E]; - fill(eweights,eweights+E,1); + EdgeLengths elengths(es.size(), 1); vector cs; - connectedComponents(rs,es,scx,scy,cs); - for(unsigned i=0;iedges.size()<2) continue; - CheckProgress test(0.0001,100,selected,rs,nodelookup); - ConstrainedMajorizationLayout alg(c->rects,c->edges,eweights,ideal_connector_length,test); - alg.setupConstraints(NULL,NULL,avoid_overlaps, - NULL,NULL,&c->scx,&c->scy,NULL,NULL); + connectedComponents(rs, es, cs); + for (Component * c: cs) { + if (c->edges.size() < 2) continue; + CheckProgress test(0.0001, 100, selected, rs, nodelookup); + ConstrainedMajorizationLayout alg(c->rects, c->edges, NULL, ideal_connector_length, elengths, &test); + if (avoid_overlaps) alg.setAvoidOverlaps(); + alg.setConstraints(&constraints); alg.run(); } separateComponents(cs); - for (list::iterator it(selected.begin()); - it != selected.end(); - ++it) - { - SPItem *u=*it; - if(!isConnector(u)) { - map::iterator i=nodelookup.find(u->getId()); - if(i!=nodelookup.end()) { - Rectangle* r=rs[i->second]; - Geom::OptRect item_box = u->desktopVisualBounds(); + for (SPItem * item: selected) { + if (!isConnector(item)) { + map::iterator i = nodelookup.find(item->getId()); + if (i != nodelookup.end()) { + Rectangle * r = rs[i->second]; + Geom::OptRect item_box = item->desktopVisualBounds(); if (item_box) { Geom::Point const curr(item_box->midpoint()); Geom::Point const dest(r->getCentreX(),r->getCentreY()); - sp_item_move_rel(u, Geom::Translate(dest - curr)); + sp_item_move_rel(item, Geom::Translate(dest - curr)); } } } } - for(unsigned i=0;i