]> Creatis software - clitk.git/blobdiff - common/clitkDicomRT_Contour.h
Comment snoutID
[clitk.git] / common / clitkDicomRT_Contour.h
index b59976969eaac0d6ce3808f25ef0bf88c2f60189..ab6db0d27d37565f99dc4dacb6db80e3b04a9948 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
 #define CLITKDICOMRT_CONTOUR_H
 
 #include "clitkCommon.h" 
-#include "clitkDicomRT_Contour.h"
+#include <gdcmFile.h>
+#if GDCM_MAJOR_VERSION >= 2
+#else
 #include <gdcm.h>
 #include <gdcmSQItem.h>
+#endif
 #include <vtkPoints.h>
 #include <vtkPolyData.h>
+#include <vtkSmartPointer.h>
+#include <vtkMatrix4x4.h>
 
 namespace clitk {
 
-  //--------------------------------------------------------------------
-  class DicomRT_Contour {
-    
-  public:
-    DicomRT_Contour();
-    ~DicomRT_Contour();
-
-    void Print(std::ostream & os = std::cout) const;
-    bool Read(gdcm::SQItem * item);
-    vtkPolyData * GetMesh();
-    
-  protected:
-    void ComputeMesh();
-    unsigned int mNbOfPoints;
-    std::string mType;
-    vtkPoints * mData;
-    vtkPolyData * mMesh;
-    bool mMeshIsUpToDate;
-
-  };
-  //--------------------------------------------------------------------
-
-  //--------------------------------------------------------------------
-  template<class ElementType>
-  ElementType parse_value(std::string str)
-  {
-    std::istringstream parser(str);
-    ElementType value;
-    parser >> value;
-    if (parser.fail()) {
-      DD(str);
-      DD(value);
-    }
-    assert(!parser.fail());
-    return value;
-  }
-
-  template<class ElementType>
-  std::vector<ElementType> parse_string(std::string str,char delim) {
-    std::istringstream ss(str);
-    std::string token;
-    std::vector<ElementType> result;
-    while (getline(ss,token,delim))
-      {
-        result.push_back(parse_value<ElementType>(token));
-      }
-    return result;
-  }
-  //--------------------------------------------------------------------
+//--------------------------------------------------------------------
+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;}
+  void SetTransformMatrix(vtkMatrix4x4* matrix);
+  
+  
+protected:
+  void ComputeMeshFromDataPoints();
+  void ComputeDataPointsFromMesh();
+  unsigned int mNbOfPoints;
+  std::string mType;
+  vtkSmartPointer<vtkPoints> mData;
+  vtkSmartPointer<vtkPolyData> mMesh;
+  vtkSmartPointer<vtkPoints> mPoints;
+  vtkSmartPointer<vtkMatrix4x4> mTransformMatrix;
+  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();
+};
+//--------------------------------------------------------------------
+
 
 
 } // end namespace clitk