]> Creatis software - creaMaracasVisu.git/blob - lib/maracasVisuLib/src/interface/wxWindows/widgets/imageUndoRedo/imageInfoUR.cxx
DFCH: imageUndoRedo + Manual Paint: It doesn't works :s :s
[creaMaracasVisu.git] / lib / maracasVisuLib / src / interface / wxWindows / widgets / imageUndoRedo / imageInfoUR.cxx
1 /*
2  * ImageInfo.cxx
3  *
4  *  Created on: Sep 22, 2011
5  *      Author: caceres
6  */
7 #include "imageInfoUR.h"
8
9 ImageInfoUR::ImageInfoUR() {
10         this->m_OnMemory = false;
11         this->m_OnDisk = false;
12 }
13
14 ImageInfoUR::~ImageInfoUR() {
15 }
16
17 void ImageInfoUR::SetImageName(const StringType &imgName) {
18         this->m_ImageName = imgName;
19 }
20
21 void ImageInfoUR::SetImageMManager(ImageMManagerType* imMManager) {
22         this->m_ImageMManager = imMManager;
23 }
24
25 void ImageInfoUR::SetStatus(const bool& onMemory) {
26         this->m_OnMemory = onMemory;
27 }
28
29 ImageInfoUR::StringType ImageInfoUR::GetImageName() {
30         return (this->m_ImageName);
31 }
32
33 ImageInfoUR::VTKImageDataPointerType ImageInfoUR::GetUndoImage() {
34         return (this->m_UndoImage);
35 }
36
37 ImageInfoUR::VTKImageDataPointerType ImageInfoUR::GetRedoImage() {
38         return (this->m_RedoImage);
39 }
40
41 ImageInfoUR::ImageMManagerType* ImageInfoUR::GetImageMManager() {
42         return (this->m_ImageMManager);
43 }
44
45 bool ImageInfoUR::GetStatus() {
46         return (this->m_OnMemory);
47 }
48
49 void ImageInfoUR::SetImages(VTKImageDataPointerType imgUndo,
50                 VTKImageDataPointerType imgRedo) {
51         this->m_UndoImage = imgUndo;
52         this->m_RedoImage = imgRedo;
53         this->SetStatus(true);
54 }
55
56 void ImageInfoUR::LoadImagesToMemory(const StringType& gPath) {
57         //setting paths
58         StringType filename = gPath + this->m_ImageName;
59         StringType undoImagePath = filename + "_Undo.mhd";
60         StringType redoImagePath = filename + "_Redo.mhd";
61         //Loading Undo Image
62         VTKMetaImageReaderPointerType readerUndo =
63                         VTKMetaImageReaderPointerType::New();
64         readerUndo->SetFileName(undoImagePath.c_str());
65         this->m_UndoImage = readerUndo->GetOutput();
66         this->m_UndoImage->Update();
67         //Loading Redo Image
68         VTKMetaImageReaderPointerType readerRedo =
69                         VTKMetaImageReaderPointerType::New();
70         readerRedo->SetFileName(redoImagePath.c_str());
71         this->m_RedoImage = readerRedo->GetOutput();
72         this->m_RedoImage->Update();
73         //Updating status
74         this->m_OnMemory = true;
75 }
76
77 void ImageInfoUR::RemoveImagesFromMemory(const StringType& gPath) {
78         if (!this->m_OnDisk) {
79                 this->SaveImagesOnDisk(gPath);
80         }
81         this->m_UndoImage = NULL;
82         this->m_RedoImage = NULL;
83         this->SetStatus(false);
84 }
85
86 void ImageInfoUR::SaveImagesOnDisk(const StringType& gPath) {
87         this->m_OnDisk = true;
88         //managing temporary files
89 //EED-11/11/2011        mkstemp((char*) filename.c_str());
90         StringType filename = gPath + this->m_ImageName;
91         StringType undoImagePath = filename + "_Undo.mhd";
92         StringType redoImagePath = filename + "_Redo.mhd";
93         this->SaveImageAsMHD(undoImagePath, this->m_UndoImage);
94         this->SaveImageAsMHD(redoImagePath, this->m_RedoImage);
95 }
96
97 void ImageInfoUR::RemoveImagesFromDisk(const StringType& gPath) {
98         StringType filename = gPath + this->m_ImageName;
99         StringType undoImagePathMHD = filename + "_Undo.mhd";
100         StringType redoImagePathMHD = filename + "_Redo.mhd";
101         StringType undoImagePathRAW = filename + "_Undo.raw";
102         StringType redoImagePathRAW = filename + "_Redo.raw";
103         //Unlink the files!!
104 }
105
106 void ImageInfoUR::SaveImageAsMHD(const StringType& filename,
107                 VTKImageDataPointerType image) {
108         VTKMetaImageWriterPointerType w = VTKMetaImageWriterPointerType::New();
109         w->SetInput(image);
110         w->SetCompression(false);
111         w->SetFileDimensionality(image->GetDataDimension());
112         w->SetFileName(filename.c_str());
113         w->Write();
114 }