X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FmaracasVisuLib%2Fsrc%2Finterface%2FwxWindows%2Fwidgets%2FimageUndoRedo%2FimageUndoRedo.cxx;h=cba183cac36e253477109ac70bcdc0734dc50be8;hb=15112ae15da4222831b0e8e7c9be87daf9e99a1c;hp=4e981c4e89e18d2bb35d4e7efd1be201636324db;hpb=25e3adf442d6a8d357d52410267445c54426c525;p=creaMaracasVisu.git diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/imageUndoRedo/imageUndoRedo.cxx b/lib/maracasVisuLib/src/interface/wxWindows/widgets/imageUndoRedo/imageUndoRedo.cxx index 4e981c4..cba183c 100755 --- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/imageUndoRedo/imageUndoRedo.cxx +++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/imageUndoRedo/imageUndoRedo.cxx @@ -34,16 +34,17 @@ #include "imageUndoRedo.h" // ---------------------------------------------------------------------------------- -ImageUndoRedo::ImageUndoRedo( ) +ImageUndoRedo::ImageUndoRedo() { this->m_ImagesDeque = new IDequeType( ); } + // ---------------------------------------------------------------------------------- //virtual ImageUndoRedo::~ImageUndoRedo( ) { - } + // ---------------------------------------------------------------------------------- //virtual void ImageUndoRedo::Undo( ) @@ -53,7 +54,7 @@ void ImageUndoRedo::Undo( ) { this->DrawUR( imageInfo, true ); this->UpdateUndoImage( ); - } + } //if imageInfo } // ---------------------------------------------------------------------------------- //virtual @@ -70,16 +71,16 @@ void ImageUndoRedo::Redo( ) void ImageUndoRedo::SetImage( VTKImageDataPointerType image ) { this->m_CurrentImage = image; - //EED 2017-01-01 Migration VTK7 #if VTK_MAJOR_VERSION <= 5 this->m_CurrentImage->Update( ); #else - // .. + this->m_CurrentImage->Modified( ); #endif this->UpdateUndoImage( ); } + // ---------------------------------------------------------------------------------- //virtual void ImageUndoRedo::SetURImages( ImageMManagerType* imMManager ) @@ -88,19 +89,15 @@ void ImageUndoRedo::SetURImages( ImageMManagerType* imMManager ) if( newImageManager->ValidateRegion( ) ) { RegionSType region = newImageManager->GetModifiedRegion( ); - VTKImageDataPointerType imgUndo = this->GetImageRegion( region, - this->m_UndoImage ); - VTKImageDataPointerType imgRedo = this->GetImageRegion( region, - this->m_CurrentImage ); - this->m_ImagesDeque->AddImagesToURContainer( imgUndo, imgRedo, - newImageManager ); + VTKImageDataPointerType imgUndo = this->GetImageRegion( region,this->m_UndoImage ); + VTKImageDataPointerType imgRedo = this->GetImageRegion( region,this->m_CurrentImage ); + this->m_ImagesDeque->AddImagesToURContainer( imgUndo, imgRedo,newImageManager ); this->UpdateUndoImage( ); - } - else - { + } else { std::cerr << "INVALID REGION" << std::endl; } } + // ---------------------------------------------------------------------------------- void ImageUndoRedo::UpdateUndoImage( ) { @@ -108,7 +105,7 @@ void ImageUndoRedo::UpdateUndoImage( ) #if VTK_MAJOR_VERSION <= 5 this->m_CurrentImage->Update( ); #else - // ... + this->m_CurrentImage->Modified( ); #endif this->m_UndoImage = VTKImageDataPointerType::New( ); this->m_UndoImage->DeepCopy( m_CurrentImage ); @@ -116,32 +113,30 @@ void ImageUndoRedo::UpdateUndoImage( ) #if VTK_MAJOR_VERSION <= 5 this->m_UndoImage->Update( ); #else - // .. + this->m_UndoImage->Modified( ); #endif } + // ---------------------------------------------------------------------------------- -ImageUndoRedo::VTKImageDataPointerType ImageUndoRedo::GetImageRegion( - const RegionSType& region, VTKImageDataPointerType img ) +ImageUndoRedo::VTKImageDataPointerType ImageUndoRedo::GetImageRegion( const RegionSType& region, VTKImageDataPointerType img ) { VTKExtractVOIPointerType extract = VTKExtractVOIPointerType::New( ); - extract->SetVOI( region.minX, region.maxX, region.minY, region.maxY, - region.minZ, region.maxZ ); + extract->SetVOI( region.minX, region.maxX, region.minY, region.maxY,region.minZ, region.maxZ ); extract->SetSampleRate( 1, 1, 1 ); //EED 2017-01-01 Migration VTK7 #if VTK_MAJOR_VERSION <= 5 extract->SetInput( img ); #else extract->SetInputData( img ); + extract->Update(); #endif VTKImageDataPointerType imgResult = extract->GetOutput( ); - //EED 2017-01-01 Migration VTK7 #if VTK_MAJOR_VERSION <= 5 imgResult->Update( ); #else - // .. + imgResult->Modified( ); #endif - return ( imgResult ); } // ---------------------------------------------------------------------------------- @@ -157,29 +152,46 @@ void ImageUndoRedo::DrawUR( ImageInfoUR* imageInfo, const bool& undo ) if( undo ) { img = imageInfo->GetUndoImage( ); - } //fi - else - { + } else { img = imageInfo->GetRedoImage( ); } //else - RegionSType region = imageInfo->GetImageMManager( )->GetModifiedRegion( ); + RegionSType region = imageInfo->GetImageMManager()->GetModifiedRegion(); + m_RestorBaseInitialPointX = imageInfo->GetImageMManager()->GetBaseInitialPointX(); + m_RestorBaseInitialPointY = imageInfo->GetImageMManager()->GetBaseInitialPointY(); + m_RestorBaseInitialPointZ = imageInfo->GetImageMManager()->GetBaseInitialPointZ(); + if( img != NULL) { - int *dim = img->GetDimensions( ); - int sizeXImageIn = dim[ 0 ]; - size_t linesize = sizeXImageIn * sizeof(unsigned short); + int *dim = img->GetDimensions( ); + int sizeXImageIn = dim[ 0 ]; + size_t linesize = sizeXImageIn * sizeof(unsigned short); for( int j = region.minY, y = 0; j <= region.maxY; j++, y++ ) { for( int k = region.minZ, z = 0; k <= region.maxZ; k++, z++ ) { - void* ptrsrc = img->GetScalarPointer( 0, y, z ); - void* ptrdest = this->m_CurrentImage->GetScalarPointer( - region.minX, j, k ); + void* ptrsrc = img->GetScalarPointer( 0, y, z ); + void* ptrdest = this->m_CurrentImage->GetScalarPointer( region.minX, j, k ); memcpy( ptrdest, ptrsrc, linesize ); - } - } + } // for k + } // for j this->m_CurrentImage->Modified( ); - } + } // if img this->m_ImagesDeque->ManageMemory( ); } // ---------------------------------------------------------------------------------- + +int ImageUndoRedo::GetRestorBaseInitialPointX() +{ + return m_RestorBaseInitialPointX; +} + +int ImageUndoRedo::GetRestorBaseInitialPointY() +{ + return m_RestorBaseInitialPointY; +} + +int ImageUndoRedo::GetRestorBaseInitialPointZ() +{ + return m_RestorBaseInitialPointZ; +} +