+++ /dev/null
-#include <cpExtensions/IO/MementoState.h>
-
-
-#include <vtkMetaImageReader.h>
-#include <vtkMetaImageWriter.h>
-#include <future>
-
-
-
-
-
-// -------------------------------------------------------------------------
-cpExtensions::IO::MementoState::MementoState()
-{
- m_maxId = m_Id = 0;
- m_stateIt = m_stateReady.begin();
-};
-
-// -------------------------------------------------------------------------
-bool
-cpExtensions::IO::MementoState::SetToMemento(cpPlugins::Interface::Image* _img)
-{
- char base[] = "state";
- std::ostringstream oss;
- this->m_Id;
- oss << this->m_Id;
- std::string str = oss.str();
- auto complement = str.c_str();
-
- std::string fileName(base);
- fileName.append(complement);
- fileName.append(".mhd");
-
- std::string fileNameRaw(base);
- fileNameRaw.append(complement);
- fileNameRaw.append(".raw");
- //save(fileName, fileNameRaw, _img);
- m_stateReady.insert(m_stateReady.begin() + m_Id, false);
- std::async(std::launch::async, &MementoState::Save, this, fileName, fileNameRaw, _img);
-
- m_stateReady[m_Id] = true;
- m_Id++;
-
- if (m_Id > m_maxId)
- {
- m_maxId = m_Id;
- }
-
- return true;
-}
-
-
-// -------------------------------------------------------------------------
-vtkSmartPointer<vtkImageData>
-cpExtensions::IO::MementoState::GetFromMemento(long id)
-{
- if (id > m_maxId)
- {
- return nullptr;
- }
-
- char base[] = "state";
- std::ostringstream oss;
- oss << id;
- std::string str = oss.str();
- auto complement = str.c_str();
-
- std::string fileName(base);
- fileName.append(complement);
- fileName.append(".mhd");
- return Load(fileName);
- /*std::future<vtkSmartPointer<vtkImageData>> result(std::async(std::launch::async, &MementoState::Load, this, fileName));
- return result.get();*/
-}
-
-// -------------------------------------------------------------------------
-vtkSmartPointer<vtkImageData>
-cpExtensions::IO::MementoState::MementoUndo()
-{
- char base[] = "state";
- std::ostringstream oss;
- oss << --this->m_Id;
- std::string str = oss.str();
- auto complement = str.c_str();
-
- std::string fileName(base);
- fileName.append(complement);
- fileName.append(".mhd");
-
- if (m_stateReady.at(this->m_Id))
- {
- return Load(fileName);
- }
-
- return nullptr;
-}
-
-
-vtkSmartPointer<vtkImageData>
-cpExtensions::IO::MementoState::MementoRedo()
-{
- char base[] = "state";
- std::ostringstream oss;
- oss << ++this->m_Id;
- std::string str = oss.str();
- auto complement = str.c_str();
-
- std::string fileName(base);
- fileName.append(complement);
- fileName.append(".mhd");
-
- if (m_stateReady.at(this->m_Id) &&
- this->m_Id <= this->m_maxId)
- {
- return Load(fileName);
- }
- return nullptr;
-}
-
-// -------------------------------------------------------------------------
-void
-cpExtensions::IO::MementoState::
-Save(const std::string& filename, const std::string& filenameRaw, cpPlugins::Interface::Image* img) {
-
- vtkSmartPointer<vtkMetaImageWriter> writer =
- vtkSmartPointer<vtkMetaImageWriter>::New();
- writer->SetInputData(img->GetVTK< vtkImageData >());
- writer->SetFileName(filename.c_str());
- writer->SetRAWFileName(filenameRaw.c_str());
- writer->Write();
-}
-
-// -------------------------------------------------------------------------
-vtkSmartPointer<vtkImageData>
-cpExtensions::IO::MementoState::Load(const std::string& filename) {
-
- vtkSmartPointer<vtkMetaImageReader> reader =
- vtkSmartPointer<vtkMetaImageReader>::New();
- reader->SetFileName(filename.c_str());
-
- reader->Update();
- return reader->GetOutput();
-
-}
-
-// eof - $RCSfile$