1. What is "Grafix" ?

"Grafix" is a utility originally designed to help scientists in the 
visualization of results of a computation, esp. for numerical integrations of 
partial differential equations. 
It can be used, however, for any application that wants to use X-Windows for 
drawing pictures, functions or other graphic objects in a convinient 
interactive manner or even for writing a graphical user interface for any task.

Grafix should be considered as a layer between an application and the X Window
system built up of a bunch of basic classes as building elements. 
The simplest way of using it is to define instances of these classes. 
For more complicated programs the user has to define own derivations to the
basic clases.

- Grafix is based on Unix and the X Window system.

- Grafix does not use any commercial code, like Motif, so it is totally free.

- Grafix is been ported and tested for Linux and SunOS, with X11R5/R6
  
- Grafix is small and fast since it is pure functionality without any 
  superfluous additives. 

- Grafix is completely written in C++ and to compile with g++ on both platforms
  The object-oriented approach enables a quite simple way of introducing user
  defined behaviour.

- Grafix includes classes for the basic operations to have a convinient window
  management, like : 
   - windows with automatic restoring for complex drawings (backing store)
   - several types of predefined button classes for different purposes :
     quit_button, delete_button, help_button, callback_button, toggle_button,
     instance_button, dump_button, hardcopy_button, ...
     all the buttons have a Motif-like three dimensional shape
   - popup-windows and pulldown-menus for selecting discrete values
   - help popups can be bound to any window
   - scrollbars for selecting coniguous values
   - windows with real-valued co-ordinate systems where the user has not to 
     worry about pixel co-ordinates
   - a simple edit window for entering strings
   - simple file selection boxes for openening files interactively
     for reading (with directory scan) and writing (query before overwrite)
   - a predefined palette manager for color definitions that can be 
     implemented in any application
   - as most advanced class : an complete manager to handle the display
     of 2-dim functions (given on a equidistant grid) as lattice or body
     in arbitrary perpective, shadowing and details zooming.
- Grafix has some example programs to show the basic functions,eg 
  "win-demo", "edit-demo", "file-browser", "calc", "pal-demo", etc.
     
- Grafix has several realistic demos, eg. the programs "one-dim" and "two-dim"
  which give a complete model of some numerical integration methods for the one
  or two dimensional advection equation (simple upstream method, 
  Smolarkievicz-method, Lax-Wendroff). They have several buttons and menus
  for playing with some parameters and afterwards show the ongoing integration
  as animation.
  These demos should be easily adopted to any one or two dimensional 
  differentional equation with time dependence.

2. What is it NOT

- it is not a commercial software, so I will not take any warranty for the 
  usability of the software
- it is not in a "ready to use" state, it requires the user to write own 
  C++-code (this should be obvious)
- I can give no garanty to respond on error reports or queries for
  improvements since my time for this task is very limited.

3. What do you need to use "Grafix"

- You should have basic knowledge about C++ classes and what an X-window is.
  Further knowledge about Xlib programming will be helpful but is not 
  necessary since I tried to encapsulate this in the classes.
 
- You need g++ to compile the code, other compilers possibly do not allow some 
  special constructs for passing multidimensional arrays as parameters. 
  These type casts could be easily substituted, however.

- You need Unix (SunOS, Linux) and X11R5 or X11R6. 
  Portations to other platforms are not my concern, since I have no 
  possibility to test them. If you will try it,  good luck.
     
- you have to agree to the 
  "GNU GENERAL PUBLIC LICENSE"
  TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION,
  (see included file COPYING for details)
  in order to use the program, copy, distribute or modificate it or parts
  of the code.

4. How to start

- I strongly suggest starting with the example programs in the package.
  They demonstrate nearly the complete functionality. Compile them, start
  and play with them. Then have a look at the sources and try to understand
  how they work. 

- To build all demos type :
  make demos

- To let them all run consecutivly type :
  make demorun

- read the file HOWTO for a detailed instruction of the installation
  and a description of the use of Grafix.





