/*========================================================================= Program: wxMaracas Module: $RCSfile: wxMaracasIRMViewManager.h,v $ Language: C++ Date: $Date: 2009/04/09 13:58:38 $ Version: $Revision: 1.2 $ Copyright: (c) 2002, 2003 License: This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the above copyright notice for more information. =========================================================================*/ #ifndef __wxMaracasIRMViewManagerH__ #define __wxMaracasIRMViewManagerH__ #include #include #include "vtkProp3D.h" #include "vtkRenderer.h" #include "vtkSTLReader.h" #include "vtkPolyDataMapper.h" #include "vtkActor.h" #include "vtkProperty.h" #include "vtkMetaImageReader.h" #include "vtkMarchingCubes.h" #include "vtkCleanPolyData.h" #include "vtkImageData.h" class wxMaracasIRMViewManagerData { public: wxMaracasIRMViewManagerData(vtkProp3D* _prop3Dvect, std::string dataname=""); wxMaracasIRMViewManagerData(vtkImageData* imagedata, std::string dataname=""); ~wxMaracasIRMViewManagerData(); /** ** Adds a prop3D to the world of the application **/ void setVtkImageData(vtkImageData* imagedata); /** ** Adds a prop3D to the world of the application **/ void setProp3D(vtkProp3D* prop3D); /** ** Changes the opacity in a prop3D **/ void changeOpacity(int value); /** ** changes the isovalue in a prop3D **/ void changeIsoValue(int value); /** ** Check if the variables are setted correctly **/ void checkInvariant(); /** ** get the prop3D **/ vtkProp3D* getProp3D(); /** ** return the id from the daat **/ int getId(); /** ** set data id **/ void setId(int propid); /** ** Get the filanme **/ std::string getDataname(); /** ** Set the filanme **/ void setDataname(std::string dataname); /** ** Returns the grey max level of the image **/ int getMaxGreyLevel(); /** ** creates the image **/ void contourExtractor(int isovalue); /** ** Changes the color of the actor **/ void changeColor(double red, double green, double blue); private: vtkProp3D* _prop3D; vtkImageData* _imagedata; int _id; std::string _dataname; int _maxgreylevel; /** ** **/ vtkPolyDataMapper* _dataMapper; vtkPolyData* _polydata; /** ** Get's the max grey level of the image **/ int getMaxLevel(vtkImageData* img); }; class wxMaracasIRMViewManager { public: wxMaracasIRMViewManager(); ~wxMaracasIRMViewManager(); /** ** Sets the renderer to manage the prop3D from the view **/ void setRenderer(vtkRenderer* renderer); /** ** Adds a prop3D to the manager and returns the identifier **/ int addProp3D(vtkProp3D* prop3D, std::string dataname); /** ** Adds a prop3D to the manager and returns the identifier **/ int addPropMHD(vtkImageData* imagedata, std::string dataname); /** ** Changes the opacity in a prop3D **/ void changeOpacity(int propid, int value); /** ** changes the isovalue in a prop3D **/ void changeIsoValue(int propid, int value); /** ** loads a prop3D from a nSTL file **/ vtkProp3D* getProp3D(std::string filename); /** ** loads a MHD file to convert it into an actor **/ vtkImageData* getImageData(std::string filename); /** ** adds or removes an actor depending of the bool value **/ void addRemoveActor(int propid, bool addremove); /** ** Check if the variables are setted correctly **/ void checkInvariant(); /** ** Given an id search the data in the vector **/ wxMaracasIRMViewManagerData* getViewData(int id); /** ** Given the id, return the max iso value from the imagedata **/ int getMaxIsoValue(int propid); /** ** Changes the color of the actor **/ void changeColor(int propid, double red, double green, double blue); private: std::vector prop3Dvect; vtkRenderer* _renderer; int _idCount; }; #endif