1 #include "image3DDequeUR.h"
3 Image3DDequeUR::Image3DDequeUR() {
4 this->m_globalPath = "/tmp/";
5 this->m_currentUndoPos = -1;
8 Image3DDequeUR::~Image3DDequeUR() {
12 void Image3DDequeUR::addImageToContainer(ImageType* img,
13 const RegionS& region) {
15 if (this->m_ImgDeque.size() > 0) {
16 this->m_ImgDeque.back().removeImageFromMemory();
17 this->m_ImgDeque.back().setStatus(false);
19 //This is to take actual Date
24 timeinfo = localtime(&rawtime);
25 strftime(buffer, 80, "%a_%d_%b_%y_%H_%M_S", timeinfo);
26 std::string date(buffer);
28 std::string aux(buffer);
29 std::string imageName = "img_" + aux;
30 ImageInfoUR imageInfo;
31 imageInfo.setImageName(imageName);
32 imageInfo.setImage(img);
33 imageInfo.setRegion(region);
34 imageInfo.setStatus(true);
36 std::string fullpath = this->m_globalPath + imageName;
37 this->saveImageAsMHD(img, fullpath);
39 this->m_ImgDeque.push_back(imageInfo);
42 void Image3DDequeUR::loadImageToPMemory(const unsigned int& index) {
43 creaImageIO::ImageReader reader;
44 std::string fullPath = this->m_globalPath
45 + this->m_ImgDeque[index].getImageName();
46 this->m_ImgDeque[index].setImage(reader.ReadImage(fullPath));
49 void Image3DDequeUR::removeImageFromPMemory(const unsigned int& index) {
50 this->m_ImgDeque[index].removeImageFromMemory();
53 void Image3DDequeUR::saveImageAsMHD(ImageType* img,
54 const std::string& filename) {
55 vtkMetaImageWriter* w = vtkMetaImageWriter::New();
57 w->SetCompression(false);
58 w->SetFileDimensionality(img->GetDataDimension());
59 w->SetFileName(filename.c_str());
65 //ATENCIIIOOOON TIENE QUE HACER POP PARA PONER EL REDO
67 ImageInfoUR Image3DDequeUR::undo() {
68 if (this->m_currentUndoPos == -1) {
72 ImageInfoUR imgRet = m_ImgDeque[(unsigned int) m_currentUndoPos];
73 this->m_currentUndoPos--;
77 ImageInfoUR Image3DDequeUR::redo() {
78 if (this->m_currentUndoPos != (this->m_ImgDeque.size() - 1)) {
79 this->m_currentUndoPos++;
80 return (m_ImgDeque[(unsigned int) m_currentUndoPos]);
85 void Image3DDequeUR::setGlobalPath(const std::string& globalPath) {
86 this->m_globalPath = globalPath;
88 void Image3DDequeUR::removeFirstImageFromContainer() {
89 this->m_ImgDeque.pop_front();
91 void Image3DDequeUR::removeLastImageFromContainer() {
92 this->m_ImgDeque.pop_back();
94 void Image3DDequeUR::cleanContainer() {
95 this->m_ImgDeque.clear();
97 void Image3DDequeUR::cleanContainerFromIndex(const unsigned int& index) {
98 for (unsigned int i = this->m_ImgDeque.size(); i >= index; i--) {
99 this->m_ImgDeque.pop_back();
102 std::string Image3DDequeUR::getGlobalPath() {
103 return (this->m_globalPath);
105 void Image3DDequeUR::setUndoPointerOnTop() {
106 this->m_currentUndoPos = this->m_ImgDeque.size() - 1;