- //--------------------------------------------------------------------
- class DicomRT_Contour {
-
- public:
- DicomRT_Contour();
- ~DicomRT_Contour();
-
- void Print(std::ostream & os = std::cout) const;
- bool Read(gdcm::SQItem * item);
- vtkPolyData * GetMesh();
- vtkPoints * GetPoints() {return mData;}
-
- protected:
- void ComputeMesh();
- unsigned int mNbOfPoints;
- std::string mType;
- vtkPoints * mData;
- vtkPolyData * mMesh;
- bool mMeshIsUpToDate;
-
- };
- //--------------------------------------------------------------------
+//--------------------------------------------------------------------
+class DicomRT_Contour : public itk::LightObject{
+
+public:
+ typedef DicomRT_Contour Self;
+ typedef itk::SmartPointer<Self> Pointer;
+ itkNewMacro(Self);
+
+ void Print(std::ostream & os = std::cout) const;
+
+#if GDCM_MAJOR_VERSION == 2
+ bool Read(gdcm::Item * item);
+ void UpdateDicomItem();
+#else
+ bool Read(gdcm::SQItem * item);
+#endif
+
+ vtkPolyData * GetMesh();
+ void SetMesh(vtkPolyData * mesh);
+ vtkPoints * GetPoints() {return mData;}
+ double GetZ() const {return mZ;}
+
+
+protected:
+ void ComputeMeshFromDataPoints();
+ void ComputeDataPointsFromMesh();
+ unsigned int mNbOfPoints;
+ std::string mType;
+ vtkSmartPointer<vtkPoints> mData;
+ vtkSmartPointer<vtkPolyData> mMesh;
+ vtkSmartPointer<vtkPoints> mPoints;
+ bool mMeshIsUpToDate;
+ ///Z location of the contour
+ double mZ;
+
+#if GDCM_MAJOR_VERSION == 2
+ gdcm::Item * mItem;
+#else
+ gdcm::SQItem * mItem;
+#endif
+
+private:
+ DicomRT_Contour();
+ ~DicomRT_Contour();
+};
+//--------------------------------------------------------------------