/**
@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 example, press HOME, and then Ctrl+up arrow, easy no?)

@subsection h0_99_6_p Physical Model component
- ImpLoad : Affichage des déplacements par rapport à l'instant t=0 par une dégradé couleur 
  (rouge = pas déformé vert = moyennement déformévet bleu = déformation maximum). 
  Pour l'instant c'est remis à l'echelle à chaque instant t.
- ImpLoad : refonte complète du dialog d'édition 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ère (en cliquant sur reset).
  En plus il permet maintenant de vérifier que les targets entrées sont bien disponibles dans le physical model.
  Et encore : on peut accéder à l'éditeur de load move si on n'a pas de load en cours (on pourra ainsi 
  créer des load facilement à partir de scratch)
- Impload / motor plugin : création d'une barre d'outils de simulation avec les boutons 
  rewind/play/one step/pause et temps t (barre dockable, apparait automatiquement lors du chargement d'un pml)
- Impload : ajout d'un popup 'Open recent' qui permet de conserver la liste des derniers loads ouverts
- de la même façon que l'on a "AtomArrow", "AtomSphere" à rajouter pour pouvoir visionner directement 
  une sphere dans l'espace collé sur un Atom.
- ImpLoad: affichage des loads à la demande (sphere autour des noeuds à déplacement nuls, arrow pour 
  les translations imposées et les forces), le tout mis à l'échelle de l'objet. 
  Si le fichier de load est gros, c'est très très 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être de simulation ou de
  preview ne se ferme. C'est plus pratique car cela nécessite 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 événtuelles atom 
  décoration qui avait préentet au moment où on ferme le PML)
- customProperties.xsl : j'avais oublié de répercuter l'indépendance 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ère O(x,y,z) à la "bonne" taille
- affichage du repère et des axes O(x,y,z) de même taille
- ajout d'un help "what's this" pour la fenêtre 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éinitialiser la caméra, voir ci-dessous)

@subsection h0_99_5v vtkQGL
- reset de la scene (suppression de la touche "Home" dans Scene3D.cpp) remet la caméra en place par 
  rapport aux objets affichés, ET aussi se remet à la même position (z=1, y=1) et même viewpoint O(0,0,0). 
  Cela permet de s'y retrouver quand on est perdu dans l'espace...
- ajout d'interaction avec les flèches : gauche/droite permet de tourner d'un angle de 30 autour de
  l'axe vertical de la caméra, et haut/bas permet de tourner d'un angle de 30 autour de l'axe 
  horizontale de la caméra. Combiné au "Home" cela permet de se replacer à un endroit fixe.
- changement de la couleur de la bounding box de l'objet VTK selectionné 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
- example d'affichage des vecteurs vitesses dans ShakerMotorPlugin
- affichage des atoms sous forme de sphere (plus facile à voir) et mise à l'echelle de ces sphères 
  en fonction de la taille de l'objet global (DataManager)
- sauvegarde de tmax et dt dans les préférences de l'application

@subsection h0_99_5ib impbase BUGS
- Arrow::SetOrientation(..) complètement débuggé (c'était vraiment n'importe quoi), 
  maintenant cela fonctionne (f..ing trigonometry)
- affichage des labels à la bonne taille (à peu près !)
- 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éthode 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électionner 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 examples (des index de cells avaient prent plusieurs fois,
  alors que chaque cellule doit avoir un index unique)


  
  
@section h0_99_4 0.99.4 - 12 mai 2004

- réorganisation du projet pour n'utiliser qu'un seul .pro et changement de l'arborescence
  des répertoires (c'est plus propre)
 - modification directe sur le dépôt CVS pour conserver les historiques des fichiers déplacé

@subsection h0_99_4ib impbase BUGS
- pb dans la property editor apparement... 
  (le classement des propriété dans l'ordre alphabétique avait une mauvaise idee, 
  mieux vaux les mettres dans l'ordre demandé par l'utilisateur dans le .h ou par la 
  moulinette automatique de création à partir des propriétés PML)

  
  
  
@section h0_99_3 0.99.3 - 11 avril 2004

@subsection h0_99_3p Physical Model component
- géneration automatique des classes {AtomComponent|CellComponent|StructuralComponent}Properties à partir 
  du customproperties.xml (du projet physicalModel)
  Cet outils automatique permet d'étendre facilement la lib physicalModel afin de prendre en compte 
  les spécificités des modèles physique (un truc qui vous permet d'ajouter facilement des 
  propriété du style youngModulus="100000" directement dans le document pml) 
  et géneration 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ès 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énéficier de la validation automatique de 
  l'integrité des données (en + clair : si on veut que les documents pml ou lml soient 
  vérifiés automatiquement p/r au format)
- la bibliothèque impload a changé de nom, et s'appelle désormais tout simplement 'load'
   => 'cvs checkout load'. 
   L'aborescence a été simplifié et j'ai améliorer le pgm de test (qui permet de contrèser 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éfinir IMPLOADDIR devient LOADDIR
- de l'extension des noms de fichiers (ce qui s'appelait iml devient lml)
  L'IHM de cette bibliothèque 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épôt cvs pour pouvoir conserver 
  l'historique des changements.
- tout est plugin (donc on n'est pas obligé de tout compiler si on ne s'intéresse qu'à
  la manipulation d'un seul type de données)
- utilisation forcené des lib dynamique.
- séparation des composants/opérateurs/base de imp/main
- gestion des préférences utilisateurs (edit->preferences) : couleur de fond, historique 
  last open files, plugins
- ajout de "property editor" : c'est un mécanisme qui permet de définir 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 example pour AtomComponent. 
  C'est très pratique et cela permet de définir rapidement une interface pour changer les paramètres. 
  Vous pouvez mettre des booléens, des listes, des entiers, des doubles, des string, ...
- un nouveau menu "Action" qui se rapporte aux actions possibles de la sélection courante 
  (menu détachable pour réutilisation ulterieure). Ce menu utilise le popup du DataComponent. 
  Ca nécessite de devoir faire un clic droit tout le temps. 
  On sélectionne, on va détacher le menu Action et on a le popup tout le temps ouvert.
- ajout d'un mécanisme pour gérer 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èque physicalModel séparée (module cvs nommé physicalModel)
- un example de property editor pour AtomComponent : j'ai juste une classe qui dit qu'il va y 
  avoir une propriété"index" et un propriété"position" (contenant 3 champs x,y et z); 
  imp se charge de créer en dessous de l'explorateur une interface qui permet de changer 
  les valeurs de ces propriété.
- Action->Simulation : permet de lancer un moteur de simulation. 
  On peut soit utiliser un fichier iml (ImpLoad), soit créer son propre moteur (géré sous forme de plugin).
  J'ai fourni un example de plugin pour faire un moteur  (ShakerMotor), un plugin très
  artistique à essayer en mode "direct rendering" !
  Avantage du plugin : vous pouvez mettre ce que vous voulez comme moteur (élément fini, 
  bidouillage masse ressort, composition de mode MEF pour Franz, etc...).
  Et bien évidemment c'est très 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ès important !)
- FEM: là c'est Matt qui a ajouter cela, mais je ne sais pas trop à quoi ça 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ée qu'elle est bonne (pour mettre des commentaires 
  pour les choses générales) !

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

*/
