From 0d75ab3cb25deacda0547d4156ebef481396c62e Mon Sep 17 00:00:00 2001 From: Eduardo DAVILA Date: Tue, 17 Apr 2018 16:55:06 +0200 Subject: [PATCH] #3188 creaImageIO Bug New Normal - DICOM tags --- ...bcreaImageIOGetDicomAttributesFromMaps.cxx | 15 ++-- bbtk/src/bbcreaImageIOGimmick.xml | 79 ++++++++++++++++++- .../bbcreaImageIOImagesChooserDialogBox.xml | 22 +++--- src/creaImageIOGimmick.cpp | 4 +- src/creaImageIOSQLiteTreeHandler.cpp | 39 ++++----- src/creaImageIOWxGimmickReaderDialog.h | 8 +- src/creaImageIOWxSimpleDlg.cpp | 2 +- src/data/localdatabase_Descriptor.dscp | 4 +- 8 files changed, 128 insertions(+), 45 deletions(-) diff --git a/bbtk/src/bbcreaImageIOGetDicomAttributesFromMaps.cxx b/bbtk/src/bbcreaImageIOGetDicomAttributesFromMaps.cxx index 1dd7d1b..98bdb57 100644 --- a/bbtk/src/bbcreaImageIOGetDicomAttributesFromMaps.cxx +++ b/bbtk/src/bbcreaImageIOGetDicomAttributesFromMaps.cxx @@ -13,7 +13,6 @@ BBTK_BLACK_BOX_IMPLEMENTATION(GetDicomAttributesFromMaps,bbtk::AtomicBlackBox); //===== void GetDicomAttributesFromMaps::Process() { - // THE MAIN PROCESSING METHOD BODY // Here we simply set the input 'In' value to the output 'Out' // And print out the output value @@ -29,16 +28,22 @@ void GetDicomAttributesFromMaps::Process() std::vector< std::string > lstResult; std::map tmpMap; int i,size=bbGetInputIn().size(); - std::string strElement; + +// The MAP.find() function is not working in all the cases for (i=0;isecond; - lstResult.push_back( strElement ); + std::map::iterator it; + for ( it = tmpMap.begin(); it != tmpMap.end(); it++ ) + { + if (it->first==bbGetInputKeyDicom()) + { + lstResult.push_back( it->second ); + } // if it->first + }//for it } // for i bbSetOutputOut( lstResult ); - } //===== // Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost) diff --git a/bbtk/src/bbcreaImageIOGimmick.xml b/bbtk/src/bbcreaImageIOGimmick.xml index 8113d5c..248a868 100644 --- a/bbtk/src/bbcreaImageIOGimmick.xml +++ b/bbtk/src/bbcreaImageIOGimmick.xml @@ -21,6 +21,25 @@ + +
+      typedef std::vector VectorStringType;
+
+ + + + +
+      typedef std::map MapInfoDicom;
+
+ + +
+      typedef std::vector< MapInfoDicom > VectorMapInfoDicom;
+
+ + +
typedef std::vector   OutputFilesType; 
typedef std::vector OutputImagesType;
@@ -46,7 +65,7 @@ bbGetInputImageOutputDimension(), threads); w.ShowModal(); - +/* if (w.GetReturnCode() == wxID_OK) { if (bbGetInputOutput()==0) @@ -68,6 +87,64 @@ // bbSetOutputOut(0); // } } +*/ + + + + /// vtkImageData vector + std::vector m_results; + std::vector< std::map > m_resultsDicomAtr; + + + if (w.GetReturnCode() == wxID_OK) + { + w.stopReading(); + std::vector outStrGimmick; + w.getSelected(outStrGimmick, bbGetInputDicomTags() ,true,""); + m_results.clear(); + int size=(int)outStrGimmick.size(); + int ii; +// if(!bInfo) +// { + for (ii=0;iiModified(); + outStrGimmick[ii].img->Update(); + m_results.push_back(outStrGimmick[ii].img); + m_resultsDicomAtr.push_back( outStrGimmick[ii].infos ); + } +// } else { +// for (ii=0;ii ???"); +// infoimageSource = _T("GIMMICK"); + + if (bbGetInputOutput()==0) + { +// std::vector images; +// w.GetSelectedImages(images,bbGetInputImageOutputDimension()); + bbSetOutputOut(m_results[0]); + bbSetOutputOut2(m_results); + } + std::vector files; + w.GetSelectedFiles(files); + bbSetOutputFiles(files); + + + bbSetOutputDicomInfo( m_resultsDicomAtr ); + + + + w.OnExit(); + } + + + + diff --git a/bbtk/src/bbcreaImageIOImagesChooserDialogBox.xml b/bbtk/src/bbcreaImageIOImagesChooserDialogBox.xml index 5f83018..6fd5d71 100644 --- a/bbtk/src/bbcreaImageIOImagesChooserDialogBox.xml +++ b/bbtk/src/bbcreaImageIOImagesChooserDialogBox.xml @@ -80,20 +80,18 @@
         creaImageIO::WxSimpleDlg dlg(0,crea::std2wx(bbGetInputTitle()),"localdatabase_Descriptor.dscp","Local Database"); 
-                dlg.SetAttrDicomTags( bbGetInputDicomTags() );
-		dlg.ShowModal(); 
-                bbSetOutputDicomInfo( dlg.getDicomInfoImagesSelected() );
-		if (dlg.getImagesSelected().size()!=0)
-		{ 
-			bbSetOutputFileName( std::string( dlg.getInfoImage().mb_str() ) );
-			bbSetOutputOut( dlg.getVolumeSelected() );
-
-		} else { 
-			bbSetOutputOut( NULL );
-		} // if dlg.getImagesSelected().size()!=0
+        dlg.SetAttrDicomTags( bbGetInputDicomTags() );
+	dlg.ShowModal(); 
+	bbSetOutputDicomInfo( dlg.getDicomInfoImagesSelected() );
+	if (dlg.getImagesSelected().size()!=0)
+	{ 
+		bbSetOutputFileName( std::string( dlg.getInfoImage().mb_str() ) );
+		bbSetOutputOut( dlg.getVolumeSelected() );
+	} else { 
+		bbSetOutputOut( NULL );
+	} // if dlg.getImagesSelected().size()!=0
         bbSetOutputOutImages( dlg.getImagesSelected());  
 	bbSignalOutputModification(  );
-
     
diff --git a/src/creaImageIOGimmick.cpp b/src/creaImageIOGimmick.cpp index 6d29613..5b01f74 100644 --- a/src/creaImageIOGimmick.cpp +++ b/src/creaImageIOGimmick.cpp @@ -560,11 +560,13 @@ void Gimmick::fillVectInfos(std::vector i_attr, OutputAttr &infos) { if( mImageAdder.isAttributeExist((*it)) != "" ) // in DB { +printf("EED Gimmick::fillVectInfos inside %s\n",(*it).c_str()); infos.inside.push_back((*it)); } else { infos.outside.push_back((*it)); // Need to scan again the files +printf("EED Gimmick::fillVectInfos outside %s\n",(*it).c_str()); } } } @@ -580,4 +582,4 @@ const std::string Gimmick::getSummary() return mess.str(); } -} \ No newline at end of file +} diff --git a/src/creaImageIOSQLiteTreeHandler.cpp b/src/creaImageIOSQLiteTreeHandler.cpp index 4a1e391..e51bfa9 100644 --- a/src/creaImageIOSQLiteTreeHandler.cpp +++ b/src/creaImageIOSQLiteTreeHandler.cpp @@ -980,7 +980,7 @@ GimmickDebugMessage(1, "query : '" < &i_results) { int level=GetTree().GetNumberOfLevels()-1; - + std::string search = i_filename; std::string param = "FullFileName"; std::string name; @@ -992,25 +992,27 @@ GimmickDebugMessage(1, "query : '" < values; std::vector::iterator it_val; - - - - while(level>1) + while(level>=1) { - attr = GetTree().GetAttributeDescriptorList(level,1); + attr = GetTree().GetAttributeDescriptorList(level,1); - name = GetTree().GetLevelDescriptor(level).GetName(); - std::vector values; - GetUpLevelNodeId(level, param,search,id); - GetAttributes(name, param,search,attr, values); - for(it_attr = attr.begin(), it_val = values.begin(); it_attr != attr.end(); it_attr++, it_val++) - { - i_results[(*it_attr).GetKey()] = (*it_val).c_str(); - } - search = id; - param = "ID"; - level --; - } + name = GetTree().GetLevelDescriptor(level).GetName(); + std::vector values; + +//EED 2018-04-13 GetUpLevelNodeId(level, param,search,id); + if (level>1) + { + GetUpLevelNodeId(level, param,search,id); + } + GetAttributes(name, param,search,attr, values); + for(it_attr = attr.begin(), it_val = values.begin(); it_attr != attr.end(); it_attr++, it_val++) + { + i_results[(*it_attr).GetKey()] = (*it_val).c_str(); + } // for + search = id; + param = "ID"; + level --; + } // while level } @@ -1064,7 +1066,6 @@ GimmickDebugMessage(1, "query : '" < mGimmick; - WxGimmickView* mView; + WxGimmickView *mView; - wxButton* mOkButton; - wxButton* mCancelButton; - wxBoxSizer *mtopsizer; + wxButton *mOkButton; + wxButton *mCancelButton; + wxBoxSizer *mtopsizer; enum { diff --git a/src/creaImageIOWxSimpleDlg.cpp b/src/creaImageIOWxSimpleDlg.cpp index 49a65a4..f11574c 100644 --- a/src/creaImageIOWxSimpleDlg.cpp +++ b/src/creaImageIOWxSimpleDlg.cpp @@ -135,7 +135,7 @@ namespace creaImageIO WxGimmickReaderDialog dlg(0,-1, namedescp, namedb, - _T("Select image(s) - Gimmick! (c) CREATIS-LRMN 2008"), + _T("Select image(s) - Gimmick! (c)"), wxDefaultPosition, wxSize(810,750), GIMMICK_2D_IMAGE_SELECTION, diff --git a/src/data/localdatabase_Descriptor.dscp b/src/data/localdatabase_Descriptor.dscp index e994589..402931b 100644 --- a/src/data/localdatabase_Descriptor.dscp +++ b/src/data/localdatabase_Descriptor.dscp @@ -47,8 +47,8 @@ D 0x0008 0x0033 3 D 0x0020 0x4000 3 #D 0x0004 0x1500 4 #D 0x0004 0x1501 4 -#D 0x0028 0x1052 3 -#D 0x0028 0x1053 3 +D 0x0028 0x1052 3 +D 0x0028 0x1053 3 #D 0x0050 0x0004 3 #D 0x0020 0x0052 3 #D 0x0008 0x0016 3 -- 2.44.0