]> Creatis software - clitk.git/blobdiff - vv/vvMeshReader.cxx
Debug RTStruct conversion with empty struc
[clitk.git] / vv / vvMeshReader.cxx
index 736dbcf0ba5bd9475fed3b92db4d32a17a2a6bb4..b04163853d202f14f1a435f89b50c9444f38a036 100644 (file)
@@ -24,7 +24,7 @@
 
 // gdcm 
 #include <gdcmFile.h>
-#if GDCM_MAJOR_VERSION == 2
+#if GDCM_MAJOR_VERSION >= 2
 #include <gdcmReader.h>
 #include <gdcmTag.h>
 #include <gdcmAttribute.h>
@@ -34,6 +34,7 @@
 #endif
 
 // vtk
+#include <vtkVersion.h>
 #include <vtkSmartPointer.h>
 #include <vtkAppendPolyData.h>
 #include <vtkCellArray.h>
@@ -61,8 +62,6 @@ vtk_mode(false)
 //------------------------------------------------------------------------------
 void vvMeshReader::Update()
 {
-  DD("vvMeshReader::Update");
-
   //Show a progress bar only when opening a DC-struct (ie. multiple contours)
   vvProgressDialog progress("Opening " + filename,(!vtk_mode) && (selected_contours.size()>1));
   this->start();
@@ -107,25 +106,17 @@ std::vector<std::pair<int,std::string> > vvMeshReader::GetROINames()
 {
   assert(filename!="");
   std::vector<std::pair<int, std::string> > roi_names;
-  DD(GDCM_MAJOR_VERSION);
-  DD(CLITK_USE_SYSTEM_GDCM);
 
-#if GDCM_MAJOR_VERSION == 2
+#if CLITK_USE_SYSTEM_GDCM == 1
 
   // Read RT-struct data
-  DD("before read");
-  vtkSmartPointer<vtkGDCMPolyDataReader> reader = vtkGDCMPolyDataReader::New();
-  reader->SetFileName(filename.c_str());
-  reader->Update();
-  DD("after read");
+  vtkSmartPointer<vtkGDCMPolyDataReader> areader = vtkGDCMPolyDataReader::New();
+  areader->SetFileName(filename.c_str());
+  areader->Update();
 
   // get info on roi names
-  vtkRTStructSetProperties * p = reader->GetRTStructSetProperties();
-  DD(p->GetNumberOfStructureSetROIs());
-  DD(p->GetStructureSetROIName(0));
-  DD(p->GetStructureSetROINumber(0));  
+  vtkRTStructSetProperties * p = areader->GetRTStructSetProperties();
   int n = p->GetNumberOfStructureSetROIs();
-  DD(n);
   
   for(unsigned int i=0; i<n; i++) {
     std::string name = p->GetStructureSetROIName(i);
@@ -133,20 +124,16 @@ std::vector<std::pair<int,std::string> > vvMeshReader::GetROINames()
     roi_names.push_back(make_pair(nb,name));
   }
 
-  // ====================
+#else
+#if GDCM_MAJOR_VERSION >= 2
 
-  if (false) {
     // duplicate code from  clitk::DicomRT_StructureSet::Read
     gdcm::Reader * reader = new gdcm::Reader;
     reader->SetFileName( filename.c_str() );
     reader->Read();
-    DD("after gdcm read");
 
     const gdcm::DataSet &ds = reader->GetFile().GetDataSet();
 
-    DD("after ds");
-    DD(ds.IsEmpty());
-
     // Check file type
     //Verify if the file is a RT-Structure-Set dicom file
     gdcm::File * mFile = &(reader->GetFile());
@@ -172,7 +159,6 @@ std::vector<std::pair<int,std::string> > vvMeshReader::GetROINames()
 
     gdcm::Attribute<0x20,0x10> studyid;
     studyid.SetFromDataSet( ds );
-    DD(studyid.GetValue());
 
     gdcm::Tag tssroisq(0x3006,0x0020);
     // 0x3006,0x0020 = [ Structure Set ROI Sequence ]
@@ -182,38 +168,29 @@ std::vector<std::pair<int,std::string> > vvMeshReader::GetROINames()
     }
   
     const gdcm::DataElement &ssroisq = ds.GetDataElement( tssroisq );
-    DD("after ssroisq");
     gdcm::SmartPointer<gdcm::SequenceOfItems> roi_seq = ssroisq.GetValueAsSQ();
     assert(roi_seq); // FIXME error message
   
-    DD(roi_seq->GetNumberOfItems());
-
     for(unsigned int ridx = 0; ridx < roi_seq->GetNumberOfItems(); ++ridx)
       {
-        DD(ridx);
-        gdcm::Item & item = roi_seq->GetItem( ridx + 1); // Item starts at 1
+         gdcm::Item & item = roi_seq->GetItem( ridx + 1); // Item starts at 1
 
         const gdcm::Item & sitem = roi_seq->GetItem(ridx+1); // Item start at #1   
 
         const gdcm::DataSet& snestedds = sitem.GetNestedDataSet();
         const gdcm::DataSet& nestedds = item.GetNestedDataSet();
 
-        DD(nestedds.IsEmpty());
-
         if( snestedds.FindDataElement( gdcm::Tag(0x3006,0x22) ) )
           {
-            DD("tag found");
             // const gdcm::DataElement & a = nestedds.GetDataElement(gdcm::Tag(0x3006,0x26));
             // DD(a.GetValue());
 
             gdcm::Attribute<0x3006,0x26> roiname;
             roiname.SetFromDataSet( snestedds );
             std::string name = roiname.GetValue();      // 0x3006,0x0026 = [ROI Name]
-            DD(name);
             gdcm::Attribute<0x3006,0x0022> roinumber;
             roinumber.SetFromDataSet( snestedds );
             int nb = roinumber.GetValue();  // 0x3006,0x0022 = [ROI Number]
-            DD(nb);
           
             roi_names.push_back(make_pair(nb,name));
           }
@@ -221,8 +198,6 @@ std::vector<std::pair<int,std::string> > vvMeshReader::GetROINames()
   
     delete reader;
 
-  }
-
 #else
   gdcm::File reader;
   reader.SetFileName(filename.c_str());
@@ -237,6 +212,8 @@ std::vector<std::pair<int,std::string> > vvMeshReader::GetROINames()
     if (i->GetEntryValue(0x3006,0x0022)!= gdcm::GDCM_UNFOUND)
       roi_names.push_back(make_pair(atoi(i->GetEntryValue(0x3006,0x0022).c_str()),i->GetEntryValue(0x3006,0x0026)));
 #endif
+#endif
+
   return roi_names;
 }
 //------------------------------------------------------------------------------
@@ -246,7 +223,7 @@ std::vector<std::pair<int,std::string> > vvMeshReader::GetROINames()
 std::vector<vvMesh::Pointer> vvMeshReader::readSelectedContours()
 {
   std::vector<vvMesh::Pointer> result;
-#if GDCM_MAJOR_VERSION == 2
+#if GDCM_MAJOR_VERSION >= 2
   gdcm::Reader reader;
   reader.SetFileName(filename.c_str());
   reader.Read();
@@ -314,7 +291,11 @@ std::vector<vvMesh::Pointer> vvMeshReader::readSelectedContours()
                       ids[1] = (ids[0] + 1) % tpoint_number.GetValue(); //0-1,1-2,...,n-1-0
                       contour->GetLines()->InsertNextCell(2, ids);
                     }
+#if VTK_MAJOR_VERSION <= 5
                   append->AddInput(contour);
+#else
+                  append->AddInputData(contour);
+#endif
                 }
               else
                 if (contour_type == "POINT ")