freMetricCtrlrs.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: freMetricCtrlrs.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 "freMetricCtrlrs.h"
00023 
00024 #include "freMeanSquaresMetricController.h"
00025 #include "freNormalizedCorrelationMetricController.h"
00026 #include "freMutualInformationMetricController.h"
00027 #include "freMattesMutualInformationMetricController.h"
00028 #include "freMutualInformationHistogramMetricController.h"
00029 #include "freMeanReciprocalSquaresMetricController.h"
00030 #include "freDifferenceEnergyMetricController.h"
00031 #include "freDifferenceEntropyMetricController.h"
00032 #include "freEuclidianDistancePointMetricController.h"
00033 
00034 namespace FREE
00035 {
00036 
00037 #ifndef __FREE_DISABLE_DLL_INTERFACE
00038 
00039 namespace
00040 {
00041 
00042 extern "C"
00043 #ifdef _WIN32
00044     __declspec( dllexport )
00045 #endif
00046     void FREEGetControllerList(int& iControllerCount, const char**& pControllerIDs)
00047 {
00048     ::FREE::MetricCtrlrs::GetControllerList(iControllerCount, pControllerIDs);
00049 };
00050 
00051 extern "C"
00052 #ifdef _WIN32
00053     __declspec( dllexport )
00054 #endif
00055     GenericComponentController* FREECreateController(const char* pControllerID)
00056 {
00057     return ::FREE::MetricCtrlrs::CreateController(pControllerID);
00058 };
00059 
00060 extern "C"
00061 #ifdef _WIN32
00062     __declspec( dllexport )
00063 #endif
00064     bool FREEDeleteController (GenericComponentController* pController)
00065 {
00066     if (pController)
00067     {
00068         delete pController;
00069     }
00070     return true;
00071 };
00072 
00073 extern "C"
00074 #ifdef _WIN32
00075     __declspec( dllexport )
00076 #endif
00077     void FREELinkCentralAsDedicated (::FREE::ControllerCentral::ControllerListType* pDedicatedControllerList,
00078                                      ::FREE::ControllerCentral::LibraryHandleListType* pDedicatedLibraryHandles,
00079                                      ::FREE::ProgressEventBase* pfnOnControl, ::FREE::ProgressEventBase* pfnOnBuild,
00080                                      ::FREE::ControllerCentral::CtrlCallbackListType* pCtrlCallbackList,
00081                                      ::FREE::ControllerCentral::CtrlProgressListType* pCtrlProgressList,
00082                                      ::itk::MutexLock* pGlobalCallbackMutex,
00083                                      ::itk::MutexLock* pGlobalProgressMutex)
00084 {
00085     ::FREE::ControllerCentral::LinkControllerCentralAsDedicated(pDedicatedControllerList,pDedicatedLibraryHandles,pfnOnControl,pfnOnBuild,pCtrlCallbackList,pCtrlProgressList,pGlobalCallbackMutex,pGlobalProgressMutex);
00086 }
00087 
00088 
00089 } 
00090 
00091 #endif // __FREE_DISABLE_DLL_INTERFACE
00092 
00096 
00097 
00098 void MetricCtrlrs::RegisterAllControllers(ControllerCentral* pCentral)
00099 {
00100     int iCount = 0;
00101     const char** pControllerIDs = 0;
00102 
00103     MetricCtrlrs::GetControllerList(iCount,pControllerIDs);
00104 
00105     for (int iPos = 0; iPos < iCount; iPos++)
00106     {
00107         pCentral->RegisterController(MetricCtrlrs::CreateController(pControllerIDs[iPos]));
00108     }
00109 
00110     if (pControllerIDs)
00111         delete pControllerIDs;
00112 };
00113 
00114 void MetricCtrlrs::GetControllerList(int& iControllerCount, const char**& pControllerIDs)
00115 {
00116     typedef std::vector<const char*> ControllerListType;
00117     ControllerListType internalControllerList;
00118 
00119     //Metrics
00120     internalControllerList.push_back(ControllerID::MeanSquares2DMetricController);
00121     internalControllerList.push_back(ControllerID::NormalizedCorrelation2DMetricController);
00122     internalControllerList.push_back(ControllerID::MutualInformation2DMetricController);
00123     internalControllerList.push_back(ControllerID::MattesMutualInformation2DMetricController);
00124     internalControllerList.push_back(ControllerID::MutualInformationHistogram2DMetricController);
00125     internalControllerList.push_back(ControllerID::MeanReciprocalSquares2DMetricController);
00126     internalControllerList.push_back(ControllerID::DifferenceEnergy2DMetricController);
00127     internalControllerList.push_back(ControllerID::DifferenceEntropy2DMetricController);
00128     internalControllerList.push_back(ControllerID::EuclidianDistancePoint2DMetricController);
00129 
00130     internalControllerList.push_back(ControllerID::MeanSquares3DMetricController);
00131     internalControllerList.push_back(ControllerID::NormalizedCorrelation3DMetricController);
00132     internalControllerList.push_back(ControllerID::MutualInformation3DMetricController);
00133     internalControllerList.push_back(ControllerID::MattesMutualInformation3DMetricController);
00134     internalControllerList.push_back(ControllerID::MutualInformationHistogram3DMetricController);
00135     internalControllerList.push_back(ControllerID::MeanReciprocalSquares3DMetricController);
00136     internalControllerList.push_back(ControllerID::DifferenceEnergy3DMetricController);
00137     internalControllerList.push_back(ControllerID::DifferenceEntropy3DMetricController);
00138     internalControllerList.push_back(ControllerID::EuclidianDistancePoint3DMetricController);
00139 
00140     //create export array with controller names.
00141     iControllerCount = internalControllerList.size();
00142     pControllerIDs = new const char*[iControllerCount];
00143     for (unsigned int iPos = 0; iPos<iControllerCount; iPos++)
00144     {
00145         pControllerIDs[iPos] = internalControllerList.at(iPos);
00146     }
00147 };
00148 
00149 GenericComponentController* MetricCtrlrs::CreateController(const char* pControllerID)
00150 {
00151     std::string sControllerID(pControllerID);
00152 
00153     //Metrics
00154     if (sControllerID == ControllerID::MeanSquares2DMetricController)
00155         return(GenericComponentController*)new MeanSquares2DMetricController;
00156     if (sControllerID == ControllerID::NormalizedCorrelation2DMetricController)
00157         return(GenericComponentController*)new NormalizedCorrelation2DMetricController;
00158     if (sControllerID == ControllerID::MutualInformation2DMetricController)
00159         return(GenericComponentController*)new MutualInformation2DMetricController;
00160     if (sControllerID == ControllerID::MattesMutualInformation2DMetricController)
00161         return(GenericComponentController*)new MattesMutualInformation2DMetricController;
00162     if (sControllerID == ControllerID::MutualInformationHistogram2DMetricController)
00163         return(GenericComponentController*)new MutualInformationHistogram2DMetricController;
00164     if (sControllerID == ControllerID::MeanReciprocalSquares2DMetricController)
00165         return(GenericComponentController*)new MeanReciprocalSquares2DMetricController;
00166     if (sControllerID == ControllerID::DifferenceEnergy2DMetricController)
00167         return(GenericComponentController*)new DifferenceEnergy2DMetricController;
00168     if (sControllerID == ControllerID::DifferenceEntropy2DMetricController)
00169         return(GenericComponentController*)new DifferenceEntropy2DMetricController;
00170     if (sControllerID == ControllerID::EuclidianDistancePoint2DMetricController)
00171         return(GenericComponentController*)new EuclidianDistancePoint2DMetricController;
00172 
00173     if (sControllerID == ControllerID::MeanSquares3DMetricController)
00174         return(GenericComponentController*)new MeanSquares3DMetricController;
00175     if (sControllerID == ControllerID::NormalizedCorrelation3DMetricController)
00176         return(GenericComponentController*)new NormalizedCorrelation3DMetricController;
00177     if (sControllerID == ControllerID::MutualInformation3DMetricController)
00178         return(GenericComponentController*)new MutualInformation3DMetricController;
00179     if (sControllerID == ControllerID::MattesMutualInformation3DMetricController)
00180         return(GenericComponentController*)new MattesMutualInformation3DMetricController;
00181     if (sControllerID == ControllerID::MutualInformationHistogram3DMetricController)
00182         return(GenericComponentController*)new MutualInformationHistogram3DMetricController;
00183     if (sControllerID == ControllerID::MeanReciprocalSquares3DMetricController)
00184         return(GenericComponentController*)new MeanReciprocalSquares3DMetricController;
00185     if (sControllerID == ControllerID::DifferenceEnergy3DMetricController)
00186         return(GenericComponentController*)new DifferenceEnergy3DMetricController;
00187     if (sControllerID == ControllerID::DifferenceEntropy3DMetricController)
00188         return(GenericComponentController*)new DifferenceEntropy3DMetricController;
00189     if (sControllerID == ControllerID::EuclidianDistancePoint3DMetricController)
00190         return(GenericComponentController*)new EuclidianDistancePoint3DMetricController;
00191 
00192     return NULL;
00193 };
00194 
00195 
00196 } //end of namespace free

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