]> Creatis software - bbtk.git/commitdiff
Convert bbtk from GDCM to GDCM2 (cmakefiles and cxx files).
authorFrederic Cervenansky <Frederic.Cervenansky@creatis.insa-lyon.fr>
Mon, 22 Nov 2010 16:44:21 +0000 (16:44 +0000)
committerFrederic Cervenansky <Frederic.Cervenansky@creatis.insa-lyon.fr>
Mon, 22 Nov 2010 16:44:21 +0000 (16:44 +0000)
Correct bug between std and wxvtk packages (wxvtk needs std package).
Correct a _CRT_SECURE_NO_DEPRECATE warning

kernel/CMakeLists.txt
kernel/cmake/BBTKConfigurePackage.cmake
kernel/src/bbtkConfigurationFile.h
packages/gdcmvtk/src/bbgdcmvtkGetInfoGdcmReader.cxx
packages/gdcmvtk/src/bbgdcmvtkGetInfoGdcmReader.h
packages/gdcmvtk/src/bbgdcmvtkGetXCoherentInfoGdcmReader.cxx
packages/gdcmvtk/src/bbgdcmvtkGetXCoherentInfoGdcmReader.h
packages/std/CMakeLists.txt
packages/wxvtk/CMakeLists.txt
packages/wxvtk/Configure.cmake

index c6f9aad3e8d5fbec96aa53c503dc0dcf8f4cbb55..05fa4272db179777c73b11885e5d4e6c836f43d3 100644 (file)
@@ -30,4 +30,4 @@ ADD_SUBDIRECTORY(install)
 #-----------------------------------------------------------------------------
 ADD_SUBDIRECTORY(data)
 #-----------------------------------------------------------------------------
-ADD_SUBDIRECTORY(bin)
\ No newline at end of file
+ADD_SUBDIRECTORY(bin)
index f72ccd4531575254779d24898b5c6d6e4ded56fe..319938879cac4b2e6c7fda85aeb62cdb352237e6 100644 (file)
@@ -116,12 +116,19 @@ IF(${BBTK_PACKAGE_NAME}_USE_QT)
 ENDIF(${BBTK_PACKAGE_NAME}_USE_QT)
 
 IF(${BBTK_PACKAGE_NAME}_USE_GDCM)
-  SET(USE_GDCM ON CACHE BOOL "Use GDCM" FORCE)
+  SET(USE_GDCM OFF CACHE BOOL "Use GDCM" )
+  SET(USE_GDCM2 OFF CACHE BOOL "Use GDCM2" )
   SET(USE_GDCM_VTK ON CACHE BOOL "Use GDCM_VTK" FORCE)
   SET(${BBTK_PACKAGE_NAME}_LIBS
     ${${BBTK_PACKAGE_NAME}_LIBS}
     ${GDCM_LIBRARIES}
     )
+       
+       IF(USE_GDCM)
+               IF(USE_GDCM2)
+               message(FATAL_ERROR "we have to choose between DICOM library readers")
+               ENDIF(USE_GDCM2)
+       ENDIF(USE_GDCM)
 ENDIF(${BBTK_PACKAGE_NAME}_USE_GDCM)
 
 IF(${BBTK_PACKAGE_NAME}_USE_GDCM2)
@@ -171,6 +178,7 @@ IF(${BBTK_PACKAGE_NAME}_USE_WXWIDGETS)
 ENDIF(${BBTK_PACKAGE_NAME}_USE_WXWIDGETS)
 
 
+
 #---------------------------------------------------------------------------
 
 MESSAGE(STATUS "")
@@ -181,11 +189,11 @@ MESSAGE(STATUS "=======================================")
 MESSAGE(STATUS "")
 
 #---------------------------------------------------------------------------
-# Recurse into subdirs
-SUBDIRS(src)
-SUBDIRS(doc)
-SUBDIRS(bbs)
-SUBDIRS(data)
+# Recurse into ADD_SUBDIRECTORY
+ADD_SUBDIRECTORY(src)
+ADD_SUBDIRECTORY(doc)
+ADD_SUBDIRECTORY(bbs)
+ADD_SUBDIRECTORY(data)
 #---------------------------------------------------------------------------
 
 MESSAGE(STATUS "=======================================")
index e6dd488f78df23676b67fb072931693d12d23cfa..60f6e319463a108510890f896255f0844f7e9612 100644 (file)
@@ -2,8 +2,8 @@
   Program:   bbtk
   Module:    $RCSfile: bbtkConfigurationFile.h,v $
   Language:  C++
-  Date:      $Date: 2009/01/27 14:22:56 $
-  Version:   $Revision: 1.11 $
+  Date:      $Date: 2010/11/22 16:44:27 $
+  Version:   $Revision: 1.12 $
 =========================================================================*/
 
 /* ---------------------------------------------------------------------
@@ -46,7 +46,9 @@
 
 
 #ifdef WIN32
-#define _CRT_SECURE_NO_DEPRECATE
+  #if __VISUALC__ < 1400
+       #define _CRT_SECURE_NO_DEPRECATE
+  #endif
 #endif
 
 #include <stdio.h>
index 2e0a07ecaab11a88fb017e2284c12cb8d8ee2e66..2c50c94c051b97e501d8e1083aaa8d15340e54d2 100644 (file)
@@ -1,10 +1,17 @@
 #include "bbgdcmvtkGetInfoGdcmReader.h"
 #include "bbgdcmvtkPackage.h"
 
-#include "gdcmFile.h"
-#include "gdcmFileHelper.h"
-#include "vtkImageData.h"
-#include "vtkGdcmReader.h"
+#if defined USE_GDCM
+       #include "gdcmFile.h"
+       #include "gdcmFileHelper.h"
+       #include "vtkImageData.h"
+       #include "vtkGdcmReader.h"
+#endif
+#if defined USE_GDCM2
+       #include <gdcmReader.h>
+       #include <gdcmImageHelper.h>
+       #include <vtkGDCMImageReader.h>
+#endif
 #include <vtkIndent.h>
 
 namespace bbgdcmvtk
@@ -12,6 +19,8 @@ namespace bbgdcmvtk
 
 BBTK_ADD_BLACK_BOX_TO_PACKAGE(gdcmvtk,GetInfoGdcmReader)
 BBTK_BLACK_BOX_IMPLEMENTATION(GetInfoGdcmReader,bbtk::AtomicBlackBox);
+
+#if defined USE_GDCM
 void GetInfoGdcmReader::Process()
 {
        // Reset de reader, f
@@ -66,11 +75,70 @@ void GetInfoGdcmReader::Process()
    reader->GetOutput()->PrintSelf(std::cout, indent);
    bbSetOutputOut( reader->GetOutput() );
 }
+#endif
 
+#if defined USE_GDCM2
+void GetInfoGdcmReader::Process()
+{
+       // Reset de reader, f
+       bbUserFinalizeProcessing();
+       gdcm::Reader *read = new gdcm::Reader();
+       read->SetFileName( bbGetInputIn().c_str());
+  
+       bool res = read->Read();  
+   if ( !res )
+   {
+      delete read;
+      bbSetOutputOut(0);
+      return;
+   }
+   
+ // Get info from THE image file (only *one* as input)
+   const gdcm::File &f = read->GetFile();
+   
+   // Image Orientation (Patient)
+   int i;
+   std::vector<double> v_iop;
+   const gdcm::DataElement &deIop = f.GetDataSet().GetDataElement(gdcm::Tag(0x0020, 0x0037));
+   std::stringstream ss;
+   deIop.GetValue().Print(ss);
+   gdcm::Element<gdcm::VR::DS,gdcm::VM::VM6> iop;
+   iop.Read( ss );
+   for(i=0; i< 6; i++)
+      v_iop.push_back((float)(iop[i]));
+   bbSetOutputIOP(v_iop );
+   // Image Position (Patient)
+   std::vector<double> v_ipp;
+   const gdcm::DataElement &deIpp = f.GetDataSet().GetDataElement(gdcm::Tag((0x0020,0x0032)));
+   deIpp.GetValue().Print(ss);
+   gdcm::Element<gdcm::VR::DS,gdcm::VM::VM3> ipp;
+   ipp.Read( ss );
+         for(i=0; i< 3; i++)
+               v_ipp.push_back((float)(ipp[i]));
+   bbSetOutputIPP(v_ipp );
+
+   std::vector<double> v_pixelspacing = gdcm::ImageHelper::GetSpacingValue(f);
+   bbSetOutputPixelSpacing(v_pixelspacing);
+   
+   //double interslice; ?? ==1 NO?
+    bbSetOutputInterSlice(v_pixelspacing[2]);
+   
+   reader = vtkGDCMImageReader::New();
+   reader->SetFileName( bbGetInputIn().c_str() );
+   reader->Update();
+   reader->GetOutput();
+   vtkIndent indent ;
+   reader->GetOutput()->PrintSelf(std::cout, indent);
+   bbSetOutputOut( reader->GetOutput() );
+}
+#endif
 void GetInfoGdcmReader::bbUserSetDefaultValues()
 {
    reader=NULL;
+#if defined USE_GDCM
    f=NULL;
+#endif
    bbSetInputIn("");  
 }
 
@@ -79,7 +147,7 @@ void GetInfoGdcmReader::bbUserInitializeProcessing()
 }
        
        
-       
+
 void GetInfoGdcmReader::bbUserFinalizeProcessing()
 {
    if( reader )
@@ -87,14 +155,16 @@ void GetInfoGdcmReader::bbUserFinalizeProcessing()
       reader->Delete();
       reader=NULL;
    }
+#if defined USE_GDCM   
    if(f)
    {
       f->Delete();
       f=NULL;
    }   
+#endif
 }
-
 }
+
 // EO namespace bbgdcmvtk
 
 
index 15badeb65964b24837a2488bce38f996656ee817..973795375cb81afcaae0ab1dca01a66495205874 100644 (file)
@@ -7,7 +7,12 @@
 #include "bbtkAtomicBlackBox.h"
 #include "iostream"
 
+#if defined USE_GDCM
 #include "vtkGdcmReader.h"
+#endif
+#if defined USE_GDCM2
+#include "vtkGDCMImageReader.h"
+#endif
 
 namespace bbgdcmvtk
 {
@@ -29,8 +34,15 @@ class bbgdcmvtk_EXPORT GetInfoGdcmReader
   void Process();
   
   private:
+#if defined USE_GDCM
      GDCM_NAME_SPACE::File *f;
-     vtkGdcmReader *reader;
+        vtkGdcmReader *reader;
+#endif
+#if defined USE_GDCM2
+            vtkGDCMImageReader *reader;
+#endif
+
 };
 
   //=================================================================
index 092a2a834c1df10f6d009a4d8024c6adb66b0f16..eb9a13454a71d5fb92d88f4331e1037c610a98bd 100644 (file)
@@ -2,16 +2,25 @@
 #include "bbgdcmvtkPackage.h"
 
 #include "gdcmFile.h"
-#include "gdcmFileHelper.h"
 #include "vtkImageData.h"
-#include "vtkGdcmReader.h"
 #include <vtkIndent.h>
+#if defined USE_GDCM
+#include "gdcmFileHelper.h"
+#endif
+#if defined USE_GDCM2
+       #include <gdcmReader.h>
+       #include <gdcmImageHelper.h>
+       #include <gdcmIPPSorter.h>
+       #include <vtkGDCMImageReader.h>
+       #include "vtkStringArray.h"
+#endif
 
 namespace bbgdcmvtk
 {
 
 BBTK_ADD_BLACK_BOX_TO_PACKAGE(gdcmvtk,GetXCoherentInfoGdcmReader)
 BBTK_BLACK_BOX_IMPLEMENTATION(GetXCoherentInfoGdcmReader,bbtk::AtomicBlackBox);
+#if defined USE_GDCM
 void GetXCoherentInfoGdcmReader::Process()
 {
  // Read the *first* image file (a SET of file names is given as input) 
@@ -86,6 +95,84 @@ void GetXCoherentInfoGdcmReader::Process()
 
    bbSetOutputOut( reader->GetOutput() );
 }
+#endif USE_GDCM
+
+#if defined USE_GDCM2
+void GetXCoherentInfoGdcmReader::Process()
+{
+ // Read the *first* image file (a SET of file names is given as input) 
+       gdcm::Reader *read = new gdcm::Reader();
+       reader->SetFileName( bbGetInputIn()[0].c_str());
+  
+       bool res = read->Read();  
+   if ( !res )
+   {
+      delete read;
+      bbSetOutputOut(0);
+      return;
+   }
+    
+ // Get info from the first image file
+   const gdcm::File &f = read->GetFile();
+   int i;
+   std::vector<double> v_iop;
+   const gdcm::DataElement &deIop = f.GetDataSet().GetDataElement(gdcm::Tag(0x0020, 0x0037));
+   std::stringstream ss;
+   deIop.GetValue().Print(ss);
+   gdcm::Element<gdcm::VR::DS,gdcm::VM::VM6> iop;
+   iop.Read( ss );
+   for(i=0; i< 6; i++)
+      v_iop.push_back((float)(iop[i]));
+   bbSetOutputIOP(v_iop );
+  std::vector<double> v_ipp;
+   const gdcm::DataElement &deIpp = f.GetDataSet().GetDataElement(gdcm::Tag((0x0020,0x0032)));
+   deIpp.GetValue().Print(ss);
+   gdcm::Element<gdcm::VR::DS,gdcm::VM::VM3> ipp;
+   ipp.Read( ss );
+         for(i=0; i< 3; i++)
+               v_ipp.push_back((float)(ipp[i]));
+   bbSetOutputIPP(v_ipp );
+
+// Add *all the files* to the IPPsorter
+     gdcm::IPPSorter s;
+        s.SetComputeZSpacing( true );
+     s.SetZSpacingTolerance( 1e-3 );
+     std::vector<std::string> gii = bbGetInputIn();
+     s.Sort(gii);
+
+        //l = sh->GetFirstSingleSerieUIDFileSet();
+        // no Test if we have multiple series
+        //s.GetFilenames();
+        //int nbFiles;
+
+       double zspacing = 0.;
+       zspacing = s.GetZSpacing();
+       std::vector<double> v_pixelspacing = gdcm::ImageHelper::GetSpacingValue(f);
+       v_pixelspacing.push_back( v_pixelspacing[0] );
+       v_pixelspacing.push_back( v_pixelspacing[1] );
+       v_pixelspacing.push_back( zspacing );
+       bbSetOutputPixelSpacing(v_pixelspacing);
+
+   if (reader!=NULL)
+   { 
+      reader->Delete();
+      reader=NULL;
+   }
+   reader = vtkGDCMImageReader::New();
+   vtkStringArray *files = vtkStringArray::New();
+   std::vector< std::string >::const_iterator it = s.GetFilenames().begin();
+   for( ; it != s.GetFilenames().end(); ++it)
+   {
+         const std::string &f = *it;
+      files->InsertNextValue( f.c_str() );
+    }
+   reader->SetFileNames(files);
+   reader->Update();
+   reader->GetOutput();
+   bbSetOutputOut( reader->GetOutput() );
+}
+#endif USE_GDCM2
 
 void GetXCoherentInfoGdcmReader::bbUserSetDefaultValues()
 {
@@ -100,6 +187,7 @@ void GetXCoherentInfoGdcmReader::bbUserInitializeProcessing()
        
 }
 
+#if defined USE_GDCM
 void GetXCoherentInfoGdcmReader::bbUserFinalizeProcessing()
 {
    if(reader)
@@ -109,6 +197,15 @@ void GetXCoherentInfoGdcmReader::bbUserFinalizeProcessing()
    if(sh)
       sh->Delete();      
 }
+#endif
+
+#if defined USE_GDCM2
+void GetXCoherentInfoGdcmReader::bbUserFinalizeProcessing()
+{
+   if(reader)
+      reader->Delete();
+}
+#endif
 
 }
 // EO namespace bbgdcmvtk
index e1697e4227513376ced046171b8bb369a0c7b725..e509431b32c1de8d1ec6cff918119d0478d0a1c5 100644 (file)
@@ -6,8 +6,14 @@
 #include "bbgdcmvtk_EXPORT.h"
 #include "bbtkAtomicBlackBox.h"
 #include "iostream"
-
+#if defined(USE_GDCM)
 #include "vtkGdcmReader.h"
+#endif
+
+#if defined(USE_GDCM2)
+#include "vtkGDCMImageReader.h"
+#endif
+
 #include "gdcmFile.h"
 #include "gdcmSerieHelper.h"
 
@@ -32,9 +38,15 @@ class bbgdcmvtk_EXPORT GetXCoherentInfoGdcmReader
   void Process();
   
   private:
-     GDCM_NAME_SPACE::File *f;
-     GDCM_NAME_SPACE::SerieHelper *sh;
-     vtkGdcmReader *reader;
+
+#if defined USE_GDCM
+                 GDCM_NAME_SPACE::File *f;
+                 GDCM_NAME_SPACE::SerieHelper *sh;
+             vtkGdcmReader *reader;
+#endif
+#if defined USE_GDCM2
+                 vtkGDCMImageReader *reader;
+#endif
 };
 
   //=================================================================
index 6e16f81633ff9510fb559424ab1a2396c75be93e..042d811702025fa755b8e36e867d6b5529d1327a 100644 (file)
@@ -116,7 +116,11 @@ SET(${BBTK_PACKAGE_NAME}_LIBS
   # EXCEPT : the same libs than for INCLUDE_DIRS 
   )
 #===========================================================================
-
+#===========================================================================
+# To compile with VS under x64, /bigobj flag is needed
+IF(MSVC AND CMAKE_SIZEOF_VOID_P MATCHES 8)
+       set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /bigobj")
+ENDIF()
 
 
 #===========================================================================
index 2f7e2bdb3fe3623fe6dd771fdb580086e8fe2c79..394213ce1380c57bf7d00320e0dea5462f355f85 100644 (file)
@@ -53,6 +53,7 @@ SET(${BBTK_PACKAGE_NAME}_USE_PACKAGES
   # vtk
   # ...
   )
+  
 #===========================================================================
 
 #===========================================================================
index dc44b3be3d7cbec2ad11d8a9c6875d941b735e7e..32fc2f0c4e27c75bd5f9d3b134fbbd04d14318ea 100644 (file)
@@ -5,6 +5,12 @@ OPTION(BUILD_BBTK_PACKAGE_${BBTK_PACKAGE_NAME}
 #===========================================================================
 
 IF(BUILD_BBTK_PACKAGE_${BBTK_PACKAGE_NAME})
+  IF(NOT BUILD_BBTK_PACKAGE_std)
+         # FORCE the std package to avoid compilation errors
+         SET(BUILD_BBTK_PACKAGE_std ON CACHE BOOL "Build the bbtk package ${BBTK_PACKAGE_NAME} ?" FORCE)
+         message(FATAL_ERROR "You need the std package")
+  ENDIF(NOT BUILD_BBTK_PACKAGE_std)
+
   #===========================================================================
   # THE USER HAS CHOSEN TO BUILD THE PACKAGE  
   #===========================================================================