1 #include "image3DDequeUR.h"
3 Image3DDequeUR::Image3DDequeUR() {
4 this->m_globalPath = "/tmp/";
5 this->m_currentPos = -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);
40 this->m_currentPos = this->m_ImgDeque.size() - 1;
44 void Image3DDequeUR::loadImageToPMemory(const unsigned int& index) {
45 creaImageIO::ImageReader reader;
46 std::string fullPath = this->m_globalPath
47 + this->m_ImgDeque[index].getImageName();
48 this->m_ImgDeque[index].setImage(reader.ReadImage(fullPath));
51 void Image3DDequeUR::removeImageFromPMemory(const unsigned int& index) {
52 this->m_ImgDeque[index].removeImageFromMemory();
55 void Image3DDequeUR::saveImageAsMHD(ImageType* img,
56 const std::string& filename) {
57 vtkMetaImageWriter* w = vtkMetaImageWriter::New();
59 w->SetCompression(false);
60 w->SetFileDimensionality(img->GetDataDimension());
61 w->SetFileName(filename.c_str());
67 //ATENCIIIOOOON TIENE QUE HACER POP PARA PONER EL REDO
69 ImageType* Image3DDequeUR::undo() {
70 if (this->m_currentPos == -1) {
77 ImageType* Image3DDequeUR::redo() {
78 if (this->m_currentPos == ( this->m_ImgDeque.size() - 1 )) {
84 void Image3DDequeUR::setGlobalPath(const std::string& globalPath) {
85 this->m_globalPath = globalPath;
87 void Image3DDequeUR::removeFirstImageFromContainer() {
88 this->m_ImgDeque.pop_front();
90 void Image3DDequeUR::removeLastImageFromContainer() {
91 this->m_ImgDeque.pop_back();
93 void Image3DDequeUR::cleanContainer() {
94 this->m_ImgDeque.clear();
96 void Image3DDequeUR::cleanContainerFromIndex(const unsigned int& index) {
97 for (unsigned int i = this->m_ImgDeque.size(); i >= index; i--) {
98 this->m_ImgDeque.pop_back();
101 std::string Image3DDequeUR::getGlobalPath() {
102 return (this->m_globalPath);