
@(#)TODO 1.3 89/12/12

Problems.
---------

* With the SunView, MGR, NeWS, X11 and XView versions, the #list command
  needs to output somewhere better that stdout.

* Handling of image files with extensions (eg: dmr.oil), needs to be
  included.

* The following problem exists with the NeWS version:
  (i)   The soft cursor is not being correctly positioned in the dialog box.

* The following problem exists with the XView version:
  (i)   The cursors are not correctly changing.

* The following problem exists with the X11 version with the MIT server:
  (i)   Colormap (really grayscale map) handling is incorrect. The colourmap
        should be dynamic and not static.

Enhancements.
-------------

* Ability to use multiple machines via a remote procedural call
  mechanism would speed the program up considerably.

* The operation stack should be floating point. This would be available
  via a compile-time option.

* The graphics interface for the workstation generic graphics drivers,
  needs to be substantially improved. Inclusion of a scrollbar to view
  previous commands, the ability to cut and paste commands, menu buttons
  to iconise and quit, picture settings etc..

* Ability to output images in Sun rasterfile format.

* Add in online help.

* Parametrise some of the special functions, such as genepson.

* Better dithering for monochrome drivers and epson.

* Variables and comma operator, for expression optimisation
  eg new[x,y] = (t = old[x,y] / 2) < Z/10 ? t/2 : t
  or whatever.

* Fix up the parsing a bit. Want a better way of dealing with
  floating point numbers and names.

* Fix up the way images are stored (instead of fixed length array).

* The run time interpreter could be self modifying code. That
  is, instead of compiling pseudo-operations onto the parse
  stack, generate real machine code to do the same thing; then
  execute this inside run().

* Catch signals and longjmp() to prompt. Need to call driver-
  specific signal handler to clean up in the middle of an image.

* Optimise initial new[x,y] to @

* In I/O, change isalpha() test to allow digits and '_'.

* Do proper optimisation, including precalculation of vectors in run().

* Convert NeWS driver to use classes.

* Grayscale "colour" MGR version.

* Think about rgb colour handling.

* The PC version should use appropriate pointer typedefs (using nonstandard
  memory reference keywords if available) for the image data.

* When I compile popi with any but the small memory model, it hangs,
  even on a small image that works with the small model version.
  I need to look into this.

* PC version again: need to add support for remaining standard board
  types. Also need to do compiler-independant adapter detection.

* Take a deep breath and allow the PC driver to (optionally) be compiled
  with graphics.c.

* Need to get command-line option processing right, allowing it to
  be passed to disp_init, but still giving an error message for
  unrecognised options.

* It would be good to have something a bit better than the simplistic
  dithering currently used for drivers that can only display a few
  greyscales. This should be factored out into graphics.c or something.
