/**
@page DONE IMP DONE list

The following needs to appear soon in the \ref history page...

@section h_version version - ???? - ?? ???? ????
@subsection h_version_i impbase
- NEW better version string management, thanks to cmake
- NEW simplified application console usage
- NEW subplugin (or plugin level 2) concept evolved to add-on concept (easier to understand!)
- NEW compilation on 64bits (linux) now working!
- FIXED image picking (including auto-synchronization of all slices!!!)
- FIXED left button click on slice3D is now disable (no mad rotation allowed)
- FIXED continuous picking is now available
- FIXED scene visible menus (automatic update)
- FIXED dicom component now back working!


@subsection h_version_p physical Model component
- 
*/

/** @page history IMP version history

See also \ref DONE (what will be soon on your screen!).
For now, this is the complete changeLog :

@section h_1_1_0 1.1.0 - Pelforth - 17 march 2008
- BIG: change from cvs to svn (Céline arrived!)
- BIG: from qmake to cmake (Céline arrived!)
- BIG: complete reorganization of code directories (Céline arrived!)

@section h_1_0_1 1.0.1 - smithwick's - 27 octobre 2006
@subsection h_1_0_1_i impbase
- NEW Muscle contraction simulation menu is now a part of Sofa Motor Plugin (No more of PMComponentPopup)
- NEW Color scale can be displayed on top of the 3D scene
- NEW imp version correctly managed now using VER_MAJ, VER_MIN, and VER_PAT 
- REMOVED ImpAppAccess (dirty trick done dirt cheaps), see ImpApp::getApp()

@subsection h_1_0_1_p physical Model component
- FIXED compilation bug on Windows (the name of the lib is now PM, not PhysicalModel)
- FIXED bug on customProperties when a Component is selected
- NEW color scale management in load simulation (name and values)
- REMOVED color scale in the simulation panel (color scale is now on top of the scene 3D)

@subsection h_1_0_1_o operators
- FIXED several bugs on clipTools due to qt4 porting


@section h1_0_0 1.0.0 - guinness - 17 octobre 2006
@subsection h1_0_0_i impbase
- NEW based on Vtk 5 and Qt 4 (if you don't have qt4 or vtk5 please use an older version)
  (there is still a lot of Qt3 thinggies in imp, and imp needs some work to turn it into a full/true Qt4 app)
- NEW thanks to VTK5, there is no need anymore for the auld vtkQGL lib!
- NEW thanks to Qt4, imp is back on Windows, using visual 2005 (see docs/install-windows.txt)
- NEW screenshots can be saved as EPS (vector graphics, PDF and TEX format
- NEW thanks to Qt4, the explorer, property and simulation widgets are now completely dockabled
 
@subsection h1_0_0_p physical Model component
- NEW SofaProperties to manage different bodies (FEM, StiffSprings, Rigid or Interaction) and export it to Sofa Structure
- NEW ImpLoad : SofaMotorPlugin to perform simulations using Sofa library
- NEW Contextual menu to simulate muscle contraction (if there is muscles defined in the pml!)
- FIXED atom decoration using toward orientation is now working
- FIXED when previewing loads, refresh dt of the simulation driver was not updated


@section h0_99_9 0.99.9 - sleeman - 17 octobre 2006
@subsection h0_99_9_p physical Model component
- NEW ImpLoad: recording of screenshot at any moment of the simulation is possible
- NEW ImpLoad: color scale representation can be given by the simulation plugin (plugin data)
  for any atom. Color scale in the simulation dialog is updated

@section h0_99_8 0.99.8 - Jenlain - 25 july 2006
@subsection h0_99_8_i impbase
- NEW stdout and stderr redirection to console (see help menu->show console), run "imp -noconsole" to have direct output
@subsection h0_99_8_p physical Model component
- NEW decoration for atom (SC are now possible)

@section h0_99_7 0.99.7 - Leffe - 04 may 2006
@subsection h0_99_7_o Operators
- NEW operator Clip Tools to cut a vtk mesh with different objects, and directly defining a cutting line
- NEW new method for 3D mesh reconstruction

@subsection h0_99_7_p physical Model component
- NEW link vtk model displacement (bone replacement) with pml model (soft tissus) to automacally deform it
- NEW FEMMotorPlugin to do simulation using Finite Elements Models, with pre-computed matrix
- NEW use pml models as finite elements models, FEMProperties
- NEW clic on a item in the atom widget directly select the corresponding component (Cell or SC the atom is in)
- NEW simulation dialog is no more a dialog, it is a widget on the right side of the 3D view
- NEW new method that allows the motor plugin to ask for update of time display independantly of 3D display LoadManager::updateTime()
- NEW simulator frequency measurements
- NEW simulation widget has now the ability to display the displacement values and (approximate) associated color scale
- FIXED "no motor plugin, no crash"
- FIXED libpng incompatible version, by loading the pushbutton pixmap at runtime (in LoadsSimulation)

@section h0_99_6 0.99.6 - Franziskaner - 11 august 2004
- better autodocumentation (doxygen) including TODO list, and version list

@subsection h0_99_6_i impbase 
- imp settings: now two more checkbox in the preference dialog (lines as tubes, which is now by default false) and backface culling (also false)
- imp settings: selecting a plugin now select all the line (not only the 1st column), it's just nicer for the eye
- Explorer: no border at all (was 11 pixel, and thus very ugly), look more professional now
- SliderTextWidget: code cleaning (a lot!)
- Scene3D: cull face rendering on/off (press F in the scene3D area)
- new class GeometricObject replace Arrow. Any GeometricObject can be added to the Scene3D. 
  I can be either an arrow or a sphere. 
  One can change position, orientation, size and color, show it in the Scene3D or not.
- Scene3D: updated what's this information (now using nice html text, table & colors)

@subsection h0_99_6_v vtkQGL
- new method to get the camera position and attributes
- vtkQGL: new screenshot output format (jpg, png and PS)
- method for cull face rendering on/off
- big clean of the vtkQGL cvs (removing everything irrelevant or not needed)
- remove cerr messages in vtkQGL
- instead of turning of 30 degrees when arrow keys were press, turn only of 5 degrees, 
  it is much easier!
- Ctrl+ arrow keys now turns around camera axes using a 90 step (so to set the camera on
top of the scene for exemple, press HOME, and then Ctrl+up arrow, easy no?)

@subsection h0_99_6_p Physical Model component
- ImpLoad : Affichage des d�lacements par rapport �l'instant t=0 par une d�rad�de couleur 
  (rouge = pas d�orm� vert = moyennement d�orm�et bleu = d�ormation maximum). 
  Pour l'instant c'est remis �l'echelle �chaque instant t.
- ImpLoad : refonte compl�e du dialog d'�ition des load (class LoadEditor), c'est plus fonctionnel 
  et plus simple �debugger (au cas o il reste encore des bugs). 
  L'editeur de load supporte l'ajout, la modification et la suppression de n'importe quel type de load. 
  Il manipule une copie des loads, ce qui fait que l'on peut revenir en arri�e (en cliquant sur reset).
  En plus il permet maintenant de v�ifier que les targets entr�s sont bien disponibles dans le physical model.
  Et encore : on peut acc�er �l'�iteur de load m�e si on n'a pas de load en cours (on pourra ainsi 
  cr�r des load facilement �partir de scratch)
- Impload / motor plugin : cr�tion d'une barre d'outils de simulation avec les boutons 
  rewind/play/one step/pause et temps t (barre dockable, apparait automatiquement d� chargement d'un pml)
- Impload : ajout d'un popup 'Open recent' qui permet de conserver la liste des derniers loads ouverts
- de la m�e fa�n que l'on a "AtomArrow", "AtomSphere" a ��ajout�pour pouvoir visionner directement 
  une sphere dans l'espace coll� sur un Atom.
- ImpLoad: affichage des loads �la demande (sphere autour des noeuds �d�lacement nuls, arrow pour 
  les translations impos�s et les forces), le tout mis �l'�helle de l'objet. 
  Si le fichier de load est gros, c'est tr� tr� long, mais pour des chargements impos�, 
  c'est rapide et pratique.
- ImpLoad : on peut modifier, fermer ou ouvrir de nouveau load sans que la fen�re de simulation ou de
  preview ne se ferme. C'est plus pratique car cela �ite de se retaper tout le travail �chaque fois !
- ImpLoad : close du PML entraine un rewind automatique de la simulation ou du film

@subsection h0_99_6_ib impbase BUGS
- visualization of VTK polydata: there was a problem when display line as tube was on and the polydata had no lines!
- imp crash sometimes when atoms were selected using the mouse (ctrl+left), now it seems ok (?!)

@subsection h0_99_6_vb vtkQGL BUGS
- vtkQGL: some bugs due to non initialization of the camera (especially in zooming/dolly). 
  These bugs were introduced few weeks ago

@subsection h0_99_6_pb Physical Model component BUGS
- clicking on a cellComponent send bad values to VTK, thus destroying some angle of view (the object disappear)
- PhysicalModel: the motor plugin destructor was never called (thus the specific GeometricObject 
  that a monitor was adding in the Scene3D remained after the data manager was closed!)
- close du PML fait un vrai delete du motor plugin (et donc fait disparaitre les �entuelles atom 
  d�oration qui �ait pr�entet au moment o on ferme le PML)
- customProperties.xsl : j'avais oubli�de r�ercuter l'ind�endance d'Atom vis �vis de Alp.



@section h0_99_5 0.99.5 - 9 juin 2004

@subsection h0_99_5i impbase:
- gestion de la taille bounding box d'un DataComponent (methodes getBounds(bounds:float[6]):void 
  et getBoundingRadius():double)
- utilisation de la taille de la bounding box pour afficher le rep�e O(x,y,z) �la "bonne" taille
- affichage du rep�e et des axes O(x,y,z) de m�e taille
- ajout d'un help "what's this" pour la fen�re de Scene3D pour afficher une aide les raccourcis 
  claviers et les interactions souris possible dans la Scene3D
- En 3D: touche "R" devient touche "Home" (permet de r�nitialiser la cam�a, voir ci-dessous)

@subsection h0_99_5v vtkQGL
- reset de la scene (suppression de la touche "Home" dans Scene3D.cpp) remet la cam�a en place par 
  rapport aux objets affich�, ET aussi se remet �la m�e position (z=1, y=1) et m�e viewpoint O(0,0,0). 
  Cela permet de s'y retrouver quand on est perdu dans l'espace...
- ajout d'interaction avec les fl�hes : gauche/droite permet de tourner d'un angle de 30 autour de
  l'axe vertical de la cam�a, et haut/bas permet de tourner d'un angle de 30 autour de l'axe 
  horizontale de la cam�a. Combin�au "Home" cela permet de se replacer �un endroit fixe.
- changement de la couleur de la bounding box de l'objet VTK s�ectionn� Avant : toujours blanc
  (un peu invisible et effet bizarre quand le fond �ait blanc aussi). 
  Maintenant : couleur inverse du fond (si fond = blanc -> bounding box en noir)
- possibilit�d'enlever l'affichage de la bounding box de l'objet VTK selectionn�(touche 'B')

@subsection h0_99_5p Physical Model component
- simulation pas �pas
- classe pour l'affichage de vecteur (AtomArrow), utilise classe Arrow
- exemple d'affichage des vecteurs vitesses dans ShakerMotorPlugin
- affichage des atoms sous forme de sphere (plus facile �voir) et mise �l'echelle de ces sph�es 
  en fonction de la taille de l'objet global (DataManager)
- sauvegarde de tmax et dt dans les pr��ences de l'application

@subsection h0_99_5ib impbase BUGS
- Arrow::SetOrientation(..) compl�ement d�ugg�(c'�ait vraiment n'importe quoi), 
  maintenant cela fonctionne (f..ing trigonometry)
- affichage des labels �la bonne taille (�peu pr� !)
- double clic sur un atom dans l'explorateur met le point en (0,0,0) : le double clic permet de mettre 
  un atom �la position d'un pixel. La m�hode dans Scene3D ne prenait pas en compte le cas o il n'y 
  avait pas de pixel selectionn�
- Dans Edit Pref -> DataManager Plugin -> Add et au lieu de s�ectionner qqchose, clique 
  sur cancel => plantage complet (du au non test de la chaine renvoy� par getOpenFileName())

@subsection h0_99_5pb Physical Model component BUGS
- probleme avec les exemples (des index de cells �aient pr�ent plusieurs fois,
  alors que chaque cellule doit avoir un index unique)


  
  
@section h0_99_4 0.99.4 - 12 mai 2004

- r�rganisation du projet pour n'utiliser qu'un seul .pro et changement de l'arborescence
  des r�ertoires (c'est plus propre)
 - modification directe sur le d�ot CVS pour conserver les historiques des fichiers d�lac�

@subsection h0_99_4ib impbase BUGS
- pb dans la property editor apparement... 
  (le classement des propri�� dans l'ordre alphab�ique �ait une mauvaise id�, 
  mieux vaux les mettres dans l'ordre demand�par l'utilisateur dans le .h ou par la 
  moulinette automatique de cr�tion �partir des propri�� PML)

  
  
  
@section h0_99_3 0.99.3 - 11 avril 2004

@subsection h0_99_3p Physical Model component
- g��ation automatique des classes {AtomComponent|CellComponent|StructuralComponent}Properties �partir 
  du customproperties.xml (du projet physicalModel)
  Cet outils automatique permet d'�endre facilement la lib physicalModel afin de prendre en compte 
  les sp�ificit� des mod�es physique (un truc qui vous permet d'ajouter facilement des 
  propri�� du style youngModulus="100000" directement dans le document pml) 
  et g��ation des classe property automatique par moulinette XSL 
  => affichage des custom property dans imp (property editor) !



  
@section h0_99_2 0.99.2 - 29 mars 2004

@subsection h0_99_2ib impbase BUG
- plantage imp d� qu'on fermait un fichier pml, corrig�(pb de destructeur virtuel)




@section h0_99_1 0.99.1 - 4 mars 2004

- compilation avec Qt3.2 (et encore avec Qt3.1 of course)
- il faut utiliser xerces 2.1 ou + si on veut b��icier de la validation automatique de 
  l'int�rit�des donn�s (en + clair : si on veut que les documents pml ou lml soient 
  v�ifi� automatiquement p/r au format)
- la biblioth�ue impload a chang�de nom, et s'appelle d�ormais tout simplement 'load'
   => 'cvs checkout load'. 
   L'aborescence a ��simplifi� et j'ai am�iorer le pgm de test (qui permet de contr�er les 
   valeurs prises par les chargements au cours du temps et de sortir un fichier csv pour pouvoir 
   les dessiner facilement)
   
Attention, le changement de nom intervient aussi :
- au niveau des variables d'environnement qu'il faut d�inir IMPLOADDIR devient LOADDIR
- de l'extension des noms de fichiers (� s'appelait iml cela devient lml)
  L'IHM de cette biblioth�ue dans imp s'appelle par contre toujours impload (pour faire plaisir �Matt)


  
  
@section h0_99 0.99 - 7 janvier 2004

- nouvelle arborescence (plus propre)
- l'arborescence a changer, mais j'ai bidouill�le d�ot cvs pour pouvoir conserver 
  l'historique des changements.
- tout est plugin (donc on n'est pas oblig�de tout compil�si on ne s'int�esse qu'�
  la manipulation d'un seul type de donn�s)
- utilisation forcen� des lib dynamique.
- s�aration des composants/op�ateurs/base de imp/main
- gestion des pr��ences utilisateurs (edit->preferences) : couleur de fond, historique 
  last open files, plugins
- ajout de "property editor" : c'est un m�anisme qui permet de d�inir une liste de choses que 
  l'on veut pouvoir changer pour un DataComponent et qui cr� automatiquement l'interface 
  graphique correspondant. voir plus bas un exemple pour AtomComponent. 
  C'est tr� pratique et � permet de d�inir rapidement une interface pour changer les param�res. 
  Vous pouvez mettre des bool�ns, des listes, des entiers, des doubles, des string, ...
- un nouveau menu "Action" qui se rapporte aux actions possibles de la s�ection courante 
  (menu d�achable pour r�tilisation ult�ieure). Ce menu utilise le popup du DataComponent. 
  Ca �ite de devoir faire un clic droit tout le temps. 
  On s�ectionne, on va d�acher le menu Action et on a le popup tout le temps ouvert.
- ajout d'un m�anisme pour g�er les icones de chaque DataComponent dans l'explorateur
- screenshot (file->screenshot)
- gestion des "last open files"
- possibilit�de voir les lignes sous forme de tube
- gestion de la souris (trackball/joystick) dans les menus
- progressbar facilement accessible depuis n'importe o, en bas �droite de l'application
- biblioth�ue physicalModel s�ar� (module cvs nomm�physicalModel)
- un exemple de property editor pour AtomComponent : j'ai juste une classe qui dit qu'il va y 
  avoir une propri��"index" et un propri��"position" (contenant 3 champs x,y et z); 
  imp se charge de cr�r en dessous de l'explorateur une interface qui permet de changer 
  les valeurs de ces propri��.
- Action->Simulation : permet de lancer un moteur de simulation. 
  On peut soit utiliser un fichier iml (ImpLoad), soit cr�r son propre moteur (g��sous forme de plugin).
  J'ai fourni un exemple de plugin pour faire un moteur  (ShakerMotor), un plugin tr�
  artistique �essayer en mode "direct rendering" !
  Avantage du plugin : vous pouvez mettre ce que vous voulez comme moteur (��ent fini, 
  bidouillage masse ressort, composition de mode MEF pour Franz, etc...).
  Et bien �idemment c'est tr� facile �faire.
- Action->Preview Loads permet de charger un fichier iml (Impload) et de le visionner 
  (magnetoscope virtuel). Permet aussi de prendre des images automatiques (pour produire des videos)
- icones de couleurs pour l'explorer (tr� important !)
- FEM: l�c'est Matt qui a ajouter cela, mais je ne sais pas trop �quoi � sert


@section hprevious ...lots of uncommented releases...

@section h0_1_2 0.1.2 - 7 octobre 2001
- imp now support matching algorithm binary file

@section h0_1_1 0.1.1 - 27 aot 2001
- ajout du CVS ChangeLog : voil�une id� qu'elle est bonne (pour mettre des commentaires 
  pour les choses g��ales) !

@section h0_1 0.1 - 27 aot 2001
- first official release!
- support format XML I/O Physical Model (DTD �faire !)
- pr�aration et initialisation du support des propri�� sp�ifiques selon le mod�e 
  physique �utiliser (MEF, phymulob). Voir r�ertoire "PhysicalModel".
- option ligne de commande "-f FileName" pour ouvrir un fichier au d�arrage 
- nouvelle structure dans les r�ertoires vtkandqt, PhysicalModel (classes de base pour la gestion de pm),
  PhysicalProperties (prop. sp�ifique).
- mise en place d'un seul fichier .pro pour la nouvelle structure (cf imp.pro)
- nouveaux types de cellules : Polyline, Polyvertex et Triangle
- exemple fichier xml (avec propri�� sp�ifiques myCustomProperty1 et 2)
- ajout d'une caract�istique de couleur pour les structural components
- diverses correction de bugs...
- modification de la constante de RenderingMode

*/
