]> Creatis software - clitk.git/blobdiff - common/clitkDicomRT_ROI.h
Add New(), GetValueTag and Path (to search for image)
[clitk.git] / common / clitkDicomRT_ROI.h
index d69ec1e9461100f161e3efaed1e05a5374797149..f0be23d74e47777647dc6714cf512415ec2193a9 100644 (file)
@@ -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
@@ -35,7 +35,6 @@ public:
   itkNewMacro(Self);
 
   void Print(std::ostream & os = std::cout) const;
-  void Read(std::map<int, std::string> & rois, gdcm::SQItem * item);
   void SetFromBinaryImage(vvImage * image, int n, 
         std::string name, 
         std::vector<double> color, 
@@ -60,22 +59,41 @@ public:
   void SetImage(vvImage * im);
   DicomRT_Contour* GetContour(int n);
 
-  double GetContourSpacing() const {return mZDelta;}
+  // 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<int, std::string> & rois, gdcm::SQItem * item);
+#endif
+
 protected:
-  void ComputeMesh();
   std::string mName;
   std::string mFilename;
   int mNumber;
   std::vector<double> mColor;
   std::vector<DicomRT_Contour::Pointer> mListOfContours;
-  vtkPolyData * mMesh;
+  vtkSmartPointer<vtkPolyData> mMesh;
   bool mMeshIsUpToDate;
   vvImage::Pointer mImage;
   double mBackgroundValue;
   double mForegroundValue;
-  ///Spacing between two contours
-  double mZDelta;
+  bool m_DicomUptodateFlag;
+
+#if GDCM_MAJOR_VERSION == 2
+  gdcm::Item * mItemInfo;
+  gdcm::Item * mItemContour;
+  gdcm::SmartPointer<gdcm::SequenceOfItems> mContoursSequenceOfItems;
+#endif
 
 private:
   DicomRT_ROI();