]> Creatis software - creaMaracasVisu.git/blobdiff - lib/maracasVisuLib/src/interface/wxWindows/widgets/imageUndoRedo/imageUndoRedo.cxx
#3332 creaContours Bug New - Manual Paint UnDo ReDo with vtk update (working)
[creaMaracasVisu.git] / lib / maracasVisuLib / src / interface / wxWindows / widgets / imageUndoRedo / imageUndoRedo.cxx
index 698ac4fceee910a9f1e3f8abb7e4961f0589368c..0054735ef663557ac7b0a5d08e49407a7522486c 100755 (executable)
@@ -48,12 +48,15 @@ ImageUndoRedo::~ImageUndoRedo( )
 //virtual
 void ImageUndoRedo::Undo( )
 {
+printf("EED ImageUndoRedo::Undo Start\n");
        ImageInfoUR* imageInfo = this->m_ImagesDeque->Undo( );
        if( imageInfo != NULL)
        {
                this->DrawUR( imageInfo, true );
                this->UpdateUndoImage( );
-       }
+       } //if  imageInfo
+printf("EED ImageUndoRedo::Undo End\n");
+
 }
 // ----------------------------------------------------------------------------------
 //virtual
@@ -75,11 +78,12 @@ void ImageUndoRedo::SetImage( VTKImageDataPointerType image )
 #if VTK_MAJOR_VERSION <= 5
        this->m_CurrentImage->Update( );
 #else
-       // ..
+       this->m_CurrentImage->Modified( );
 #endif
 
        this->UpdateUndoImage( );
 }
+
 // ----------------------------------------------------------------------------------
 //virtual
 void ImageUndoRedo::SetURImages( ImageMManagerType* imMManager )
@@ -96,6 +100,7 @@ void ImageUndoRedo::SetURImages( ImageMManagerType* imMManager )
                std::cerr << "INVALID REGION" << std::endl;
        }
 }
+
 // ----------------------------------------------------------------------------------
 void ImageUndoRedo::UpdateUndoImage( )
 {
@@ -103,7 +108,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 );
@@ -111,22 +116,26 @@ 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 )
 {
+printf("EED ImageUndoRedo::GetImageRegion Start\n");
        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 );
+
+printf("EED ImageUndoRedo::GetImageRegion region %d %d   %d %d   %d %d\n", 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( );
 
@@ -134,9 +143,10 @@ ImageUndoRedo::VTKImageDataPointerType ImageUndoRedo::GetImageRegion(
 #if VTK_MAJOR_VERSION <= 5
        imgResult->Update( );
 #else
-       // ..
+       imgResult->Modified( );
 #endif
 
+printf("EED ImageUndoRedo::GetImageRegion End\n");
        return ( imgResult );
 }
 // ----------------------------------------------------------------------------------
@@ -148,6 +158,7 @@ void ImageUndoRedo::SetCurrentImage( VTKImageDataPointerType img )
 //virtual
 void ImageUndoRedo::DrawUR( ImageInfoUR* imageInfo, const bool& undo )
 {
+printf("EED ImageUndoRedo::DrawUR Start\n");
        VTKImageDataPointerType img;
        if( undo )
        {
@@ -158,20 +169,25 @@ void ImageUndoRedo::DrawUR( ImageInfoUR* imageInfo, const bool& undo )
        RegionSType region = imageInfo->GetImageMManager( )->GetModifiedRegion( );
        if( img != NULL)
        {
-               int *dim = img->GetDimensions( );
-               int sizeXImageIn = dim[ 0 ];
-               size_t linesize = sizeXImageIn * sizeof(unsigned short);
+               int *dim                        = img->GetDimensions( );
+printf("EED ImageUndoRedo::DrawUR dim = %d %d %d\n", dim[0],dim[1],dim[2]);
+               int ext[6]; img->GetExtent( ext );
+printf("EED ImageUndoRedo::DrawUR ext = %d %d   %d %d    %d %d\n", ext[0],ext[1],ext[2],ext[3],ext[4],ext[5] );
+       
+               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( );
+printf("EED ImageUndoRedo::DrawUR End\n");
 }
 // ----------------------------------------------------------------------------------