freRegistrationCtrlrs.cxx

Go to the documentation of this file.
00001 /*=========================================================================
00002  
00003   Program:   F.R.E.E. - flexible registration evaluation engine
00004   Version:   v.1.0.0
00005   Date:      $Date: 2006/09/01 12:00:00 $
00006   Module:    $RCSfile: freRegistrationCtrlrs.cxx,v $
00007   Language:  C++
00008  
00009  
00010         
00011   Copyright (c) 2007 Ralf o Floca (Department of Medical Informatics,
00012   Institute for Medical Biometry and Informatics, University of Heidelberg,
00013   Germany). All rights reserved.
00014   See FREECopyright.txt or http://www.mi.med.uni-hd.de/free/copyright.htm
00015   for details.
00016  
00017      This software is distributed WITHOUT ANY WARRANTY; without even 
00018      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
00019      PURPOSE.  See the above copyright notices for more information.
00020  
00021 =========================================================================*/
00022 #include "freRegistrationCtrlrs.h"
00023 
00024 #include "freMultiRigidRegistrationController.h"
00025 #include "freRigidRegistrationController.h"
00026 #include "freFEMRegistrationController.h"
00027 #include "freDemonRegistrationController.h"
00028 #include "frePointSetRegistrationController.h"
00029 #include "freClosedFormRegistrationController.h"
00030 
00031 #include "freAmoebaOptimizerController.h"
00032 #include "freConjugateGradientOptimizerController.h"
00033 #include "freGradientDescentOptimizerController.h"
00034 #include "freLBFGSOptimizerController.h"
00035 #include "freContinuousLBFGSOptimizerController.h"
00036 #include "freLevenbergMarquardtOptimizerController.h"
00037 #include "freOnePlusOneEvolutionaryOptimizerController.h"
00038 #include "freRegStepGradDescOptimizerController.h"
00039 #include "freVersorTransformOptimizerController.h"
00040 #include "freVersorRigid3DTransformOptimizerController.h"
00041 #include "frePowellOptimizerController.h"
00042 #include "freSPSAOptimizerController.h"
00043 #include "freExhaustiveOptimizerController.h"
00044 
00045 #include "freNormalVariateGeneratorController.h"
00046 
00047 namespace FREE
00048 {
00049 
00050 #ifndef __FREE_DISABLE_DLL_INTERFACE
00051 
00052 namespace
00053 {
00054 
00055 extern "C"
00056 #ifdef _WIN32
00057     __declspec( dllexport )
00058 #endif
00059     void FREEGetControllerList(int& iControllerCount, const char**& pControllerIDs)
00060 {
00061     ::FREE::RegistrationCtrlrs::GetControllerList(iControllerCount, pControllerIDs);
00062 };
00063 
00064 extern "C"
00065 #ifdef _WIN32
00066     __declspec( dllexport )
00067 #endif
00068     GenericComponentController* FREECreateController(const char* pControllerID)
00069 {
00070     return ::FREE::RegistrationCtrlrs::CreateController(pControllerID);
00071 };
00072 
00073 extern "C"
00074 #ifdef _WIN32
00075     __declspec( dllexport )
00076 #endif
00077     bool FREEDeleteController (GenericComponentController* pController)
00078 {
00079     if (pController)
00080     {
00081         delete pController;
00082     }
00083     return true;
00084 };
00085 
00086 extern "C"
00087 #ifdef _WIN32
00088     __declspec( dllexport )
00089 #endif
00090     void FREELinkCentralAsDedicated (::FREE::ControllerCentral::ControllerListType* pDedicatedControllerList,
00091                                      ::FREE::ControllerCentral::LibraryHandleListType* pDedicatedLibraryHandles,
00092                                      ::FREE::ProgressEventBase* pfnOnControl, ::FREE::ProgressEventBase* pfnOnBuild,
00093                                      ::FREE::ControllerCentral::CtrlCallbackListType* pCtrlCallbackList,
00094                                      ::FREE::ControllerCentral::CtrlProgressListType* pCtrlProgressList,
00095                                      ::itk::MutexLock* pGlobalCallbackMutex,
00096                                      ::itk::MutexLock* pGlobalProgressMutex)
00097 {
00098     ::FREE::ControllerCentral::LinkControllerCentralAsDedicated(pDedicatedControllerList,pDedicatedLibraryHandles,pfnOnControl,pfnOnBuild,pCtrlCallbackList,pCtrlProgressList,pGlobalCallbackMutex,pGlobalProgressMutex);
00099 }
00100 
00101 
00102 } 
00103 
00104 #endif // __FREE_DISABLE_DLL_INTERFACE
00105 
00109 
00110 
00111 void RegistrationCtrlrs::RegisterAllControllers(ControllerCentral* pCentral)
00112 {
00113     int iCount = 0;
00114     const char** pControllerIDs = 0;
00115 
00116     RegistrationCtrlrs::GetControllerList(iCount,pControllerIDs);
00117 
00118     for (int iPos = 0; iPos < iCount; iPos++)
00119     {
00120         pCentral->RegisterController(RegistrationCtrlrs::CreateController(pControllerIDs[iPos]));
00121     }
00122 
00123     if (pControllerIDs)
00124         delete pControllerIDs;
00125 };
00126 
00127 void RegistrationCtrlrs::GetControllerList(int& iControllerCount, const char**& pControllerIDs)
00128 {
00129     typedef std::vector<const char*> ControllerListType;
00130     ControllerListType internalControllerList;
00131 
00132     //RegistrationProcessors
00133     internalControllerList.push_back(ControllerID::Rigid2DRegistrationController);
00134     internalControllerList.push_back(ControllerID::MultiRigid2DRegistrationController);
00135     internalControllerList.push_back(ControllerID::FEM2DRegistrationController);
00136     internalControllerList.push_back(ControllerID::Demon2DRegistrationController);
00137     internalControllerList.push_back(ControllerID::PointSet2DRegistrationController);
00138     internalControllerList.push_back(ControllerID::ClosedForm2DRegistrationController);
00139 
00140     internalControllerList.push_back(ControllerID::Rigid3DRegistrationController);
00141     internalControllerList.push_back(ControllerID::MultiRigid3DRegistrationController);
00142     internalControllerList.push_back(ControllerID::FEM3DRegistrationController);
00143     internalControllerList.push_back(ControllerID::Demon3DRegistrationController);
00144     internalControllerList.push_back(ControllerID::PointSet3DRegistrationController);
00145     internalControllerList.push_back(ControllerID::ClosedForm3DRegistrationController);
00146 
00147     //Optimizers
00148     internalControllerList.push_back(ControllerID::RegStepGradDescOptimizerController);
00149     internalControllerList.push_back(ControllerID::GradientDescentOptimizerController);
00150     internalControllerList.push_back(ControllerID::OnePlusOneEvolutionaryOptimizerController);
00151     internalControllerList.push_back(ControllerID::PowellOptimizerController);
00152     internalControllerList.push_back(ControllerID::VersorTransformOptimizerController);
00153     internalControllerList.push_back(ControllerID::VersorRigid3DTransformOptimizerController);
00154     internalControllerList.push_back(ControllerID::LBFGSOptimizerController);
00155     internalControllerList.push_back(ControllerID::ContinuousLBFGSOptimizerController);
00156     internalControllerList.push_back(ControllerID::AmoebaOptimizerController);
00157     internalControllerList.push_back(ControllerID::LevenbergMarquardtOptimizerController);
00158     internalControllerList.push_back(ControllerID::SPSAOptimizerController);
00159     internalControllerList.push_back(ControllerID::ExhaustiveOptimizerController);
00160 
00161     //other
00162     internalControllerList.push_back(ControllerID::NormalVariateGeneratorController);
00163 
00164     //create export array with controller names.
00165     iControllerCount = internalControllerList.size();
00166     pControllerIDs = new const char*[iControllerCount];
00167     for (unsigned int iPos = 0; iPos<iControllerCount; iPos++)
00168     {
00169         pControllerIDs[iPos] = internalControllerList.at(iPos);
00170     }
00171 };
00172 
00173 GenericComponentController* RegistrationCtrlrs::CreateController(const char* pControllerID)
00174 {
00175     std::string sControllerID(pControllerID);
00176 
00177     //RegistrationProcessors
00178     if (sControllerID == ControllerID::Rigid2DRegistrationController)
00179         return(GenericComponentController*)new Rigid2DRegistrationController;
00180     if (sControllerID == ControllerID::MultiRigid2DRegistrationController)
00181         return(GenericComponentController*)new MultiRigid2DRegistrationController;
00182     if (sControllerID == ControllerID::FEM2DRegistrationController)
00183         return(GenericComponentController*)new FEM2DRegistrationController;
00184     if (sControllerID == ControllerID::Demon2DRegistrationController)
00185         return(GenericComponentController*)new Demon2DRegistrationController;
00186     if (sControllerID == ControllerID::PointSet2DRegistrationController)
00187         return(GenericComponentController*)new PointSet2DRegistrationController;
00188     if (sControllerID == ControllerID::ClosedForm2DRegistrationController)
00189         return(GenericComponentController*)new ClosedForm2DRegistrationController;
00190 
00191     if (sControllerID == ControllerID::Rigid3DRegistrationController)
00192         return(GenericComponentController*)new Rigid3DRegistrationController;
00193     if (sControllerID == ControllerID::MultiRigid3DRegistrationController)
00194         return(GenericComponentController*)new MultiRigid3DRegistrationController;
00195     if (sControllerID == ControllerID::FEM3DRegistrationController)
00196         return(GenericComponentController*)new FEM3DRegistrationController;
00197     if (sControllerID == ControllerID::Demon3DRegistrationController)
00198         return(GenericComponentController*)new Demon3DRegistrationController;
00199     if (sControllerID == ControllerID::PointSet3DRegistrationController)
00200         return(GenericComponentController*)new PointSet3DRegistrationController;
00201     if (sControllerID == ControllerID::ClosedForm3DRegistrationController)
00202         return(GenericComponentController*)new ClosedForm3DRegistrationController;
00203 
00204     //Optimizers
00205     if (sControllerID == ControllerID::RegStepGradDescOptimizerController)
00206         return(GenericComponentController*)new RegStepGradDescOptimizerController;
00207     if (sControllerID == ControllerID::GradientDescentOptimizerController)
00208         return(GenericComponentController*)new GradientDescentOptimizerController;
00209     if (sControllerID == ControllerID::OnePlusOneEvolutionaryOptimizerController)
00210         return(GenericComponentController*)new OnePlusOneEvolutionaryOptimizerController;
00211     if (sControllerID == ControllerID::PowellOptimizerController)
00212         return(GenericComponentController*)new PowellOptimizerController;
00213     if (sControllerID == ControllerID::VersorTransformOptimizerController)
00214         return(GenericComponentController*)new VersorTransformOptimizerController;
00215     if (sControllerID == ControllerID::VersorRigid3DTransformOptimizerController)
00216         return(GenericComponentController*)new VersorRigid3DTransformOptimizerController;
00217     if (sControllerID == ControllerID::ContinuousLBFGSOptimizerController)
00218         return(GenericComponentController*)new ContinuousLBFGSOptimizerController;
00219     if (sControllerID == ControllerID::LBFGSOptimizerController)
00220         return(GenericComponentController*)new LBFGSOptimizerController;
00221     if (sControllerID == ControllerID::AmoebaOptimizerController)
00222         return(GenericComponentController*)new AmoebaOptimizerController;
00223     if (sControllerID == ControllerID::LevenbergMarquardtOptimizerController)
00224         return(GenericComponentController*)new LevenbergMarquardtOptimizerController;
00225     if (sControllerID == ControllerID::SPSAOptimizerController)
00226         return(GenericComponentController*)new SPSAOptimizerController;
00227     if (sControllerID == ControllerID::ExhaustiveOptimizerController)
00228         return(GenericComponentController*)new ExhaustiveOptimizerController;
00229 
00230     //others
00231     if (sControllerID == ControllerID::NormalVariateGeneratorController)
00232         return(GenericComponentController*)new NormalVariateGeneratorController;
00233 
00234     return NULL;
00235 };
00236 
00237 
00238 } //end of namespace free

Generated at Sat Oct 13 17:12:15 2007 for f.r.e.e. - Flexible Registration and Evaluation Engine by doxygen 1.5.3 written by Dimitri van Heesch, © 1997-2000