diff options
| author | Tim Dwyer <tgdwyer@gmail.com> | 2006-07-18 01:58:44 +0000 |
|---|---|---|
| committer | tgdwyer <tgdwyer@users.sourceforge.net> | 2006-07-18 01:58:44 +0000 |
| commit | a12110482d18f105beb3e5b39743223506869efc (patch) | |
| tree | c86e7d1e2aa3445bc346e2c5fec6bea102ff203e /src/graphlayout | |
| parent | Committed again without the essential fix on line 84 commented out! (diff) | |
| download | inkscape-a12110482d18f105beb3e5b39743223506869efc.tar.gz inkscape-a12110482d18f105beb3e5b39743223506869efc.zip | |
We now use connector spacing to determine the minimum space required
between shape bounding boxes when graph layout with avoid overlap
constraints is applied. This means that there should always be enough
room for connectors to route between shapes. Also changed the default
connector spacing to a less extreme 3.
(bzr r1435)
Diffstat (limited to 'src/graphlayout')
| -rw-r--r-- | src/graphlayout/graphlayout.cpp | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/src/graphlayout/graphlayout.cpp b/src/graphlayout/graphlayout.cpp index dc9dc3ea9..132db2db6 100644 --- a/src/graphlayout/graphlayout.cpp +++ b/src/graphlayout/graphlayout.cpp @@ -3,7 +3,7 @@ */ /* * Authors: -* Tim Dwyer <tgdwyer@gmail.com> +* Tim Dwyer <Tim.Dwyer@infotech.monash.edu.au> * * Copyright (C) 2005 Authors * @@ -16,6 +16,9 @@ #include <algorithm> #include <float.h> +#include "desktop.h" +#include "inkscape.h" +#include "sp-namedview.h" #include "util/glib-list-iterators.h" #include "graphlayout/graphlayout.h" #include "sp-path.h" @@ -76,6 +79,12 @@ void graphlayout(GSList const *const items) { //Check 2 or more selected objects if (n < 2) return; + // add the connector spacing to the size of node bounding boxes + // so that connectors can always be routed between shapes + SPDesktop* desktop = inkscape_active_desktop(); + double spacing = 0; + if(desktop) spacing = desktop->namedview->connector_spacing+0.1; + map<string,unsigned> nodelookup; vector<Rectangle*> rs; vector<Edge> es; @@ -88,7 +97,8 @@ void graphlayout(GSList const *const items) { NR::Point ll(item_box.min()); NR::Point ur(item_box.max()); nodelookup[u->id]=rs.size(); - rs.push_back(new Rectangle(ll[0],ur[0],ll[1],ur[1])); + rs.push_back(new Rectangle(ll[0]-spacing,ur[0]+spacing, + ll[1]-spacing,ur[1]+spacing)); } SimpleConstraints scx,scy; |
