[Lazarus] New control TLvlGraphControl and new IDE package graph

Mattias Gaertner nc-gaertnma at netcologne.de
Sun Mar 24 17:25:01 CET 2013


On Sun, 24 Mar 2013 16:31:10 +0100
Hans-Peter Diettrich <DrDiettrich1 at aol.com> wrote:

> Mattias Gaertner schrieb:
> > Hi,
> > 
> > I added a new control TLvlGraphControl to package LazControls. It is a
> > LCL control showing a graph as "level graph". Another name is "layered
> > graph".
> > 
> > See the screenshot and see here:
> > http://wiki.lazarus.freepascal.org/Lazarus_1.2.0_release_notes#TLvlGraphControl
> 
> Nice :-)

Thanks.

 
> > Level graphs can visualize hundreds of nodes and thousands of
> > edges on a single screen, reducing the need to scroll.
> > This control has the ability to highlight the edges under
> > the mouse, so that even complex graphs with thousands of edges can be
> > explored.
> > And it highlights back edges so you can quickly find cycles.
> > 
> > The screenshot is from the IDE's Package Graph.
> 
> Did you already consider to analyze the graph using methods known from 
> the theory of graphs, like splitting the graph into "components"?

TLvlGraph has a property Graph: TLvlGraph, that consists of nodes and
edges. The nodes have arrays of InEdges and OutEdges. So implementing
the normal graph algorithms should be pretty straightforward.
 
> Graph components can help to structure the display of the entire graph, 
> so that e.g. a component can be represented as a single node on the 
> screen, which then can be expanded on demand into a more detailed 
> representation.

Yes, that was my first idea too for packages and units. But it seems
it is more helpful to simply use another lvlgraph
for the details.

Mattias




More information about the Lazarus mailing list