freITKFilterCtrlrs.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: freITKFilterCtrlrs.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 "freITKFilterCtrlrs.h"
00023 
00024 #include "freDanielssonDistanceMapImageFilterController.h"
00025 #include "freBinaryThresholdImageFilterController.h"
00026 #include "freIsoContourDistanceImageFilterController.h"
00027 #include "freFastChamferDistanceImageFilterController.h"
00028 #include "freWarpImageFilterController.h"
00029 #include "freNormalizeImageFilterController.h"
00030 #include "freSubtractImageFilterController.h"
00031 #include "freShrinkImageFilterController.h"
00032 #include "freAbsoluteValueDifferenceImageFilterController.h"
00033 #include "freIterativeInverseDeformationFieldImageFilterController.h"
00034 #include "freOrientImageFilterController.h"
00035 #include "freMaskImageFilterController.h"
00036 #include "freResampleImageFilterController.h"
00037 #include "freWeightedAddImageFilterController.h"
00038 #include "freCheckerBoardImageFilterController.h"
00039 #include "freDiscreteGaussianImageFilterController.h"
00040 
00041 namespace FREE
00042 {
00043 
00044 #ifndef __FREE_DISABLE_DLL_INTERFACE
00045 
00046 namespace
00047 {
00048 
00049 extern "C" 
00050 #ifdef _WIN32
00051 __declspec( dllexport ) 
00052 #endif
00053 void FREEGetControllerList(int& iControllerCount, const char**& pControllerIDs)
00054 {
00055   ::FREE::ITKFilterCtrlrs::GetControllerList(iControllerCount, pControllerIDs);
00056 };
00057 
00058 extern "C" 
00059 #ifdef _WIN32
00060 __declspec( dllexport ) 
00061 #endif 
00062 GenericComponentController* FREECreateController(const char* pControllerID)
00063 {
00064   return ::FREE::ITKFilterCtrlrs::CreateController(pControllerID);
00065 };
00066 
00067 extern "C" 
00068 #ifdef _WIN32
00069 __declspec( dllexport ) 
00070 #endif 
00071 bool FREEDeleteController (GenericComponentController* pController)
00072 {
00073                 if (pController)
00074                 {
00075                         delete pController;
00076                 }
00077                 return true;
00078 };
00079 
00080 extern "C" 
00081 #ifdef _WIN32
00082 __declspec( dllexport ) 
00083 #endif 
00084     void FREELinkCentralAsDedicated (::FREE::ControllerCentral::ControllerListType* pDedicatedControllerList,
00085                                      ::FREE::ControllerCentral::LibraryHandleListType* pDedicatedLibraryHandles,
00086                                      ::FREE::ProgressEventBase* pfnOnControl, ::FREE::ProgressEventBase* pfnOnBuild,
00087                                      ::FREE::ControllerCentral::CtrlCallbackListType* pCtrlCallbackList,
00088                                      ::FREE::ControllerCentral::CtrlProgressListType* pCtrlProgressList,
00089                                      ::itk::MutexLock* pGlobalCallbackMutex,
00090                                      ::itk::MutexLock* pGlobalProgressMutex)
00091 {
00092     ::FREE::ControllerCentral::LinkControllerCentralAsDedicated(pDedicatedControllerList,pDedicatedLibraryHandles,pfnOnControl,pfnOnBuild,pCtrlCallbackList,pCtrlProgressList,pGlobalCallbackMutex,pGlobalProgressMutex);
00093 }
00094 
00095 } // end of anonymous namspace of dll interface
00096 
00097 #endif // __FREE_DISABLE_DLL_INTERFACE
00098 
00099 
00103 
00104 
00105 void ITKFilterCtrlrs::RegisterAllControllers(ControllerCentral* pCentral)
00106 {
00107         int iCount = 0;
00108         const char** pControllerIDs = 0;
00109 
00110         ITKFilterCtrlrs::GetControllerList(iCount,pControllerIDs);
00111 
00112         for (int iPos = 0; iPos < iCount; iPos++)
00113         {
00114                 pCentral->RegisterController(ITKFilterCtrlrs::CreateController(pControllerIDs[iPos]));
00115         }
00116 
00117         if (pControllerIDs) delete pControllerIDs;
00118 };
00119 
00120 void ITKFilterCtrlrs::GetControllerList(int& iControllerCount, const char**& pControllerIDs)
00121 {
00122         typedef std::vector<const char*> ControllerListType;
00123         ControllerListType internalControllerList;
00124 
00125   internalControllerList.push_back(ControllerID::AbsoluteValueDifference2DImageFilterController);
00126   internalControllerList.push_back(ControllerID::AbsoluteValueDifference3DImageFilterController);
00127   internalControllerList.push_back(ControllerID::BinaryThreshold2DImageFilterController);
00128         internalControllerList.push_back(ControllerID::BinaryThreshold3DImageFilterController);
00129   internalControllerList.push_back(ControllerID::CheckerBoard2DImageFilterController);
00130   internalControllerList.push_back(ControllerID::CheckerBoard3DImageFilterController);
00131   internalControllerList.push_back(ControllerID::DanielssonDistanceMap2DImageFilterController);
00132         internalControllerList.push_back(ControllerID::DanielssonDistanceMap3DImageFilterController);
00133         internalControllerList.push_back(ControllerID::DiscreteGaussian2DImageFilterController);
00134         internalControllerList.push_back(ControllerID::DiscreteGaussian3DImageFilterController);
00135   internalControllerList.push_back(ControllerID::FastChamferDistance2DImageFilterController);
00136         internalControllerList.push_back(ControllerID::FastChamferDistance3DImageFilterController);
00137   internalControllerList.push_back(ControllerID::IsoContourDistanceImage2DFilterController);
00138         internalControllerList.push_back(ControllerID::IsoContourDistanceImage3DFilterController);
00139   internalControllerList.push_back(ControllerID::IterativeInverseDeformationField2DImageFilterController);
00140   internalControllerList.push_back(ControllerID::IterativeInverseDeformationField3DImageFilterController);
00141   internalControllerList.push_back(ControllerID::Mask2DImageFilterController);
00142   internalControllerList.push_back(ControllerID::Mask3DImageFilterController);
00143   internalControllerList.push_back(ControllerID::Mask2DTransformFieldFilterController);
00144   internalControllerList.push_back(ControllerID::Mask3DTransformFieldFilterController);
00145   internalControllerList.push_back(ControllerID::Normalize2DImageFilterController);
00146   internalControllerList.push_back(ControllerID::Normalize3DImageFilterController);
00147   internalControllerList.push_back(ControllerID::Orient3DImageFilterController);
00148   internalControllerList.push_back(ControllerID::Resample2DImageFilterController);
00149   internalControllerList.push_back(ControllerID::Resample3DImageFilterController);
00150   internalControllerList.push_back(ControllerID::Shrink2DImageFilterController);
00151   internalControllerList.push_back(ControllerID::Shrink3DImageFilterController);
00152   internalControllerList.push_back(ControllerID::Subtract2DImageFilterController);
00153   internalControllerList.push_back(ControllerID::Subtract3DImageFilterController);
00154   internalControllerList.push_back(ControllerID::Warp2DImageFilterController);
00155   internalControllerList.push_back(ControllerID::Warp3DImageFilterController);
00156   internalControllerList.push_back(ControllerID::WeightedAdd2DImageFilterController);
00157   internalControllerList.push_back(ControllerID::WeightedAdd3DImageFilterController);
00158 
00159         //create export array with controller names.
00160         iControllerCount = internalControllerList.size();
00161         pControllerIDs = new const char*[iControllerCount];
00162         for (unsigned int iPos = 0; iPos<iControllerCount; iPos++)
00163         {
00164                 pControllerIDs[iPos] = internalControllerList.at(iPos);
00165         }
00166 };
00167 
00168 GenericComponentController* ITKFilterCtrlrs::CreateController(const char* pControllerID)
00169 {
00170         std::string sControllerID(pControllerID);
00171 
00172         if (sControllerID == ControllerID::BinaryThreshold2DImageFilterController) return (GenericComponentController*) new BinaryThreshold2DImageFilterController;
00173         if (sControllerID == ControllerID::BinaryThreshold3DImageFilterController) return (GenericComponentController*) new BinaryThreshold3DImageFilterController;
00174         if (sControllerID == ControllerID::DanielssonDistanceMap2DImageFilterController) return (GenericComponentController*) new DanielssonDistanceMap2DImageFilterController;
00175         if (sControllerID == ControllerID::DanielssonDistanceMap3DImageFilterController) return (GenericComponentController*) new DanielssonDistanceMap3DImageFilterController;
00176         if (sControllerID == ControllerID::IsoContourDistanceImage2DFilterController) return (GenericComponentController*) new IsoContourDistanceImage2DFilterController;
00177         if (sControllerID == ControllerID::IsoContourDistanceImage3DFilterController) return (GenericComponentController*) new IsoContourDistanceImage3DFilterController;
00178         if (sControllerID == ControllerID::FastChamferDistance2DImageFilterController) return (GenericComponentController*) new FastChamferDistance2DImageFilterController;
00179         if (sControllerID == ControllerID::FastChamferDistance3DImageFilterController) return (GenericComponentController*) new FastChamferDistance3DImageFilterController;
00180   if (sControllerID == ControllerID::Warp2DImageFilterController) return (GenericComponentController*) new Warp2DImageFilterController;
00181         if (sControllerID == ControllerID::Warp3DImageFilterController) return (GenericComponentController*) new Warp3DImageFilterController;
00182   if (sControllerID == ControllerID::Normalize2DImageFilterController) return (GenericComponentController*) new Normalize2DImageFilterController;
00183         if (sControllerID == ControllerID::Normalize3DImageFilterController) return (GenericComponentController*) new Normalize3DImageFilterController;
00184   if (sControllerID == ControllerID::AbsoluteValueDifference2DImageFilterController) return (GenericComponentController*) new AbsoluteValueDifference2DImageFilterController;
00185         if (sControllerID == ControllerID::AbsoluteValueDifference3DImageFilterController) return (GenericComponentController*) new AbsoluteValueDifference3DImageFilterController;
00186   if (sControllerID == ControllerID::Subtract2DImageFilterController) return (GenericComponentController*) new Subtract2DImageFilterController;
00187         if (sControllerID == ControllerID::Subtract3DImageFilterController) return (GenericComponentController*) new Subtract3DImageFilterController;
00188   if (sControllerID == ControllerID::Shrink2DImageFilterController) return (GenericComponentController*) new Shrink2DImageFilterController;
00189         if (sControllerID == ControllerID::Shrink3DImageFilterController) return (GenericComponentController*) new Shrink3DImageFilterController;
00190   if (sControllerID == ControllerID::IterativeInverseDeformationField2DImageFilterController) return (GenericComponentController*) new IterativeInverseDeformationField2DImageFilterController;
00191         if (sControllerID == ControllerID::IterativeInverseDeformationField3DImageFilterController) return (GenericComponentController*) new IterativeInverseDeformationField3DImageFilterController;
00192         if (sControllerID == ControllerID::Orient3DImageFilterController) return (GenericComponentController*) new Orient3DImageFilterController;
00193         if (sControllerID == ControllerID::Mask2DImageFilterController) return (GenericComponentController*) new Mask2DImageFilterController;
00194         if (sControllerID == ControllerID::Mask3DImageFilterController) return (GenericComponentController*) new Mask3DImageFilterController;
00195         if (sControllerID == ControllerID::Mask2DTransformFieldFilterController) return (GenericComponentController*) new Mask2DTransformFieldFilterController;
00196         if (sControllerID == ControllerID::Mask3DTransformFieldFilterController) return (GenericComponentController*) new Mask3DTransformFieldFilterController;
00197         if (sControllerID == ControllerID::Resample2DImageFilterController) return (GenericComponentController*) new Resample2DImageFilterController;
00198         if (sControllerID == ControllerID::Resample3DImageFilterController) return (GenericComponentController*) new Resample3DImageFilterController;
00199         if (sControllerID == ControllerID::WeightedAdd2DImageFilterController) return (GenericComponentController*) new WeightedAdd2DImageFilterController;
00200         if (sControllerID == ControllerID::WeightedAdd3DImageFilterController) return (GenericComponentController*) new WeightedAdd3DImageFilterController;
00201   if (sControllerID == ControllerID::CheckerBoard2DImageFilterController) return (GenericComponentController*) new CheckerBoard2DImageFilterController;
00202   if (sControllerID == ControllerID::CheckerBoard3DImageFilterController) return (GenericComponentController*) new CheckerBoard3DImageFilterController;
00203   if (sControllerID == ControllerID::DiscreteGaussian2DImageFilterController) return (GenericComponentController*) new DiscreteGaussian2DImageFilterController;
00204   if (sControllerID == ControllerID::DiscreteGaussian3DImageFilterController) return (GenericComponentController*) new DiscreteGaussian3DImageFilterController;
00205 
00206         return NULL;
00207 };
00208 
00209 
00210 } //end of namespace free

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