From 2870a9d60d1c320d69ee3bff90869ea323c65a59 Mon Sep 17 00:00:00 2001
From: "eduardo.davila@creatis.insa-lyon.fr"
 <eduardo.davila@creatis.insa-lyon.fr>
Date: Fri, 21 Jun 2024 15:01:40 +0200
Subject: [PATCH] #3520 Add DropDuplicatePositions to
 bbgdcmvtk::GetXCoherentInfoGdcmReader box

---
 .../bbgdcmvtkGetXCoherentInfoGdcmReader.cxx   |  2 +
 .../src/bbgdcmvtkGetXCoherentInfoGdcmReader.h | 51 ++++++++++---------
 2 files changed, 29 insertions(+), 24 deletions(-)

diff --git a/packages/gdcmvtk/src/bbgdcmvtkGetXCoherentInfoGdcmReader.cxx b/packages/gdcmvtk/src/bbgdcmvtkGetXCoherentInfoGdcmReader.cxx
index 25700ec..02a1466 100644
--- a/packages/gdcmvtk/src/bbgdcmvtkGetXCoherentInfoGdcmReader.cxx
+++ b/packages/gdcmvtk/src/bbgdcmvtkGetXCoherentInfoGdcmReader.cxx
@@ -173,6 +173,7 @@ void GetXCoherentInfoGdcmReader::Process()
             }
         } // for i
         sh = GDCM_NAME_SPACE::SerieHelper::New();
+        sh->SetDropDuplicatePositions( bbGetInputDropDuplicatePositions() );
         l = &lstFiles;
         sh->ImagePositionPatientOrdering( l );
     } else{
@@ -363,6 +364,7 @@ void GetXCoherentInfoGdcmReader::bbUserSetDefaultValues()
    bbSetInputIn(init);  
    bbSetInputReadRaw(true);  
    bbSetInputRespectSerieUID(true);
+   bbSetInputDropDuplicatePositions(true);
    //reader=NULL;   /// \TODO fixme JPR
 }
 
diff --git a/packages/gdcmvtk/src/bbgdcmvtkGetXCoherentInfoGdcmReader.h b/packages/gdcmvtk/src/bbgdcmvtkGetXCoherentInfoGdcmReader.h
index da22dc0..4133ac2 100644
--- a/packages/gdcmvtk/src/bbgdcmvtkGetXCoherentInfoGdcmReader.h
+++ b/packages/gdcmvtk/src/bbgdcmvtkGetXCoherentInfoGdcmReader.h
@@ -57,18 +57,19 @@ class bbgdcmvtk_EXPORT GetXCoherentInfoGdcmReader
 
   BBTK_BLACK_BOX_INTERFACE(GetXCoherentInfoGdcmReader,bbtk::AtomicBlackBox);
 
-  BBTK_DECLARE_INPUT(In				, std::vector<std::string>);
-  BBTK_DECLARE_INPUT(IPPSort		, bool);
-  BBTK_DECLARE_INPUT(DicomTags		, std::vector<std::string>);
-  BBTK_DECLARE_INPUT(ReadRaw		, bool);
-  BBTK_DECLARE_INPUT(RespectSerieUID, bool);
-
-  BBTK_DECLARE_OUTPUT(Out			, vtkImageData *);
-  BBTK_DECLARE_OUTPUT(OutFileNames  , std::vector<std::string>);
-  BBTK_DECLARE_OUTPUT(IPP			, std::vector<double>);
-  BBTK_DECLARE_OUTPUT(IOP			, std::vector<double>);
-  BBTK_DECLARE_OUTPUT(PixelSpacing	, std::vector<double>);
-  BBTK_DECLARE_OUTPUT(DicomInfo		, VectorMapInfoDicom);
+  BBTK_DECLARE_INPUT(In				            , std::vector<std::string>);
+  BBTK_DECLARE_INPUT(IPPSort		            , bool);
+  BBTK_DECLARE_INPUT(DicomTags		            , std::vector<std::string>);
+  BBTK_DECLARE_INPUT(ReadRaw		            , bool);
+  BBTK_DECLARE_INPUT(RespectSerieUID            , bool);
+  BBTK_DECLARE_INPUT(DropDuplicatePositions     , bool);
+
+  BBTK_DECLARE_OUTPUT(Out			            , vtkImageData *);
+  BBTK_DECLARE_OUTPUT(OutFileNames              , std::vector<std::string>);
+  BBTK_DECLARE_OUTPUT(IPP			            , std::vector<double>);
+  BBTK_DECLARE_OUTPUT(IOP			            , std::vector<double>);
+  BBTK_DECLARE_OUTPUT(PixelSpacing	            , std::vector<double>);
+  BBTK_DECLARE_OUTPUT(DicomInfo		            , VectorMapInfoDicom);
 
   BBTK_PROCESS(Process);
   void Process();
@@ -98,18 +99,20 @@ BBTK_BEGIN_DESCRIBE_BLACK_BOX(GetXCoherentInfoGdcmReader,bbtk::AtomicBlackBox);
   BBTK_DESCRIPTION("Get Dicom info from a File Set (a list of Dicom image file names) and read (as a vtkImageData)");
   BBTK_CATEGORY("");
 
-  BBTK_INPUT(GetXCoherentInfoGdcmReader,In				,"List of Dicom image file names", std::vector<std::string>,"");
-  BBTK_INPUT(GetXCoherentInfoGdcmReader,IPPSort			,"Sort on Image Position Patient", bool,"");
-  BBTK_INPUT(GetXCoherentInfoGdcmReader,DicomTags		,"Dicom Tags (vector of Dicom tags ex: D0028_0030  D0020_0037)", std::vector<std::string>,"");
-  BBTK_INPUT(GetXCoherentInfoGdcmReader,ReadRaw		    ,"(default true) false: not read raw just dicom tags", bool,"");
-  BBTK_INPUT(GetXCoherentInfoGdcmReader,RespectSerieUID ,"(default true) Respect Serie UID to be read", bool,"");
-
-  BBTK_OUTPUT(GetXCoherentInfoGdcmReader,Out			,"Output image"					        , vtkImageData *,"");
-  BBTK_OUTPUT(GetXCoherentInfoGdcmReader,OutFileNames   ,"List of the files in the good order"  , std::vector<std::string>,"");
-  BBTK_OUTPUT(GetXCoherentInfoGdcmReader,IPP			,"Image Position (Patient)"		        , std::vector<double>,"");
-  BBTK_OUTPUT(GetXCoherentInfoGdcmReader,IOP			,"Image Orientation (Patient)"	        , std::vector<double>,"");
-  BBTK_OUTPUT(GetXCoherentInfoGdcmReader,PixelSpacing	,"Pixel Spacing"				        , std::vector<double>,"");
-  BBTK_OUTPUT(GetXCoherentInfoGdcmReader,DicomInfo		,"vector of maps of Dicom tags"	        , VectorMapInfoDicom,"");
+  BBTK_INPUT(GetXCoherentInfoGdcmReader,In				        ,"List of Dicom image file names", std::vector<std::string>,"");
+  BBTK_INPUT(GetXCoherentInfoGdcmReader,IPPSort			        ,"Sort on Image Position Patient", bool,"");
+  BBTK_INPUT(GetXCoherentInfoGdcmReader,DicomTags		        ,"Dicom Tags (vector of Dicom tags ex: D0028_0030  D0020_0037)", std::vector<std::string>,"");
+  BBTK_INPUT(GetXCoherentInfoGdcmReader,ReadRaw		            ,"(default true) false: not read raw just dicom tags", bool,"");
+  BBTK_INPUT(GetXCoherentInfoGdcmReader,RespectSerieUID         ,"(default true) Respect Serie UID to be read", bool,"");
+  BBTK_INPUT(GetXCoherentInfoGdcmReader,DropDuplicatePositions  ,"(default true) Drop slices with Duplicate Positions", bool,"");
+
+
+  BBTK_OUTPUT(GetXCoherentInfoGdcmReader,Out			        ,"Output image"					        , vtkImageData *,"");
+  BBTK_OUTPUT(GetXCoherentInfoGdcmReader,OutFileNames           ,"List of the files in the good order"  , std::vector<std::string>,"");
+  BBTK_OUTPUT(GetXCoherentInfoGdcmReader,IPP			        ,"Image Position (Patient)"		        , std::vector<double>,"");
+  BBTK_OUTPUT(GetXCoherentInfoGdcmReader,IOP			        ,"Image Orientation (Patient)"	        , std::vector<double>,"");
+  BBTK_OUTPUT(GetXCoherentInfoGdcmReader,PixelSpacing	        ,"Pixel Spacing"				        , std::vector<double>,"");
+  BBTK_OUTPUT(GetXCoherentInfoGdcmReader,DicomInfo		        ,"vector of maps of Dicom tags"	        , VectorMapInfoDicom,"");
 BBTK_END_DESCRIBE_BLACK_BOX(GetXCoherentInfoGdcmReader);
 } // EO namespace bbgdcmvtk
 
-- 
2.49.0