Program: wxMaracas
Module: $RCSfile: CutModelManager.cxx,v $
Language: C++
- Date: $Date: 2009/11/25 16:35:37 $
- Version: $Revision: 1.4 $
+ Date: $Date: 2009/12/08 13:42:39 $
+ Version: $Revision: 1.5 $
Copyright: (c) 2002, 2003
License:
=========================================================================*/
#include "CutModelManager.h"
+#include "CutModelMainPanel.h"
/**
** Start of the manager class
CutModelManager::CutModelManager(std::string path){
_path = path;
_img = NULL;
- _copyimg = NULL;
+ _img2 = NULL;
_interactor = NULL;
_render = NULL;
_currentaction=0;
+
}
CutModelManager::~CutModelManager(){
std::string files = _path;
remove(files.c_str());
_vectordata.clear();
_img = NULL;
- _copyimg = NULL;
+ _img2 = NULL;
_interactor = NULL;
_render = NULL;
}
void CutModelManager::setImageData(vtkImageData* img){
- _img = img;
- if(_copyimg!=NULL){
- _copyimg->Delete();
+ int type = CutModelMainPanel::getInstance()->GetType();
+ if( type == 0)
+ {
+ _img = img;
+
+ if(_img2!=NULL){
+ _img2->Delete();
+ }
+ _img2 = vtkImageData::New();
+ _img2->SetExtent(_img->GetExtent());
+ _img2->SetSpacing(_img->GetSpacing());
+ _img2->AllocateScalars();
+
+ _img2->DeepCopy(_img);
}
- _copyimg = vtkImageData::New();
- _copyimg->SetExtent(_img->GetExtent());
- _copyimg->SetSpacing(_img->GetSpacing());
- _copyimg->AllocateScalars();
+ else
+ {
+ _img2 = img;
- _copyimg->DeepCopy(_img);
+ if(_img!=NULL){
+ _img->Delete();
+ }
+ _img = vtkImageData::New();
+ _img->SetExtent(_img2->GetExtent());
+ _img->SetSpacing(_img2->GetSpacing());
+ _img->AllocateScalars();
+ _img->DeepCopy(_img2);
+ }
}
void CutModelManager::setInteractor(vtkRenderWindowInteractor* interactor){
void CutModelManager::onAddCutModel(int id, vtkCommand* observer) throw( CutModelException){
checkInvariant();
+
CutModelData* data = new CutModelData(id,_interactor, observer, _img);
_vectordata.push_back(data);
if(_img==NULL){
throw CutModelException("The image is not set");
}
- if(_copyimg==NULL){
+ if(_img2==NULL){
throw CutModelException("The image is not set");
}
if(_interactor==NULL){
checkInvariant();
CutModelData* current = getCutModelData(id);
- current->ExecuteCut(range, isinside,_copyimg);
+ current->ExecuteCut(range, isinside,_img2);
/*
vtkImageData* CutModelManager::GetResultImage(){
checkInvariant();
- return _copyimg;
+ return _img2;
}
void CutModelManager::RefreshActor(int id){
currentmodel = getCutModelData(currentundo->getId());
- currentmodel->setTransform(transform, _copyimg);
+ currentmodel->setTransform(transform, _img2);
currentmodel->setCurrentShape(currentundo->getCurrentShape());
- currentmodel->ExecuteUnCut(currentundo->getIsInside(), _img, _copyimg);
+ currentmodel->ExecuteUnCut(currentundo->getIsInside(), _img, _img2);
}
//Every thing ok
//Redo the cut
vtkTransform* transform = currentundo->getTransformFromMatrixFile();
currentmodel = getCutModelData(currentundo->getId());
- currentmodel->setTransform(transform, _copyimg);
+ currentmodel->setTransform(transform, _img2);
currentmodel->setCurrentShape(currentundo->getCurrentShape());
- currentmodel->ExecuteCut(currentundo->getRange(), currentundo->getIsInside(), _copyimg);
+ currentmodel->ExecuteCut(currentundo->getRange(), currentundo->getIsInside(), _img2);
}
_currentaction++;