misc list of things todo:

for next release?
-----------------

* some sort of way to easily measure distances between fiducials [1]
* add/expand support for multiple frames/gates in mathematical operations tool [1]
 [1] suggested by Michael Braden
* freehand/isocontour roi's - draw them at high mag - will see they're shifted just slightly off voxel lines [2]
 [2] noticed by Mark Huisman
* look careful at use of amitk_space_transform, and see if this function is
	really needed/used correctly - as I don't think this operation 
	propogates correctly to an object's children
* add progress bar for image math toolbox
* add dcmtk export - requred by Matthew Leonard
* dcmtk shouldn't be required for mac os x install - figure out how to embed
  dicom.dic
* view_thickness isn't read in from .xif file - gets overridden at some point
* Gate picker -> multiple selection still screwed up


for 0.9.0 release
-----------------
* had to disable -DGNOME_DEPRECATED - gnome_config is now deprecated.
	replace with gconf system
* switch from libfame to ffmpeg for mpeg encoding


windows todo
------------
* gate and time dialog buttons are not beveled when using the GTK ms-windows
	theme... makes them hard to discover
* icons still look like crap....
	may need better program than png2ico
	may need more sizes
* zdial on rendering doesn't work
* preferences aren't currently saved between amide sessions -
	will be fixed with gtk2.8 and gnome2.12 (runs on windows)
* help buttons don't work.
* clicking and dragging roi off canvas yields bad behavior
	(program interaction is frozen until same roi is clicked and released)
	doesn't occur under linux
	looks like gtk2.8 has a new event - need to upgrade and
	  see if still needed
* calculate over highest % of voxels crashes if the value is 100%
	has this been fixed?


factor analysis things:
-----------------------       
* factor analysis -> should be able to do from ROI's too.
	should be simple.  1 iteration to find the # of voxels,
	second iteration to fill in 
	probable use weight >=0.5 as cutoff
* need to add orthogonality component back into PLS
* principle component analysis should probably be demeaned
* need to extend 2 comp to 3 comp (or n-comp)
* should be able to combine main function for fads and comp models


big things:
-----------
* add drag-n-drop capabilities between study windows
	don't use treeview reorderable stuff, too limited,
* toolbox dialog for generating polar maps
* should be able to specify units the image/display info is in, and request different output units.
	-allow changing of displayed units (mm, cm, m, s, min, uCi, Beq, etc.)
	-study would have an output units variable
	-each data set, can specify it's original units, and (if needed), a scaling factor to output unit
	-ui_preferences would change default units
	-need gobject based approach, so widgets can listen for change
	-> start with mm/cm/m
* add a data sets list item,
	-would allow reading in multi-bed data sets
	-raw_data type could have amitk_space made its parent, so it has its own space...
* calculating PV correction.  
	Correction factors could be calculated for each volume's 
	resolution and then cached.
* multi-step undo/redo, look into how other GTK apps do it
	-once this is done, drop the enact/cancel bit of shifting data sets and study's
	  as we can now just undo such a change
* add image calculator
	-you pick data set, then subtract/divide/etc. another data set from
	 picked data set, with slices grabbed via amitk_data_set_get_slice to
	 be in the coordinate set of the picked data set.
* create an AmitkAnalysis type, holding voxel statistics
	-when created, passed a study
	-use callbacks, so that stats are marked as current or obsolete,
	 stats also marked as obsolete if a AmitkAnalysis calculation type
         changed from "fast" to "accurate" or back
        -stats are only (re)calculated as needed (i.e. when stat values/raw values are requested)
        -has a callback "amitk_analysis_changed", so that the roi_analysis_widget
         knows to update it's table.
        -function to request stats as an array of structs
        -function to request raw values as array of structs
* ability to import and export AIR .air files
  -probably from rotate axis page
  -need object list widget: should update automatically when something is removed somewhere else

                       
small things:
-------------
* change tb_filter, tb_crop, tb_fads, so that an amitk_tree is used for the
	initial popup letting you change which data set will be used
* export ROI's to external file? and allow import?
* continue implementing progress bars for various functions:
	-roi analysis
	-loading in data sets
* could probably subclass isocontour's from AmitkRoi -> AimtkIsocontourRoi
	would allow simplification of amitk_canvas event cruft
	also probably get rid of amitk_roi_variable_types.c... not worth the performance improvement
* add sqrt and log abilities into color table lookup?
* should have option to use rigid body registration with scaling
* try to work in the max/min/distribution calculations into the loading loop
* fix zooming of off angle roi's on the canvas
* should all voxel's that an roi edge passes through be displayed?
        -would mean creating roi canvas object as pixmap, similar to isocontour
* roi analysis dialog should probably be updated for any change of the roi's
* rendering movie generation should allow rotating around one axis, then another, then another
	maybe an ability to script the movie?
* add key combination that sets current pixel value to max/min threshold
                                                                                


pre 1.0 things:
--------------
* try to change dialog box buttons to verbs
* start commenting the widgets, run gtk-doc to generate documentation
* check README's, INSTALL guides, etc.
* add tooltips to everything....
* add more help buttons to the dialogs 
  -gnome_druid has an add help button function



probably post 1.0 things:
----------------
* add report generation.  This would add colormaps, location, thickness
	study name, volume name, scan date, etc. to the export function.
	Would handle multiple images.
* rendering alterations -> 
	3D red/green imaging
	allow rotation of light source and view in addition to object
	allow changing of material properties
	transformation to rendering structure is inefficient when doing multiple volumes,
		each volume should be transfered using it's minimal voxel size, not the
		group's maximum minimal voxel size.  the rendered images should then be scaled
		and overlapped.  
	MIP rendering would be nice....
* aligning of data using automated registration?


things dependent on other things: 
-------------- 

* not currently implemented in gtk:
	handle_box's don't get minimized with the main window...
	but no way to minimize them independently...

* dependent on requring glib >= 2.8 
	remove g_try_malloc0 and g_try_new definitions in amide.h/amide.c

* dependent on gtk 2.4 support for windows and fink
1. combine open and import menu items onto same file dialog.
	There's no reason this can't currently be done on the AMIDE side.  There's a function
	for detecting if a file/directory is a XIF, and if it's not, we just hand it off to
	libmdc.  Need to wait on a new version of the file dialog (gtk 2.4) that allows
	specifying our own filters for figuring out what goes in the lists... XIF 
	directories need to go on the "files" side.  And also would need a drop down for 
	switching from "guess" to "import particular", like in gimp.
	- similarly, the export data set functions should work similarly, with an additional
	option on whether or not we want the data resliced.
	* amitk_xif_sel uses deprecated GtkOptionMenu (gtkfilesel uses this also)
	  remove amitk_xif_sel when conversion to the new file selection is done
        * should probably offer an option for displaying a default "/volumes" directory
2. switch away from the GNOMEUIINFO method of toolbar/menu generation in favor
	of GtkAction.  Conversion process is descriped in the gtk api documentation.
3. switch from GtkOptionMenu to GtkComboBox.  Work's already done, just need to 
	uncomment the relevant code.  GtkComboBox is not avaliable in gtk 2.2
4. Add -DGTK_DISABLE_DEPRECATED back into src/Makefile.am
5. analysis.c use of g_ptr_array_foreach is disabled, as this isn't in glib 2.2

* when switching to gnome 2.12 stuff on windows
  can rip out all of the WIN32_HACKS stuff - only need the one G_PLATFORM_WIN32 thing in xml.c

* dependent on upgrading to gtk 2.6
1. update about dialog in ui_common.c to GtkAboutDialog
   documentation on switching available in gtk api documentation on www.gtk.org
2. update Default Directory bit in ui_preferences_dialog to be a GtkFileChooserButton


* I'd like to change the icons on the toolbar to pixbuf data structures generated from
	.png files.  Currently, I'm using xpm data structures.  The gnome-app-helper toolbar
	functions currently only support xpm data, holding up the change.

* antialiased canvases have been disabled again, due to instabilities with ROI resizing
	starts spewing "*** attempt to put segment in horiz list twice" errors
	and eventually core dumps.  Either a libart or libgnomecanvas bug.  Uncomment
	appropriate lines in configure.in to reenable

	last tested versions:
		libart_lgpl-2.3.14-1
		libgnomecanvas-2.3.6-1

	-make sure to check that lines in tb_crop are placed correctly
	-need to check that the export jpeg functions work, they have not been tested

* AMIDE_OSX_HACKS, on OS X we currently
	1- Disable interaction with ESD (enlightenment sound daemon).
           If amide crashed, ESD was locking files....  This is as of
	   fink 0.5.2, OS X 10.2.5

* anti-aliased canvases doesn't support GDK line styles (as of libgnomecanvas 2.2.0)
        -ui_preferences_dialog, and amitk_object_dialog define out the appropriate code 
	when antialiasing support is cmopiled in.  Add back in once anti-aliased
	canvases support line styles.

* ui_time_dialog specifies AmitkDataSet as G_TYPE_POINTER instead of
	AMITK_TYPE_OBJECT when setting up gtk_list_store - this is due
	to a gtk bug, adds a reference with G_TYPE_OBJECT but doesn't
	remove it
	- also in amitk_tree.c, ui_alignment_dialog.c

* at some point, GtkGammaCurve will probably be deprecated from Gtk,
	can either copy the code into amide, or come up with something
	more fitting

* when bug-buddy supports sourceforge bug reporting,
	delete the following line from amide.c so we can have bug reporting
	"signal(SIGSEGV, SIG_DFL);"

* remove no-ops in raw_data.c
	I've needed this (at least) for gcc <= 3.0.3.  Left in for the moment as
	I haven't tested gcc 3.1 for this bug, and other people may be using
	old versions of gcc.

* currently, alpha blending is done inside of image.c, a single pixbuf is generated,
	and this is handed to gnome_canvas.  It'd be nice to use separate pixbuf's but 
	each data set, and throwing them on the canvas.  The single biggest problem with this is 
	that the background buffer in gnome_canvas is RGB, not RGBA, so the buffer has an effective
	alpha of 0xFF, and you're just blending the image with whatever that background is, 
	screwing up the color levels.  may have to rewrite libgnomecanvas to use
	a 32bit buffer
	-would allow the use of cursor keys for moving data sets around each other


* using the gdk_pixbuf_scale functions
	Slicing from all data sets at zoom=1.0, and then scaling using
	the gdk_pixbuf_scale type functions doesn't work well, as the
	scale functions don't do a great job of interpolation (circa
	gdk-pixbuf-0.18.0).

* Current implementation is cooperative multitasking, if that.  Should turn
	program into a true, multi-threaded design.  Note that gtk for windows
	(as of 2003.04.30) does not handle multi-threaded program.... so will
	have to wait for that.


* libmdc currently links against glib1.  When (X)MedCon switches to
	GTK2/GLib2, remove the line in configure.in that overwrites
	the XMEDCON_LIBS entry.  Also, XMEDCON_CFLAGS can probably
	be includes in src/Makefile.am
	-2005.11.19 renabled these, doesn't seem to be a problem right now

* drawing graphics of ROI statistics, etc.
	Can't use Guppi, it's unmaintained and deprecated.  Hopefully the 
	gnumeric project will come out with a library for drawing charts/etc 
	at some point in the future.
	-this is really low priority... people can draw their own graphs in
	gnumeric/excel etc.

* in xml.c and amitk_point.c, have a bunch of AMIDE_WIN32_HACK
	ifdef's, because g_strdup_printf
	wasn't obeying the setlocale command on windows as of glib 2.2
	This was causing errors in locales that use a comma as the
	radix sign.  Need to test if g_strdup_printf will work with later
	versions of glib.

* amitk_data_sets_export_to_file is very wasteful of memory.  It reslices the requisite
	data sets into a new data set, and then an additional copy data set is made
	inside of libmdc.  If medcon/libmdc ever supports slice-by-slice saving
	of data sets (instead of as an entire volume at once), we would only need
	to allocate one slice in amide, and one slice in libmdc, rather than
	one volume in amide, and one volume in libmdc.
	


