Program: wxMaracas
Module: $RCSfile: wxMaracasSurfaceRenderingManager.cxx,v $
Language: C++
- Date: $Date: 2009/10/15 11:56:43 $
- Version: $Revision: 1.1 $
+ Date: $Date: 2010/01/21 13:54:15 $
+ Version: $Revision: 1.7 $
Copyright: (c) 2002, 2003
License:
=========================================================================*/
#include "wxMaracasSurfaceRenderingManager.h"
-
#include "wxMaracasSurfaceRenderingManagerDataMhd.h"
/**
**/
wxMaracasSurfaceRenderingManager::wxMaracasSurfaceRenderingManager(){
_renderer = NULL;
+ _interactor = NULL;
_idCount=0;
}
wxMaracasSurfaceRenderingManager::~wxMaracasSurfaceRenderingManager(){
void wxMaracasSurfaceRenderingManager::setRenderer(vtkRenderer* renderer){
_renderer = renderer;
}
+
+/**
+** Sets the renderer to manage the prop3D from the surface render
+**/
+void wxMaracasSurfaceRenderingManager::setInteractor(vtkRenderWindowInteractor* interactor){
+ _interactor = interactor;
+}
+
+
+/**
+** Gets the renderer to manage the prop3D from the surface render
+**/
+vtkRenderer* wxMaracasSurfaceRenderingManager::getRenderer(){
+ return _renderer;
+}
+
+/**
+** Updates volume
+**/
+void wxMaracasSurfaceRenderingManager::Update(int pid)throw(char*){
+ wxMaracasSurfaceRenderingManagerData* data = this->getViewData(pid);
+ ((wxMaracasSurfaceRenderingManagerDataMhd*)data)->UpdateSurface();
+ _renderer->Render();
+}
+
/**
** Adds a prop3D to the manager and returns the identifier
**/
-int wxMaracasSurfaceRenderingManager::addProp3D(vtkProp3D* prop3D, std::string dataname) throw(char*){
+int wxMaracasSurfaceRenderingManager::addProp3D(int idTP, vtkProp3D* prop3D, std::string dataname) throw(char*){
checkInvariant();
if(prop3D != NULL){
- wxMaracasSurfaceRenderingManagerData* data = new wxMaracasSurfaceRenderingManagerData(prop3D, dataname);
+ wxMaracasSurfaceRenderingManagerData* data = new wxMaracasSurfaceRenderingManagerData(prop3D, dataname, _interactor);
prop3Dvect.push_back(data);
_renderer->AddActor(data->getProp3D());
- data->setId(_idCount);
- _idCount++;
+ if(idTP == -1)
+ {
+ data->setId(_idCount);
+ _idCount++;
+ }
+ else
+ {
+ data->setId(idTP);
+ }
return data->getId();
}else{
throw "Check vtkProp3D file or input";
}
return -1;
}
-int wxMaracasSurfaceRenderingManager::addPropMHD(vtkImageData* imagedata, std::string dataname) throw(char*){
-
+int wxMaracasSurfaceRenderingManager::addPropMHD(int idTP, vtkImageData* imagedata, std::string dataname) throw(char*){
checkInvariant();
if(imagedata != NULL){
- wxMaracasSurfaceRenderingManagerData* data = new wxMaracasSurfaceRenderingManagerDataMhd(imagedata, dataname);
+ image = imagedata;
+ wxMaracasSurfaceRenderingManagerData* data = new wxMaracasSurfaceRenderingManagerDataMhd(imagedata, dataname, _interactor);
prop3Dvect.push_back(data);
_renderer->AddActor(data->getProp3D());
- data->setId(_idCount);
- _idCount++;
+ if(idTP == -1)
+ {
+ data->setId(_idCount);
+ _idCount++;
+ }
+ else
+ {
+ data->setId(idTP);
+ }
+ printf("wxMaracasSurfaceRenderingManager::addPropMHD->idSurfaceRender: %i\n", data->getId());
return data->getId();
}else{
throw "Check ImageData file or input";
}
return -1;
-
}
/**
** adds or removes an actor depending of the bool value
}
_renderer->Render();
}
+}
+/**
+** adds or removes the surface box depending of the bool value
+**/
+void wxMaracasSurfaceRenderingManager::addRemoveSurfaceBox(int propid, bool addremove) throw(char*){
+ checkInvariant();
+
+ wxMaracasSurfaceRenderingManagerData* data = this->getViewData(propid);
+ if(data->getProp3D()!=NULL){
+ data->addRemoveSurfaceBox(addremove);
+ /*if(addremove){
+ data->
+ _renderer->AddViewProp(data->getProp3D());
+ }else{
+ _renderer->RemoveViewProp(data->getProp3D());
+ }
+ _renderer->Render();*/
+ }
}
+
/**
** Changes the opacity in a prop3D
**/
vtkImageData* wxMaracasSurfaceRenderingManager::getImageData(std::string filename){
if(filename.compare("")!= 0){
-
vtkMetaImageReader* reader = vtkMetaImageReader::New();
reader->SetFileName(filename.c_str());
reader->Update();
return NULL;
}
+vtkImageData* wxMaracasSurfaceRenderingManager::getImageData(){
+ return image;
+}
+
void wxMaracasSurfaceRenderingManager::checkInvariant() throw(char*){
if(this->_renderer==NULL){
throw "Renderer not set";
delete data;
prop3Dvect.pop_back();
}else{
+
throw "id not found in the data";
- }
+ }
+}
+void wxMaracasSurfaceRenderingManager::Transform(vtkMatrix4x4* tmatrix){
-
-
}
-
+bool wxMaracasSurfaceRenderingManager::interactorSet(){
+ return _interactor? true:false;
+}
\ No newline at end of file