]> Creatis software - creaMaracasVisu.git/blob - lib/maracasVisuLib/src/interface/wxWindows/widgets/manualPaint/imageUndoRedo.cxx
DFCH: Manual Paint Changes (Undo/Redo) 80% :) :)
[creaMaracasVisu.git] / lib / maracasVisuLib / src / interface / wxWindows / widgets / manualPaint / imageUndoRedo.cxx
1 /*
2  * imageUndoRedo.cxx
3  *
4  *  Created on: Sep 26, 2011
5  *      Author: caceres
6  */
7
8 #include "imageUndoRedo.h"
9
10 ImageUndoRedo::ImageUndoRedo() {
11         this->m_ImagesDeque = new IDequeType();
12 }
13 //virtual
14 ImageUndoRedo::~ImageUndoRedo() {
15
16 }
17 //virtual
18 void ImageUndoRedo::Undo() {
19         ImageInfoUR imageInfo = this->m_ImagesDeque->Undo();
20         this->SetRedoImage(imageInfo.GetRegion());
21         this->DrawUR(imageInfo);
22 }
23 //virtual
24 void ImageUndoRedo::Redo() {
25         ImageInfoUR imageInfo = this->m_ImagesDeque->Redo();
26         this->DrawUR(imageInfo);
27         imageInfo.RemoveImageFromMemory();
28 }
29 void ImageUndoRedo::SetImage(vtkImageData *image)
30 {
31         this->m_CurrentImage = image;
32         this->m_CurrentImage->Update();
33         this->m_OriginalImage = ImageType::New();
34         this->m_OriginalImage->ShallowCopy(m_CurrentImage);
35 }
36 //virtual
37 void ImageUndoRedo::SetUndoImage(const RegionSType& region) {
38         vtkExtractVOI* extract;
39         extract->New();
40         extract->SetVOI(region.minX, region.maxX, region.minY, region.maxY,
41                         region.minZ, region.maxZ);
42         extract->SetSampleRate(1, 1, 1);
43         extract->SetInput(this->m_OriginalImage);
44         this->m_ImagesDeque->AddImageToUndoContainer(extract->GetOutput(), region);
45         extract->Delete();
46 }
47 //virtual
48 void ImageUndoRedo::SetRedoImage(const RegionSType& region) {
49         vtkExtractVOI* extract;
50         extract->New();
51         extract->SetVOI(region.minX, region.maxX, region.minY, region.maxY,
52                         region.minZ, region.maxZ);
53         extract->SetSampleRate(1, 1, 1);
54         extract->SetInput(this->m_CurrentImage);
55         this->m_ImagesDeque->AddImageToUndoContainer(extract->GetOutput(), region);
56         extract->Delete();
57 }
58 void ImageUndoRedo::SetOriginalImage(ImageType* img) {
59         this->m_OriginalImage = img;
60 }
61 void ImageUndoRedo::SetCurrentImage(ImageType* img) {
62         this->m_CurrentImage = img;
63 }
64 //virtual
65 void ImageUndoRedo::DrawUR(ImageInfoUR imageInfo) {
66
67 }
68