TODO
====

The following features should be added to LPU at some time in the
future. The order in which they are listed doesn't say anything
about the order in which they should be implemented.

 -  complete support for proportional fonts
      the required information should be derived from AFM files.

 -  import of different database formats
      support for Xbase and PostgeSQL is mandatory.
      in the long term, any SQL database should be supported via
      a (possibly free ;-) ODBC interface.

 -  'inline procedures'
    instead of 'do <procname>', one can write 'do { <statement> ...}'.
    This is useful in combination with conditional statements and
    the repeat function.
    Combined with continuation lines, one should be able to write
    small pieces of code in a 'structured' way,

 -  user defined functions

 -  'API' for use of LPU functionality within other languages
 
 -  structured programming
      (very low priority)
      one would have to replace 'STATEMENT' with something like
      '{ STATEMENT ; ... }'. Then, in combination with continuation
      lines, structured programming would become possible.
      Possibly, continuing lines between unpaired '{ ... }' without
      the explicit use of continuation marks would be an option.

 -  variables should become one dimensional arrays with a default
      size of one element. The type of every single element may
      change at any time (but may be 'fixed', when required)

 -  as an extension of one dimensional arrays, some kind of 'LPU objects'
      should be implemented. An Object would contain an arbitrary number
      of attributes, where a single attribute would be a 'LPU variable'
      (which could be a one dimensional array, or a 'blob' which could
      contain any data of (nearly) any kind.

 -  implement program modules
      the concept should look something like the one used with Perl
      (low priority)

 -  additional graphical objects
      arc
      ellipse
      triangle
      polygon
      polyline
      ...

 -  Bitmaps.
      Some bitmap types should be supported directly by LPU, e.g.
      PBM, PGM and PPM. The usage should be similar to eps: a bitmap
      file is opened, the data is scaled, and then printed to an
      arbitrary location on the current label.
      The default scaling factor would be 'one pixel = one DOT'.

 -  fill pattern for all graphical objects
      currently, only the pattern 'full' is supported.

 -  user defined line types
      line types will be implemented as an extension of type 'tPEN'.

 -  user defined fill pattern
      fill pattern will be implemented using a new type 'tPAT'.

 -  strings should follow a predefined curve. this is useful for
      the creation of CD labels and so on

 -  create a group from single objects, and perform some actions
      on them. For example, center them within a frame
      Possibly, this can be managed with special 1-dim. arrays

 -  graphical front end and 'code generator' for creation and modification
      of forms. Realized with Perl/TK, or GTK, or ...?
      Make use of a library of predefined 'lpu widgets' and modules

 -  new adjustment for quotes lines ("text): .adjust

 -  library of lpu procedures and functions.
      default extension '.lpx' (for LPu eXtension), use a special search path

 -  a couple of new data types should be implemented:

      tDATE
      tTIME
      tSTAMP
      tSIZE
      tPOS
      ...

 -  windows should be stackable.

 -  support for text formatting.

    the command '.par' starts a new paragraph of text.
    Paragraph types may be defined

 -  new dot command '.cp DOT-EXPR' advances to the next label, when there
    is less than 'DOT-EXPR' space left on the current label.

