Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033 #include "cmtkXformListEntry.h"
00034
00035 cmtk::XformListEntry::XformListEntry
00036 ( const Xform::SmartConstPtr& xform, const bool inverse, const Types::Coordinate globalScale )
00037 : m_Xform( xform ),
00038 InverseAffineXform( NULL ),
00039 m_WarpXform( NULL ),
00040 Inverse( inverse ),
00041 GlobalScale( globalScale )
00042 {
00043 if ( this->m_Xform )
00044 {
00045 this->m_WarpXform = dynamic_cast<const WarpXform*>( this->m_Xform.GetConstPtr() );
00046
00047 AffineXform::SmartConstPtr affineXform( AffineXform::SmartConstPtr::DynamicCastFrom( this->m_Xform ) );
00048 if ( affineXform )
00049 {
00050 this->InverseAffineXform = affineXform->MakeInverse();
00051 }
00052 }
00053 }
00054
00055 cmtk::XformListEntry::~XformListEntry()
00056 {
00057
00058
00059 delete this->InverseAffineXform;
00060 }
00061
00062 cmtk::XformListEntry::SmartPtr
00063 cmtk::XformListEntry::CopyAsAffine() const
00064 {
00065 if ( this->m_WarpXform )
00066 {
00067 return Self::SmartPtr( new Self( this->m_WarpXform->m_InitialAffineXform, this->Inverse, this->GlobalScale ) );
00068 }
00069 else
00070 {
00071 return Self::SmartPtr( new Self( this->m_Xform, this->Inverse, this->GlobalScale ) );
00072 }
00073 }