X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=common%2FclitkDicomRT_ROI.h;h=f0be23d74e47777647dc6714cf512415ec2193a9;hb=5bff4d89c8ca42336267c36974e9ceb6fe2ac843;hp=8ec0404b119aef459f9a663e480663ed9968d880;hpb=fe61abeb6e452e5f54bef60a287aa104e4e02d70;p=clitk.git diff --git a/common/clitkDicomRT_ROI.h b/common/clitkDicomRT_ROI.h index 8ec0404..f0be23d 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 @@ -25,42 +25,81 @@ 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); - - int GetROINumber() const; - const std::string & GetName() const; - const std::vector & GetDisplayColor() const; - vtkPolyData * GetMesh(); - const vvImage::Pointer GetImage() const; - - void SetDisplayColor(double r, double v, double b); - - double GetBackgroundValueLabelImage() const; - void SetBackgroundValueLabelImage(double bg); - - protected: - void ComputeMesh(); - std::string mName; - 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 * 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(); + 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 * im); + DicomRT_Contour* GetContour(int n); + + // 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 + +protected: + std::string mName; + std::string mFilename; + int mNumber; + std::vector mColor; + std::vector mListOfContours; + vtkSmartPointer mMesh; + 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