X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=common%2FclitkDicomRT_ROI.h;h=b41793323bb67b1795da94f21050f75e3ab04b68;hb=refs%2Fheads%2Fmaster;hp=5a30df865490a5c9273f0fe569fdb074413886ef;hpb=0f41173383ece2736e285fb44e8b06569bd8d201;p=clitk.git diff --git a/common/clitkDicomRT_ROI.h b/common/clitkDicomRT_ROI.h index 5a30df8..b417933 100644 --- a/common/clitkDicomRT_ROI.h +++ b/common/clitkDicomRT_ROI.h @@ -4,7 +4,7 @@ Authors belongs to: - University of LYON http://www.universite-lyon.fr/ - - Léon Bérard cancer center http://oncora1.lyon.fnclcc.fr + - Léon Bérard cancer center http://www.centreleonberard.fr - CREATIS CNRS laboratory http://www.creatis.insa-lyon.fr This software is distributed WITHOUT ANY WARRANTY; without even @@ -23,50 +23,98 @@ #include "clitkDicomRT_Contour.h" #include "vvImage.h" +#include +#include "clitkConfiguration.h" +#if CLITK_USE_SYSTEM_GDCM == 1 +#include +#include +#endif + namespace clitk { - //-------------------------------------------------------------------- - class DicomRT_ROI { - - public: - DicomRT_ROI(); - ~DicomRT_ROI(); - - void Print(std::ostream & os = std::cout) const; - void Read(std::map & rois, gdcm::SQItem * item); - void SetFromBinaryImage(vvImage::Pointer image, int n, - std::string name, - std::vector color, - std::string filename); - - int GetROINumber() const; - const std::string & GetName() const; - const std::string & GetFilename() const; - const std::vector & GetDisplayColor() const; - vtkPolyData * GetMesh(); - const vvImage::Pointer GetImage() const; - - void SetDisplayColor(double r, double v, double b); - std::vector & GetDisplayColor() { return mColor; } - - double GetBackgroundValueLabelImage() const; - void SetBackgroundValueLabelImage(double bg); - - void SetImage(vvImage * im); - - protected: - void ComputeMesh(); - std::string mName; - std::string mFilename; - int mNumber; - std::vector mColor; - std::vector mListOfContours; - vtkPolyData * mMesh; - bool mMeshIsUpToDate; - vvImage::Pointer mImage; - double mBackgroundValue; - }; - //-------------------------------------------------------------------- +//-------------------------------------------------------------------- +class DicomRT_ROI : public itk::LightObject +{ + +public: + typedef DicomRT_ROI Self; + typedef itk::SmartPointer Pointer; + itkNewMacro(Self); + + void Print(std::ostream & os = std::cout) const; + void SetFromBinaryImage(vvImage::Pointer image, int n, + std::string name, + std::vector color, + std::string filename); + + int GetROINumber() const; + void SetROINumber(int); + const std::string & GetName() const; + const std::string & GetFilename() const; + const std::vector & GetDisplayColor() const; + vtkPolyData * GetMesh(); + vvImage * GetImage() const; + + void SetDisplayColor(double r, double v, double b); + std::vector & GetDisplayColor() { return mColor; } + + double GetBackgroundValueLabelImage() const; + void SetBackgroundValueLabelImage(double bg); + + double GetForegroundValueLabelImage() const; + void SetForegroundValueLabelImage(double bg); + + void SetImage(vvImage::Pointer im); + DicomRT_Contour* GetContour(int n); + + void SetTransformMatrix(vtkMatrix4x4* matrix); + + // Compute a vtk mesh from the dicom contours + void ComputeMeshFromContour(); + void ComputeContoursFromImage(); + + // Indicate if the mesh is uptodate according to the dicom + void SetDicomUptodateFlag(bool b) { m_DicomUptodateFlag = b; } + bool GetDicomUptoDateFlag() const { return m_DicomUptodateFlag; } + void SetName(std::string n) { mName = n; } + + // Read from DICOM RT STRUCT +#if GDCM_MAJOR_VERSION >= 2 + bool Read(gdcm::Item * itemInfo, gdcm::Item * itemContour); + void UpdateDicomItem(); +#else + void Read(std::map & rois, gdcm::SQItem * item); +#endif + +#if CLITK_USE_SYSTEM_GDCM == 1 + void Read(vtkSmartPointer & reader, int roiindex); +#endif + +protected: + std::string mName; + std::string mFilename; + int mNumber; + std::vector mColor; + std::vector mListOfContours; + vtkSmartPointer mMesh; + vtkSmartPointer mTransformMatrix; + bool mMeshIsUpToDate; + vvImage::Pointer mImage; + double mBackgroundValue; + double mForegroundValue; + bool m_DicomUptodateFlag; + +#if GDCM_MAJOR_VERSION >= 2 + gdcm::Item * mItemInfo; + gdcm::Item * mItemContour; + gdcm::SmartPointer mContoursSequenceOfItems; +#endif + +private: + DicomRT_ROI(); + ~DicomRT_ROI(); +}; +//-------------------------------------------------------------------- } // end namespace clitk #endif // CLITKDICOMRT_ROI_H