Number: 1393
Title: Unsophisticated fig output is hard to postprocess
Submitter: Gabor Kiss
Date: Wed Jul 23 05:17:37 2008
Subsys: Output generation
Version: 2.8
System: *-*-
Severity: minor
I found that FIG files generated by GraphViz are too simple. It is hard to modify them by hand.

The most serious problem is that all graphic elements are on layer 0 (the very topmost one). Users has no chance to put anything _over_ the graph.

Another difficulty is that node shapes are on the _same_ layer as node labels. XFig does not guarantee drawing order of object on the same layer. If I move a node half an inch away it may occur that text becames invisible because filled rectangle gets drawed on the top of it.

So it would be advisable using at least 3 layers. E.g. layer 62 for node shapes, layer 61 for node labels and layer 60 or 63 for edges (depending on you can see them over or below the nodes.)

It would be useful to glue node shape and text into a composite object.

No need to _draw_ black filled rectangles at the end of directed edges. FIG has built in arrow attribute for lines. Using arrow feature allow use to modify edges easier.
[north] Since _you_ have a lot of expertise in _fig_ which we do not have in our group, and it is not difficult to change the printfs() in the fig generator, found in plugin/core/gvrender_core_fig.c Please can you send us the source code for your proposed improvements? Otherwise I am afraid it will not be done.

[ellson] You are using a very old version of graphviz. I'm not sure if it will be what you want, but there is more use of FIG layers in recent versions of graphviz. Please try graphviz-2.20.2.

[kissg] Unfortunately Debian stable distribution contains this. If I have some spare time I try to build a binary package from testing/unstable source.

[kissg] Done. Background and graph edges already on separate layers. However node boxes and text are on the same depth. (This is not bullet proof.) And user can not put any object yet over the picture yet because the topmost layers (0-2) are used. The other problems are unsolved too.

This weekend I try to modify the code in order to get a bit reasonable output.
Owner: *
Status: *