diff options
| -rw-r--r-- | ChangeLog | 12 | ||||
| -rw-r--r-- | src/conn-avoid-ref.h | 2 | ||||
| -rw-r--r-- | src/graphlayout/graphlayout.cpp | 14 |
3 files changed, 24 insertions, 4 deletions
@@ -1,4 +1,14 @@ -2006-07-13 Tim Dwyer <Tim.Dwyer@infotech.monash.edu.au> +2006-07-18 Tim Dwyer <Tim.Dwyer@infotech.monash.edu.au> + + * src/graphlayout/graphlayout.cpp, + src/conn-avoid-ref.h: + 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. + +2006-07-17 Tim Dwyer <Tim.Dwyer@infotech.monash.edu.au> * src/libcola/cola.h, src/libcola/connected_components.cpp, diff --git a/src/conn-avoid-ref.h b/src/conn-avoid-ref.h index c60cf7afd..0ee6addc3 100644 --- a/src/conn-avoid-ref.h +++ b/src/conn-avoid-ref.h @@ -55,7 +55,7 @@ extern GSList *get_avoided_items(GSList *list, SPObject *from, extern void avoid_item_move(NR::Matrix const *mp, SPItem *moved_item); extern void init_avoided_shape_geometry(SPDesktop *desktop); -static const double defaultConnSpacing = 10.0; +static const double defaultConnSpacing = 3.0; #endif /* !SEEN_CONN_AVOID_REF */ 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; |
