00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
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
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
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
00162 internalControllerList.push_back(ControllerID::NormalVariateGeneratorController);
00163
00164
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
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
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
00231 if (sControllerID == ControllerID::NormalVariateGeneratorController)
00232 return(GenericComponentController*)new NormalVariateGeneratorController;
00233
00234 return NULL;
00235 };
00236
00237
00238 }