-ImageInfoUR Image3DDequeUR::Undo() {
- ImageInfoUR imgRet;
- if ((this->m_ImgUndoDeque.size() > 0) && (this->m_CurrentUndoPos != -1)) {
- //removing from memory
- if ((this->m_CurrentUndoPos + 1) < this->m_ImgUndoDeque.size()) {
- this->m_ImgUndoDeque[(m_CurrentUndoPos + 1)].RemoveImageFromMemory(
- this->m_GlobalPath);
- } //fi
- ImageInfoUR imgRet = this->m_ImgUndoDeque[m_CurrentUndoPos];
- this->m_CurrentUndoPos--;
- //adding to memory
- if (this->m_CurrentUndoPos != -1) {
- //Loading image
- std::string fullPath = this->m_GlobalPath
- + this->m_ImgUndoDeque[m_CurrentUndoPos].GetImageName();
- this->m_ImgUndoDeque[m_CurrentUndoPos].LoadImageMHDToMemory(
- this->m_GlobalPath);
- } //fi
- } //fi
- return (imgRet);
-}
-//virtual
-ImageInfoUR Image3DDequeUR::Redo() {
-
- ImageInfoUR imgRet;
- //managing undo deque
- if (this->m_ImgUndoDeque.size() > 0) {
- if ((m_CurrentUndoPos - 1) != -1) {
- this->m_ImgUndoDeque[m_CurrentUndoPos - 1].RemoveImageFromMemory(
- this->m_GlobalPath);
- } //fi
- this->m_CurrentUndoPos++; //ready to do undo
- if (this->m_CurrentUndoPos < ((int) this->m_ImgUndoDeque.size())) {
- this->m_ImgUndoDeque[m_CurrentUndoPos].LoadImageMHDToMemory(
- this->m_GlobalPath);
- } //fi
- //end of undo management
- } //fi
- //managing redo
- if ((this->m_ImgRedoDeque.size() > 0) && (this->m_CurrentRedoPos != -1)) {
- if ((this->m_CurrentRedoPos + 1) < this->m_ImgRedoDeque.size()) {
- this->m_ImgRedoDeque[(m_CurrentRedoPos + 1)].RemoveImageFromMemory(
- this->m_GlobalPath);
- } //fi
- imgRet = this->m_ImgRedoDeque[this->m_CurrentRedoPos];
- this->m_CurrentRedoPos--;
- if (this->m_CurrentRedoPos != -1) {
- this->m_ImgRedoDeque[m_CurrentRedoPos].LoadImageMHDToMemory(
- this->m_GlobalPath);
- } //fi
- //end of redo management
+void Image3DDequeUR::ManageMemory( )
+{
+ int imgURDequeSize = this->m_ImgURDeque.size( );
+ int i;
+ for( i = 0; i < imgURDequeSize; i++ )
+ {
+ if( this->m_ImgURDeque[ i ]->GetStatus( ) )
+ {
+ this->m_ImgURDeque[ i ]->RemoveImagesFromMemory( this->m_GlobalPath );
+ } // if Status
+ } // for i
+ //Adding CurrentUndoPos to memory
+ if( ( this->m_CurrentURPos != -1 ) && !( this->m_ImgURDeque[ this->m_CurrentURPos ]->GetStatus( ) ) )
+ {
+ this->m_ImgURDeque[ this->m_CurrentURPos ]->LoadImagesToMemory( this->m_GlobalPath );
+ }
+ int currentRedoPos = this->m_CurrentURPos + 1;
+ if( ( currentRedoPos < imgURDequeSize ) && !( this->m_ImgURDeque[ currentRedoPos ]->GetStatus( ) ) )
+ {
+ this->m_ImgURDeque[ currentRedoPos ]->LoadImagesToMemory( this->m_GlobalPath );