------------------------------------------------------------------------------- 
$Id: PLANS,v 1.19 2004/01/21 20:03:22 weismann Exp $
------------------------------------------------------------------------------- 

The following is an unstructured and unprioritized list of stuff we want
to do eventually.

 o support for PS and PDF export.

 o Use alpha textures for font glyphs and similar bitmaps.

 o Layers. We would like to have multiple layers of either parts of or the
   whole of a slide. This could be in the form of opaque 'post-it-notes'
   appearing during the presentation of the slide, or it could be
   transparent layers for various effects.  A nice generelisation of
   reference points is preferred :)

 o Define an API for controler objects in CPP Consider dlopen, header
   files and a generic Makefile.

 o Write a sample controller that any "expert" can work from.

 o Ideas for effect controllers bouncer, shooter, star, news-ticker,
   fog fader.

 o Movement interaction (back and forward in slideshow) Extend the VI
   jumping rules in the slide presentation.  Say that we wish to see slide
   page 42 and then shortly after than review slide page 13 again, cf.
   menubar. VIM menubar, press ':' will result in a bar where one can 
   Another idea: how about all the slides together on one page where you 
   can see them all and when you move the cursor over one that one (smoothly) 
   enlarges and when you click you go there.

 o Enable the possibility of refreshing the renderer Say that one has made
   a couple of changes to the source of slide page 42 and that the slide
   show is currently running and showing page 42. Now, one would like to
   be able to refresh the page, like one is used to from e.g. xdvi.
   Say you have pointless running with foo.pll as input and you modify
   foo.pll, now pushing Ctrl-L (reload please) - idea preparse that
   transforms .pll to an intermediate format (clean txt, list of txt
   chunks, ...) - use md5sum or similar to tell which parts must be 
   redone.

 o Fix bug where we do not listen to initial resize. (As for example the
   windowmanager Ion uses)

 o Cool Pointless logo / anim at end of presentation + maybe briefly at
   startup, cf. particle.*

 o Disable screensavers. Need to support a number of popular savers:
   xscreensaver, Gnome and KDE.

 o Support of a mouse-pointer (to be uses as a substitute of a laser-pen).

 o Proper handling of missing files. There are some files that we can
   accept that we can't find on the PATH (e.g. a missing picture) and
   others that MUST be present in order to make pointless run (e.g. a
   font).

 o Customization. Improve it so that multiple arguments, e.g.
   v3(x,y.z) and so forth are properly supported. Moreover ensure
   that it can be used for each instance of a cmd, e.g. it would
   be nice if we could collapse some commands into a single
   customizable cmd, e.g. image and absolute_image.

 o Make pointless pipeable, prepare for gettext, clean up in output.
   This involves grepping after print (cpp,py) and cout (cpp).
   Moreover clean up in every log_foo(message) such that we use a
   proper english and such that we are consistent in our stderr
   messages. Finally, one could look for relevant places for placing
   log_foo messages.

 o Proper integration of source code
   vim coloring, easy inclusion of snaps for real source files, e.g.
   =source(foo.c,43-47)
   =source(lzw.plx,1-20)

 o Detect when low FPS and issue a warning reminding the user about
   the '--powersave' option

 o More sane handling of textures, we should be able to handle
   an "infinit" number of textures. We should only pass on slide
   n-1, n and n+1 to the graphic card. Look up "A working set of
   resident textures" in the red book.

 o Portability and packaging
   - win32: min/max and gcc-2 and cygwin, image
   - Missing SDL but X11: Bad message : neither SDL not X11 appear on the
 
 o Gradient background: introduce vectors:
   =background_gradient((0,1), 0x050505, 0x050515) # Black(bottom) to blue(top)
   where (0,1) is a direction vector.
 
 o Consider the use of resolutions in pointless

 o Cut down on the differences between the X11 and the SDL variant.

 o The paragraph-breaking must be reconsidered, the LOUT articles must
   be read again.

 o objcopy

 o Fix bugs in the unicode module (=include("unicodes")) that adds commands 
   such as =alpha, =beta, =gamma, =circle, =square, cf. (La)TeX (maybe AMSsym)
   and make it part of next release.

 o Improve the table support and make it part of next release.

 o Write a little HOWTO on contructing pointless python modules.
   Reconsider the API

 o Re-organize the manual, maybe split into a tuturial and a reference manual.

 o Consider moving main to Python and make the pointless CPP machine
   an ordinary Python module.

 o Change the layout routine (arrange/textbreak/whatever) to be able to
   work 'runtime', for example if a controller destroys/hides part of the
   slide, we may want to rearrange stuff. (Bernard's wish)
   
 o Proper procedure for deprecated cmds:
   release n+1: =command gives "Warning: Command '=command' is deprecated. 
   Please see documentation for details."
   release n+2: =command gives "Error: Command '=command' has been removed. 
   Please see ChangeLog for details."

 o Pausing the presentation. Since I do my everyday work with linux,
   doing a presentation also in linux has the advantage that I could
   show some animations, running simulations, ... whatever.  Unfortunitely
   pointless is so ressource consuming that so that it is not possible to
   run another program at the same time.

 o A better connection to the keyboard. Key strokes were completely ignored
   in fullscreen mode under most windowmanagers, exception: KDE.

 o A link to the drawing program Sketch (now renamed to Skencil). I would
   like to include sketch drawings in a similar way than e.g. images. Since
   sketch is written in python, it would be possible to edit the objects
   from within a pointless session. The main task of this linkage would be
   to implement a new "device"-class which would cause sketch to draw in
   a buffer. The buffer in turn would be used by pointless to display the
   drawing.

 o Buffering of presentations. It is not necesary to regenerate all slides 
   every time the presentation is viewed.

 o I regret that it is not possible to switch to an other workspace window in
   fullscreen mode. This is really important for me, since I often want to
   show simulation results with a molecule viewer application. A workaround
   could be a pause funcionality which switches to window mode and pauses the
   presentation (without recompiling all the slides).

 o support for ewmh, www.freedesktop.org/standards/wm-spec
