//virtual
void Image3DDequeUR::AddImageToUndoContainer(VTKImageDataPointerType img,
ImageMManagerType* imMManager) {
+ this->CleanUndoContainerFromIndex(this->m_CurrentUndoPos + 1);
//Adding image
ImageInfoUR* imageInfo = new ImageInfoUR();
imageInfo->SetImageName(
this->m_CurrentUndoPos = this->m_ImgUndoDeque.size() - 1;
//Managing memory
this->ManageMemory();
+ //clean redo container
+ this->CleanRedoContainer();
}
//virtual
ImageInfoUR* Image3DDequeUR::Undo() {
//virtual
void Image3DDequeUR::AddImageToRedoContainer(VTKImageDataPointerType img,
ImageMManagerType* imMManager) {
+ //Adding image
+ ImageInfoUR* imageInfo = new ImageInfoUR();
+ imageInfo->SetImageName(
+ this->GetImageName(this->m_ImgRedoDeque.size(), false));
+ imageInfo->SetImage(img);
+ imageInfo->SetImageMManager(imMManager);
+ //Adding to deque
+ this->m_ImgRedoDeque.push_back(imageInfo);
+ this->m_CurrentRedoPos = this->m_ImgRedoDeque.size() - 1;
+ //Managing memory
+ this->ManageMemory();
+
}
//virtual
ImageInfoUR* Image3DDequeUR::Redo() {
-
- ImageInfoUR* imgRet = new ImageInfoUR();
+ ImageInfoUR* imgRet = NULL;
+ if ((this->m_ImgRedoDeque.size() > 0) && (this->m_CurrentRedoPos != -1)) {
+ imgRet = this->m_ImgRedoDeque[m_CurrentRedoPos];
+ this->m_CurrentRedoPos--;
+ this->m_CurrentUndoPos++;
+ } //fi
return (imgRet);
}
//virtual
for (int i = 0; i < count; i++) {
this->m_ImgUndoDeque.pop_back();
} //rof
-
}
//virtual
-void Image3DDequeUR::CleanRedoContainerFromIndex(const int& index) {
+void Image3DDequeUR::CleanRedoContainer() {
+ for (unsigned int i = 0; i < this->m_ImgRedoDeque.size(); i++) {
+ this->m_ImgRedoDeque[i]->RemoveImageFromMemory(this->m_GlobalPath);
+ this->m_ImgRedoDeque[i]->RemoveImageFromDisk(this->m_GlobalPath);
+ }
}
//virtual
void Image3DDequeUR::CleanContainers() {
this->m_GlobalPath);
}
//The same for the redo queue
+ for (int i = 0; (unsigned int) i < this->m_ImgRedoDeque.size(); i++) {
+ if (this->m_ImgRedoDeque[i]->GetStatus()) {
+ this->m_ImgRedoDeque[i]->RemoveImageFromMemory(this->m_GlobalPath);
+ } //fi
+ } //rof
+ //Adding CurrentUndoPos to memory
+ if ((this->m_CurrentRedoPos != -1)
+ && !(this->m_ImgRedoDeque[this->m_CurrentRedoPos]->GetStatus())) {
+ this->m_ImgRedoDeque[this->m_CurrentRedoPos]->LoadImageMHDToMemory(
+ this->m_GlobalPath);
+ }
}
void Image3DDequeUR::SetGlobalPath(const StringType& globalPath) {
imgType = "redo";
}
StringType imageName = this->m_IDImages + imgType + ss.str();
- imageName.append(".mhd");
return (imageName);
}