Home - JamesBremner/graphex GitHub Wiki

GRAPHEX : The Raven's Point Graph Explorer.

  1. Windows desktop application, coded in C++. The Boost Graph Library ( http://www.boost.org/doc/libs/1_53_0/libs/graph/doc/index.html ) is used for handling the graph. .NET is used to provide the graphical user interface. The SQLite database engine is used to store project data.

  2. On request, program displays vertex entry grid.

  3. User can add named vertices to vertex entry grid.

  4. Program enforces unique vertex names.

  5. User can specify a vertex location in vertex entry grid. These vertices are 'pinned' and the layout algorithms will not move them.

  6. On request, program displays an edge matrix.

  7. Program displays a row and a column for each vertex entered.

  8. User can connect vertices with an edge. Enter a '1' in the cell where two vertices intersect in edge matrix.

  9. On request, program displays an option grid.

  10. User can specify filename used to store project data in a SQLite database.

  11. User can select layout option to display vertices arranged in a circle. This overrides any previous layout.

  12. User can select layout option to display vertices arranged next to their connections. This overrides any previous layout. An algorithm by Kamada & Kawai is used which minimises total 'spring' tension between connected nodes, implemented by the Boost Graph Library as modified by me to handle pinned nodes and disconnected graphs.

  13. User can select layout option to manually locate vertices. New vertices begin at the center of the graph.

  14. On request, program displays graph laid out in two dimensions.

  15. Program checks graph for planarity using Boyer-Myrvold algorithm. If not planar, display message and skip rest of this section.

  16. Program draws lines between connected vertices.

  17. Program colors vertices so that connected vertices have different colors

  18. Program labels vertices with their names

  19. User can move vertices by clicking on vertex in graph display and dragging to new location. The layout option is changed to manual, so the the new location is not lost. To restore an automatic layout, choose another layout in the option grid.

  20. User can add edge between two vertices in graph display by clicking on first vertex, then clicking on second with shift key pressed. Doing this between two vertices that are already connected will remove the edge.

  21. Database is continuously updated as changes made to the graph.

  22. Here is the database design document

  23. On request program reads or writes GraphML format files.

  24. On request program reads yEd files. These are GraphMML format files with a lot of extra yEd stuff. Graphex filters out the extra stuff, retiaining only vertices, the text orf vertex labels, and edges.

Here is some advice on building the application.