Routing Library



Hello,

I just joined this list, so pardon me if I'm a little ignorant of how
things work here. I don't know much about the dia code, either.

I've had the urge many times to create a tree- or graph-oriented
application with intelligent autorouting and usually some drag-n-drop
functionality. Sometimes I just want a quick solution so that I can
easily see the data structures in a program to debug it. But I've
searched a lot and it seems like to get that kind of functionality, I'd
either have to hack something very specific like diacanvas or build it
from scratch on a GTK+ canvas. I'm not sure if graphviz would
help...I've seen it and some other libraries that looked promising at
first, but they don't seem to be very versatile or suited for
drag-n-drop apps. I've also looked for applications with similar
interfaces, and everything I've found looks like it was built from the
ground up.

I think it would be quite feasible to make a library designed to
encapsulate the issues of routing edges, searching for optimal paths,
and also finding the optimal arrangement of nodes (if desired) into a
library with extremely fine-grained control over behavior parameters,
both globally and for individual nodes and edges.  For instance, the
style of edges (direct, orthogonal, etc.), shape and size of nodes,
workspace size and off-limits regions could be specified.

My plan was to create a library to plan the actual edge paths which
could be used in any environment, and a GTK+ widget to use that library
and add a ton of interaction behavior. It might also be a good idea to
include a plugin system for the core library, since the actual routing
needs to take a ton of factors into account, such as maximizing
parallel edges or having a labeled "shortcut" when the path is too
cluttered; but I'm not sure about that detail, because it seems like it
might be overkill.

I think a lot of free applications in fields like circuit design, UML
modeling, and tons of others would benefit from this effort, possibly
including dia on some level (I saw "better autorouting" on the Google
SoC wishlist), so I want it to be very flexible and support many
graphics toolkits and programming languages.

I don't know if I'll be able to take the idea very far, but I wondered
(a) if I was mistaken thinking no such library already exists or (b)
if I'm not alone thinking such a project would be useful.

David Barnett

P.S. Sorry I wrote so much...I get a little excited =)

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]