
Note: (Y) means done, (N) means not going to do, (*) means priority,
	( ) means active

* Scenes:
  ( ) kitchen, store,  beach, bedroom, zoo, boating, construction site, space
  ( ) build a car from parts, build an animal from parts, dress up
  ( ) stickers: planets, trees, better rainbow
  ( ) need a scene configurator --- as soon as you start grabbing gifs in
      a big way you need some way to organize them

* Controls:
  ( ) be more kind about missing '/' on directory name, especially if it
	is specified on the command line
  ( ) program crashes if directories are wrong in the config file
  ( ) display the sticker name in the title bar --- educational usage
      when you dump in field guides to birds/flowers/trees etc.
  ( ) allow config file to be specified on command line (so that different
	people can run the program from the same account).
  ( ) acknowledge scene size specified on the newly loaded scene (easiest
	way is to clone the background to the new size immediately upon
	loading)
  ( ) add config.maximize flag to start the scene maximized vs. using
	the size of the background image
  ( ) allow scenes to shrink below background size
  ( ) when resizing window, scale stickers?
  ( ) show key equivalents on the surface of all control buttons?
  ( ) allow deletion/movement of sticker which is not the most recently added
  (*) no pointer confinement while waiting for the new scene to load;
      multiple clicks while waiting causes segv; solution: progress
	dialog which starts immediately and traps pointer and initiates
	scene load
  ( ) signature font doesn't seem to work
  ( ) sticker control area flashes when entered
  ( ) slow down mouse while application is running?
  (*) sticker set cycle buttons '[' and ']' don't turn off immediately when
	you release the key (for high spin rates --- use slower spin rate
	until this is fixed). The solution is to separate sticker cycling
	from sticker bar update, and to call gtk_idle_add with the sticker 
	bar update routine. Be sure to remove it when sticker bar finally
	catches up.
  ( ) some sticker sets (those with unrelated images) would work better
	if the sticker state (colour, rotation, size, etc.)
	were not applied to the entire set.  That is, when changing notebook
	pages, don't copy the sticker state from the top page.
  ( ) redo scene select screen so that scene directory/work directory images
	are side by side
  (*) sticker notebooks need refinement (prettier tabs, notebook
	menu not accessible from sticker surface [right click on sticker 
	tab to see what I mean], clicking on the raised tab doesn't select
	that sticker set [since no switch_page event emitted], notebook
	menu allows pointer escape [presumably because it is a new
	toplevel window which isn't subjected to the confine pointer
	treatment], clicking on overflow arrows doesn't cycle stickers)
  (*) use max of config.undo_size and config.save_size as basis for
	purging history in scene_push() [currently save_size is
	effectively less than undo_size].
  (*) comment that save_size is compute bound on startup and doesn't 
	represent actual memory usage, and undo_size is memory bound 
	and does represent actual memory usage.
  (*) when parsing, ignore everything to the next @ when you don't
	understand the @ token; ignore everything on a line after '#'
  (*) right mouse button doesn't work on some of the controls.  It should
	work the same way as the left mouse button.
  ( ) difficult to tell when sticker is pasted; perhaps show dashed 
	outline around sticker while moving and remove it when pasted
  ( ) too much flash -- only show sample sticker while sticker control button
	is pressed instead of showing it continuously; show sample against
	a gray background; show sample next to the control rather than in
	the middle of the scene

* Sounds:
  ( ) produce sound effects for all operations
  ( ) grow/shrink sounds depend on the current sticker size
  ( ) sticker specific sounds for placing an image
  ( ) scene background sound (possibly loop-playback)
  ( ) use esound (network aware and automatic multitrack mixing)

* Rendering:
  (*) use gdk pixbuf routines instead of imlib.
  ( ) spline interpolation on sticker resizing
  ( ) grab image from server is slow -- use rgb backingstore so it 
	can be saved directly
  ( ) alpha channels to control sticker transparency -- use rgb
	backing store so the computation can proceed directly; may
	require updates to imlib to support reading alpha channels
  ( ) allow foreground semi-transparent layers for things like rain, text
  ( ) transformed image is too big: resize and rotate non-transparent bitmaps
      to see just how big it is --- actually, it is shifted as well

* Housekeeping:
  ( ) build rpm/deb files
  ( ) use perror for the many possible file errors 
	(and simplifying translation in the process)
  ( ) use scenes/icon_stickers.xpm as program icon
  ( ) gracefully handle low memory
  ( ) determine most compact image format and converting everything into it
	(png seems like the best choice)
  ( ) make canvas a proper widget (and remove references to canvas.blah and
	cursor.blah from the rest of the program) --- doesn't add any
	functionality, but it makes it a cleaner program.
  ( ) stop using "sticker" as a global variable, or at least attach it to scene

* Painting:
  ( ) provide / 0 # c as brushes (with rotation and scaling of course!)
  ( ) replace rest of sticker button bar with hue bar and saturation/value 
	box (or background patterns if you are feeling ambitious)
  ( ) use non-linear interpolation between points for brushes (linear as a 
	first pass).  Paste brushes at every pixel on the trajectory. Perhaps
	lower saturation/increase brightness for fast brush strokes.
  ( ) use higher saturation at the center of the brush
  ( ) use xinput extensions for pressure/tilt
