Welcome to the information page regarding my report entitled:

A Portable Class of Widgets for Grammar-Driven Graph Transformations


Abstract

Graphs are effective abstractions for organizing and visualizing information. They can be particularly useful in CASE and re-engineering tools for diagramming program structures, logic, and data. Generating an easily manipulated visual representation of a graph is not a trivial task. The goal of this project is to design and implement a generic, portable, and efficient abstraction for displaying and transforming graphical figures. Furthermore we have surveyed a number of similar widgets that are available from the Internet. Comparing the capabilities of our widget class with these we have surveyed is also a goal of this research.


Project Overview

Goals and Objectives

The goal of this project is to design and implement a generic, portable, and efficient abstraction for displaying and transforming graphical figures.

Approach

To accomplish our goals we first designed a hard coded tree editor. The program was written using C++. I endeavored to give it a good object-oriented design so that its components could be easily subclassed to suit the user's needs. It was designed for speed at the price of memory requirements and contains many innovations to enhance its performance. To make it portable between platforms I used a portable GUI toolkit called wxWindows.

wxWindows is a platform independent class library for C++ for providing a graphical user interface (GUI). Using this package for the development of this project allows it to run in the MS-Windows, Motif, and Open Look environments. In addition, Macintosh, OS/2, Xt, and even Curses ports are in progress that will give the project a wide usability base. The wxWindows package is being developed at the Artificial Intelligence Applications Institute at the University of Edinburgh by Julian Smart. wxWindows is available by anonymous ftp at ftp.aiai.ed.ac.uk. While the wxWindows package is completely usable in its current state, it is also currently in development, and each new release provides more useful features for this project. It is currently in release 1.66 and generally compiles and installs without any problems.

The design of the tree editor helped us pin down the interactions between nodes in a tree when constructing and editing it. The next step toward fulfilling our goals was to specify a grammar that abstractly defined these interactions.

Once the grammar was specified, the final step to complete our goal was to define the grammar rules necessary for tree and graph editing. For any visual graph representation there are two sets of grammar rules that must be defined, the graphical layout rules and the internal data structure rules.


Resources Available for Downloading

Documentation

Project Proposal:

The proposal for this project and the corresponding presentation are available in Postscript format:
Proposal (78k GZIP compressed)
Presentation (49k GZIP compressed)

Report:
The prior abstract and project summary are excerpts from the report. The entire report is available in three formats:
On-line in HTML (Generated by MS-Word)
Postscript (1592k GZIP compressed)
MS-Word 7.0 (369k ZIPped)

The presentation for the report is available as a Powerpoint presentation. The presentation has been split into two disks which include a Powerpoint viewer.
Disk 1 (1268k)
Disk 2 (151k)


Screen shot


Java applet demo

While the real program was written in C++, you can try out a Java Applet Demo of the program if you're interested in seeing how it works. Note: You must have a Java 1.1 enabled browser to use this demo.


Source code

The source code for the hard-coded version of the editor (mentioned above) is available, packaged for appropriate platforms.

source.zip Zip file of source code for building the program under MS-Windows platforms. The source in this file has the necessary CR and LFs for DOS based environments.
source.tar.gz Compressed tar file of source code for building the program under Unix platforms. The source in this file does not have the extra LFs from DOS based environments.

Note: Both source packages contain the same files which include:


Binary executables

Compiled executable versions of the hard-coded editor are availale in various formats.

driver32.zip (275k) 32-bit MS-Windows version.
Runs on Windows95 and WindowsNT.
Compiled with Borland C++ 5.01.
driver16.zip (373k) 16-bit MS-Windows version.
Runs on MS-Windows 3.1 and higher.
Compiled with Borland C++ 4.52.
driver_ol.gz (226k) XView/OpenLook X-Windows version.
This is a Linux-ELF binary.
Compiled with GCC 2.7.2 on Debian Linux 2.0.27.
driver_xt.gz (186k) XToolkit X-Windows version.
This is a Linux-ELF binary.
Compiled with GCC 2.7.2 on Debian Linux 2.0.27.
This uses the Xt port of wxWindows.


Necessary libraries

wxWindows:
standard wxWindows disribution
Xt Port of wxWindows


[ home | email ]