X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=common%2FvvImage.h;h=38348eece3d2db2ecc67ea8bf28d1d5f41cec4d9;hb=d19739229c921a138efd284127266b42cb20bd17;hp=6ab4c2b4c62c91e54bbdf7205bc2601f69e4bb21;hpb=758de1c14c7f16d924e1a2a575d52cd3e48ec503;p=clitk.git diff --git a/common/vvImage.h b/common/vvImage.h index 6ab4c2b..38348ee 100644 --- a/common/vvImage.h +++ b/common/vvImage.h @@ -1,69 +1,85 @@ /*========================================================================= + Program: vv http://www.creatis.insa-lyon.fr/rio/vv - Program: vv - Language: C++ - Author : Pierre Seroul (pierre.seroul@gmail.com) + Authors belong to: + - University of LYON http://www.universite-lyon.fr/ + - Léon Bérard cancer center http://oncora1.lyon.fnclcc.fr + - CREATIS CNRS laboratory http://www.creatis.insa-lyon.fr -Copyright (C) 2008 -Léon Bérard cancer center http://oncora1.lyon.fnclcc.fr -CREATIS-LRMN http://www.creatis.insa-lyon.fr + This software is distributed WITHOUT ANY WARRANTY; without even + the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + PURPOSE. See the copyright notices for more information. -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, version 3 of the License. + It is distributed under dual licence -This program 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 General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . - -=========================================================================*/ -#ifndef vvImage_h -#define vvImage_h + - BSD See included LICENSE.txt file + - CeCILL-B http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html +======================================================================-====*/ +#ifndef VVIMAGE_H +#define VVIMAGE_H #include #include #include +#include class vtkImageData; +class vtkImageReslice; +class vtkTransform; +class vtkImageReslice; +class vtkAbstractTransform; class vvImage : public itk::LightObject { public : - typedef vvImage Self; - typedef itk::SmartPointer Pointer; - itkNewMacro(Self); - - void Init(); - void SetImage(std::vector images); - void AddImage(vtkImageData* image); - const std::vector& GetVTKImages() { - return mVtkImages; - } - - int GetNumberOfDimensions() const; - int GetNumberOfSpatialDimensions(); - ///Writes the scalar range to the provided array, which must have room for two doubles - void GetScalarRange(double* range); - unsigned long GetActualMemorySize(); - std::vector GetSpacing(); - std::vector GetOrigin() const; - std::vector GetSize(); - std::string GetScalarTypeAsString(); - int GetNumberOfScalarComponents(); - int GetScalarSize(); - bool IsTimeSequence() { - return mVtkImages.size()>1; - } + typedef vvImage Self; + typedef itk::SmartPointer Pointer; + itkNewMacro(Self); + + void Init(); + void Reset(); + + void SetImage(std::vector images); + void AddImage(vtkImageData* image); + const std::vector& GetVTKImages(); + vtkImageData* GetFirstVTKImageData(); + + int GetNumberOfDimensions() const; + int GetNumberOfSpatialDimensions(); + ///Writes the scalar range to the provided array, which must have room for two doubles + void GetScalarRange(double* range); + unsigned long GetActualMemorySize(); + std::vector GetSpacing(); + std::vector GetOrigin() const; + std::vector GetSize(); + std::string GetScalarTypeAsString(); + int GetNumberOfScalarComponents(); + int GetScalarSize(); + bool IsTimeSequence(); + bool IsScalarTypeInteger(); + bool IsScalarTypeInteger(int t); + + vtkSmartPointer GetTransform(); + void SetTransform(vtkSmartPointer transform); + + void SetTimeSpacing(double s) { + mTimeSpacing = s; + } + void SetTimeOrigin(double o) { + mTimeOrigin = o; + } + + void UpdateReslice(); private: - vvImage(); - ~vvImage(); - std::vector mVtkImages; + vvImage(); + ~vvImage(); + std::vector mVtkImages; + std::vector< vtkSmartPointer > mVtkImageReslice; + vtkSmartPointer mTransform; + double mTimeOrigin; + double mTimeSpacing; }; #endif