2 #include "wxMaracasSurfaceRenderingManagerData.h"
4 #include <vtkSmartPointer.h>
5 #include "vtkSTLWriter.h"
6 #include "vtkPLYWriter.h"
7 #include "vtkPolyDataWriter.h"
8 #include "surfacerenderingimagestencilexport.h"
9 #include "vtkMetaImageWriter.h"
10 #include "vtkPolyDataReader.h"
11 #include "vtkPLYReader.h"
12 #include "vtkSmartPointer.h"
14 /********************************************************************************************
15 ** Start of data viewmanagerData
16 *********************************************************************************************/
18 wxMaracasSurfaceRenderingManagerData::wxMaracasSurfaceRenderingManagerData(vtkProp3D* prop3Dvect, std::string dataname, vtkRenderWindowInteractor* interactor){
25 initializeBoxWidget(interactor);
30 /*_boxWidgetS1->GetPlanes( this->GetVtkClipping3DDataViewer()->GetTissuePlanes(0) );
31 _boxWidgetS1->GetPlanes( this->GetVtkClipping3DDataViewer()->GetTissuePlanes(1) );
32 _boxWidgetS1->GetPlanes( this->GetVtkClipping3DDataViewer()->GetTissuePlanes(2) );
33 _boxWidgetS1->GetPlanes( this->GetVtkClipping3DDataViewer()->GetTissuePlanes(3) );*/
36 wxMaracasSurfaceRenderingManagerData::wxMaracasSurfaceRenderingManagerData(string filename, vtkRenderWindowInteractor* interactor){
38 _prop3D = getProp3D(filename);
42 initializeBoxWidget(interactor);
45 vtkProp3D* wxMaracasSurfaceRenderingManagerData::getProp3D(std::string filename){
47 if(filename.compare("")!= 0){
49 vtkSmartPointer<vtkPolyData> polydata = vtkSmartPointer<vtkPolyData>::New();
50 std::string ext = filename.substr(filename.find_last_of("."), 4);
51 if(ext.compare(STL)==0){
52 vtkSmartPointer<vtkSTLReader> STLReader=vtkSmartPointer<vtkSTLReader>::New();
53 STLReader->SetFileName(filename.c_str());
55 polydata->DeepCopy(STLReader->GetOutput());
57 }else if(ext.compare(PLY)==0){
58 vtkSmartPointer<vtkPLYReader> plyreader =vtkSmartPointer<vtkPLYReader>::New();
59 plyreader->SetFileName(filename.c_str());
61 polydata->DeepCopy(plyreader->GetOutput());
62 }else if(ext.compare(VTK)==0){
63 vtkSmartPointer<vtkPolyDataReader> polyreader =vtkSmartPointer<vtkPolyDataReader>::New();
64 polyreader->SetFileName(filename.c_str());
66 polydata->DeepCopy(polyreader->GetOutput());
69 _dataMapper = vtkPolyDataMapper::New();
70 _dataMapper->SetInput(polydata);
72 vtkActor* dataActor = vtkActor::New();
73 dataActor->SetMapper(_dataMapper);
74 dataActor->GetProperty()->SetOpacity(1);
80 wxMaracasSurfaceRenderingManagerData::~wxMaracasSurfaceRenderingManagerData(){
83 if (_boxWidgetS1!=NULL) { _boxWidgetS1 -> Delete(); }
86 void wxMaracasSurfaceRenderingManagerData::initializeBoxWidget(vtkRenderWindowInteractor* interactor){
87 if(interactor!= NULL){
93 ** Adds a prop3D to the world of the application
95 void wxMaracasSurfaceRenderingManagerData::setProp3D(vtkProp3D* prop3D){
99 void wxMaracasSurfaceRenderingManagerData::addRemoveSurfaceBox(bool visible)
110 ** Changes the opacity in a prop3D
112 void wxMaracasSurfaceRenderingManagerData::changeOpacity(int value){
113 std::cout<<"chage op"<<value<<std::endl;
114 vtkActor* actor = (vtkActor*)this->_prop3D;
115 actor->GetProperty()->SetOpacity((double)value/100.0);
120 void wxMaracasSurfaceRenderingManagerData::changeColor(double red, double green, double blue){
121 std::cout<<"chage col"<<red<<green<<blue<<std::endl;
122 vtkActor* actor = (vtkActor*)this->_prop3D;
123 actor->GetProperty()->SetColor(red,green,blue);
126 ** Check if the variables are setted correctly
128 void wxMaracasSurfaceRenderingManagerData::checkInvariant(){
134 vtkProp3D* wxMaracasSurfaceRenderingManagerData::getProp3D(){
135 return this->_prop3D;
138 ** return the id from the daat
140 int wxMaracasSurfaceRenderingManagerData::getId(){
146 void wxMaracasSurfaceRenderingManagerData::setId(int propid){
153 std::string wxMaracasSurfaceRenderingManagerData::getDataname(){
159 void wxMaracasSurfaceRenderingManagerData::setDataname(std::string dataname){
160 _dataname = dataname;
165 void wxMaracasSurfaceRenderingManagerData::saveProp3DSTL(const char* filename){
168 std::string filena(filename);
169 std::string ext = filena.substr(filena.find_last_of("."), 4);
170 if(ext.compare(PLY) == 0){
171 vtkSmartPointer<vtkPLYWriter> plywriter =
172 vtkSmartPointer<vtkPLYWriter>::New();
173 plywriter->SetFileName(filename);
174 plywriter->SetInput(_dataMapper->GetInput());
176 }else if(ext.compare(STL) == 0){
177 vtkSmartPointer<vtkSTLWriter> stlWriter =
178 vtkSmartPointer<vtkSTLWriter>::New();
179 stlWriter->SetFileName(filename);
180 stlWriter->SetInput(_dataMapper->GetInput());
181 stlWriter->SetFileTypeToBinary();
183 }else if(ext.compare(VTK) == 0){
184 vtkSmartPointer<vtkPolyDataWriter> polydataWriter =
185 vtkSmartPointer<vtkPolyDataWriter>::New();
186 polydataWriter->SetFileName(filename);
187 polydataWriter->SetInput(_dataMapper->GetInput());
188 polydataWriter->SetFileTypeToBinary();
189 polydataWriter->Write();
191 cout<<"unsupported format"<<endl;
196 void wxMaracasSurfaceRenderingManagerData::enableBoxWidget(bool enable){
200 void wxMaracasSurfaceRenderingManagerData::exportImageStencil(const char* filename){
202 vtkSmartPointer< SurfaceRenderingImageStencilExport> stencilexport = vtkSmartPointer< SurfaceRenderingImageStencilExport >::New();
203 stencilexport->SetInput( _dataMapper->GetInput());
204 stencilexport->Update();
205 vtkImageData* imgstencil = stencilexport->GetOutput();
207 vtkSmartPointer<vtkMetaImageWriter> metawriter = vtkSmartPointer<vtkMetaImageWriter>::New();
208 metawriter->SetFileName(filename);
209 metawriter->SetInput(imgstencil);
212 cout<<"No poly data set to data mapper."<<endl;