1 /*=========================================================================
4 Module: $RCSfile: wxMaracasMultipleVolumeRendererManager.cxx,v $
6 Date: $Date: 2009/07/08 14:22:14 $
7 Version: $Revision: 1.1 $
9 Copyright: (c) 2002, 2003
12 This software is distributed WITHOUT ANY WARRANTY; without even
13 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
14 PURPOSE. See the above copyright notice for more information.
16 =========================================================================*/
17 #include "wxMaracasMultipleVolumeRendererManager.h"
19 #include <vtkMetaImageReader.h>
21 ** Start of the manager class
23 wxMaracasMultipleVolumeRendererManager::wxMaracasMultipleVolumeRendererManager(){
27 wxMaracasMultipleVolumeRendererManager::~wxMaracasMultipleVolumeRendererManager(){
31 ** Sets the renderer to manage the prop3D from the view
33 void wxMaracasMultipleVolumeRendererManager::setRenderer(vtkRenderer* renderer){
37 ** Adds a prop3D to the manager and returns the identifier
39 int wxMaracasMultipleVolumeRendererManager::addVolume(vtkImageData* vol, std::string dataname) throw(char*){
42 wxMaracasMultipleVolumeRendererManagerData* data = new wxMaracasMultipleVolumeRendererManagerData(vol, dataname);
43 prop3Dvect.push_back(data);
44 _renderer->AddActor(data->getProp3D());
45 data->setId(_idCount);
49 throw "Check mhd imagefile file or input";
54 ** adds or removes an actor depending of the bool value
57 void wxMaracasMultipleVolumeRendererManager::addRemoveActor(int propid, bool addremove) throw(char*){
60 wxMaracasMultipleVolumeRendererManagerData* data = this->getViewData(propid);
61 if(data->getProp3D()!=NULL){
63 _renderer->AddViewProp(data->getProp3D());
65 _renderer->RemoveViewProp(data->getProp3D());
72 ** Changes the opacity in a prop3D
74 void wxMaracasMultipleVolumeRendererManager::setVolumeOpacity(int propid, std::vector<double> greylevel,std::vector<double> value) throw(char*){
77 this->getViewData(propid)->setVolumeOpacity(greylevel, value);
86 void wxMaracasMultipleVolumeRendererManager::setVolumeColor(int volid, std::vector<double> greylevel,
87 std::vector<double> red,
88 std::vector<double> green,
89 std::vector<double> blue)
93 this->getViewData(volid)->setVolumeColor(greylevel, red, green, blue);
98 vtkImageData* wxMaracasMultipleVolumeRendererManager::getImageData(std::string filename){
99 if(filename.compare("")!= 0){
102 vtkMetaImageReader* reader = vtkMetaImageReader::New();
103 reader->SetFileName(filename.c_str());
105 vtkImageData* img = reader->GetOutput();
112 void wxMaracasMultipleVolumeRendererManager::checkInvariant() throw(char*){
113 if(this->_renderer==NULL){
114 throw "Renderer not set";
118 wxMaracasMultipleVolumeRendererManagerData* wxMaracasMultipleVolumeRendererManager::getViewData(int id) throw(char*){
120 for(i = 0; i < (int)(prop3Dvect.size());i++){
121 if(prop3Dvect[i]->getId() == id){
122 return prop3Dvect[i];
125 throw "id not found in the data";
130 void wxMaracasMultipleVolumeRendererManager::deleteActor(int propid) throw (char *){
133 this->addRemoveActor(propid, false);
137 for(i = 0; i < (int)(prop3Dvect.size())&&!exit;i++){
138 if(prop3Dvect[i]->getId() == propid){
144 wxMaracasMultipleVolumeRendererManagerData* data = prop3Dvect[n];
146 for(j = i; j < (int)(prop3Dvect.size())-1;j++){
147 prop3Dvect[j] = prop3Dvect[j+1];
150 prop3Dvect.pop_back();
152 throw "id not found in the data";