00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef __freClosedFormRegistrationControllerBase_h
00023 #define __freClosedFormRegistrationControllerBase_h
00024
00025 #include "freRegistrationProcessorControllerBase.h"
00026
00027 namespace FREE
00028 {
00029
00039 freControllerIDMacro(ClosedFormRegistrationControllerBase, "ClosedFormRegistrationBase");
00040 template <class TControlledRigidProcessor>
00041 class ClosedFormRegistrationControllerBase : public RegistrationProcessorControllerBase<TControlledRigidProcessor>
00042 {
00043 public:
00044 typedef TControlledRigidProcessor ComponentType;
00045 typedef RegistrationProcessorControllerBase<ComponentType> Superclass;
00046 typedef ClosedFormRegistrationControllerBase<ComponentType> Self;
00047
00048 typedef typename ComponentType::Pointer ComponentPointer;
00049 typedef typename Superclass::GenericComponentType GenericComponentType;
00050 typedef typename Superclass::GenericComponentPointer GenericComponentPointer;
00051 typedef typename Superclass::GenericMediaPointer GenericMediaPointer;
00052
00053 DeclareParameterMacro(PersistentFinalField);
00054
00055 DeclareMediaIDMacro(fixedPointSet);
00056 DeclareMediaIDMacro(movingPointSet);
00057 DeclareMediaIDMacro(fieldReference);
00058 DeclareMediaIDMacro(finalField);
00059 DeclareMediaIDMacro(finalTransform);
00060 DeclareMediaIDMacro(finalInverseTransform);
00061
00062 itkTypeMacro(ClosedFormRegistrationControllerBase, RegistrationProcessorControllerBase);
00063
00064 virtual ValidityTag::Pointer GetMediaValidityTagRequirement(const MediaID& mediaID, SessionComponentCache* pComponentCache) const;
00065
00066 protected:
00067 ClosedFormRegistrationControllerBase();
00068
00069 virtual void GenerateProfile(CtrlProfile::ControllerProfile& profile,
00070 const SessionComponentCache* pComponentCache,
00071 bool bRegardOldSetup) const;
00072
00073 virtual ComponentPointer BuildMainComponent(ComponentSetup* pComponentSetup,
00074 SessionComponentCache* pComponentCache) const;
00075
00076 virtual void ActualizeMainComponent(ComponentType* pMainComponent,
00077 SessionComponentCache* pComponentCache,
00078 SessionInfo* pSessionInfo,
00079 const unsigned int& iActLevel) const;
00080
00081 virtual GenericComponentType* GetSubComponentCasted(ComponentType* pMainComponent, const ComponentID& compID,
00082 SessionComponentCache* pMainComponentCache) const;
00083 virtual void SetSubComponentCasted(GenericComponentType* pSubComponent, ComponentType* pMainComponent,
00084 const ComponentID compID, SessionComponentCache* pMainComponentCache) const;
00085
00086 virtual GenericMediaPointer GetMediaCasted(const MediaID& mediaID,
00087 ComponentType* pComponent,
00088 SessionComponentCache* pComponentCache,
00089 SessionInfo* pSessionInfo) const;
00090
00091 virtual void SetMediaCasted(const MediaID& mediaID, GenericMediaType* pMedia, ComponentType* pComponent, SessionComponentCache* pComponentCache,
00092 SessionInfo* pSessionInfo) const;
00093
00094 virtual ValidityTag::Pointer GetValidityTagRequirement(const std::string& id, SessionComponentCache* pComponentCache) const;
00095
00096 void ResetSubComponents(SessionComponentCache* pComponentCache, SessionInfo* pSessionInfo) const;
00097
00098 void ResetMainComponent(SessionComponentCache* pComponentCache, SessionInfo* pSessionInfo) const;
00099 };
00100
00101 }
00102
00103 #ifndef ITK_MANUAL_INSTANTIATION
00104 #include "freClosedFormRegistrationControllerBase.txx"
00105 #endif
00106
00107 #endif