Question

Background Information / Layout

I'm trying to display a radial tree as part of a UI. The data for the tree is static, and there are typically a few thousand nodes. Just drawing it, per se, is not a huge deal - I can already manage that with what I know of GTK and Cairo.

My problem is that I want to have a panel that shows the tree on top of a background image, and allows the user to zoom in and out and also to interact (click on nodes to get information).

Here is a very crude picture showing the layout of my application. The yellow area is where I want the tree. Layout Mockup .

Here are is the tree display, as four layers. The whole thing needs to be zoomable (background image included). Tree Display Layers .

  1. Highlights showing nodes of interest (selected nodes, or nodes matching a user query) and paths between them.
  2. Nodes in the tree. I intend for these to be clickable.
  3. The rings of the radial tree.
  4. The background image.

What I can do:

  • Render the background image.
  • Draw the rings of the tree.
  • Draw the nodes of the tree.
  • Draw highlights around nodes and paths between them.

What I want to do:

  • Make the whole thing zoomable.
  • Make the nodes (currently or images) clickable.

I've tried working pixel buffers with to rescale the background image. That is functional (but not very elegant) so long as it is just the background image, although I'm not exactly proud of the results. When, it comes to making the nodes clickable and the whole thing zoomable, however, I'm a bit lost. Especially the latter part.

I've been working with Mono and the C# bindings for GTK on Linux. I'd be willing to change GUI kits if that would make it significantly easier, but only if it really does make it much easier. Given the size of the tree ( 1000 < N < 10000 where N is the number of nodes in the tree), performance when zooming might be an issue, but it's not like I'm dealing with millions of nodes or anything.

No correct solution

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top