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 #include "mitkApplyDiffImageOperation.h"
00020
00021 #include <itkCommand.h>
00022
00023 mitk::ApplyDiffImageOperation::ApplyDiffImageOperation(OperationType operationType, Image* image, Image* diffImage, unsigned int timeStep, unsigned int sliceDimension, unsigned int sliceIndex)
00024 : Operation(operationType),
00025 m_Image( image ),
00026 m_SliceIndex( sliceIndex ),
00027 m_SliceDimension( sliceDimension ),
00028 m_TimeStep( timeStep ),
00029 m_Factor( 1.0 ),
00030 m_ImageStillValid( false ),
00031 m_DeleteTag( 0 )
00032 {
00033 if (image && diffImage)
00034 {
00035
00036 m_ImageStillValid = true;
00037
00038 itk::SimpleMemberCommand< ApplyDiffImageOperation >::Pointer command = itk::SimpleMemberCommand< ApplyDiffImageOperation >::New();
00039 command->SetCallbackFunction( this, &ApplyDiffImageOperation::OnImageDeleted );
00040 m_DeleteTag = image->AddObserver( itk::DeleteEvent(), command );
00041
00042
00043 zlibContainer = CompressedImageContainer::New();
00044 zlibContainer->SetImage( diffImage );
00045 }
00046 }
00047
00048 mitk::ApplyDiffImageOperation::~ApplyDiffImageOperation()
00049 {
00050 if (m_ImageStillValid)
00051 {
00052 m_Image->RemoveObserver( m_DeleteTag );
00053 }
00054 }
00055
00056 void mitk::ApplyDiffImageOperation::OnImageDeleted()
00057 {
00058 m_ImageStillValid = false;
00059 }
00060
00061 mitk::Image::ConstPointer mitk::ApplyDiffImageOperation::GetDiffImage()
00062 {
00063
00064 Image::ConstPointer image = zlibContainer->GetImage().GetPointer();
00065
00066 return image;
00067 }
00068