From 0a9f25290006bdee6be492179f8b0dae7ba1c598 Mon Sep 17 00:00:00 2001 From: regrain Date: Mon, 24 Jan 2005 14:14:07 +0000 Subject: [PATCH] * src/gdcmDicomDirElement.h, gdcmDict.h : rename AddNewXxx methods to AddXxx. * src/gdcmDict.h : rename GetDictEntry moethod to GetEntry, to be coherent with other method names * gdcmPython/gdcm.i : bug fix. Add the typemaps for the TagName type * Test/TestDicomDirElement.cxx : add new test -- BeNours --- ChangeLog | 225 +++++++++++----------- Example/TestChangeHeader.cxx | 6 +- Testing/CMakeLists.txt | 1 + Testing/TestDicomDirElement.cxx | 28 +++ Testing/TestDict.cxx | 10 +- gdcmPython/demo/PrintDicomDir.py.in | 2 +- gdcmPython/demo/PrintDict.py.in | 16 +- gdcmPython/demo/PrintHeader.py.in | 14 +- gdcmPython/gdcm.i | 285 ++++++++++++++++------------ src/gdcm.h | 5 +- src/gdcmDefaultDicts.cxx.in | 8 +- src/gdcmDicomDir.cxx | 6 +- src/gdcmDicomDirElement.cxx | 11 +- src/gdcmDicomDirElement.h | 6 +- src/gdcmDicomDirObject.cxx | 6 +- src/gdcmDict.cxx | 69 +------ src/gdcmDict.h | 17 +- src/gdcmDocEntrySet.cxx | 7 +- src/gdcmDocEntrySet.h | 5 +- src/gdcmDocument.cxx | 5 +- src/gdcmDocument.h | 5 +- src/gdcmSQItem.cxx | 6 +- 22 files changed, 375 insertions(+), 368 deletions(-) create mode 100644 Testing/TestDicomDirElement.cxx diff --git a/ChangeLog b/ChangeLog index 2e038e7e..47756030 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,9 +1,16 @@ +2005-01-22 Benoit Regrain + * src/gdcmDicomDirElement.h, gdcmDict.h : rename AddNewXxx methods to AddXxx. + * src/gdcmDict.h : rename GetDictEntry moethod to GetEntry, to be coherent + with other method names + * gdcmPython/gdcm.i : bug fix. Add the typemaps for the TagName type + * Test/TestDicomDirElement.cxx : add new test + 2005-01-22 Mathieu Malaterre * Finish the CreateUniqueUID stuff. Seems to compiled/runs on every - plateforms ITK support. Had some troubles with uint64_t on Win32, go to - http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclang/html/_langref_data_type_ranges.asp - for more info. Basically you can not used 'unsigned' __int8 in an ostream. - So can't you use __int64 in ostream at all. + plateforms ITK support. Had some troubles with uint64_t on Win32, go to + http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclang/html/_langref_data_type_ranges.asp + for more info. Basically you can not used 'unsigned' __int8 in an ostream. + So can't you use __int64 in ostream at all. 2005-01-22 Benoit Regrain * bug fix for compilation on MSVC6 @@ -56,14 +63,14 @@ 2005-01-18 Jean-Pierre Roux * ENH for DicomDir, DicomDirPatient, DicomDirStudy, - DicomDirSerie, DicomDirImage - Dict, DictSet classes : + DicomDirSerie, DicomDirImage + Dict, DictSet classes : -add method GetFirstEntry to replace call to InitTraversal+GetNextEntry -remove InitTraversal method. - * UPD Test programs + Example programs + * UPD Test programs + Example programs 2005-01-18 Jean-Pierre Roux - remove useless and never updated keyword \ingroup + remove useless and never updated keyword \ingroup 2005-01-17 Benoit Regrain * src/gdcmUtil.cxx : bug fix to find the Windows MAC address. Now, there @@ -71,42 +78,42 @@ * gdcmPython/demo : add python demos using VTK 2005-01-16 Jean-Pierre Roux - * FIX 'Dictionnary' is now spelt 'Dictionary' - 'wether' is now spelt 'whether' - 'archieve' is now spelt 'archive' ;-) + * FIX 'Dictionnary' is now spelt 'Dictionary' + 'wether' is now spelt 'whether' + 'archieve' is now spelt 'archive' ;-) 2005-01-15 Jean-Pierre Roux * ADD DicomDir, DicomDirPatient, DicomDirStudy, DicomDirSerie, DicomDirImage - related methods, in order not to expose internal mechanisms + related methods, in order not to expose internal mechanisms InitTraversal(); GetNextEntry(); - * REM methods that exposed internal mechanisms : + * REM methods that exposed internal mechanisms : DicomDir::GetDicomDirPatients() DicomDirPatient::GetDicomDirStudies() DicomDirStudy::GetDicomDirSeries() DicomDirSerie::GetDicomDirImages() - * UPD Test programs : - makeDicomDir.cxx - BuildUpDicomDir.cxx - TestDicomDir.cxx - * UPD Example program - PrintDicomDir.cxx + * UPD Test programs : + makeDicomDir.cxx + BuildUpDicomDir.cxx + TestDicomDir.cxx + * UPD Example program + PrintDicomDir.cxx * ADD DictSet methods InitTraversal() GetNextEntry() 2005-01-15 Mathieu Malaterre * Removed the Print/indent/default parameter mess. There is absolutely no - reason to have to methods, moreover with the second taking the ostream as - *SECOND* parameter. This was clearly a bad hack to get things compile. + reason to have to methods, moreover with the second taking the ostream as + *SECOND* parameter. This was clearly a bad hack to get things compile. 2005-01-15 Mathieu Malaterre * Complete rewrite of the GetMacAddress code. Now the code is *much* - smaller (no more MacOSX specific crap). A lot more POSIX oriented. - Unfortunately the main code does not work on SunOS, thus provide a specific - code for this platform only (and Win32 of course). Since this seems to be - working, change CreateUniqueUID to use GetMACAddress instead of the - problematic GctestetIPAddress + smaller (no more MacOSX specific crap). A lot more POSIX oriented. + Unfortunately the main code does not work on SunOS, thus provide a specific + code for this platform only (and Win32 of course). Since this seems to be + working, change CreateUniqueUID to use GetMACAddress instead of the + problematic GctestetIPAddress 2005-01-14 Mathieu Malaterre * Unfortunately to be able to test gdcmDirList I had to break the API @@ -120,16 +127,16 @@ 2005-01-13 Jean-Pierre Roux * ENH - Comment out Mathieu's (dangerous) Super Hack - for dealing with BIGENDIAN processors - - Move equivalent stuff to BinEntry::WriteContent - When necessary, 16 Bits Pixels are swapped in a small buffer - and then written. This avoid allocating a huge buffer, in - PixelWriteConvertor, and avoid modifying the Pixel Area. - Note : - Probabely, the same operation will have to be done when we want - to write image with Big Endian Transfert Syntax, - and we are working on Little Endian Processor - + for dealing with BIGENDIAN processors + - Move equivalent stuff to BinEntry::WriteContent + When necessary, 16 Bits Pixels are swapped in a small buffer + and then written. This avoid allocating a huge buffer, in + PixelWriteConvertor, and avoid modifying the Pixel Area. + Note : + Probabely, the same operation will have to be done when we want + to write image with Big Endian Transfert Syntax, + and we are working on Little Endian Processor + 2005-01-14 Benoit Regrain * src/gdcmDocument.[h|cxx] : comment all methods concerning a flat hash table. @@ -151,8 +158,8 @@ 2005-01-13 Jean-Pierre Roux * merging of Test/PrintDicomDir and Test/TestDicomDir - * removal of now redundant Test/PrintDicomDir - * enhancement of Example/PrintDicomDir + * removal of now redundant Test/PrintDicomDir + * enhancement of Example/PrintDicomDir 2005-01-13 Benoit Regrain * Now, python test might work on systems @@ -160,16 +167,16 @@ 2005-01-13 Jean-Pierre Roux * FIX : First entry following group 0002 was lost for - Explicit Big Endian Transfer Syntax files + Explicit Big Endian Transfer Syntax files (group and elem not swaped) - + 2005-01-12 Jean-Pierre Roux * FIX : Old quick and dirty 'optimistic' heuristic to deal with - Big Endian Transfer Syntax supposed the group following 0002 - begins always by element 0000 (element 0000 is *optional*) - To avoid further troubles, let's be pessimistic, and use - Document::HandleOutOfGroup0002() method - * FIX : comparison between GDCM_NOTLOADED and Transfer Syntax + Big Endian Transfer Syntax supposed the group following 0002 + begins always by element 0000 (element 0000 is *optional*) + To avoid further troubles, let's be pessimistic, and use + Document::HandleOutOfGroup0002() method + * FIX : comparison between GDCM_NOTLOADED and Transfer Syntax (related pb not yet solved) 2005-01-12 Benoit Regrain @@ -187,11 +194,11 @@ 2005-01-11 Jean-Pierre Roux * Replace confusing name SwitchSwapToBigEndian name by SwitchByteSwapCode * Add the Document::HandleOutOfGroup0002(uint16_t group) method - to swap the Swap Code, at parsing time, when we come out of group 0002 - and Transfer Syntax is Big Endian - We should be able to read now 'true DICOM" Big Endian coded images - * Add optional run time SetDebugOn (last param) for PrintHeader, PrintFile - * Replace the french 'Transfert Syntax' by the english 'Transfer Syntax' + to swap the Swap Code, at parsing time, when we come out of group 0002 + and Transfer Syntax is Big Endian + We should be able to read now 'true DICOM" Big Endian coded images + * Add optional run time SetDebugOn (last param) for PrintHeader, PrintFile + * Replace the french 'Transfert Syntax' by the english 'Transfer Syntax' 2005-01-10 Mathieu Malaterre * Hopefully fix the bug on MacOSX and static global initialization. @@ -203,9 +210,9 @@ 2005-01-08 Mathieu Malaterre * Fix bug on MacOSX with static initialization in a multy threaded - environment. static const string in a header file used to be ill - initialized provoquing the freeze of any tests. patch should solve this - issue. + environment. static const string in a header file used to be ill + initialized provoquing the freeze of any tests. patch should solve this + issue. 2005-01-08 Jean-Pierre Roux * According to Benoit's suggestion, and without any objection from anybody @@ -226,22 +233,22 @@ * Removal of useless and dangerous methods : GetEntryByName, GetEntryVRByName, GetDocEntryByName, SetEntryByName GetDocEntryByName, GetEntryByName, GetDictEntryByName - * Removal of usless methods : + * Removal of usless methods : Dict::PrintByName, Dict::GetDictEntryByName * Commenting out of probabely useless methods : Dict::GetDictEntryNames() Dict::GetDictEntryNamesByCategory() DictSet::GetPubDictEntryNames() - DictSet::GetPubDictEntryNamesByCategory() - * ENH : New Dicom Dictionary (with Value Multiplicity) is now used - * ENH : Use dicomTS.dic as described in 2004 version - * ENH : Removal out of the Dicom Dictionary of non dicom 'fourth' field + DictSet::GetPubDictEntryNamesByCategory() + * ENH : New Dicom Dictionary (with Value Multiplicity) is now used + * ENH : Use dicomTS.dic as described in 2004 version + * ENH : Removal out of the Dicom Dictionary of non dicom 'fourth' field Add to the Dicom Dictionary of Dicom 'Value Multiplicity' field - Add Accessors on VM (Value Multiplicity), and VM related methods + Add Accessors on VM (Value Multiplicity), and VM related methods * ADD : Add a list of 'Dicom Attribute types', as found in http://medical.nema.org/dicom/2004/04_15PU.PDF - Unused till now... - * ADD : Add dicomGroupNameAbbreviations.dic + Unused till now... + * ADD : Add dicomGroupNameAbbreviations.dic should be used to write a method to replace the former Dict::GetDictEntryNamesByCategory() @@ -278,11 +285,11 @@ 2005-01-05 Jean-Pierre Roux * ADD : Add the method Util::IsCurrentProcessorBigEndian (we'll need it for 'Explicit VR Big Endian' Transfert Syntax) - * ADD Method Document::ComputeGroupLength - * ENH : now parsing creates a Vitual DictEntry for Pixels Element, + * ADD Method Document::ComputeGroupLength + * ENH : now parsing creates a Vitual DictEntry for Pixels Element, in order to allow further VR modification by user - * REM : removal of once-called method File::WriteBase - integration of its code in formerly one-line method File::Write + * REM : removal of once-called method File::WriteBase + integration of its code in formerly one-line method File::Write 2005-01-05 Benoit Regrain * src/gdcmCommon.h : add the GDCM_UNKNOWN constant. This constant is to @@ -1234,7 +1241,7 @@ A lot of things should be OK again. It's really urgent to have a test suite that *tests*, to prevent Frog's beautifying sessions to break all the stuff - (twice, withing a fortnigh ...) + (twice, withing a fortnigh ...) 2004-06-28 Eric Boix * Test/TestWriteRead.cxx and TestReadWrite.cxx merged (because of @@ -1331,7 +1338,7 @@ ADD virtual gdcmDocEntry *GetDocEntryByNumber(guint16 group,guint16 element) = 0; ADD gdcmDocEntry *GetDocEntryByName(std::string name); ADD virtual std::string GetEntryByNumber(guint16 group,guint16 element) = 0; - ADD std::string GetEntryByName(TagName name); + ADD std::string GetEntryByName(TagName name); ADD gdcmDictEntry *NewVirtualDictEntry(guint16 group, guint16 element, std::string vr = "unkn", @@ -1369,22 +1376,22 @@ REM gdcmDocEntry *NewDocEntryByName (std::string Name); REM gdcmValEntry *NewValEntryByNumber(guint16 group, guint16 element); REM gdcmBinEntry *NewBinEntryByNumber(guint16 group, guint16 element); - - - gdcmElementSet - ADD virtual void Write(FILE *fp, FileType filetype); - + + - gdcmElementSet + ADD virtual void Write(FILE *fp, FileType filetype); + - gdcmSeqEntry - ADD virtual void Write(FILE *fp,FileType filetype); + ADD virtual void Write(FILE *fp,FileType filetype); - gdcmSQItem ADD virtual void Write(FILE *fp, FileType filetype); - ADD virtual std::string GetEntryByNumber(guint16 group, guint16 element); + ADD virtual std::string GetEntryByNumber(guint16 group, guint16 element); REM std::string GetEntryByNumber(guint16 group, guint16 element); REM std::string GetEntryByName(TagName name); - gdcmValEntry - ADD virtual void gdcmValEntry::Write(FILE *fp, FileType filetype); - + ADD virtual void gdcmValEntry::Write(FILE *fp, FileType filetype); + 2004-06-21 Eric Boix * Test/TestWriteSimple.cxx: fix to gdcmHeader-gdcmHeaderHelper revamping. The default constructor invoked by the line @@ -1494,23 +1501,23 @@ - Specific clean up of Parse7FE0() (umproperly named actually). * gdcmPython/testSuite.py: an odd temporary kludge introduced. -2004-06-14 Jean-Pierre Roux +2004-06-14 Jean-Pierre Roux * gdcmSeqEntry.cxx - - fix the display of Sequence Delimitor (SQDepthLevel pb) - - fix the display of SQItem ordinal number + - fix the display of Sequence Delimitor (SQDepthLevel pb) + - fix the display of SQItem ordinal number - add the GetSQItemByOrdinalNumber method - - remove some useless never written private methods - + - remove some useless never written private methods + 2004-06-14 Jean-Pierre Roux * gdcmBinEntry.cxx - adding a constructor taking a gdcmDocEntry as an input param - - ReplaceOrCreateByNumber now returns : - a gdcmBinEntry * if a Binary (void *) value is passed as a param - a gdcmValEntry * if a string value is passed as a param + - ReplaceOrCreateByNumber now returns : + a gdcmBinEntry * if a Binary (void *) value is passed as a param + a gdcmValEntry * if a string value is passed as a param * dcmDocument.cxx - SetEntryByNumber now allows setting gdcmValEntry or gdcmBinEntry, - according to the param type (no longer sets a gdcmDocEntry) - - GetValEntryByNumber, GetBinEntryByNumber added + according to the param type (no longer sets a gdcmDocEntry) + - GetValEntryByNumber, GetBinEntryByNumber added - NewValEntryByNumber and NewBinEntryByNumber added * gdcmFile.cxx - Pixel Data are now linked to the (7fe0,0010) elements, after reading @@ -1518,10 +1525,10 @@ - GetSQItemNumber and SetSQItemNumber added, to provide a (relative) Item identier inside a given Sequence \warning : some pb remaining around this number - will be solved asap - - AddEntry now takes the Item Number as a param + will be solved asap + - AddEntry now takes the Item Number as a param * gdcmValEntry.cxx - - adding a constructor taking a gdcmDocEntry as an input param + - adding a constructor taking a gdcmDocEntry as an input param 2004-06-14 Eric Boix * Memory leak hunt with the following command: @@ -1698,7 +1705,7 @@ SeQuence indented printing of Dicom Header. * ENH merge methods gdcmParser::Parse and gdcmParser::LoadHeaderEntries into the single gdcmParser::LoadHeaderEntries for efficiency purpose. - Computation of SQDepthLevel is now part of gdcmHeader constructor + Computation of SQDepthLevel is now part of gdcmHeader constructor * ENH add self defined param 'new' to PrintHeader to 'show' the SeQuence tree-like structure of a Dicom Header. * FIX Test code cleaning @@ -1719,9 +1726,9 @@ * ENH Minor changes to the Print() methods. * ADD gdcmParser::PrintEntryNiceSQ() to allow SQ-indented Header printing. Example given with : - > PrintHeader fileName 2 new + > PrintHeader fileName 2 new (SQ based tree-like structure still to be done for the Header ...) - + 2004-04-22 Mathieu Malaterre * ENH: Some cosmetic clean up for compilation with -W -Wall -Werror 1. I have added some unsigned where needed @@ -1742,17 +1749,17 @@ * FIX gdcmHeaderHelper::GetXSpacing when a single value is found (bug ?), xpacing is now defaulted to yspacing - + 2004-04-19 Jean-Pierre Roux * ADD gdcmData/Wrist.pap (PAPYRUS 3.0 -single frame-) for checking purpose * ENH add parameters : bool exception_on_error = false, bool enable_sequences = false, - bool ignore_shadow = false + bool ignore_shadow = false to the gdcmFile constructors to be full gdcmParser compliant * FIX vtk/vtkGdcmReader.cxx now uses enable_sequences = true in gdcmFile to allow reading of PAPYRUS 3.0 files - + 2004-04-06 Jean-Pierre Roux * ADD gdcmData/E00001S03I0015.dcm for SQ checking purpose @@ -1760,7 +1767,7 @@ * ADD : Test/checksequence.sh, for a general recap on SQ pb * FIX : gdcmParser::WriteEntryTagVRLength emprovement of special treatement for Philips spurious Tag fffe|0000 while rewritting Dicom files - + 2004-03-30 Jean-Pierre Roux * FIX gdcmParser::ReplaceOrCreateByNumber shouldn't seg fault any more for ACR file, written out as DICOM files (hope so...) @@ -1786,7 +1793,7 @@ from gdcmParser::WriteEntry to gdcmParser::WriteEntries * FIX : gdcmObject::ResetBoundaries now stops properly when end-of-list is reached - : gdcmVersion modified (as Benoit Regrain asked) + : gdcmVersion modified (as Benoit Regrain asked) 2004-03-29 Eric Boix * src/gdcmParser.cxx: removal of all TAB character. Indentation fixed. @@ -1851,14 +1858,14 @@ add gdcmDicomDirPatient:NewStudy add gdcmDicomDirStudy:NewSerie add gdcmDicomDirSerie:NewImage - to allow making gdcDicomDir object. + to allow making gdcDicomDir object. * ADD PrintDicomDir executable that uses gdcmDicomDir tree-like structure (as opposite to the gdcmHeader chained list) 2004-02-11 Benoit Regrain * FIX : memory leaks and the set of ArgDelete methods in gdcmDicomDir when using from python - + 2004-02-10 Benoit Regrain * FIX : bug fix in the gdcmDirList for the recursivity in directories * FIX : in gdcmDicomDir when the directory is empty @@ -2077,19 +2084,19 @@ not longer on the TagElValueHT tagHt member * ENH : PrintPubElVal shows (temporarily) both results, with the tagHt member and the listElem member. - (it's easier to 'see' the problems when using Printheader) + (it's easier to 'see' the problems when using Printheader) * FIX : old private member LgrElem is now splitted into ReadLength : Length actually found on disk (updated only - if bug fixing is necessary), for internal - use only - UsableLength : Updated by FixFoundLength, to fix a bug - or to allow Parser going on. - Will allow to re-write a kosher header when a SeQuence - with a length (not 0000) is found + if bug fixing is necessary), for internal + use only + UsableLength : Updated by FixFoundLength, to fix a bug + or to allow Parser going on. + Will allow to re-write a kosher header when a SeQuence + with a length (not 0000) is found Warning : gdcmFile::Write still uses the TagHt (not ListElem) - because gdcmElValSet::Add does not update ListElem - (to be written) + because gdcmElValSet::Add does not update ListElem + (to be written) 2003-11-07 Jean-Pierre Roux * FIX misstyping in Transfert Syntax name table @@ -2149,7 +2156,7 @@ 2003-10-29 Mathieu Malaterre * ENH: Can be used like this '$vtkgdcmViewer *.dcm' with *.dcm - being coherents dicom files. + being coherents dicom files. 2003-10-29 Mathieu Malaterre * FIX: DOH ! Forgot about windo$e users, they couldn't read lossless jpeg, @@ -2354,7 +2361,7 @@ - deals with YcBcR (YBR_FULL) files - deals with YBR_YBR_FULL_422 files (they work as RBG files ?!?) WARNING : nothing was checked for YBR_PARTIAL_422, YBR_ICT, - YBR_RCT files. + YBR_RCT files. (no sample found :-( 2003-10-02 Mathieu Malaterre diff --git a/Example/TestChangeHeader.cxx b/Example/TestChangeHeader.cxx index c2d4b4d9..a35f1432 100644 --- a/Example/TestChangeHeader.cxx +++ b/Example/TestChangeHeader.cxx @@ -3,8 +3,8 @@ Program: gdcm Module: $RCSfile: TestChangeHeader.cxx,v $ Language: C++ - Date: $Date: 2005/01/21 11:40:52 $ - Version: $Revision: 1.8 $ + Date: $Date: 2005/01/24 14:14:08 $ + Version: $Revision: 1.9 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -37,7 +37,7 @@ int main(int argc, char* argv[]) // 0018 1310 US ACQ Acquisition Matrix gdcm::DictEntry *dictEntry = - f2->GetFile()->GetPubDict()->GetDictEntry( 0x0018, 1310 ); + f2->GetFile()->GetPubDict()->GetEntry( 0x0018, 1310 ); std::cerr << std::hex << dictEntry->GetGroup() << "," << dictEntry->GetElement() << std::endl; std::string matrix = f2->GetFile()->GetEntry(0x0018, 0x1310); diff --git a/Testing/CMakeLists.txt b/Testing/CMakeLists.txt index df64ba0e..fb86ee41 100644 --- a/Testing/CMakeLists.txt +++ b/Testing/CMakeLists.txt @@ -12,6 +12,7 @@ SET(TEST_SOURCES TestHash.cxx TestTS.cxx TestVR.cxx + TestDicomDirElement.cxx TestUtil.cxx TestDicomString.cxx TestDict.cxx diff --git a/Testing/TestDicomDirElement.cxx b/Testing/TestDicomDirElement.cxx new file mode 100644 index 00000000..82e3f66d --- /dev/null +++ b/Testing/TestDicomDirElement.cxx @@ -0,0 +1,28 @@ +/*========================================================================= + + Program: gdcm + Module: $RCSfile: TestDicomDirElement.cxx,v $ + Language: C++ + Date: $Date: 2005/01/24 14:14:09 $ + Version: $Revision: 1.1 $ + + Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de + l'Image). All rights reserved. See Doc/License.txt or + http://www.creatis.insa-lyon.fr/Public/Gdcm/License.html for details. + + This software is distributed WITHOUT ANY WARRANTY; without even + the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + PURPOSE. See the above copyright notices for more information. + +=========================================================================*/ +#include "gdcmDicomDirElement.h" + +#include + +int TestDicomDirElement(int , char *[]) +{ + gdcm::DicomDirElement ddElt; + ddElt.Print( std::cout ); + + return 0; +} diff --git a/Testing/TestDict.cxx b/Testing/TestDict.cxx index 6d5b4e20..db151958 100644 --- a/Testing/TestDict.cxx +++ b/Testing/TestDict.cxx @@ -3,8 +3,8 @@ Program: gdcm Module: $RCSfile: TestDict.cxx,v $ Language: C++ - Date: $Date: 2005/01/18 07:56:21 $ - Version: $Revision: 1.4 $ + Date: $Date: 2005/01/24 14:14:09 $ + Version: $Revision: 1.5 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -65,7 +65,7 @@ int TestDict(int , char* []) const int ENTRY_GR = 0x10; const int ENTRY_EL = 0x20; std::string key=gdcm::DictEntry::TranslateToKey(ENTRY_GR,ENTRY_EL); - gdcm::DictEntry *entry=pubDict->GetDictEntry(ENTRY_GR,ENTRY_EL); + gdcm::DictEntry *entry=pubDict->GetEntry(ENTRY_GR,ENTRY_EL); if(!entry) { std::cout<<"The DictEntry hasn't be found... Failed\n"; @@ -79,7 +79,9 @@ int TestDict(int , char* []) entry=pubDict->GetFirstEntry(); while(entry) { - entry->Print(); + std::cout << entry->GetGroup() << "|" << entry->GetElement() + << " [" << entry->GetVR() << "] - M" << entry->GetVM() + << " : " << entry->GetName() << " ( " << entry->GetKey() << ")\n"; entry=pubDict->GetNextEntry(); } diff --git a/gdcmPython/demo/PrintDicomDir.py.in b/gdcmPython/demo/PrintDicomDir.py.in index 1e97623e..703ee20e 100644 --- a/gdcmPython/demo/PrintDicomDir.py.in +++ b/gdcmPython/demo/PrintDicomDir.py.in @@ -21,7 +21,7 @@ try: except IndexError: printLevel = 1 -### Build the header element list +### Build the DicomDir element list dicomdir = gdcm.DicomDir(fileName) if not dicomdir.IsReadable(): print diff --git a/gdcmPython/demo/PrintDict.py.in b/gdcmPython/demo/PrintDict.py.in index 03ac7497..82537d05 100644 --- a/gdcmPython/demo/PrintDict.py.in +++ b/gdcmPython/demo/PrintDict.py.in @@ -14,7 +14,7 @@ print "#####################################################################" # Print the DictSet dicts=gdcm.Global.GetDicts() if(not isinstance(dicts,gdcm.DictSet)): - raise RuntimeError,"The DictSet hasn't the good type (%s)" % type(dicts) + raise RuntimeError,"The DictSet hasn't the good type (%s)" % type(dicts) print "DictSet content :" dicts.Print() @@ -22,7 +22,7 @@ print "#####################################################################" # Print the Dict (public) pubDict=dicts.GetDefaultPubDict() if(not isinstance(pubDict,gdcm.Dict)): - raise RuntimeError,"The public Dict hasn't the good type (%s)" % type(dict) + raise RuntimeError,"The public Dict hasn't the good type (%s)" % type(dict) print "Public Dict content :" pubDict.Print() @@ -30,10 +30,10 @@ print "#####################################################################" # Print the DictEntry (0010|0020) ENTRY_GR = 0x10 ENTRY_EL = 0x20 -entry=pubDict.GetDictEntry(ENTRY_GR,ENTRY_EL) +entry=pubDict.GetEntry(ENTRY_GR,ENTRY_EL) if(not isinstance(entry,gdcm.DictEntry)): - raise RuntimeError,"The entry (%04x|%04x) hasn't the good type (%s)" % \ - (ENTRY_GR,ENTRY_EL,type(entry)) + raise RuntimeError,"The entry (%04x|%04x) hasn't the good type (%s)" % \ + (ENTRY_GR,ENTRY_EL,type(entry)) print "Entry (%04x|%04x) content :" % (ENTRY_GR,ENTRY_EL) entry.Print() @@ -42,6 +42,8 @@ print "#####################################################################" print "dict content :" entry=pubDict.GetFirstEntry() while(entry): - entry.Print() - entry=pubDict.GetNextEntry() + print "%4x|%4x [%s] - M%s : %s (%s)" %\ + (entry.GetGroup(),entry.GetElement(),entry.GetVR(),entry.GetVM(), + entry.GetName(),entry.GetKey()) + entry=pubDict.GetNextEntry() diff --git a/gdcmPython/demo/PrintHeader.py.in b/gdcmPython/demo/PrintHeader.py.in index 74d4b4ee..a0539c7f 100644 --- a/gdcmPython/demo/PrintHeader.py.in +++ b/gdcmPython/demo/PrintHeader.py.in @@ -21,10 +21,10 @@ try: except IndexError: printLevel = 1 -### Build the header element list +### Build the file element list print fileName, type(fileName) -header = gdcm.Header(fileName) -if not header.IsReadable(): +file = gdcm.File(fileName) +if not file.IsReadable(): raise RuntimeError,"The '%s' file is not readable with gdcm." % fileName print "##############################################################" @@ -32,10 +32,10 @@ print "### Display all the elements and their respective values" print "## found in the ", fileName, " file." print "##############################################################" -val=header.GetFirstEntry() +val=file.GetFirstEntry() while(val): - val.Print() - print "" - val=header.GetNextEntry() + val.Print() + print "" + val=file.GetNextEntry() val=None diff --git a/gdcmPython/gdcm.i b/gdcmPython/gdcm.i index cb5aaeac..98298ca0 100644 --- a/gdcmPython/gdcm.i +++ b/gdcmPython/gdcm.i @@ -1,5 +1,7 @@ %module gdcm %{ +#include + #include "gdcmCommon.h" #include "gdcmBase.h" #include "gdcmDict.h" @@ -75,6 +77,17 @@ using namespace gdcm; /////////////////////// typemap section //////////////////////////////////// +//////////////////////////////////////////////// +// Redefine all types used +typedef char int8_t; +typedef unsigned char uint8_t; +typedef short int16_t; +typedef unsigned short uint16_t; +typedef int int32_t; +typedef unsigned int uint32_t; +typedef long long int64_t; +typedef unsigned long long uint64_t; + //////////////////////////////////////////////// // Convert a DocEntry * to the real derived class %typemap(out) gdcm::DocEntry * @@ -99,139 +112,139 @@ using namespace gdcm; //////////////////////////////////////////////// // Convert an STL list<> to a python native list -%typemap(out) std::list * -{ - PyObject *newItem = (PyObject *)0; - PyObject *newList = PyList_New(0); // The result of this typemap - - for (std::list::iterator strIt = ($1)->begin(); - strIt != ($1)->end(); - ++strIt) - { - newItem = PyString_FromString(strIt->c_str()); - PyList_Append( newList, newItem); - } - $result = newList; -} +//%typemap(out) std::list * +//{ +// PyObject *newItem = (PyObject *)0; +// PyObject *newList = PyList_New(0); // The result of this typemap +// +// for (std::list::iterator strIt = ($1)->begin(); +// strIt != ($1)->end(); +// ++strIt) +// { +// newItem = PyString_FromString(strIt->c_str()); +// PyList_Append( newList, newItem); +// } +// $result = newList; +//} ////////////////////////////////////////////////////////////////// // Convert an STL map<> (hash table) to a python native dictionary -%typemap(out) std::map > * -{ - PyObject *newDict = PyDict_New(); // The result of this typemap - PyObject *newKey = (PyObject *)0; - PyObject *newVal = (PyObject *)0; - - for (std::map >::iterator tag = ($1)->begin(); - tag != ($1)->end(); ++tag) - { - std::string first = tag->first; - // Do not publish entries whose keys is made of spaces - if (first.length() == 0) - continue; - newKey = PyString_FromString(first.c_str()); - - PyObject *newList = PyList_New(0); - for (std::list::iterator itemIt = tag->second.begin(); - itemIt != tag->second.end(); - ++itemIt) - { - newVal = PyString_FromString(itemIt->c_str()); - PyList_Append( newList, newVal); - } - PyDict_SetItem( newDict, newKey, newList); - } - $result = newDict; -} +//%typemap(out) std::map > * +//{ +// PyObject *newDict = PyDict_New(); // The result of this typemap +// PyObject *newKey = (PyObject *)0; +// PyObject *newVal = (PyObject *)0; +// +// for (std::map >::iterator tag = ($1)->begin(); +// tag != ($1)->end(); ++tag) +// { +// std::string first = tag->first; +// // Do not publish entries whose keys is made of spaces +// if (first.length() == 0) +// continue; +// newKey = PyString_FromString(first.c_str()); +// +// PyObject *newList = PyList_New(0); +// for (std::list::iterator itemIt = tag->second.begin(); +// itemIt != tag->second.end(); +// ++itemIt) +// { +// newVal = PyString_FromString(itemIt->c_str()); +// PyList_Append( newList, newVal); +// } +// PyDict_SetItem( newDict, newKey, newList); +// } +// $result = newDict; +//} ///////////////////////////////////////////////////////// // Convert a c++ hash table in a python native dictionary -%typemap(out) gdcm::TagDocEntryHT & -{ - PyObject *newDict = PyDict_New(); // The result of this typemap - std::string rawName; // Element name as gotten from gdcm - PyObject *newKey = (PyObject *)0; // Associated name as python object - std::string rawValue; // Element value as gotten from gdcm - PyObject *newVal = (PyObject *)0; // Associated value as python object - - for (gdcm::TagDocEntryHT::iterator tag = $1->begin(); tag != $1->end(); ++tag) - { - // The element name shall be the key: - rawName = tag->second->GetName(); - // gdcm unrecognized (including not loaded because their size exceeds - // the user specified treshold) elements are exported with their - // TagKey as key. - if (rawName == "Unknown") - rawName = tag->second->GetKey(); - newKey = PyString_FromString(rawName.c_str()); - - // Element values are striped from leading/trailing spaces - gdcm::ValEntry *valEntryPtr = dynamic_cast< gdcm::ValEntry* >(tag->second); - if ( valEntryPtr ) - { - rawValue = valEntryPtr->GetValue(); - } - else - continue; - newVal = PyString_FromString(rawValue.c_str()); - PyDict_SetItem( newDict, newKey, newVal); - } - $result = newDict; -} +//%typemap(out) gdcm::TagDocEntryHT & +//{ +// PyObject *newDict = PyDict_New(); // The result of this typemap +// std::string rawName; // Element name as gotten from gdcm +// PyObject *newKey = (PyObject *)0; // Associated name as python object +// std::string rawValue; // Element value as gotten from gdcm +// PyObject *newVal = (PyObject *)0; // Associated value as python object +// +// for (gdcm::TagDocEntryHT::iterator tag = $1->begin(); tag != $1->end(); ++tag) +// { +// // The element name shall be the key: +// rawName = tag->second->GetName(); +// // gdcm unrecognized (including not loaded because their size exceeds +// // the user specified treshold) elements are exported with their +// // TagKey as key. +// if (rawName == "Unknown") +// rawName = tag->second->GetKey(); +// newKey = PyString_FromString(rawName.c_str()); +// +// // Element values are striped from leading/trailing spaces +// gdcm::ValEntry *valEntryPtr = dynamic_cast< gdcm::ValEntry* >(tag->second); +// if ( valEntryPtr ) +// { +// rawValue = valEntryPtr->GetValue(); +// } +// else +// continue; +// newVal = PyString_FromString(rawValue.c_str()); +// PyDict_SetItem( newDict, newKey, newVal); +// } +// $result = newDict; +//} ///////////////////////////////////// -%typemap(out) ListDicomDirPatient & -{ - PyObject *newItem = (PyObject *)0; - $result = PyList_New(0); // The result of this typemap - - for (std::list::iterator newIt = ($1)->begin(); - newIt != ($1)->end(); ++newIt) - { - newItem = SWIG_NewPointerObj(*newIt,SWIGTYPE_p_DicomDirPatient,0); - PyList_Append($result, newItem); - } -} - -%typemap(out) ListDicomDirStudy & -{ - PyObject *newItem = (PyObject *)0; - $result = PyList_New(0); // The result of this typemap - - for (std::list::iterator newIt = ($1)->begin(); - newIt != ($1)->end(); ++newIt) - { - newItem = SWIG_NewPointerObj(*newIt,SWIGTYPE_p_DicomDirStudy,0); - PyList_Append($result, newItem); - } -} - -%typemap(out) ListDicomDirSerie & -{ - PyObject* newItem = (PyObject*)0; - $result = PyList_New(0); // The result of this typemap - - for (std::list::iterator newIt = ($1)->begin(); - newIt != ($1)->end(); ++newIt) - { - newItem = SWIG_NewPointerObj(*newIt,SWIGTYPE_p_DicomDirSerie,0); - PyList_Append($result, newItem); - } -} - -%typemap(out) ListDicomDirImage & -{ - PyObject* newItem = (PyObject*)0; - $result = PyList_New(0); // The result of this typemap - - for (std::list::iterator newIt = ($1)->begin(); - newIt != ($1)->end(); ++newIt) - { - newItem = SWIG_NewPointerObj(*newIt,SWIGTYPE_p_DicomDirImage,0); - PyList_Append($result, newItem); - } -} +//%typemap(out) ListDicomDirPatient & +//{ +// PyObject *newItem = (PyObject *)0; +// $result = PyList_New(0); // The result of this typemap +// +// for (std::list::iterator newIt = ($1)->begin(); +// newIt != ($1)->end(); ++newIt) +// { +// newItem = SWIG_NewPointerObj(*newIt,SWIGTYPE_p_DicomDirPatient,0); +// PyList_Append($result, newItem); +// } +//} + +//%typemap(out) ListDicomDirStudy & +//{ +// PyObject *newItem = (PyObject *)0; +// $result = PyList_New(0); // The result of this typemap +// +// for (std::list::iterator newIt = ($1)->begin(); +// newIt != ($1)->end(); ++newIt) +// { +// newItem = SWIG_NewPointerObj(*newIt,SWIGTYPE_p_DicomDirStudy,0); +// PyList_Append($result, newItem); +// } +//} + +//%typemap(out) ListDicomDirSerie & +//{ +// PyObject* newItem = (PyObject*)0; +// $result = PyList_New(0); // The result of this typemap +// +// for (std::list::iterator newIt = ($1)->begin(); +// newIt != ($1)->end(); ++newIt) +// { +// newItem = SWIG_NewPointerObj(*newIt,SWIGTYPE_p_DicomDirSerie,0); +// PyList_Append($result, newItem); +// } +//} + +//%typemap(out) ListDicomDirImage & +//{ +// PyObject* newItem = (PyObject*)0; +// $result = PyList_New(0); // The result of this typemap +// +// for (std::list::iterator newIt = ($1)->begin(); +// newIt != ($1)->end(); ++newIt) +// { +// newItem = SWIG_NewPointerObj(*newIt,SWIGTYPE_p_DicomDirImage,0); +// PyList_Append($result, newItem); +// } +//} //////////////////////////////////////////////////////////////////////////// // Multi-argument typemap designed for wrapping the progress related methods @@ -285,6 +298,26 @@ using namespace gdcm; $1 = new std::string( PyString_AsString( $input ) ); } +//////////////////// gdcm.TagName versus Python str ////////////////////// +%typemap(out) gdcm::TagName, const gdcm::TagName & +{ + $result = PyString_FromString(($1)->c_str()); +} + +// Convertion of incoming Python str to STL string +%typemap(python, in) const gdcm::TagName, gdcm::TagName +{ + $1 = PyString_AsString($input); +} + +// Same convertion as above but references (since swig converts C++ +// refererences to pointers) +%typemap(python, in) gdcm::TagName const & +{ + $1 = new std::string( PyString_AsString( $input ) ); +} + + //////////////////////////////////////////////////////////////////////////// // Because overloading and %rename don't work together (see below Note 1) // we need to ignore some methods (e.g. the overloaded default constructor). @@ -310,9 +343,9 @@ using namespace gdcm; %include "gdcmBase.h" %include "gdcmDictEntry.h" %include "gdcmDict.h" +%include "gdcmDictSet.h" %include "gdcmDocEntrySet.h" %include "gdcmElementSet.h" -%include "gdcmDictSet.h" %include "gdcmSQItem.h" %include "gdcmDicomDirElement.h" %include "gdcmDicomDirObject.h" diff --git a/src/gdcm.h b/src/gdcm.h index e572d605..af4b6e40 100644 --- a/src/gdcm.h +++ b/src/gdcm.h @@ -3,8 +3,8 @@ Program: gdcm Module: $RCSfile: gdcm.h,v $ Language: C++ - Date: $Date: 2005/01/21 11:40:55 $ - Version: $Revision: 1.51 $ + Date: $Date: 2005/01/24 14:14:10 $ + Version: $Revision: 1.52 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -22,7 +22,6 @@ // General purpose include file. This file should be included by // external users of gdcm. It exposes the necessary API. -#include "gdcmException.h" #include "gdcmCommon.h" #include "gdcmDictEntry.h" diff --git a/src/gdcmDefaultDicts.cxx.in b/src/gdcmDefaultDicts.cxx.in index 58649c6e..78873a29 100644 --- a/src/gdcmDefaultDicts.cxx.in +++ b/src/gdcmDefaultDicts.cxx.in @@ -3,8 +3,8 @@ Program: gdcm Module: $RCSfile: gdcmDefaultDicts.cxx.in,v $ Language: C++ - Date: $Date: 2005/01/20 17:15:54 $ - Version: $Revision: 1.6 $ + Date: $Date: 2005/01/24 14:14:10 $ + Version: $Revision: 1.7 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -48,7 +48,7 @@ void FillDefaultDataDict(Dict *d) while( n.name != 0 ) { const DictEntry e( n.group, n.element, n.vr, n.vm, n.name); - d->AddNewEntry( e ); + d->AddEntry( e ); n = datadir[++i]; } } @@ -100,7 +100,7 @@ void FillDefaultDIRDict(DicomDirElement *dde) elem.Group = e.group; elem.Elem = e.element; elem.Value = e.value; - dde->AddNewEntry( type, elem); + dde->AddEntry( type, elem); e = dataElement[++i]; } } diff --git a/src/gdcmDicomDir.cxx b/src/gdcmDicomDir.cxx index e9dfaa9b..568c07b7 100644 --- a/src/gdcmDicomDir.cxx +++ b/src/gdcmDicomDir.cxx @@ -3,8 +3,8 @@ Program: gdcm Module: $RCSfile: gdcmDicomDir.cxx,v $ Language: C++ - Date: $Date: 2005/01/23 10:12:33 $ - Version: $Revision: 1.114 $ + Date: $Date: 2005/01/24 14:14:10 $ + Version: $Revision: 1.115 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -596,7 +596,7 @@ void DicomDir::SetElement(std::string const &path, DicomDirType type, { tmpGr = it->Group; tmpEl = it->Elem; - dictEntry = GetPubDict()->GetDictEntry(tmpGr, tmpEl); + dictEntry = GetPubDict()->GetEntry(tmpGr, tmpEl); entry = new ValEntry( dictEntry ); // Be sure it's never a BinEntry ! diff --git a/src/gdcmDicomDirElement.cxx b/src/gdcmDicomDirElement.cxx index 47e0750e..54cbce0b 100644 --- a/src/gdcmDicomDirElement.cxx +++ b/src/gdcmDicomDirElement.cxx @@ -3,8 +3,8 @@ Program: gdcm Module: $RCSfile: gdcmDicomDirElement.cxx,v $ Language: C++ - Date: $Date: 2005/01/20 17:15:54 $ - Version: $Revision: 1.30 $ + Date: $Date: 2005/01/24 14:14:10 $ + Version: $Revision: 1.31 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -84,7 +84,7 @@ DicomDirElement::DicomDirElement() from.getline(buff, 1024, '"'); elem.Value = buff; - AddNewEntry(type, elem); + AddEntry(type, elem); } from.getline(buff, 1024, '\n'); } @@ -159,12 +159,11 @@ void DicomDirElement::Print(std::ostream &os) //----------------------------------------------------------------------------- // Public /** - * \brief AddNewEntry + * \brief Add an entry * @param type type * @param elem elem */ -bool DicomDirElement::AddNewEntry(DicomDirType type, - Element const &elem) +bool DicomDirElement::AddEntry(DicomDirType type, Element const &elem) { switch( type ) { diff --git a/src/gdcmDicomDirElement.h b/src/gdcmDicomDirElement.h index 2e0b9c41..33b3a34f 100644 --- a/src/gdcmDicomDirElement.h +++ b/src/gdcmDicomDirElement.h @@ -3,8 +3,8 @@ Program: gdcm Module: $RCSfile: gdcmDicomDirElement.h,v $ Language: C++ - Date: $Date: 2005/01/20 17:15:54 $ - Version: $Revision: 1.21 $ + Date: $Date: 2005/01/24 14:14:11 $ + Version: $Revision: 1.22 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -102,7 +102,7 @@ public: { return DicomDirImageList; }; // Public method to add an element - bool AddNewEntry(DicomDirType type, Element const &elem); + bool AddEntry(DicomDirType type, Element const &elem); private: /// Elements chained list, related to the MetaElements of DICOMDIR diff --git a/src/gdcmDicomDirObject.cxx b/src/gdcmDicomDirObject.cxx index a06a2810..2495ac01 100644 --- a/src/gdcmDicomDirObject.cxx +++ b/src/gdcmDicomDirObject.cxx @@ -3,8 +3,8 @@ Program: gdcm Module: $RCSfile: gdcmDicomDirObject.cxx,v $ Language: C++ - Date: $Date: 2005/01/20 16:16:42 $ - Version: $Revision: 1.17 $ + Date: $Date: 2005/01/24 14:14:11 $ + Version: $Revision: 1.18 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -67,7 +67,7 @@ void DicomDirObject::FillObject(ListDicomDirMetaElem const &elemList) { tmpGr = it->Group; tmpEl = it->Elem; - dictEntry = Global::GetDicts()->GetDefaultPubDict()->GetDictEntry(tmpGr,tmpEl); + dictEntry = Global::GetDicts()->GetDefaultPubDict()->GetEntry(tmpGr,tmpEl); entry = new ValEntry(dictEntry); entry->SetOffset(0); // just to avoid further missprinting entry->SetValue(it->Value); diff --git a/src/gdcmDict.cxx b/src/gdcmDict.cxx index 162b79c0..6287e9aa 100644 --- a/src/gdcmDict.cxx +++ b/src/gdcmDict.cxx @@ -3,8 +3,8 @@ Program: gdcm Module: $RCSfile: gdcmDict.cxx,v $ Language: C++ - Date: $Date: 2005/01/23 10:12:33 $ - Version: $Revision: 1.69 $ + Date: $Date: 2005/01/24 14:14:11 $ + Version: $Revision: 1.70 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -69,7 +69,7 @@ Dict::Dict(std::string const &filename) std::getline(from, name); const DictEntry newEntry(group, element, vr, vm, name); - AddNewEntry(newEntry); + AddEntry(newEntry); } Filename = filename; @@ -129,7 +129,7 @@ void Dict::ClearEntry() * @param newEntry entry to add * @return false if Dicom Element already exists */ -bool Dict::AddNewEntry(DictEntry const &newEntry) +bool Dict::AddEntry(DictEntry const &newEntry) { const TagKey &key = newEntry.GetKey(); @@ -200,7 +200,7 @@ bool Dict::RemoveEntry (uint16_t group, uint16_t elem) * @param elem element of the entry to be found * @return the corresponding dictionary entry when existing, NULL otherwise */ -DictEntry *Dict::GetDictEntry(uint16_t group, uint16_t elem) +DictEntry *Dict::GetEntry(uint16_t group, uint16_t elem) { TagKey key = DictEntry::TranslateToKey(group, elem); TagKeyHT::iterator it = KeyHt.find(key); @@ -211,65 +211,6 @@ DictEntry *Dict::GetDictEntry(uint16_t group, uint16_t elem) return &(it->second); } -/** - * \brief Consider all the entries of the public dicom dictionary. - * Build all list of all the tag names of all those entries. - * \sa DictSet::GetPubDictTagNamesByCategory - * @return A list of all entries of the public dicom dictionary. - */ - - - // Probabely useless - - -//EntryNamesList *Dict::GetDictEntryNames() -//{ -// EntryNamesList *result = new EntryNamesList; -// for (TagKeyHT::iterator tag = KeyHt.begin(); tag != KeyHt.end(); ++tag) -// { -// result->push_back( tag->second.GetName() ); -// } -// return result; -//} - -/** - * \brief Consider all the entries of the public dicom dictionary. - * Build an hashtable whose keys are the names of the groups - * (fourth field in each line of dictionary) and whose corresponding - * values are lists of all the dictionary entries among that - * group. Note that apparently the Dicom standard doesn't explicitely - * define a name (as a string) for each group. - * A typical usage of this method would be to enable a dynamic - * configuration of a Dicom file browser: the admin/user can - * select in the interface which Dicom tags should be displayed. - * \warning Dicom *doesn't* define any name for any 'categorie' - * (the dictionary fourth field was formerly NIH defined - * - and no longer he is- - * and will be removed when Dicom provides us a text file - * with the 'official' Dictionary, that would be more friendly - * than asking us to perform a line by line check of the dictionary - * at the beginning of each year to -try to- guess the changes) - * Therefore : please NEVER use that fourth field :-( - * - * @return An hashtable: whose keys are the names of the groups and whose - * corresponding values are lists of all the dictionary entries - * among that group. - */ - - // Probabely useless - -//EntryNamesByCatMap *Dict::GetDictEntryNamesByCategory() -//{ -// EntryNamesByCatMap *result = new EntryNamesByCatMap; -// -// for (TagKeyHT::iterator tag = KeyHt.begin(); tag != KeyHt.end(); ++tag) -// { -// (*result)[tag->second.GetFourth()].push_back(tag->second.GetName()); -// } -// -// return result; -//} - /** * \brief Get the first entry while visiting the Dict entries * \return The first DicEntry if found, otherwhise NULL diff --git a/src/gdcmDict.h b/src/gdcmDict.h index 8f9f0bb7..d42548c0 100644 --- a/src/gdcmDict.h +++ b/src/gdcmDict.h @@ -3,8 +3,8 @@ Program: gdcm Module: $RCSfile: gdcmDict.h,v $ Language: C++ - Date: $Date: 2005/01/20 11:39:49 $ - Version: $Revision: 1.34 $ + Date: $Date: 2005/01/24 14:14:11 $ + Version: $Revision: 1.35 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -32,9 +32,9 @@ namespace gdcm //----------------------------------------------------------------------------- typedef std::string DictKey; typedef std::map TagKeyHT; -typedef std::list EntryNamesList; -typedef std::map > EntryNamesByCatMap; +//typedef std::list EntryNamesList; +//typedef std::map > EntryNamesByCatMap; //----------------------------------------------------------------------------- /** * \ingroup Dict @@ -58,16 +58,13 @@ public: // Entries void ClearEntry (); - bool AddNewEntry (DictEntry const &newEntry); + bool AddEntry (DictEntry const &newEntry); bool ReplaceEntry(DictEntry const &newEntry); bool RemoveEntry (TagKey const &key); bool RemoveEntry (uint16_t group, uint16_t elem); // Tag - DictEntry *GetDictEntry(uint16_t group, uint16_t elem); - - // EntryNamesList *GetDictEntryNames(); - // EntryNamesByCatMap *GetDictEntryNamesByCategory(); + DictEntry *GetEntry(uint16_t group, uint16_t elem); DictEntry *GetFirstEntry(); DictEntry *GetNextEntry(); diff --git a/src/gdcmDocEntrySet.cxx b/src/gdcmDocEntrySet.cxx index 141813d3..f9c74ec0 100644 --- a/src/gdcmDocEntrySet.cxx +++ b/src/gdcmDocEntrySet.cxx @@ -3,8 +3,8 @@ Program: gdcm Module: $RCSfile: gdcmDocEntrySet.cxx,v $ Language: C++ - Date: $Date: 2005/01/23 10:12:33 $ - Version: $Revision: 1.43 $ + Date: $Date: 2005/01/24 14:14:11 $ + Version: $Revision: 1.44 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -21,7 +21,6 @@ #include "gdcmCommon.h" #include "gdcmDictSet.h" #include "gdcmGlobal.h" -#include "gdcmException.h" #include "gdcmDocEntry.h" #include "gdcmSeqEntry.h" #include "gdcmValEntry.h" @@ -139,7 +138,7 @@ DictEntry *DocEntrySet::GetDictEntry(uint16_t group,uint16_t elem) } else { - found = pubDict->GetDictEntry(group, elem); + found = pubDict->GetEntry(group, elem); } return found; } diff --git a/src/gdcmDocEntrySet.h b/src/gdcmDocEntrySet.h index 745261fb..c2fb51a4 100644 --- a/src/gdcmDocEntrySet.h +++ b/src/gdcmDocEntrySet.h @@ -3,8 +3,8 @@ Program: gdcm Module: $RCSfile: gdcmDocEntrySet.h,v $ Language: C++ - Date: $Date: 2005/01/20 16:17:00 $ - Version: $Revision: 1.40 $ + Date: $Date: 2005/01/24 14:14:11 $ + Version: $Revision: 1.41 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -20,7 +20,6 @@ #define GDCMDOCENTRYSET_H #include "gdcmBase.h" -#include "gdcmException.h" #include namespace gdcm diff --git a/src/gdcmDocument.cxx b/src/gdcmDocument.cxx index 8437264b..d6f1cbb1 100644 --- a/src/gdcmDocument.cxx +++ b/src/gdcmDocument.cxx @@ -3,8 +3,8 @@ Program: gdcm Module: $RCSfile: gdcmDocument.cxx,v $ Language: C++ - Date: $Date: 2005/01/23 10:12:33 $ - Version: $Revision: 1.204 $ + Date: $Date: 2005/01/24 14:14:11 $ + Version: $Revision: 1.205 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -24,7 +24,6 @@ #include "gdcmUtil.h" #include "gdcmDebug.h" #include "gdcmTS.h" -#include "gdcmException.h" #include "gdcmDictSet.h" #include "gdcmRLEFramesInfo.h" #include "gdcmJPEGFragmentsInfo.h" diff --git a/src/gdcmDocument.h b/src/gdcmDocument.h index e8158246..aaa8dacb 100644 --- a/src/gdcmDocument.h +++ b/src/gdcmDocument.h @@ -3,8 +3,8 @@ Program: gdcm Module: $RCSfile: gdcmDocument.h,v $ Language: C++ - Date: $Date: 2005/01/23 10:12:33 $ - Version: $Revision: 1.97 $ + Date: $Date: 2005/01/24 14:14:11 $ + Version: $Revision: 1.98 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -22,6 +22,7 @@ #include "gdcmVR.h" #include "gdcmDict.h" #include "gdcmElementSet.h" +#include "gdcmException.h" #include #include diff --git a/src/gdcmSQItem.cxx b/src/gdcmSQItem.cxx index e82ad45d..600ce145 100644 --- a/src/gdcmSQItem.cxx +++ b/src/gdcmSQItem.cxx @@ -3,8 +3,8 @@ Program: gdcm Module: $RCSfile: gdcmSQItem.cxx,v $ Language: C++ - Date: $Date: 2005/01/19 15:24:28 $ - Version: $Revision: 1.55 $ + Date: $Date: 2005/01/24 14:14:11 $ + Version: $Revision: 1.56 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -190,7 +190,7 @@ bool SQItem::SetEntry(std::string const &val, uint16_t group, Dict *pubDict = Global::GetDicts()->GetDefaultPubDict(); // if the invoked (group,elem) doesn't exist inside the Dictionary // we create a VirtualDictEntry - DictEntry *dictEntry = pubDict->GetDictEntry(group, elem); + DictEntry *dictEntry = pubDict->GetEntry(group, elem); if (dictEntry == NULL) { dictEntry = -- 2.45.1