
Greetings, I have an idea for a project. The eventual aim is rather eccentric, but the specifications I have sketched out are roughly as follows (best viewed with fixed-width font due to diagrams): 0. the graphical user interface is entirely mouse driven, mouse position/clicks/releases are shown by [ ] 1. the world consists of empty space, nodes, and links between nodes 2. nodes may either be filled ("*") or hollow ("o"); call hollow nodes "targets", targets may be "highlighted" ("O") 3a. left-click on empty creates a filled node linked to a target: [ ] * => | o 3b. left-click on a target fills it and links it to a new target: : : [o] * => | o 4a. right-click on empty creates a filled node linked to two targets: [ ] * => / \ o o 4b. right-click on a target fills it and links it to two new targets: : : [o] * => / \ o o 5a. left-click-drag on a filled node with 1 descending link highlights all targets linked under it: : : [*] [*] : => : * * / \ / \ o o O O 5b. left-click-drag as in 5a, when released on a highlighted target, creates a "weak" link (not considered as descending for purposes of 5a) from the original node to that target. that target is filled, all other targets are unhighlighted: : : * * : => :\ * * \ / \ / \| O [O] o [*] 6a. right-click-drag from a filled node at the top of a connected component highlights all targets not in that connected component: [*] * [*] * : | => : | o O 6b. right-click-drag as in 6a, when released on a highlighted target, joins the graphs together, such that the original node fills that target, and all other targets are unhighlighted: * * * : | => | [O] [*] : 7. when a connected component has no targets, double-clicking anywhere on it will launchMissiles My question: can you suggest a library that would make implementing this specification relatively painless? OpenGL-based would be preferable, as I would like to scale the graph under construction automatically to fit the display, and launchMissiles will require something with fast rendering. Thanks, Claude -- http://claudiusmaximus.goto10.org