4 * Created on: Sep 26, 2011
8 #include "imageUndoRedo.h"
10 ImageUndoRedo::ImageUndoRedo() {
11 this->m_ImagesDeque = new IDequeType();
14 ImageUndoRedo::~ImageUndoRedo() {
18 void ImageUndoRedo::Undo() {
19 ImageInfoUR imageInfo = this->m_ImagesDeque->Undo();
20 this->SetRedoImage(imageInfo.GetRegion());
21 this->DrawUR(imageInfo);
24 void ImageUndoRedo::Redo() {
25 ImageInfoUR imageInfo = this->m_ImagesDeque->Redo();
26 this->DrawUR(imageInfo);
28 void ImageUndoRedo::SetImage(vtkImageData *image) {
29 this->m_CurrentImage = image;
30 this->m_CurrentImage->Update();
31 this->m_OriginalImage = ImageType::New();
32 this->m_OriginalImage->ShallowCopy(m_CurrentImage);
35 void ImageUndoRedo::SetUndoImage(const RegionSType& region) {
36 vtkSmartPointer<vtkExtractVOI> extract =
37 vtkSmartPointer<vtkExtractVOI>::New();
38 extract->SetVOI(region.minX, region.maxX, region.minY, region.maxY,
39 region.minZ, region.maxZ);
40 extract->SetSampleRate(1, 1, 1);
41 extract->SetInput(this->m_OriginalImage);
42 this->m_ImagesDeque->AddImageToUndoContainer(extract->GetOutput(), region);
46 void ImageUndoRedo::SetRedoImage(const RegionSType& region) {
47 vtkSmartPointer<vtkExtractVOI> extract =
48 vtkSmartPointer<vtkExtractVOI>::New();
49 extract->SetVOI(region.minX, region.maxX, region.minY, region.maxY,
50 region.minZ, region.maxZ);
51 extract->SetSampleRate(1, 1, 1);
52 extract->SetInput(this->m_CurrentImage);
53 this->m_ImagesDeque->AddImageToUndoContainer(extract->GetOutput(), region);
56 void ImageUndoRedo::SetOriginalImage(ImageType* img) {
57 this->m_OriginalImage = img;
59 void ImageUndoRedo::SetCurrentImage(ImageType* img) {
60 this->m_CurrentImage = img;
63 void ImageUndoRedo::DrawUR(ImageInfoUR imageInfo) {