#ifndef VTKCLIPPING3DDATAVIEWER_H_ #define VTKCLIPPING3DDATAVIEWER_H_ #include "wxMPRBaseData.h" #include "vtkClipPolyData.h" #include "vtkStripper.h" #include "vtkLODActor.h" #include "vtkMarchingCubes.h" #include "vtkVolumeRayCastMapper.h" #include "boxSurfaceObserver.h" #include "vtkVolumeRayCastCompositeFunction.h" #include #include "vtkVolumeProperty.h" #include "vtkPolyDataMapper.h" #include "vtkColorTransferFunction.h" #include "vtkVolume.h" #include "vtkActor.h" #include "vtkOutlineFilter.h" #include "vtkRenderWindowInteractor.h" #include "vtkVolumeRayCastMIPFunction.h" #include "volumerendererdata.h" class vtkClipping3DDataViewer { public: //---------------------- //Constructo-Destructor //---------------------- vtkClipping3DDataViewer(); virtual ~vtkClipping3DDataViewer(); // vtkImageActor* GetImageActor(int id); vtkActor* GetOutlineActor(); vtkClipPolyData* GetTissueClipper(int id); vtkPolyDataMapper* GetTissueMapper(int id); vtkPlanes* GetTissuePlanes(int id); vtkStripper* GetTissueStripper(int id); // vtkGlyph3D* GetGlyph(int id); vtkLODActor* GetMaceActor(int id); vtkMarchingCubes *GetMCubes(int idTissue); virtual void Refresh(); void RefreshSurface(); virtual void Configure(); void Configure_Tissue(); void Configure_Volume(); void SetIsovalue(int idTissue, int isoValue); double GetIsovalue(int idTissue); vtkVolume *GetVolumeActor(); vtkVolumeRayCastMapper *GetVolumeMapper(); vtkPlanes *GetVolumePlanes(); void SetVtkMPRBaseData(vtkMPRBaseData *vtkmprbasedata); vtkMPRBaseData* GetVtkMPRBaseData(); vtkActor *GetTissueActor(int id); void SetVisibleTissue(int idTissue, bool visible); bool GetVisibleTissue(int idTissue); bool GetVisibleVolume(); void SetVisibleVolume(bool visibleVolume); bool GetVisibleVolumeBox(); void SetVisibleVolumeBox(bool visibleBox); void SetRepresentationType(int idTissue, bool representationType); bool GetRepresentationType(int idTissue); boxSurfaceObserver *GetObserverS(int idObserverS); boxSurfaceObserver *GetObserverV(); //void ReadVolumeFunctions(char *namefile); void ReadVolumeFunctions(); void ReadMeshVTK(char *namefile); void Configure_VolumeBox(); void SetInteractor(vtkRenderWindowInteractor* interactor); void SetRenderer(vtkRenderer* renderer); //------------------- //Getters Vectors //------------------- std::vector* GetGreyValuesTransferenceFVector(); std::vector* GetIntensityValuesTransferenceFVector(); std::vector* GetRedColorsOfColorTransferenceFVector(); std::vector* GetGreenColorsOfColorTransferenceFVector(); std::vector* GetBlueColorsOfColorTransferenceFVector(); std::vector* GetGreyValueColorsOfColorTransferenceFVector(); void setColorTransferFunction(vtkColorTransferFunction* colortable); //-------------------------------------- //Getters transference function //and color of the transference function //--------------------------------------- vtkPiecewiseFunction *GetTransferencefunction(); vtkColorTransferFunction *GetColorTransferenceFunction(); void SetRayCasting(bool active); void SetMIPActive(bool active); void SetInterpolation(bool active); void SetShade(bool active); void updateVolume(); void BoxActorChanged(bool changed); void UpdateVolumeBox(vector gf, vector vf, vtkColorTransferFunction* ctfun); private: vtkMarchingCubes *_mCubes[ VTKMPRDATA_MAXTISSUE ]; vtkStripper *_tissueStripper[ VTKMPRDATA_MAXTISSUE ]; vtkPolyDataMapper *_tissueMapper[ VTKMPRDATA_MAXTISSUE ]; vtkPlanes *_tissuePlanes[ VTKMPRDATA_MAXTISSUE ]; vtkClipPolyData *_tissueClipper[ VTKMPRDATA_MAXTISSUE ]; // outline vtkOutlineFilter *_outlineData; vtkPolyDataMapper *_mapOutline; vtkActor *_outline; /// Volume vtkPiecewiseFunction *_tfun; vtkColorTransferFunction *_ctfun; // vtkVolumeRayCastCompositeFunction *_compositeFunction; vtkPlanes *_volumePlanes; vtkVolumeRayCastMapper *_volumeMapper; vtkVolumeProperty *_volumeProperty; vtkVolume *_newvol; vtkMPRBaseData *_vtkmprbasedata; bool _visibleVolume; bool _visibleVolumeBox; bool _representationType[VTKMPRDATA_MAXTISSUE]; bool _visibleTissue[VTKMPRDATA_MAXTISSUE]; vtkActor *_tissue[VTKMPRDATA_MAXTISSUE]; boxSurfaceObserver *_observerV; boxSurfaceObserver *_observerS[VTKMPRDATA_MAXTISSUE]; std::vector greyValuesTransferenceFVector; std::vector intensityValuesTransferenceFVector; std::vector redColorsOfColorTransferenceFVector; std::vector greenColorsOfColorTransferenceFVector; std::vector blueColorsOfColorTransferenceFVector; std::vector greyValueColorsOfColorTransferenceFVector; vtkVolumeRayCastCompositeFunction *_compositeFunction; vtkVolumeRayCastMIPFunction *_compositeFunctionMIP ; bool _isRayCasting; bool _isMIP; bool _interpolation; bool _shade; VolumeRendererData* _volumerendererdata; }; #endif /*VTKCLIPPING3DDATAVIEWER_H_*/