/*////////////////////////////////////////////////////////////////////////////// // CMT Cosmic Muon Tomography project ////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// Copyright (c) 2014, Universita' degli Studi di Padova, INFN sez. di Padova All rights reserved Authors: Andrea Rigoni Garola < andrea.rigoni@pd.infn.it > ------------------------------------------------------------------ This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 3.0 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library. //////////////////////////////////////////////////////////////////////////////*/ #ifndef U_VTKVOXIMAGE_H #define U_VTKVOXIMAGE_H #include #include #include #include #include #include #include #include "Vtk/uLibVtkInterface.h" class vtkImageData; class vtkActor; class vtkColorTransferFunction; class vtkPiecewiseFunction; namespace uLib { namespace Vtk { class VoxImage : public Prop3D { public: typedef Abstract::VoxImage Content; VoxImage(Content &content); ~VoxImage(); void UpdateFromContent(); void UpdateToContent(); uLib::Object* GetContent() const override { return (uLib::Object*)&m_Content; } vtkProp3D *GetProp() override { return m_Asm; } vtkImageData *GetImageData(); void SaveToXMLFile(const char *fname); void ReadFromVKTFile(const char *fname); void ReadFromXMLFile(const char *fname); void setShadingPreset(int blendType = 2); void SetRepresentation(Representation mode); void RescaleShaderRange(); void Update() override; void SyncFromVtk() override; void serialize_display(uLib::Archive::display_properties_archive & ar, const unsigned int version = 0) override; protected: void InstallPipe(); float writer_factor; private: vtkVolume *m_Actor; vtkImageData *m_Image; vtkCubeSource *m_Outline; vtkActor *m_OutlineActor; vtkAssembly *m_Asm; vtkXMLImageDataReader *m_Reader; vtkXMLImageDataWriter *m_Writer; VoxImage::Content &m_Content; float m_Window; float m_Level; int m_ShadingPreset; Connection m_UpdateConnection; class vtkColorTransferFunction *m_ColorFun; class vtkPiecewiseFunction *m_OpacityFun; }; } // namespace Vtk } // namespace uLib #endif // VTKVOXIMAGE_H