X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=ChangeLog;h=80340b5d5face003db20bca271f3b9e1aff30a6c;hb=d0f6827609a499057f4bad725522060590af3d82;hp=7c1bf89bdfdcc1262daf2337765a33165c5f862c;hpb=5311d94213fb3d388924e1d5b8a9e11d1d40fcb3;p=gdcm.git diff --git a/ChangeLog b/ChangeLog index 7c1bf89b..80340b5d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,2788 @@ +Sat Nov 12 09:59:24 EST 2005 by malaterre + * Some more update to the DICOMV3 dic. Tons of fix most of them should not + impact gdcm internal since VR/VM are not used...well except for SQ item + wich should explain some bizarre case :) + -> group 0000 is still in DICOMV3 dict whereas it should clearly be in + ACR-NEMA only. + +Mon Oct 24 13:34:45 EDT 2005 by malaterre + * Adding the OpenJPEG library. It contains a patch from Antonin compared to + the official release that allow us to work around the famous 16bits issues + in jasper + +Mon Oct 18 10:27:49 2005 by regrain + * Correctly use the VRKey for all vr variables... instead of TagName + or std::string + * Replace the definition of VRKey from std::string to a class + containing a char[2]. All methods are inline to have no speed low + * Create the GDCM_VRUNKNOWN = " " for the VR values + +Mon Oct 18 10:27:49 2005 by regrain + * Remove useless constructor of gdcm::Document + * Remove useless parameter in the constructor of gdcm::ElementSet + * Split gdcmCommon to separate the System specifications to the gdcm + specifications + +Mon Oct 18 10:27:49 2005 by regrain + * Minor coding-style clean up + * Replace the ContentEntry and its derived classes (BinEntry and ValEntry) + by the DataEntry. This unique entry considers all datas like binary datas. + Some methods are added to interpret - at fly - the binary datas. + Due to this important change, some methods of the DocEntrySet, concerning + the BinEntry and ValEntry classes, are erased ; and new methods for the + DataEntry class are created. + Some methods to set the ValEntry or the BinEntry are renamed to + correspond to the new DataEntry, like for example : + - SetValEntry -> SetEntryString + - SetBinEntry -> SetEntryBinArea + This change will remove all useless creation of the string when working + directly on values. + +Thu Aug 25 16:59:49 2005 by jpr + gdcmBinEntry.cxx + Now Print displays the BinEntry Content (if it's printable, and loaded) + Usefull for a lot od Implicit VR 'Bin'Entry (if we knew there VR, they wouldn't + be Bin ...) + Appreciate the difference having a look at PrintFile result for + gdcmData/SIEMENS_MAGNETOM-12-MONO2-FileSeq0.dcm. + +Thu Aug 25 16:55:47 2005 by jpr + gdcmUtil.cxx + Add methods to check the 'printability' of a bin area + +Thu Aug 25 15:45:40 2005 by jpr + gdcmBinEntry.cxx + According to Mathieu's suggestion, Print now display FL BinEntries in a human + readable form + +Thu Aug 25 15:12:43 2005 by jpr + gdcmDocEntry.cxx + According to Mathieu's suggestion, *all* the elements 0x000 + are now named 'Group Length' (even if they belong to a Shadow Group') + +Wed Aug 24 14:09:13 2005 by jpr + gdcmDocEntry.cxx,h, gdcmDocEntrySet.cxx,h + Removal of QD patch for Private Sequence + Immplicit VR. + Add a clean solution (Backtracking if an Item Starter is found + out of any SQItem) + +Tue Aug 23 14:57:49 2005 by jpr + gdcmDocument.cxx + Brutal patch, waiting till we find a clever way to guess + if a doc entry is a Sequence, + - when it's odd number + - and the file is Implicit VR Transfert Syntax +It solves temporarily some Philips Medical Systems image problems + +Mon Aug 22 18:17:54 200 by jpr + gdcmUtil.cxx + Save a *few* microseconds at run time : inline method Util::GetVersion() + ;-) + +Tue Aug 23 14:58:49 2005 by jpr + gdcmSeqEntry.cxx, gdcmDocEntry.cxx + Improve 'Print' methods + +Sat Aug 20 11:10:24 2005by jpr + TestWriteSimple.cxx + Use new style FileHelper contructor + +Sat Aug 20 11:04:50 2005 by jpr + gdcmFileHelper.cxx + FileHelper::Initialize() doesn't call GrabInformationFromFile(), + in order not to do the job twice when using new style FileHelper Constructor. + +Fri Aug 19 18:31:07 2005 by malaterre + gdcmCommon.h + ENH: Provide a GetVersion function, apparently need for python + +Fri Aug 19 15:12:15 2005 by jpr + gdcmFileHelper.cxx + Initialize UserFunction pointer to 0, even for 'deprecated' form + of constructor. + +Sat Jul 30 20:27:00 2005 by jpr + gdcmFileHelper.cxx, gdcmPixelReadConvertor.cxx + User is now allowed to pass a Pointer to a function of his own + to allow modification of pixel order (i.e. : Mirror, TopDown, ) + to gdcm::FileHeleper, using SetUserFunction(userSuppliedFunction) + described as : void userSuppliedFunction(uint8_t *im, gdcm::File *f); + NB : the "uint8_t *" type of first param is just for prototyping. + User will Cast it according what he founds with f->GetPixelType() + See ctkgdcmSerieViewer for an example + +Sat Jul 30 20:13:24 2005 by jpr + gdcmSerieHelper.cxx + Add SerieHelper::IsCoherent() method to allow checking that the files with same + Serie UID have the same sizes and pixel type. + +Fri Jul 29 17:07:16 2005 by jpr + gdcmSerieHelper.cxx + User may now use + SetSortOrderToDirect() or SetSortOrderToReverse() + to choose the ways the File* will be sorted. + +Thu Jul 21 06:55:50 2005 by jpr + AnonymizeDicomDir.cxx, AnomymizeNoLoad.cxx, PrintFile.cxx, PrintDicomDir.cxx + Unify user interface + +Thu Jul 21 06:55:30 2005 by jpr + exSerieHelper.cxx + Add an example of use for SerieHelper + +Thu Jul 21 07:00:15 2005 by jpr + gdcmSerieHelper.cxx + Extend 'Restriction' syntax : + void SerieHelper::AddRestriction(uint16_t group, uint16_t elem, + std::string const &value, int op) + op belongs to : + /// \brief comparaison operators + enum CompOperators { + GDCM_EQUAL = 0, + GDCM_DIFFERENT, + GDCM_GREATER, + GDCM_GREATEROREQUAL, + GDCM_LESS, + GDCM_LESSOREQUAL + }; + +Wed Jul 20 15:39:00 2005 by jpr + AnonymizeNoLoad.cxx + AnonymizeNoLoad user can now ask for anonymization of 'BinEntries' + (e.g. Private entries when the TS is Implict VR) + AnonymizeNoLoad filein=... rubout=0x0009-0x0001,0x0013-0x1100 + Thx to Luca Picello for reporting pb and supplying data to fix the bug. + +Wed Jul 20 16:49:41 2005 by jpr + gdcmFile.cxx + Use GDCM_LEGACY for DicomDir, as well + +Wed Jul 20 15:31:01 2005 by jpr + gdcmFile.cxx + We can now anonymize 'BinEntries' as well + +Wed Jul 20 15:29:42 2005 by jpr + gdcmArgMgr.cxx + Add ArgMgrGetXInt16Enum to decode from the command line pairs of unsigned int + 16, written in hexadecimal. + (usefull to allow terminal user to pass the (private) elements he wants to + anonymize) + +Tue Jul 19 17:25:53 2005 by jpr + gdcmFile.cxx + Add some comments on the 'Patient Position' + +Tue Jul 19 11:04:58 2005 by jpr + gdcmSerieHelper.cxx + Add SerieHelper::AddGdcmFile(File *header) method. + * \brief add a gdcm::File to the first (and supposed to be unique) list + * of the gdcm::SerieHelper. + * \warning : this method should be used by aware users only! + * User is supposed to know the files he want to deal with + * and consider them they belong to the same Serie + * (even if their Serie UID is different) + * user will probabely OrderFileList() this list (actually, ordering + * user choosen gdm::File is the sole interest of this method) + * Moreover, using vtkGdcmReader::SetCoherentFileList() will avoid + * vtkGdcmReader parsing twice the same files. + * *no* coherence check is performed, but those specified + * by SerieHelper::AddRestriction() + +Mon Jul 18 12:20:20 2005 by jpr + gdcmCommon.cxx + In order to prepare the future extension of SerieHelper::AddRestriction (key, + string, operator) + operator = { EQUAL, DIFFERENT, LESS, LESSOREQUAL, GREATER, GREATEROOREQUAL} + add method + bool Util::CompareDicomString(const std::string &s1, const char *s2, int op) + +Sun Jul 17 06:27:49 2005 by jpr + gdcmSerieHelper.cxx + Use new style for Loading files + +Tue Jul 12 19:08:12 2005 by jpr + gdcmCommon.cxx, gdcmSQItem.cxx + To speed up DicomDir, instead of copying -and removing the source afterwards- + each entry of the SQItem (found after gdcm::Document parsing) towards + the gdcm::Object belonging to the gdcm::DicomDir, we just copy + the chained list itself. + +Tue Jul 12 16:55:43 2005 by jpr + AnonymizeNoLoad.cxx + AnonymizeNoLoad has now one more option : + dirin= + to give the (single Patient) directory name whose content we want to anonymize. + +Mon Jul 11 10:20:25 2005 by jpr + gdcmDicomDirStudy.cxx + Reorder methods + +Fri Jul 8 21:07:12 2005 by jpr + gdcmDicomDir... + Add the VISIT object within DicomDir + +Fri Jul 8 12:15:08 2005 by jpr + gdcmDicomDir... + Use new style for DicomDir loading + +Fri Jul 8 16:36:48 2005 by jpr + gdcmFileHelper.cxx + To remain unimpared, gdcm::FileHelper class needs also its + void FileHelper::SetLoadMode(int loadMode) + void FileHelper::SetFileName(std::string const &fileName) + bool FileHelper::Load() + +Thu Jul 7 19:31:53 2005 by jpr + Example/*.cxx + Begin of kosherization of Example + New 'gdcm2' style. + +Thu Jul 7 18:37:40 2005 by jpr + gdcmDocument.cxx + On the way to gdcm2 ... + Now, the stand way to use a file is : + gdcm::File *f = new gdcm::File(); + f->SetLoadMode ( user say here what he wants *not* to load ); + f->SetFileName("myFile.gdcm"); + f->Load(); + Old styles are kept, not to break the C++ API. + - gdcm::File *f = new gdcm::File("myFile.gdcm"); + - f->Load("myFile.gdcm"); + Due to the syntaxic abilities of Python maybe some troubles will occur + (not sure ...) + +Thu Jul 7 15:55:39 2005 by jpr + gdcmDocument.cxx + Comment out the time consuming, never used/useless + 'Extended tag' stuff for Sequence embedded Entries + +Thu Jul 7 15:11:38 2005 by jpr + gdcmDocument.cxx + Move code lines LTTG so save some CPU time. + (hope so) + +Tue Jun 7 13:12:10 2005 CEST by jpr + Example/*.cxx + Use Argument Manager in 'utilities' + +Thu Jul 7 12:12:32 2005 by jpr + gdcmFile.cxx + Due to something stupid in the gdcm::File constructor, the file was parsed + twice when we used old style, e.g : + gdcm::File *f = new gdcm::File(fileName); + instead of new style, e.g. : + gdcm::File *f = new gdcm::File( ); + f->SetLoadMode ( choose what you want *not* to load here ); + f->Load( filename ); + +Wed Jul 6 11:53:43 2005 by jpr + TestAllReadCompareDicom.cxx, TestReadWriteReadCompare.cxx + Now TestAllReadCompareDicom.cxx TestReadWriteReadCompare.cxx accept a third + param, in order not to have to recompile to gdcm::Debug::DebugOn(). + +Wed Jul 6 17:18:42 2005 by jpr + gdcmDocument.cxx + According to Mathieu's requirement, Load twice the same file keeps the rseult of + the first Load (instead of doing it twice) + +Wed Jul 6 11:25:12 2005 by jpr + gdcmDocument.cxx + - Clean out the Entries if a Document is parsed more than once + - Uncomment (usefull) warning messages + +Wed Jul 6 10:42:33 2005 by jpr + gdcmDocument.cxx + - Comment out a for the moment too much verbose warning message. + - Delay some statement as late as possible, to save some CPU time when they're + useless + +Wed Jul 6 13:01:08 2005 by jpr + gdcmFile.cxx + Now gdcmFile::Load() returns false if file is not gdcm parsable + Only gdcmDocument::Load() did it, before. + Thx to Benoit for reporting bug + +Sun Jul 3 14:42:04 2005 by jpr + gdcmDocument.cxx + Should avoid some troubles with 'no length' SQItems within 'true length' + Sequences. + Thx to Loic Boussel for providing data to fix the bug. + +Sun Jul 3 14:42:04 2005 by jpr + gdcmDocument.cxx + Should avoid some troubles with 'no length' SQItems within 'true length' + Sequences. + Thx to Loic Boussel for providing data to fix the bug. + +Sun Jul 3 14:47:23 2005 by jpr + gdcmSQItem.cxx + Enh warning message + +Fri Jul 1 13:25:51 2005 by jpr + gdcmPixelReadConvert.cxx + Initialize RLEInfo and JPEGInfo to 0 a avoid further problems + (e.g. PrintFile on a DICOMDIR document) + +Thu Jun 30 16:49:02 2005 by jpr + gdcmFile.cxx + Enhance gdcm::File::IsReable() heuristics to be able to process some Loic + Boussel's Hall of Shame Dicom images + +Wed Jun 29 17:58:33 2005 by jpr + gdcmDocument.cxx + Add the NO_SHADOWSEQ load mode + +2005-06-26 Mathieu Malaterre + * Quite a few new dictionaries were added in gdcm. The file: + gdcm/Dict/README should always explain were the info was found + (in case of double check). Also some dict are still only + express as 'template' (they contain 'xx'), therefore + a python script should be run first to generate a full dict. + In the longer term this python script should be replaced by + a cmake script. + +2005-06-25 Mathieu Malaterre + * dicomV3.dic is deprecated in favor of gdcm.dic + There is now a dictionary per family: + - dicomV3.dic -> DICOM V3 + - Papyrus.dic -> Papyrus + - NIH.dic -> tags that were never allowed in the main standard + +Fri Jun 24 12:50:20 2005 CEST by jpr + gdcmFile.cxx + Pixel Spacing related problems : update comments. + Thx to D. Clunie for providing data to check the code + +Fri Jun 24 12:55:58 2005 by jpr + Summer nights are really too hot to sleep. + Coding style : kosherization of all the 'if's (300 amongst 900 were haram) + +Thu Jun 23 11:20:23 2005 by jpr + gdcmDocument.cxx + Extend warning message, for debugging purpose + +Wed Jun 22 10:11:23 2005 by jpr + gdcmFile.cxx + Coding Style + +Wed Jun 22 10:00:29 2005 by jpr + gdcmPixelReadConvert.cxx + Fix misstyping, while removing spurious \t characters + +Wed Jun 22 09:52:32 2005 by jpr + gdcmPixelReadConvert.cxx + Some constructors (at least one ...) use BitsAllocated =! BitsStored for + negative Pixels. + That break at lot of viewers ... + We now *propagate the sign bit* upon the unused ones, better than masking them + out. + Thx to Luca Picello for profiding data to fix the bug + +Wed Jun 22 09:53:52 2005 by jpr + gdcmFileHelper.cxx + gdcm images are now "GDCM 1.1" built. + +Mon Jun 20 19:10:17 2005 by jpr + gdcmFileHelper.cxx + Avoid re writing Palette Color Lookup Table UID when Palette Color is removed + +Mon Jun 20 17:58:53 2005 by jpr + gdcmDocument.cxx + Preventive bug fix for LUT Data. + I said : LUT Date, *not* Palette Color + +Sun Jun 19 17:57:29 2005 by jpr + gdcmDocumentcxx + To avoid warnings at compile time + +Fri Jun 17 14:27:52 2005 by jpr + gdcmRLEFrames.cxx + Try to solve RLE pb + +Fri Jun 17 14:36:07 2005 by jpr + gdcmDocument.cxx + Add comments + +Fri Jun 17 14:35:00 2005 by jpr + gdcmFileHelper.cxx + Add some accessors for debugging purpose + +Tue Jun 14 15:56:41 2005 by jpr + gdcmPixelReadConvert.cxx + Now gdcm deals with 16 bits per pixel images with 16 bits Palette colors + (3 * 65536 short int ...) + Nice fat header. + "Segmented Palettes" pb still pending, but I never saw any viewer dealing with it. + +Mon Jun 13 17:43:48 2005 by jpr + gdcmPixelReadConvert.cxx + Some more oddities dealt with. + Doesn't work yet with 65536 entries 16 Bits LUT (?!?), with 16 bits pixels. + Still looking for accurate info on the web about it + +Fri Jun 10 16:05:38 2005 by jpr + gdcmDocument.cxx + Bug fix in Load method. + Thx to Benoit for providing fix. +2005-06-08 Benoit Regrain + * src/gdcmUtil.cxx : change call to Util::Format to sprintf because of + lantency with the Util::Format function + +Tue Jun 7 15:48:35 2005 by jpr + gdcmUtil.cxx + The highy time consuming method GetMacAdress is now called just once + +Tue Jun 7 11:58:29 2005 by jpr + gdcmDicomDirElement.cxx + Use TranslateToKey better than Format + +Tue Jun 7 12:07:20 by jpr + gdcmDictEntry.cxx + Remove some spurious calls to Format + // according to 'Purify', TranslateToKey is one of the most + // time consuming methods. + // Let's try to shorten it ! + +Mon Jun 6 14:37:58 2005 + class ArgMgr (for Arguments Manager) is designed for + command line arguments management + (to make programmer's live easier) + (could be used for any kind of 'command line program') + +2005-06-07 Mathieu Malaterre + * Adding users file in CVSROOT for mail blaming + +2005-06-04 Mathieu Malaterre + * Adding potential support for JPEG-LS DICOM files. + +Fri Jun 3 18:05:23 2005 by jpr + gdcmDocument.cxx + Fix VR processing, to be CP-288 conform. + Now we can parse any kind of DICOM SR. + +Fri Jun 3 11:05:15 2005 by jpr + gdcmDocument.h + Doxygenation + +Thu Jun 2 15:42:18 2005 by jpr + gdcmDocument.cxx + Add warning about Load Mode + +Thu Jun 2 16:20:14 2005 by jpr + gdcmFile.cxx + Harden gdcm::File::IsReadable(), in order not to be confused any longer + by lost of Pixel Element + +Fri May 27 12:51:00 2005 by jpr + gdcmFileHelper.cxx + To avoid pushing out twice the meta elements, wile trying to write 'ACR-NEMA- + style. + And avoid some memry leaks -hope so- + +Wed May 25 14:54:17 2005 by jpr + gdcmDocument.cxx + Should avoid some memory leaks + +2005-05-22 Mathieu Malaterre + * Adding potential support for mpeg and jpeg2000 through two new lin + - JasPer for JPEG2000 + - libmpeg2 from the MPEG consortium + Also adding intial work to use this lib. + +Fri May 20 10:27:55 2005 by jpr + gdcmFileHelper.cxx + To avoid warning. + (this time, it's wasn't dangerous at run time) + +Thu May 19 17:31:21 2005 by jpr + gdcmFileHelper.cxx + FIX possible troubles when checking + 'Hight Bit Position' vs 'Bits Allocated' and 'Bits Stored' + Thx to Mathieu for reporting bug + +Wed May 18 12:12:07 2005 by jpr + gdcmDocument.cxx + Fix : now dcm deals with 'No preamble', Big Endian Explicit VR group 0002. + Thx to Dennis Hu for providing a sample image to fix the bug. + +Tue May 17 14:44:09 2005 by jpr + gdcmFile.cxx + ENH : According to David Clunie's advice, we check now 'Imager Pixel Spacing' + before 'Pixel Spacing', when we want to get X or Y Spacing. + +Tue May 17 19:10:49 2005 by jpr + gdcmFileHelper.cxx + ENH : Now, FileHelper::CheckMandatoryElements() makes some consistency checking, + at LTTG (Least Time To Go) + around Bits Allocated, Bits Stored, High Bit Position, + to avoid unaware user to mess up the stuff. + +Tue May 3 11:43:04 2005 by jpr + gdcmDicomDir.h, .cxx + Load returns now a bool (allow user not to call IsReadable() ) + +Tue May 3 11:51:06 2005by jpr + gdcmFileHelper.cxx + Now the gdcm::File remains unimpaired after writting, in any case + +Fri Apr 29 17:10:55 2005by jpr + gdcmDocument.cxx + Don't abort the prog when File not open + +Wed Apr 27 12:00:35 2005 by jpr + gdcmFile.cxx + Removal of now useless lut-related stuff + +Wed Apr 27 11:52:27 2005 by jpr + gdcmFile.cxx + Pb of 'Bits Allocated = 12' is now dealt with in + FileHelper::CheckMandatoryElements, no longer in File::Write. + Thx to Mathieu for reporting bug. + +2005-04-26 Benoit Regrain + * Testing/TestAllReadCompareDicom.cxx : update the test printed results and + description. + +Tue Apr 26 18:18:23 2005 by jpr + gdcmDocument.cxx + Should leave gdcm::Document constructor in a much quicker + and much cleaner way when anything wrong occurs. + +Tue Apr 26 18:25:49 2005 by jpr + gdcmPixelReadConvert.cxx + Prepare MPEG Dicom encapsulated processing (within a loooong future) + +Fri Apr 22 14:59:58 2005 by jpr + gdcmDocument.cxx + Modify Print() output + +Fri Apr 22 15:37:57 2005 by jpr + gdcmTS.cxx + Prepare (future) MPEG integration + +Thu Apr 21 09:40:00 2005 by jpr + gdcmTS.cxx + Taking into account Dicom MPEG + +2005-04-20 Mathieu Malaterre + * FIX : Numerical exception on borland (cannot divide by 0, doh !) + But this is a case where we should really signify the user there is + few chance the serie is really a serie... + +2005-04-20 Benoit Regrain + * FIX : on X, the python part is correctly installed. All files are + installed in gdcm sub-directory + +Tue Apr 19 11:58:19 2005 by jpr + gdcmDocEntry + Should suppress some warnings from Borland compiler + +2005-04-19 Benoit Regrain + * Builder/ : add something to facilitate the RPM creation of gdcm + +2005-04-15 Mathieu Malaterre + * Fix gdcmDirList::IsDirectory. Apparently borland did not like the ending + '/' + * Also fix compilation on gcc 3.3.5 does not have ios::failure either ... + +Thu Apr 14 16:26:19 2005 by jpr + gdcmDicomDir.h, .cxx + Now, user can ask gdcm::DicomDir to skip SeqEntries or shadow groups, when + possible : + // Old style (still available) : + dcmdir = new gdcm::DicomDir(dirName, true); + + // new style (user is allowed no to load Sequences an/or Shadow Groups) + dcmdir = new gdcm::DicomDir( ); + dcmdir->SetParseDir(true); + dcmdir->SetLoadMode(NO_SEQ | NO_SHADOW); + dcmdir->Load(dirName); + +2005-04-11 Mathieu Malaterre + * vtk/vtkGdcmWriter fix bug when writing spacing. The Y spacing comes first + then the X spacing. + * Fix compilation on gcc 2.96 (which does not have ios::failure) + +Mon Apr 4 17:15:24 2005 by jpr + gdcmFileHelper.cxx + Fix stupid bug when writting ACR-NEMA image from 'ACR-LibIDO' one. + +2005-04-05 Benoit Regrain + * src/gdcmDictGroupName.[h|cxx] : add a correlation between a group (number) + and it's representation name (for the NIH) + +2005-03-31 Benoit Regrain + * src/gdcmPixelReadConvert.cxx : problems of around of double to uint8, when + conversion of YBR to RGB pixels. So, now, the conversion is made using + integers only + +2005-03-30 Benoit Regrain + * Testing/TestAllReadCompareDicom.cxx : now use test files (invented file + format) to replace 'at-run' dicom files generated by the + TestAllReadCompareDicom test + +Tue Mar 22 12:29:37 2005 by jpr + gdcmDocument.cxx + * FIX : element 0x0000 of shadow groups is now force to a ValEntry, + and it's VR is forced to UL + * ENH : user id now allowed to tell he doesn't want to deal with Sequences + and/or with Shadow groups + use SetLoadMode (NO_SEQ | NO-SHADOW); + +Tue Mar 22 12:40:13 2005 by jpr + gdcmFileHelper.cxx + *FIX Restore pushed out elements + +Fri Mar 11 12:08:31 2005 by jpr + gdcmDocEntry.cxx + Remove spurious #define MAX_SIZE_PRINT_ELEMENT_VALUE + +Fri Mar 11 12:12:13 2005 by jpr + gdcmFile.cxx + Final removal of gdcmFileHelper::InitializeDefaultFile(); + +Wed Mar 9 20:29:38 2005 by jpr + gdcmDicomDir.h, .cxx + Add Anonymize method (not yet fully checked) + +2005-03-07 Benoit Regrain + * src/gdcmFileHelper.cxx : remove memory leaks and bugs when writing files + +Wed Mar 2 18:18:32 2005by jpr + gdcmFile.cxx + Fix gdcm::FileHelper::CheckMandatoryElements() to take into account David + Clunie's remarks. + +2005-02-22 Benoit Regrain + * src/gdcmFileHelper.cxx : JPR bad personal choices fix + +Mon Feb 21 18:45:41 2005 by jpr + gdcmFileHelper.cxx + * Replace method CheckMetaElements by CheckManadatoryElements + To deal with the pb of UID's, and with Type 1 an Type 2 Entries + (probabely some stuff still missing) + * We shall have to decide the way we proceed to allow user 'freeze' Serie UID + between a given call and the next one (to add images to a Serie he just + created) + * We shall have to decide the way we proceed to allow user 'freeze' Study UID + between a given call and the next one, or to reuse an already existing + Study UID (i he wants to add his own Series to an already existing Study) + +Thu Feb 17 17:18:33 2005 by jpr + gdcmFile.cxx + To avoid further pb, Initialize defaults now Photochromatic Interpretation to + MONOCHROME2 (low values = dark), better than MONOCHRONE1. + Thx to Benoit for reporting bug + +Thu Feb 17 11:56:20 2005 by jpr + gdcmUtil.cxx + Prepare FileMetaInformationVersion (group 0002) management + +Thu Feb 17 12:02:47 2005 by jpr + gdcmFile.cxx + Group 0002 management + +Thu Feb 17 12:03:32 2005 by jpr + gdcmDocEntryArchive.cxx + Fix comments + +Wed Feb 16 11:19:19 2005 CET by jpr + gdcmPixelReadConvert.cxx + Taking into account MONOCHROME1 + Signed Pixels (?!) + +Tue Feb 15 19:12:34 2005 by jpr + gdcmFile.cxx + Taking into account the difference between MONOCHROME1 (low values = bright) + and MONOCHROME2 (low values = dark) + +Mon Feb 14 11:45:04 2005by jpr + gdcmDocument.cxx + Remove some useless mask operations, to save CPU time + +Mon Feb 14 15:51:10 2005 by jpr + gdcmUtil.cxx + *never* forget to re-compile just *before* committing! + +Mon Feb 14 15:34:27 2005 by jpr + gdcmUtil.cxx + First commit on the post 1.0 (Version? / Tag? / Branch?) : + Fix Doxygen warnings + +Mon Feb 14 11:45:47 2005 by jpr + gdcmValEntry.cxx + remove useless comments + +2005-02-11 Benoit Regrain + * Testing/TestMAkeIcon.cxx : complete the test + +2005-02-10 Benoit Regrain + * Testing/TestWriteSimple.cxx, TestSequence.cxx : fix memory leaks + +Fri Feb 11 16:22:18 2005 by jpr + gdcmDocEntrySet.cxx + Typo, comments, doxygenation + +Thu Feb 10 11:55:26 2005 by jpr + gdcmFile.cxx + AnonymizeNoLoad improvement + +Thu Feb 10 10:07:19 2005 by jpr + gdcmFile.cxx + Duplicate Matthieu's hack to prevent bombing in Anonymize + +Thu Feb 10 12:20:34 2005by jpr + gdcmDocEntrySrt.cxx + The following gdcm::DocEntrySet methods, no re-definable is child classes are no + longer virtual + virtual ValEntry *GetValEntry(uint16_t group, uint16_t elem); + virtual BinEntry *GetBinEntry(uint16_t group, uint16_t elem); + virtual SeqEntry *GetSeqEntry(uint16_t group, uint16_t elem); + virtual bool SetValEntry(std::string const &content, + virtual bool SetBinEntry(uint8_t *content, int lgth, + virtual bool SetValEntry(std::string const &content, ValEntry *entry); + virtual bool SetBinEntry(uint8_t *content, int lgth, BinEntry *entry); + virtual ValEntry *InsertValEntry(std::string const &value, + virtual BinEntry *InsertBinEntry(uint8_t *binArea, int lgth, + virtual SeqEntry *InsertSeqEntry(uint16_t group, uint16_t elem); + +2005-02-09 Benoit Regrain + * src/gdcmFileHelper.[h|cxx] : now correctly set the VR of the datas when + writting the file + +2005-02-09 Benoit Regrain + * Test/VTKTestWriteSeq.cxx : add a VTK test to write sequences + +2005-02-09 Benoit Regrain + * Test/ : accelerate tests (it's not very significant accelerations). + Remove TestCopyDicom that is redundant with TestCopyRescaleDicom + +Mon Feb 7 15:48:34 2005 by jpr + gdcmDicomDir.h, .cxx + Add some commented out lines to prepare future version of 'Full DICOMDIR' stuff + + +2005-02-07 Benoit Regrain + * Testing/TestSequence.cxx : add test for sequences of images... test that + we have the same serie or the same study UID + +2005-02-07 Benoit Regrain + * gdcmPython/gdcm.i : bug fix. Now string are correctly converted in python + string type + * src/gdcmDict.h : remove commented code + * src/gdcmDocument.cxx : initialize values + * src/gdcmFile.cxx : bug fix when reading values + * gdcmPython/demo/ : change file names. Remove useless files + +Sun Feb 6 15:31:09 2005 by jpr + gdcmDicomDirStudy.h + Update comments for DicomDir stuff + +Sun Feb 6 15:39:35 2005 by jpr + gdcmDocument.cxx + * Add method File::AnonymizeNoLoad, to allow anomymizing files + even when the pixels are not gdcm Readable + * Add methods File::AddAnonymizeElement and File::ClearAnonymizeList + to allow user to choose the elements whose value + he wants to white out / replace + +2005-02-04 Benoit Regrain + * src/gdcmFile.cxx : remove the default array of initialization. + The static array contained pointers to non-static values (comming from + strings). To have coherences, when creating files, these values can't be + static. So, the array can't be static, too ! To simplify, the array have + been replaced by repeted lines to insert values in the File + +Fri Feb 4 15:49:01 2005 by jpr + gdcmDocEntry.cxx + * Add GetFirstValEntry + GetNextValEntry, for Python users + * Some more Doxygenation + typo fixing + +2005-02-03 Benoit Regrain + * src/gdcmBinEntry.cxx : bug fix for BIG_ENDIAN part when writing the content + * gdcmPython/gdcm.i : rename gdcmHeader to gdcmHelper + +Thu Feb 3 18:12:46 2005 by jpr + gdcmPixelReadConvert.cxx + Fix Doxygen warning + +2005-02-02 Jean-Pierre Roux + * FIX SQItem::AddEntry inserts now *in the right place* any Entry + (Dicom Element) into the Sequence Item + +2005-01-31 Benoit Regrain + * src/*.cxx : first parss to normalize file organisation + +2005-01-31 Benoit Regrain + * src/gdcmDirList.[h|cxx] : add method to find a directory + * Test/TestAllReadCompareDicom.cxx : bug fix under Windows + +2005-01-31 Mathieu Malaterre + * Finish cleaning up my JPEG mess. Should be ok now. + * Getting toward a RLE very similar to JPEG. Every RLE stuff is now self + contained within the RLE* class(doh!) + +2005-01-30 Jean-Pierre Roux + * SerieHeader::SetDirectory() allow recursive exploration of the Directory + * SerieHeader::AddFileName() creates as many Coherent Files lists + (same Serie UID) as it founds different Serie UID + amongst the files instead of discarting any file + that doesn't match with the first one he found. + * SerieHeader::OrderGdcmFileList has now one parameter : + the Coherent Files list the user wants to sort + * SerieHeader::GetFirstCoherentFileList() | + * SerieHeader::GetLastCoherentFileList() | allow to parse + the set of Coherent Files lists + * const SerieHeader::GdcmFileList &GetGdcmFileList() is kept, for backwards + compatibility (it returns the *first* Coherent Files list, + since there was only one before) + * Test/TestSerieHeader gets gdcmData as a default root directory + +2005-01-28 Benoit Regrain + * Remove friend between DocEntry and File classes + * Remove friend between PixelReadConverter and RLEFramesInfo, + JPEGFragmentsInfo + +2005-01-28 Benoit Regrain + * src/gdcmFile.cxx, gdcmDocument.cxx : fix the bug on the group|element + 0002|0000. The value was incorrect. + +2005-01-28 Benoit Regrain + * vtk/vtkGdcmWriter.[h|cxx] : add the gestion of UID + +2005-01-28 Benoit Regrain + * src/gdcmUtil.cxx : compilation fix on Win32 + * src/gdcmUtil.[h|cxx] : Set the default GDCM UID in a static constant + variable, to be easy found. Add methods to change the default UID. + Amelioration of the CreateUniqueUID to use the correct default UID. + * src/gdcmFile.cxx : correct use of the CreateUniqueUID method to create + a new file + +2005-01-28 Benoit Regrain + * Test/TestVR.cxx : fix memory leaks + +2005-01-27 Mathieu Malaterre + * Rewrite the base 256 to base 10 conversion, using string operation only. + This allows us to get rid of the problematic 64bits integer type (does not + always exist on target platform). + +2005-01-27 Jean-Pierre Roux + * Add construct and destructor to class gdcm::Debug to close the debug file + automatically + * Don't let uset to open twice the same file + * gdcm has now an official UID prefix, + supplied by http://www.medicalconnections.co.uk + 1.2.826.0.1.3680043.2.1143 + (Thx to Mathieu for providing URL) + * Add a forty-entries private Dicom Dictionary (Philips MR Intera) + to be able to perform some more tests + * gdcm::ContentEntry : Contructors and Destructor are now protected, + in order to be sure no user will try to use them. + (at user level, only the children classes are meaningfull) + +2005-01-26 Benoit Regrain + * move RLEInfo & JPEGInfo from Document to File + +2005-01-26 Benoit Regrain + * FIX : remove so many friend between classes + +2005-01-25 Benoit Regrain + * src/gdcmDocEntrySet.cxx : Bug fix when getting the value + * src/gdcmContentEntry.[h|cxx], gdcmValEntry.cxx : amelioration of code + +2005-01-25 Jean-Pierre Roux + In order to avoid missbehaviour : + . gdcm::DocEntry is now specialized in + - gdcm::SeqEntry (Dicom Sequence) as opposed to : + - gdcm::ContentEntry (Dicom entry with a 'content') + . gdcm::ContentEntry is specialized in + - gdcm::ValEntry (Dicom entry with a std::string representable value, i.e. + characters value, or integers) + - gdcm::BinEntry (Dicom entry with a non strig representable value + (user hasn't any longer to thing about the precedence of his dynamic_casts) + +2005-01-25 Benoit Regrain + * Test/VTKTest*.cxx : bug fix under linux + +2005-01-25 Benoit Regrain + * src/ : rename some methods on Entry (SetXxx, InsertXxx) to have a better + use with python. Some methods are moved from Document to ElementSet or + DocEntrySet. The equivalent methods to ElementSet have been added to + SQItem and are virtual in DocEntrySet. Methods that may have the same code + in SQItem and ElementSet is directly placed in DocEntrySet + +2005-01-25 Benoit Regrain + * Test/VTKTest*.cxx : remove the show variable in each test method because + it's useless (the viewer variable replace this variable) + +2005-01-25 Benoit Regrain + * src/gdcmDocument.cxx : bug fix on potential memory leak + * src/gdcmSQItem.cxx : initialize the SQItemNumber value in the constructor + * src/gdcmSQItem.[h|cxx], gdcmElementSet.[h|cxx], gdcmDicomDir*.[h|cxx] : + Add ClearXxx methods to remove all the content of the list or map + * gdcmDocEntrySet.h : add GetFirst/NextEntry in pure virtual + +2005-01-25 Jean-Pierre Roux + * methods ReplaceOrCreate renamed as Insert + (nobody will be any longer confused by 'CreateOrReplace') + +2005-01-24 Mathieu Malaterre + * Grealty simplify the JPEg decompression, no need to differenciate based on + the JPEG possible type (with/without fragment, with/without multiple frame). + Everything is done throught the JPEG IO Suspension mechanism in IJG + +2005-01-24 Jean-Pierre Roux + * Stage 3 of normalization : + in order to avoid any missunderstanding while reading method names : + - All the methods xxxEntry now deal with dicom Entries + - Methods GetEntry splitted into + GetEntryValue + GetEntryBinArea + - Method SetEntry renamed as SetEntryValue + - Method SetEntryBinArea let as it was + +2005-01-24 Jean-Pierre Roux + - Add empty nutshell for JPEG-LS (JPG-LS in NOT jpeg 'lossless') + - Position correctly the entry points for JPEG2000 and JPEG-LS + (Now Fragments info is get from the file, even for JPEG2000 and JPEG-LS) + +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. + +2005-01-22 Benoit Regrain + * bug fix for compilation on MSVC6 + * gdcmPython/gdcm.i : rename of classes missed + +2005-01-21 Jean-Pierre Roux + * Stage 2 of names normalization : + - A gdcm::Document is now either a gdcm::DicomDir or a gdcm::File + (easy to understand ...) + - gdcm::FileHelper replaces old class gdcm::File + +2005-01-20 Benoit Regrain + * gdcmDicomDirElement.[h|cxx] : change the AddEntry method. Now, it gets a + type and not a string. So, there remove problems on the format of the + string. + +2005-01-20 Jean-Pierre Roux + * Add Example/TestPapyrus.cxx + - reads a Papyrus file (gdcm::Header compliant), + - gets the pixels of all the images, using low level iterators + - writes an multiframes Dicom image. + (Just to show it's *possible* to do that) + Uses SQItems accessors (we could use it as a 'Test' program, to improve test + coverage ...) + +2005-01-20 Benoit Regrain + * src/gdcmDicomDirObject.h : set the FillObject method in protected. + Thus, DicomDirXXX are created with a flad that indicates if the created + object is empty or not (when not empty, the DicomDirElement is used to + fill the object) + +2005-01-20 Benoit Regrain + * src/gdcmDicomDir.cxx : simplify the NewPatient method, like made in + gdcm::DicomDirPatient, gdcm::DicomDirStudy, gdcm::DicomDirSerie + +2005-01-20 Benoit Regrain + * src/gdcmSQItem[h|cxx] : rename some methods to have coherent names + +2005-01-20 Benoit Regrain + * src/gdcmDicomDir*.[h|cxx] : rename methods to be logik in their name. + Remove all access to the hash-tables or lists in the objects. + +2005-01-20 Benoit Regrain + * src/gdcmDebug.h : remove the Debug test in the gdcmErrorMacro + * src/gdcmDocument.[h|cxx] : rename the Initialise method to Initialize, to + be complient with all the gdcm source code + +2005-01-19 Benoit Regrain + * src/gdcmDocEntry.h : DocEntry is now secure. User can't change the + DictEntry or the VR. + +2005-01-19 Benoit Regrain + * gdcmPython/ : change GDCM_DATA_PATH to GDCM_DATA_ROOT to be complient with + all in gdcm + +2005-01-19 Benoit Regrain + * Test/ : rename VTK tests to have a best name for the tests + * gdcmPython/demo/*.py.in : Change the InitTraversal/GetNextEntry use to + GetFirstEntry/GetNextEntry use + +2005-01-18 Jean-Pierre Roux + * In SerieHeader::ImagePositionPatientOrdering() + // a Dicom 'Serie' may contain scout views + // and images may have differents directions. + // -> More than one may have the same 'pos' + // Sorting has then NO meaning ! + Thx to Eduardo Davila for reporting bug. + +2005-01-18 Benoit Regrain + * Test/ShowDicom.cxx, ShowDicomSeq.cxx, TestWriteWithVTK.cxx : change the + test. Now it's on image content and not on the resulting visualisation... + might solve the problem on linux when using the OpenGL drivers + +2005-01-18 Jean-Pierre Roux + * ENH for DicomDir, DicomDirPatient, DicomDirStudy, + DicomDirSerie, DicomDirImage + Dict, DictSet classes : + -add method GetFirstEntry to replace call to InitTraversal+GetNextEntry + -remove InitTraversal method. + * UPD Test programs + Example programs + +2005-01-18 Jean-Pierre Roux + * remove useless and never updated keyword \ingroup + * Solve pb when structure (list, map, ...) is empty. + Thx to Benoit for reporting bug + +2005-01-18 Jean-Pierre Roux + * Taking into account of 'Transfer Syntax' value + (for 'true' Dicom V3 files, the 'ACR-NEMA' heuristics sometimes gives + unaccurate result) + +2005-01-17 Benoit Regrain + * src/gdcmUtil.cxx : bug fix to find the Windows MAC address. Now, there + is no memory access violation + * 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' ;-) + +2005-01-15 Jean-Pierre Roux + * ADD DicomDir, DicomDirPatient, DicomDirStudy, DicomDirSerie, DicomDirImage + related methods, in order not to expose internal mechanisms + InitTraversal(); + GetNextEntry(); + * 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 + * 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. + +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 + +2005-01-14 Mathieu Malaterre + * Unfortunately to be able to test gdcmDirList I had to break the API + a little. Now the class is not a std::list anymore but has a member + std::vector (more ITK compatible). Allow unit testing on Win32 and + shared libs. + +2005-01-14 Mathieu Malaterre + * Update SerieHeader to take into account a Serie Instance UID to properly + sort DICOM files + +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 + +2005-01-14 Benoit Regrain + * src/gdcmDocument.[h|cxx] : comment all methods concerning a flat hash + table. + * src/gdcmElementSet.[h|cxx] : rename Initialize into InitTraversal + * src/gdcmDict.[h|cxx] : add InitTraversal/getNextEntry methods to parse + all the dict content. + * src/gdcmDictEntry.cxx : add a carriage return at the end of the DictEntry + print + * Test/TestDict.cxx : add a new test for the dict classes + +2005-01-13 Mathieu Malaterre + * src/gdcmDebug.h : Adding an option to redirect debug stream to a + file. Debug is yanked if compiled with NDEBUG + +2005-01-13 Benoit Regrain + * src/gdcmDictSet.h : set the default output to the os variable + * src/gdcmDictEntry.[h|cxx] : add the Print method + * gdcmPython/demo/ : add a new test + +2005-01-13 Jean-Pierre Roux + * merging of Test/PrintDicomDir and Test/TestDicomDir + * removal of now redundant Test/PrintDicomDir + * enhancement of Example/PrintDicomDir + +2005-01-13 Benoit Regrain + * Now, python test might work on systems + * Add the PrintDicomDir test + +2005-01-13 Jean-Pierre Roux + * FIX : First entry following group 0002 was lost for + 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 + (related pb not yet solved) + +2005-01-12 Benoit Regrain + * Bug fix for the python part use + * Now, PrintHeader.py pass... but outside the ctest use. shit ! + +2005-01-12 Benoit Regrain + * gdcmPython/gdcm.i : bug fix when compiling with MSCV + +2005-01-11 Mathieu Malaterre + * Untangle TransferSynatx from gdcm::Document. Now Document only manipulate + a string and should ask the global TS dict what are the propreties of + the transfer syntax + +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' + +2005-01-10 Mathieu Malaterre + * Hopefully fix the bug on MacOSX and static global initialization. + This is the only -minor- patch I found that both please MacOSX and VS6. + Other patch would be to declare a const std::string & GDCM_UNFOUND() instead, + but this would require a lot of change. Another approach would be that Global + create those string and GDCM_UNFOUND becomes a pointer to a string (which + gdcm::Global would destroy at exit). + +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. + +2005-01-08 Jean-Pierre Roux + * According to Benoit's suggestion, and without any objection from anybody + - methods SetxxxByNumber and GetxxxByNumber renamed as Setxxx and Getxxx + - methods Dict::Print() and Dict::PrintByKey() merged into Dict::Print() + - method gdcmDicomDirObject::GetEntry() renamed as + gdcmDicomDirObject::GetEntryHT() to avoid confusion (and compile error) + +2005-01-07 Mathieu Malaterre + * Now gdcm::Debug is clearly a copy/paste of VTK approach. You can manipulate + you debug/warning message just as c++ streams which make them very convinient + to use. Once this is stabilize I will change the ostringstrem to be + redirected to a file (ofstream). + * Properly support C99 extension: __FUNCTION__ which allow us to display + the name of the function call (GNUC also allow __PRETTY_FUNCTION__ for c++) + +2005-01-07 Jean-Pierre Roux + * Removal of useless and dangerous methods : + GetEntryByName, GetEntryVRByName, GetDocEntryByName, SetEntryByName + GetDocEntryByName, GetEntryByName, GetDictEntryByName + * 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 + Add to the Dicom Dictionary of Dicom 'Value Multiplicity' field + 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 + should be used to write a method to replace the former + Dict::GetDictEntryNamesByCategory() + +2005-01-07 Benoit Regrain + * src/gdcmDocEntry.[h|cxx] : now the ReadLength is the length of the data + to read in the file... and only it ! Length is the efective length of the + data in the DocEntry structure + +2005-01-07 Mathieu Malaterre + * Change the gdcmDebug approach. Remov the global static debug 'dbg'. + And now use a static function call instead, with a global variable. i + This is much closer to the VTK approach. Hopefully should be bulletproof + and easier to use...hopefully + +2005-01-06 Mathieu Malaterre + * Adding GetMACAddres very alpha for now. This is tricky to be cross plateform. + +2005-01-06 Benoit Regrain + * src/gdcmDocument.[h|cxx] : remove all copy of DocEntry when parsing a file + +2005-01-06 Benoit Regrain + * src/gdcmDocEntrySet.[h|cxx], gdcmDocument.[h|cxx] : amelioration of + ValEntry, BinEntry, SeqEntry creation or replace + +2005-01-06 Benoit Regrain + * src/gdcmDictEntry.h : now, the IsVRUnknown is correct + * src/gdcmDocument.[h|cxx] : simplify the search of VR value when parsing + a file + * src/gdcmDocEntrySet.cxx : now the created DocEntry without values is good + when specifying the VR + * src/gdcmVR.[h|cxx] : add usefull method to test the validity of a VR + * src/gdcmDocEntry.cxx : amelioration of print + +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, + 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 + +2005-01-05 Benoit Regrain + * src/gdcmCommon.h : add the GDCM_UNKNOWN constant. This constant is to + replace the different values "??", "Unkn", "Unknown". + * src/gdcmDicomDirElement.h, gdcmDictEntry.h, gdcmDictSet.h, + gdcmDocEntry.cxx, gdcmDocEntrySet.[h|cxx], gdcmDocument.h, gdcmSQItem.cxx, + gdcmVR.cxx : use the GDCM_UNKNOWN constant. + * Appears a bug in gdcmDictEntry : IsVRUnknown always returns false... bad + +2004-12-16 Benoit Regrain + * src/gdcmBase.[h|cxx] : new base class. Contains the PrintLevel and an + empty Print Method + * Set the gdcm::Base class to some Printable classes + +2004-12-16 Benoit Regrain + * src/gdcmFile.[h|cxx] : add the Print method + * src/gdcmPixelReadConvert.[h|cxx] : add the generalized Print method + * src/gdcmDocEntrySet.h : generalize the Print with the PrintLevel + * src/gdcmDocument.h : remove the PrintLevel informations + * Example/PrintFile.cxx : use the new gdcm::File::Print + +2004-12-16 Benoit Regrain + * src/gdcmFile.cxx : Add the code of ReplaceOrCreateByNumber to not have + problems when compiling with the python wrapping + +2004-12-16 Benoit Regrain + * src/gdcmFile.cxx : bug fix. Omitted a Push in the DocEntryArchive when + writting in ImplicitVR + +2004-12-12 Jean-Michel Rouet + * src/gdcmPixelReadConvert.[h|cxx], src/gdcmJpeg*.cxx : new handling of + JPEG decompression, especially when dicom frames are split into several + JPEG Fragments. This makes use of jpeg decompression from memory buffer. + This solves reading for example gdcm-JPEG-Lossless_Thoravision.dcm. + +2004-12-10 Benoit Regrain + * src/gdcmHeader.cxx : change the initialisation of default header. + Now, this header is readable by gdm, e-film, DicomWorks + +2004-12-10 Benoit Regrain + * src/gdcmFile.[h|cxx], gdcmPixelReadConvert.[h|cxx] : change the API. + Rename Decompressed to Raw + * Use the API changes in gdcm::File. + * vtk/vtkGdcmWriter.[h|cxx] : add the possibility to write in other modes + Memory leaks fixed + +2004-12-10 Benoit Regrain + * vtk/vtkGdcmWriter.cxx, Example/WriteDicomSimple.cxx : add comments for + each added entry in the header. Replace the 'Planes' field by the 'Number + of Frames' field + +2004-12-09 Benoit Regrain + * vtk/vtkGdcmWriter.[h|cxx] : now can write stack of images. + * vtk/vtkWriteDicom.cxx : can write 2D stack or 3D image + +2004-12-09 Benoit Regrain + * Example/WriteDicomSimple.cxx : example to write a dicom file from nothing. + At this time, this image isn't readable by e-film... waiting JPR help to + solve it. + +2004-12-09 Benoit Regrain + * src/gdcmPixelReadConvert.cxx : bug fix when would forcing load of a + DocEntry. Now use methods of the Document ! + +2004-12-09 Benoit Regrain + * Test/ShowDicomSeq.cxx : bug fix + +2004-12-08 Benoit Regrain + * vtk/vtkGdcmReader.[h|cxx] : bug fix. Plane order isn't inverted + * vtk/vtkGdcmWriter.[h|cxx] : correctly write images (the Y axis is inverted) + * Test/ShowDicomSeq.cxx : new test to verify the use of AddFileName method + * Test/ShowDicom.cxx, TestWriteWithVTK.cxx : set the threshold of regression + test to 0.0 + * Test/TestCopyRescaleDicom.cxx : remove unused variable + * Test/CMakeLists.txt : add the creation of the gdcmDataSeqImages.h file + containing found sequences + +2004-12-07 Benoit Regrain + * Test/ShowDicom.cxx, TestWriteWithVTK.cxx : bug fix, now this test pass + not at all time + * Test/TestCopyRescaleDicom.cxx : rearrange the test to correctly pass... + Some fields in BinEntry must be copied to not seg fault when making the : + gdcm::File *copy = new gdcm::File( copyH ); + and tests are now made on good variables + +2004-12-07 Benoit Regrain + * vtk/vtkGdcmWriter.[h|cxx] : add a first version of vtkGdcmWriter + * src/gdcmValEntry.cxx : bug fix when setting the value. Problems of odd + length + * src/gdcmHeader.cxx : Remove a useless call to Util::DicomString + * Add vtkGdcmWriter example and test + +2004-12-07 Benoit Regrain + * Test/TestUtil.cxx : reformat the source code + * vtk/vtkGdcmReader.cxx : remove and change prints + * src/gdcmValEntry.[cxx|h] : now set the length of the value when calling + SetValue + * src/gdcmBinEntry.[cxx|h] : SetValue method don't set the length + * src/*.cxx : remove all useless call to SetLength of a ValEntry object + +2004-12-07 Benoit Regrain + * src/gdcmPixelWriteConvert.[h|cxx] : ficnished this class + * src/gdcmFile.cxx : finished the correctly use of PixelWriteConvert + +2004-12-06 Benoit Regrain + * src/gdcmDocument.cxx : bug fix when opening the file. All read is followed + by an eof to prevent all bad read of the file... and in this case, the + file isn't readable. + +2004-12-06 Benoit Regrain + * Example/Volume2Dicom.cxx : comment unused variables + * Test/PrintDicomDir.cxx : comment unused variables + * Test/BuildUpDicomDir.cxx : remove dbg.Verbose. Remove the FIXME. + * src/SQItem.[h|cxx] : remove the PtagHT variable. Remove the AddDocEntry + method that is redondant with AddEntry. + * src/gdcmDocEntrySet.h : add pure virtual methods common to ElementSet and + SQItem + +2004-12-04 Benoit Regrain + * Bug fix due my last commit (compilation under Windows). + * Example/Volume2Dicom : bug fix in the file and reformatting source code + * src/gdcmFile.h : bug fix. Variable type and variable name had same name + +2004-12-03 Mathieu Malaterre + * Huge cleanup: + - Remove printf / sprintf + - include iostream AFTER gdcm so we don't get warnings + - GDCM_NO_ANSI_STRING_STREAM shouldn't be used explitely ouside of gdcm + source + - Also remove tons of include from header files, hopefully this should + speeup the compilation time, since it was becoming a dog slow. + - Remove gdcm.h as it include way too many files and slow down compilation + (plus it is not up to date) + - remove 'using namespace std' this is BAD ! + +2004-12-03 Benoit Regrain + * Remove memory leaks on the DicomDir + * Remove some useless data in DicomDirObject + * Add usefull methods in SQItem, to be complient withe the ElementSet + +2004-12-03 Benoit Regrain + * src/gdcmFile.[h|cxx] : now use FileType instead of TWriteType. + +2004-12-03 Benoit Regrain + * src/gdcmPixelWriteConvert.[h|cxx] : new class to write data (and in the + future, with convertion) + * src/gdcmFile.[h|cxx] : the PixelWriteConverter instance replace Pixel_Data + and ImageDataSize values. Remove the method to get the PixelReadConverter + from the output of the class + +2004-12-03 Benoit Regrain + * Rename src/gdcmPixelConvert.[h|cxx] to src/gdcmPixelReadConvert.[h|cxx] + +2004-12-02 Benoit Regrain + * vtk/vtkGdcmReader.cxx : correct error in vtkDebugMacro, vtkWarningMacro + and vtkErrorMacro use. + * gdcmPython/gdcm.i : corrections to avoid warnings at compilation + +2004-12-02 Benoit Regrain + * Test/TestCopyDicom.cxx : the new dicom created is created empty, without + file name in input + * src/gdcmSeqEntry.cxx : bug fix in destruction of an element + * src/gdcmHeader.cxx : bug fix. Keep the string, otherwise it is destroyed. + The string leaves only in the fonction. So when we make a .c_str(), we + get the pointeur on the first element, element that will be destroyed + immediately after thee instruction. + * src/gdcmDocument.cxx : remove memory leaks. Bug fix when testing if the + file has been opened : the test must be made on the content of the + pointer and not directly on the pointer ! + Code formatting + +2004-12-02 Benoit Regrain + * gdcmPython/gdcm.i : change gdcmHeaderHelper to gdcmSerieHeader. Now, + the python part recompiles + +2004-11-30 Benoit Regrain + * Test/ShowDicom.cxx : Change the test to only open one vtkImageViewer. + Otherwise, under linux (Graphic card : NVidia / SE : FedoraCore 1) the + X session is killed (for my computer... it seems to not be identic on + all linux) + +2004-11-30 Benoit Regrain + * Test/ShowDicom.cxx : now can be used with an off-screen rendering to + avoid problems (otherwise, the difference test between the visible image + and the reference is incorrect. If the reference is greater than the + screen resolution, it's produce errors). + Can be used for only one image. Can be used with a visible flag. + * vtk/vtkGdcmReader.cxx : remove commented codes. + * vtk/vtkGdcmReader.h : add the gdcmCommon.h include file to avoid warnings + under windows at compilation + * vtk/vtkgdcmViewer.cxx : reformat the file. Apply a default window/level + for grayscale images + * vtk/GdcmToBaseline.cxx : new program to easy create the reference image + +2004-11-30 Benoit Regrain + * src/gdcmFile.[h|cxx] : bug fix for ACR-LIBIDO files when writting the file + * Test/TestAllReadCompareDicom.cxx, TestReadWriteReadCompare.cxx : add + tests on the image size X, Y, Z + +2004-11-26 Benoit Regrain + * Remove some useless methods in gdcm::Document, gdcm::Header and gdcm::File + * Rename gdcmHeaderHelper.[h|cxx] to gdcmSerieHeader.[h|cxx] to be coherent + between the class name and the file name + +2004-11-25 Benoit Regrain + * src/ : fix compilation warnings for the Write method (2 different + proto). So Rename 'Write(ifstream* fp' into 'WriteContent(ifstream* fp' + fix compilation warnings for the gdcm::Document::TransferSyntaxStrings + variable... create a static method in gdcm::Document to access to + this variable content. + +2004-11-25 Benoit Regrain + * src/gdcmDocument.[h|cxx] : set the Transfert Syntax values to the header + file, to be accessed by other files (like gdcmFile). Remove commented + code. Move the change of the header to the gdcmFile, using the + DocEntryArchive + * src/gdcmHeader.[h|cxx] : the write is completely made in the Header. + To be sure of that (and simplify calls), the Write of the header now + gets a file name and not a file pointer (std::ifstream). + * src/gdcmFile.[h|cxx] : apply the write file type to the header, using the + DocEntryArchive. Remove all open of the written file + +2004-11-25 Benoit Regrain + * vtk/vtkGdcmReader.cxx : compilation bug fix for the vtk part + +2004-11-25 Benoit Regrain + * src/gdcmDocument.cxx : fix bug... test if the fp is opened to use it + * src/gdcmPixelConvert.cxx : calculate the image size when while the grab of + the header. + * src/gdcmFile.[h|cxx] : remove PixelRead and ImageDataSizeRaw variables and + some corresponding methods. Write correctly the file and check before + write + * Test/TestCopyDicom.cxx, TestReadWriteReadCompare.cxx, + TestAllReadCompareDicom.cxx : pass the write of images to RGB and test + is now on RGB data (as before my last commit + * Example/PrintHeader.cxx, PrintFile.cxx : repad files. + +2004-11-24 Benoit Regrain + * src/gdcmBinEntry.cxx, gdcmSeqEntry.cxx, gdcmSQItem.cxx, gdcmValEntry.cxx : + Add a print information of the type of the entry + * src/gdcmDocument.cxx : add the write of the preambule of a Dicom file. + It was in the gdcmFile, and all write have been regrouped + * src/gdcmFile.[h|cxx] : add methods to get the Raw data elements and size. + Write correctly all dicom files (in decompressed mode only at this time) + * Test/ : test on files are now made using Raw data and not color data if + any. + * Example/PrintFile.cxx : add more printings + +2004-11-24 Benoit Regrain + * Amelioration of code, remove some code copy. For the loading of + BinEntry (in gdcmDocument), add the test to verify if the file is already + opened or not. + +2004-11-24 Benoit Regrain + * src/gdcmDocEntryArchive.[h|cxx] : bug fix and add a method to temporary + remove a DocEntry in the header (push an empty DocEntry) + * src/gdcmFile.[h|cxx] : remove some useless variables, methods and code + lines. Bug fix in the initialization of the PixelConvert and the + DocEntryArchive + * src/gdcmElementSet.[h|cxx] : add methods Initialize and GetNext to + use in TestCopyDicom (now this test can run under windows... but fails) + * Test/TestCopyDicom.cxx : amelioration of the test : + - test the pixels written + - add test points to quickly find where is the error + - can set a file name input and output in arguments + * Test/TestAllReadCompareDicom.cxx, TestReadWriteReadCompare.cxx : + amelioration of the test output + +2004-11-23 Benoit Regrain + * src/gdcmDocEntryArchive.cxx : complete the print function, that prints + all replaced DocEntry's + * src/gdcmFile.[h|cxx] : remove all changes of the header when getting data. + Now, each needed DocEntry to modify is duplicated, modified and inserted + to the header using DocEntryArchive. Thus, after save, we can restore the + header initial state. + +2004-11-22 Benoit Regrain + * src/gdcmFile.h : fix compilation errors on zorglub linuc computer + +2004-11-19 Benoit Regrain + * src/gdcmDocEntry.cxx : remove the copy of the DictEntry... there isn't + correct to copy it. The DictEntry is specified at the DocEntry creation, + then, it musn't change in the time. + * src/gdcmDocEntryArchive.[h|cxx] : new class. It's goal is to change the + header correctly. At this time, the change is only made for the first + level of the Document. In the future, it might consider sequences. + The change is made by replacing a DocEntry by an other that is created + outside the class. The old value is kept. When we restore the header + status, the added DocEntry is deleted and replaced by the old value. + * src/gdcmElementSet.h : Set the DocEntryArchive like friend. + * src/gdcmFile.[h|cxx] : Use the gdcmDocEntryArchive. Add methods to + set the write type to explicit VR, implicit VR or ACR. Add methods to set + the write mode to native, decompressed or RGB (but not used at this time) + +2004-11-15 Benoit Regrain + * src/gdcmSeqEntry.cxx : add initialisation of variable SeqTerm + * src/gdcmDocument.cxx : add delete of DocEntry's to remove some memory leaks + +2004-11-15 Benoit Regrain + * src/gdcmDocument.cxx : now, when using the ReplaceOrCreateByNumber to + set a BinEntry, the binArea is copied (like to set a ValEntry, the string + is copied). + * Test/TestCopyDicom.cxx, Example/TestCopyDicom.cxx : the image data isn't + set because already copied when copying the BinEntry's of the header + * Test/TestAllReadCompareDicom.cxx : remove warnings + +2004-11-15 Benoit Regrain + * FIX : now, the DocEntries are all deleted in the gdcmElementSet. + Two problems appear when doing it : + - with the gdcmFile : when the GetImageData method is called, the pixels + are stored in the gdcmPixelConvert, but a gdcmBinEntry link to these + data (pixels). And each structure destruct the data when it's + destructed. So we have two destructions for the same data. To solve it, + a flag is added in the gdcmBinEntry to indicate if the BinEntry owns the + data or not. If it doesn't own data, then they will not destroyed by + the gdcmBinEntry. + - with the gdcmDicomDir : the sequences (gdcmSQItem) contain DocEntry + elements. The DicomDir* (DicomDirPatient, etc.) inherit from SQItem. + Thus destruct the DicomDir* elements and the TagHT of the ElementSet + create a double destruction of the same DocEntry's. So, to solve it, + the TagHT is simply cleared and the DicomDir* elements are destroyed. + * TODO : add an entry concerning memory leaks in the DicomDir + +2004-11-15 Benoit Regrain + * FIX : src/gdcmDocument.cxx Remove obvious code in the destructor + * FIX : src/gdcmPixelConvert : Set to NULL the deleted structures in the + squeeze method + +2004-11-15 Benoit Regrain + * FIX: src/gdcmUtil.cxx : to compile with MSVC6 + * src/gdcmDocument.cxx : fix memory leaks. Fix possible bugs : use an object + after it have been deleted + +2004-11-16 Eric Boix + * FIX: src/* fix the doxygen warnings. + * src/gdcmVR.cxx: removed some redundant tests (e.g. LO) + * src/gdcmDocument.cxx: FIX ::ComputeRLEInfo() rleSegmentOffsetTable[] + was erroneously defined with a size of 15 instead of 16. [many thanks + to Jean Michel Rouet for pointing out this bug]. + +2004-11-15 Mathieu Malaterre + 1. Finish merging JMR patch for writting DICOM from scratch + 2. Fix -hopefully- bug with MONOCHROME and space vs null character + 3. Use const ref when possible + 4. Add a new function InitializeDefaultHeader, which create a template DICOM header (CT image for now) + 5. A few more comments + 6. CreateUniqueUID can now be called without parameter" + +2004-11-15 Mathieu Malaterre + * ENH: Slightly bigger patch: + 1. Getting toward full integration of JMR patch for writting dicom from scratch + 2. Update Test to test part of this patch: CreateUniqueUID + 3. File was not close properly in gdcmDict + 4. Use of typedef is to be prefered when possible (gdcmDict.cxx) + 5. Use of const ref instead of copy (speed issue) + 6. Remove temporary (duplicate) string in TranslateToKey + 7. Mark extremely dangerous code as such (gdcmDocument.cxx and AddEntry fallback case) + 8. Do not repeat virtual in subclasses + 9. Implemented in gdcm::Util two new function: GetIPAddress, and CreateUniqueUID + +2004-11-15 Mathieu Malaterre + * Apply first patch toward better string comparison when dealing with broken + DICOM files. Essentially the string could be padded with a space instead + of a null character as defined by standard + +2004-11-15 Benoit Regrain + * src/gdcmDocument.[cxx|h] : fix memory leaks. The return is suppressed + because never used... and in the same time, that's remove some memory leaks + +2004-11-15 Benoit Regrain + * src/gdcmFile.cxx : now delete the PixelConvert instance. + * In examples and tests : change the type of image data variables from void* + to uint8_t*. Remmove all delete on image data variables + +2004-11-10 Benoit Regrain + * src/gdcmDocument.cxx : Set the file pointer TP to 0 in the constructors. + Verify the file pointer value before open the file, and if it's not null, + a verbose message is generated. + Close correctly the file when the file isn't considered dicom-like. The + correctly close is a call to CloseFile. + When closing the file pointer, test if its not null to close the file. + * src/gdcmPixelConvert.cxx : bug fix for the SIEMENS_GBS_III-16-ACR_NEMA_1.acr + file. For an uncompressed image, the copied data correspond in the least + case to the image size (calculated) or the image size specified in the + header. A verbose is generated if these two size mismatch + +2004-11-09 Benoit Regrain + * Test/TestAllReadCompareDicom.cxx : test the existence of the directory + using an 'ifstream' other than a 'FILE *'. The previous solution ('FILE *') + break under windows (with msvc6 compilation). + +2004-11-09 Benoit Regrain + * src/gdcmDicomDir.h : bug fix for the last Boix's commit (problem when + compiling with MSVC6) + +2004-11-09 Benoit Regrain + * Bugs fix for the Windows build with VC6 + * CMakeLists.txt : bug fix - The include of the VTK lib is made only when it's + needed (only for projects required VTK). If the VTK is included in all + projects, there is conflicts with the jpeg lib of vtk when compiling the + gdcmjpeg[8,12,16] projects. The first conflict is on the jmorecfg.h file. + * src/gdcmUtil.h : export binary_write methods. Otherwise, there's problems + when compiling the gdcm_wrap.cxx file (created by the compilation of the + gdcm.i file) + * vtk/vtkGdcmDemo.cxx : remove the use of std namespace for the cerr use + (like it's already made for the cout use). Otherwise, conflict with the + std::cerr of vtk. + +2004-11-09 Eric Boix + * src/gdcmDicomDit.h the Method typedef is now local to DicomDir class. + * gdcmPython/gdcm.i: + - comments on the DicomDir::Method related usage added. + - now that we use the namespace gdcm, a lot of internal classes do + NOT need to be wrapped anymore. + * gdcmPython/demo/DicomDirProgressMethod.py (that uses the above + DicomDir::Method) new example added. + +2004-11-05 Mathieu Malaterre + * Improve string manipulation. I now inforce the notion of 'DicomString' + A DicomString can contain as many \0 as they want + and it is *always* of even length. + We only support odd length for very rare case. + And in the near future this should be removed. + +2004-11-03 Mathieu Malaterre + * /binary_write/ gdcm source. Now even on big endian we are writting + little endian. This should -heopfully- fix some tests + +2004-11-03 Mathieu Malaterre + * Now the dictionary is compiled into gdcm lib. This is a default + behavior, thus any dic file specified is picked before failback to + the one comiled into lib + +2004-10-27 Mathieu Malaterre + * Change internals for gdcmDict. Don't use any 'new' any more. + This should definitely solve any leak problem, and we should be + as fast as before, as long as don't modify too much the dictionary. + +2004-10-25 Mathieu Malaterre + * STYLE: ivars should start with a capital letter. + * Accessors should be const to avoid people starting modifying stuff (since this is a ref). + * remove 'virtual' as Style specify subclasses shouldn't reuse the keyword + +2004-10-22 Eric Boix + * Doc/Dicom2004_Part5.pdf added (thanks to JPR). + * Dicts/dicomTS2004.dic, dicomV3VM2004.dic, groupNameAbbreviations2004.dic + new 2004 dictionaries added (thanks to JPR). + * FIX dashboard warning RLEFrame::NumberFragments is now of type unsigned int + * CLEANUP_ROUND (15) for gdcmPixelConvert + - RLEFrame::NumberFragments is now of type unsigned int + - gdcmFile::GetImageData(), GetImageDataIntoVector(), GetImageDataRaw() + are now all based on PixelConverter. ::GetImageDataIntoVectorRaw() + no longer exists. + +2004-10-21 Mathieu Malaterre + * Initial work in gathering all transfer syntax accessors. clearly + IsDecompressed/IsJPEG2000/IsJPEGLossless/IsRLELossless shouldn't be all + ivars, but only one transfersyntax (class) ivar with equivalent method on + the class. + +2004-10-21 Mathieu Malaterre + * Removed all FILE* ref and replace by ifstream/ofstream. For now I use a temp + solution with the two files jdatadst.cxx and jdatasrc.cxx, this need to be + discussed (plus I didn't like having a 2000 lines patch not commited) + +2004-10-21 Eric Boix + * src/gdcmDocument.cxx: wrong type on return fixed (thanks dashboard) + * CLEANUP_ROUND (14) for gdcmPixelConvert + - PixelConvert::GetLutRGBA(FILE*) is now GetLutRGBA() (no fp needed) + - PixelConvert::BuildRGBImage()(FILE*) is now BuildRGBImage() (no fp needed) + - File::GetImageDataIntoVector() doesn't need unnecessary OpenFile() and + CloseFile() anymore. + - File::GetImageDataRaw() doesn't call GetImageDataIntoVectorRaw() + anymore and hence avoids storing a copy of PixelConvert::Decompressed + into File::Pixel_Data. + +2004-10-20 Eric Boix + * src/gdcmDocument.cxx ftell() return properly stored in a long (i.e. + no longer depends on's programmers PMS = Preposterous Mood Swings ;). + * CLEANUP_ROUND (13) for gdcmPixelConvert + Substituted File::ParsePixelData() with PixelConvert::Print() new + method: + - src/gdcmParsePixels.cxx removed (only contained File::ParsePixelData()) + - src/gdcmRLEFrame.cxx, gdcmJPEGFragment.cxx added. Added a ::Print() + method to those classes. + - src/gdcmFile.[cxx|h]: + -- Added a ::Print() method. + -- PixelConverter is now a reference instead of a member. + -- gdcmPython/gdcm.i: added "using namespace gdcm" in order for + gdcm_wrap.cxx to "understand" File::GetPixelConverter() + +2004-10-18 Eric Boix + * Doc/CMakeLists.txt, doxygen.config.in: when dot is present the + collaboration diagram and inheritance diagram should be generated with + doxygen. + * Doc/Website/Sidebar.html: Dashboard is now also in the sidebar. + * gdcmPython/gdcm.i: gdcmRLEFramesInfo.h gdcmJPEGFragmentsInfo.h are + pointlessly wrapped (see + http://www.creatis.insa-lyon.fr/pipermail/dcmlib/2004-October/000692.html ) + * CLEANUP_ROUND (12) for gdcmPixelConvert (sugar is my friend stage) + - Header::GetLUTRGBA() moved to PixelConvert::GetLutRGBA() + - vtk/vtkGdcmReader.cxx: adapted to displacment of Header::GetLUTRGBA() + - Document::RLEInfo and JPEGInfo are now pointer members (Swig thing) + - src/gdcmFile.[cxx|h] and gdcmPixelConvert.[cxx|h]: + -- File::Initialise: PixelConverter setup moved away to + PixelConverter::GrabInformationsFromHeader() + -- File::GetImageDataIntoVector(): Lut R + Lut G + Lut B color table + interpretation moved away to PixelConverter::BuildRGBImage() + +2004-10-16 Mathieu Malaterre + * Remove GDCM_EXPORT keyword from gdcm::DirList due to : + http://support.microsoft.com/support/kb/articles/Q168/9/58.ASP + +2004-10-15 Eric Boix + * src/gdcmDebug.cxx last ditch attempt to get warning/error messages + displayed on Win32 when a brutal abort() occurs (because of uncatched + exception). See TODO new entry of this commit for more on this. + * TODO added new entry. + * CLEANUP_ROUND (12) for gdcmPixelConvert (nicotine is my friend stage) + src/gdcmFile.[cxx|h] and gdcmPixelConvert.[cxx|h]: + - HandleColor is no longer called from gdcmFile.cxx + - gdcmPixelConvert.cxx clean up on method arguments and internal + variable names for semantical coherence. + +2004-10-14 Mathieu Malaterre + * Finished lossless transition, not only do we now read all lossless jpeg + images, without the need of the Cornwell lib, but we do read them properly now + * To reduce code (well to avoid code duplication), I defined a common place + for jpeg read/write: gdcmJpeg.cxx. Now gdcmJpeg[8,12 16] include this file and + redefine symbols. This is not perfect but this the best solution I found for a + compilation time jpeg option. + +2004-10-13 Mathieu Malaterre + * Update jpeg ijg lib to support lossless jpeg implementation + For more info look in jpeg/libijg/README.GDCM.txt for necessary steps to + reproduce at home. + * Also added a special copyright for dcmtk since we use their bugfixes. + Thanks dcmtk crew ! + +2004-10-13 Eric Boix + * Doc/Website/MailingList.html added (Sidebar.html changed accordingly). + * gdcmPython/gdcm.i: fix for compilation of wrappers (Note: %include order + matters, as stated in warning note at beginning of %include section). + * src/gdcmDicomDir*.[cxx|h]: coding style + * src/gdcmDocument.h: doxygen \ref seems uncompatible with \todo. + * src/gdcmJpeg8.cxx: doxygen fix. + * CLEANUP_ROUND (12) for gdcmPixelConvert (seing the ligth stage) + src/gdcmFile.[cxx|h] and gdcmPixelConvert.[cxx|h]: color handling moved + from File:: to PixelConvert::. + +2004-10-12 Eric Boix + * CLEANUP_ROUND (11) for gdcmPixelConvert (cafeine is my friend stage) + src/gdcmFile.[cxx|h] and gdcmPixelConvert.[cxx|h]: + - more code moved away from File:: to PixelConvert:: + - fat setup of PixelConverter set in place in File::Initialise. + +2004-10-12 Mathieu Malaterre + * Apply patch for namespace in gdcm. Didn't rename files for keeping a sort of + namespace at the file system level. So now you should convert your examples + like this: + gdcmHeader -> gdcm::Header + It would be nice if people keep in mind to no open the namespace, since it + allows compilation on broken plateform which were defining common symbol in + the standard namespace (like LP, Unknown ...) + +2004-10-10 Eric Boix + * CLEANUP_ROUND (10) for gdcmPixelConvert (Xanax is my friend stage) + The JPEG fragments are now parsed at the same stage than the RLE + information. All code related to JPEG is now in gdcmPixelConvert: + - src/gdcmJPEGFragment.h and gdcmJPEGFragmentsInfo.[h|cxx] added + - src/gdcmJpeg12.cxx, gdcmJpeg2000.cxx and gdcmJpeg8.cxx no longer + export a gdcmFile:: method. Those are simply global functions + (for the time being this is better than having them attach to + either gdcmFile:: or gdcmPixelConvert::). + - src/gdcmDocument.[cxx|h], gdcmDocument:: now parser the JPEG fragments + and stores the result in a gdcmJPEGFragmentsInfo. + - src/gdcmFile.[cxx|h] and gdcmPixelConvert.[cxx|h]: all JPEG related + code (among other stuff) moved away from gdcmFile:; to + gdcmPixelConvert:: + +2004-10-08 Eric Boix + * src/gdcmCommon.h now declares int8_t for non stdint.h plateforms. + * CLEANUP_ROUND (7) for gdcmPixelConvert (lost at sea) + - src/gdcmFile.h gdcmPixelConvert.cxx gdcmPixelConvert.h gdcmRLE.cxx: + clean up of RLE related code. + * CLEANUP_ROUND (8) for gdcmPixelConvert (end of RLE nigthmare) + - src/gdcmRLE.cxx removed + - src/gdcmPixelConvert.cxx all RLE code is now in PixelConvert:: + - src/CMakeLists.txt gdcmFile.[cxx|h] changed accordingly + - src/gdcmRLEFrame*.h gdcmPixelConvert is now a friend class. + * CLEANUP_ROUND (9) for gdcmPixelConvert + - src/gdcmFile.[cxx|h} gdcmPixelConvert.[cxx|h], SwapZone(), + ConvertReorderEndianity(), ConvertDecmpres12BitsTo16Bits() moved + away from gdcmFile:: to gdcmPixelConvert::. + +2004-10-07 Eric Boix + * CLEANUP_ROUND (5) for gdcmPixelConvert (Upshit creek without a paddle) + - src/gdcmDocument.[cxx|h] Parse7Fe0 renamed to ComputeRLEInfo. + This is because Parse7Fe0 used to parse the pixels to compute the + length. This task was passed over to FindDocEntryLengthOB() a long + time ago, EXCEPT I forgot the OW case... + Hence Parse7Fe0 was no longer necessary. When renaming to ComputeRLEInfo + we just recylce the code for parsing RLE fragments and computing + offsets. + * CLEANUP_ROUND (6) for gdcmPixelConvert (man, I need a paddle bad) + - src/gdcmRLE.cxx: is now much simpler and avoids code replication + with the retired Parse7Fe0(). + - src/gdcmRLEFrame.h: type fix for properly computing OffSet[] + - src/gdcmDocument.cxx: segments offset are now correct + clean up. + +2004-10-06 Eric Boix + * CLEANUP_ROUND (3) for gdcmPixelConvert (nightmare stage) + - src/gdcmRLEFramesInfo.[cxx|h], gdcmRLEFrame.h added + - src/gdcmDocument.[cxx|h] ::Parse7FE0 now sets up the RLEInfo. + - src/CMakeLists.txt: alphabetic order reodering + new entries. + * CLEANUP_ROUND (4) for gdcmPixelConvert + - src/gdcmDocument.[cxx|h] ::ParseDES and ::ParseSQ no longer bother + to return an unused length. + +2004-10-09 Mathieu Malaterre + * Remove all sprintf from the code to centralize in one spot in gdcmUtil + this should be cleanner from the plane view. The iostream are erally a pain + to use to do simple stuff. + +2004-10-04 Mathieu Malaterre + * Redo the compilation of the ijg jpeg library. Now only one source is + necesseray. No need to rename file by hand what so ever. CMake handle the + copying of the file within different directory, configure header file to + modify some symbol. The only addition made to ijg wasd a mangle table so + that symbol are different whether we are within 8bits or 12bits. + +2004-10-01 Eric Boix + * Added documentation of vtkgdcmReader on Website: + - testvtkGdcmReader.cxx renamed to vtkGdcmDemo.cxx (to be compatible + with it's binary name). + - vtk/vtkGdcmDemo.cxx and vtkgdcmViewer.cxx: added comments for + the Website to be more complete. + - Doc/doxygen.config.in: vtk/vtkGdcmReader.cxx now appears on + doxygenated documentation. + - Doc/DoxyVtkGdcmReaderExamples.txt added + (see http://www.creatis.insa-lyon.fr/Public/Gdcm/html.developper/ + DoxyVtkGdmReaderExamples.html ) + * src/win32, vtk/win32 manually maintained .dsp and .dsw removed. + * CLEANUP_ROUND (3) for gdcmPixelConvert + - src/gdcmFile.cxx, gdcmFile.h splitting GetImageDataIntoVectorRaw + +2004-09-29 Eric Boix + * CLEANUP_ROUND (2) for gdcmPixelConvert + - src/gdcmFile.cxx, gdcmFile.h splitting GetImageDataIntoVectorRaw + +2004-09-29 Eric Boix + * CLEANUP_ROUND for gdcmPixelConvert: + - src/gdcmFile.cxx, gdcmFile.h, gdcmHeader.cxx, gdcmHeader.h clean up + - src/gdcmPixelStuff[h|cxx] removed + - src/gdcmPixelConvert[h|cxx] added. Preparatory work included. + - src/CMakeLists.txt changed accordingly + * GDCMHOME clean up: + - MANIFEST.in, WrapSwig.py, WrapVTK.py, distutilsWrapping.py and + gdcmVersion.py moved to newly created ATTIC related + gdcmPython/SetupOldies/ directory. + * Autotools clean up: + - */*/Makefile.am removed AT EXCEPTION of gdcmPython/Makefile.am + - autogen.sh configure.in acinclude.m4 python.m4 removed + +2004-09-27 Eric Boix + * src/*.cxx *.h Reference to License.htm fixed to License.html. + * Doc/CMakeLists.txt, doxygen.config.in: fix. + * Doc/Website/ConformanceSummary.html, minimal conformance statement added. + +2004-09-24 Eric Boix + * TODO updated with Mathieu suggestions. I proposed a template for + describing TODO entries and used it for new entries. + * Added Doc/Website/CodingStyle.html, Developpers.html, + DeveloppersPython.html, GdcmDataCvs.html and + DownloadVersion0_1.html, DownloadVersion0_3.html. + * Some Doc/*.txt Doxygen files (which do not really concern the + documentation itself, but the website) moved to html and + placed in directory Doc/Website: + - Doc/DoxyDevelInstal.txt moved to Doc/Website/Developpers.html + - Doc/DoxyInstallation.txt moved to Doc/Website/Installation.html + - Doc/DoxyIntroduction.txt included in Doc/Website/Main.html + * Doc/DoxyfileDeveloppers, DoxyfileUsers, Makefile.am oldies removed. + * CMakeLists.txt changed accordingly. + * DEVELOPPER spread out in Doc/Website/Developpers.html, CodingStyle.html, + DeveloppersPython.html + * INSTALL nows refers to Doc/Website/Installation.html + +2004-09-23 Eric Boix + * Added Doc/Website directory, that contains a first raw version + of gdcm Web site. + +2004-09-23 Jean-Pierre Roux + * FIX In order not to be poluted any longer by casting problems, + the member VoidArea of gdcmBinEntry is now uint8_t* (instead of void *) + we can now delete[] it safely + * VoidArea is now called BinArea (less confusing name), + and all the methods called ...VoidArea... are now ... BinArea... + * class gdcmObject is now called gdcmDicomDirObject (less confusing name) + +2004-09-22 Eric Boix + * src/gdcmDocument.cxx: gdcmDocument::~gdcmDocument() doesn't clear (nor + clear) TagHT, which is an inherited member of gdcmElementSet. It is + up to the destructor of gdcmElementSet to clean up TagHt and it's + pointed content. + +2004-09-21 Eric Boix + * Test/CMakeLists.txt: update to follow gdcmData renamings. + * src/gdcmCommon.h, gdcmDocument.cxx: doxygen typos + +2004-09-17 Eric Boix + * ENH: added some utility method that builds a flat dictionary + holding all the Dicom entries contained in the recursive structure + of a gdcmElementSet. Refer to add FlatHashTablePrint.cxx for + an example of usage. + - src/gdcmDocument.[h|cxx] added BuildFlatHashTableRecurse() and + BuildFlatHashTable() that build a flat dictionary. + - src/gdcmElementSet.h: added a new private GetTag() accessor. + gdcmDocument is now a friend of gdcmElementSet. + - src/gdcmElementSet.cxx: clean up. + - Example/FlatHashTablePrint.cxx added. + - Example/CmakeLists.txt changed accordingly + +2004-09-16 Eric Boix + * gdcmDocEntrySet::SQDepthLevel and gdcmDocEntrySet::BaseTagKey attributes + moved away from gdcmDocEntrySet (since this class is an abstract class + acting like an interface). SQDepthLevel and BaseTagKey are now + in class + - src/gdcmDocEntrySet.[h|cxx] removal of SQDepthLevel and BaseTagKey + and associated accessors. Doxygenation of the class. + - src/gdcmSQItem.[h|cxx] SQDepthLevel and BaseTagKey and associated + accessors added. + - src/gdcmSeqEntry.[h|cxx]: constructor doesn't handle depth anymore. + Use SQDepthLevel accessor instead. ::Print() adapted. + - src/gdcmElementSet.cxx changed according to changes in gdcmSeqEntry. + - src/gdcmDocument.cxx changed accordingly. + +2004-09-13 Eric Boix + * Preparation of writing a gdcmHeader iterator: generalisation of gdcmTagKey + - The following is the doxygen comment of the typedef declaration + of gdcmTagKey in src/gdcmCommon.h: + gdcmTagKey is made to old an "universal" (as in URL, Universal + Ressource Locator) key to a gdcmDocEntry i.e. a dicom tag. + A dicom tag always has a group and an element, but a set of tags + embeded in various (optionally nested) sequences and sharing + the same group and element all share the same (group, element) + "identifier". Hence the (group, element) cannot be used as an + identifier (in gdcm we shall refer to a "TagKey") of a tag. + In order to construct a proper tag identifier (i.e. a key) we + consider the following definition of a TagKey: + - let Group, Element be the string representation of the + group and element dicom tag members, + - let ItemNumber be the string representation of the integer + index of the considered item number of a sequence, + Let the key of a tag embeded in a sequence, noted SeqTag, be + the form: + /ItemNumber#Group|Element + where "/", "#" and "|" are characters acting as separators. + Then the general form of a gdcmTagKey is given by: + Group|Element + where means NO or many instances of SeqTag. + Hence the gdcmTagKey of a tag not "leaving" in a sequence is the + string e.g. + 0028|1201 + but the gdcmTagKey of a tag "embeded" is the first item of + a sequence, itself nested in the third item of a sequence is the + string e.g. + 0004|1220/2#0008|0082/0#0008|0090 + - src/gdcmDocEntry.h: added a new Key (of type gdcmTagKey) member, in + order to hold the new sequence compatible key. Previously, the + GetKey() method would look in the underlying gdcmDictEntry. + - src/gdcmDocEntry.cxx: + -- constructor now copies the underlying DictEntry key, in the local + Key member. + -- ::Print: displays the member Key, instead of the (group, element). + - src/gdcmCommon.h: added some comments on typedef gdcmTagKey. + - src/gdcmDocEntrySet.h:xi + -- ::ParseDES() now setups the gdcmTagKey of the sequence it is parsing. + -- now has a new BaseTagKey member. + -- STYLE. + * src/gdcmValEntry.[h|cxx], src/gdcmBinEntry.[h|cxx]: the member VoidArea, + previously a member of gdcmValEntry, moved to gdcmBinEntry were is + truly belongs. + This poses the problem with the semantics of the following lines + LoadEntryVoidArea(0x0028,0x1201); // R LUT + LoadEntryVoidArea(0x0028,0x1202); // G LUT + LoadEntryVoidArea(0x0028,0x1203); // B LUT + in gdcmDocument::gdcmDocument(std::string const & ). Please refer + to the long FIXME note for what the problem is. Nevertheless in + order to get things working the dicom dictionary was altered ! + Please fix things urgently... + * Dicts/dicomV3.dic WRONGLY altered (this means we introduced a uncorrect + information), see above note on moving the member VoidArea. Nevertheless + the following entries previously correctly set as US are now inproperly + set to OW: + 0028 1201 OW IMG Red Palette Color Lookup Table Data + 0028 1202 OW IMG Green Palette Color Lookup Table Data + 0028 1203 OW IMG Blue Palette Color Lookup Table Data + * src/gdcmDocEntry.[h|cxx], src/gdcmSeqEntry.h: SQDepthLevel member + of gdcmDocEntry moved to gdcmSeqEntry. + * src/gdcmSeqEntry.cxx: STYLE. + +2004-08-04 Eric Boix + * Test/TestAllEntryVerify.cxx minor fix and added comments. + +2004-08-03 Eric Boix + * gdcmPython/testSuite.py: all the test suite in python is now moved + to it's C++ version (see gdcmData/TestAllEntryVerifyReference.txt) + * Test/CMakeLists.txt adapted to renaming of files in gdcmData + * gdcm/TODO and src/gdcmDictSet.h cleaned up frow the "TODO Swig" oldies + +2004-08-02 Eric Boix + * gdcmPython/CMakeLists.txt: SWIG_FLAGS doesn't declare includeall + to avoid inclusion recursion until STL is reached. + * src/gdcmDocument.[h|cxx]: exceptions substituted to errno C-style + mecanism. errno.h is not included in gdcm anymore. + * src/gdcmException.h: introduced new gdcmFormatUnexpected class + (gdcmFormatError now inherits from gdcmFormatUnexpected). + * TODO updated + * gdcmPython/testSuite.py checks on CR-MONO1-10-chest.dcm moved to + gdcmData/TestAllEntryVerifyReference.txt + * Test/TestAllEntryVerify.cxx is now effective (used always return true) + * src/gdcmDocument.[cxx|h]: constructors no longer use the bool + exception_on_error parameter. + - src/gdcmFile.[cxx|h], src/gdcmHeader.[cxx|h] changed accordingly, + - vtk/vtkGdcmReader.cxx changed accordingly, + - Example/*.cxx and Test/*.cxx changed accordingly. + +2004-07-06 Eric Boix + * src/gdcmDicomDir.cxx, gdcmDocEntrySet.cxx: removed inclusion of errno.h + * src/gdcmDocument.[h|cxx], gdcmFile.[h|cxx], gdcmHeader.[h|cxx]: + enable_sequences removed from gdcmHeader constructor and dependencies. + * Example/PrintHeader.cxx: fixed accordingly (enable_sequences removal). + * gdcmPython/demo/PrintHeader.py: dummy fix. + * src/gdcmDocument.[h|cxx], gdcmFile.[h|cxx], gdcmHeader.[h|cxx]: + skip_shadow removed from gdcmHeader constructor and dependencies. + * Example/*.cxx and Test/*.cxx changed accordingly. + +2004-07-27 Eric Boix + * Test/CMakeLists.txt: newly re-introduced SIEMENS_Sonata-12-MONO2-SQ.dcm + in gdcmData (previously known as E00001S03I0015.dcm) is blacklisted. + +2004-07-21 Jean-Pierre Roux + * FIX Now, Parsing and Printing a DICOMDIR do work! + ( troubles remain in makeDicomDir and BuildUpDicomDir :-( + +2004-07-20 Jean-Pierre Roux + * FIX Some brain damaged headers have Zero-Lenght fields + for 'Transfert Syntax UID', or 'Media Stored SOP Class UID'. + +2004-07-19 Benoit Regrain + * src/gdcmCommon.h, gdcmDict.cxx, gdcmTS.cxx : bug fix for msvc6 compilation + * src/gdcmDebug.[h|cxx] : bug fix for msvc6 compilation. Replace the dbg + variable (instance of gdcmDebug) by a definition macro, and the instance + is now in static in the gdcmDebug class + * src/gdcmSQItem.h : (FIXME) remove an undefined method + * Test/PrintAllDocument.cxx : bug fix in the result of the test + +2004-07-06 Eric Boix + * WARNING: ctest now depends more tightly on gdcmData. You should + check out gdcmData properly for things to run smoothly... + * src/gdcmDocument.cxx MAX_SIZE_LOAD_ELEMENT_VALUE is set back to 0xfff + (4096) for "ctest -R TestAllEntryVerify" to be able to run (i.e. + we need the pixels not be loaded in order to use the ValEntry + that displays position and size). + * Test/TestAllEntryVerify.cxx a new low level test now seems fair. + This is a C++ based equivalent of gdcmPython/testSuite.py that should + be deprecated. If you have any doubts about the advantages of a + modern scripting language (read Python) versus grass root C++ (i.e. + without lex + yacc, because of gdcm commitement to MS-VC++, sighhh), + I suggest you compare TestAllEntryVerify.cxx (639 lines, without the + reference file gdcmData/TestAllEntryVerifyReference.txt) and testSuite.py. + Anyhow, consider documenting the gdcmData images in + gdcmData/TestAllEntryVerifyReference.txt (and please run ctest before + commiting changes). + * Test/CMakeLists.txt: + - now uses TestAllEntryVerify.cxx + - specific comments on oldACR00001.ima (now renamed in gdcmData + to SIEMENS_GBS_III-16-ACR_NEMA_1.acr) moved away to + gdcmData/TestAllEntryVerifyReference.txt + * TODO updated. + +2004-07-02 Eric Boix + * src/*.[h|cxx] : typedef clean up + - guint16 and guint32 removed. Use ISO C uint16_t, uint32_t instead. + - TagKey renamed to gdcmTagKey (for external usage) + - VRKey renamed to gdcmVRKey (for external usage) + - removal of typedef duplication. + - Removed all unecessary inline keyword from class inline definitions. + - Some method|function(void) declarations replaced with method|function(). + * src/jpeg/libijg12/jdhuff12.c: + - printf polluting ctest removed. + - TAB removal for comminting + * Test: + - TestAllReadCompareDicom.cxx: added a test that compares all the + images in gdcmDataImages.h with corresponding images in + gdcmData/BaselineDicom/. When baseline images are not present + this test creates them. + Note: we need to validate each reference image, but before that + I'd like to rename them with a more explicit name... + - CMakeLists.txt: changed accordingly. + * Example/*.cxx: examples now only include gdcm.h (as opposed to + including each header needed). + +2004-07-01 Eric Boix + * Test/*.cxx and Example/*.cxx: moved some examples away from the + test suite to the Example directory. Are concerned: + - PrintHeader.cxx + - TestDcm2Acr.cxx + - TestFindTags.cxx + - TestWrite.cxx was + - TestWriteSimple.cxx + * Test/CMakeLists.txt: added some comments on reasons for black listing + image gdcmData/oldACR00001.ima + +2004-06-30 Eric Boix + * Test/CmakeList.txt: removed the following from black list (to be coherent + with removal from gdcmData): + - gdcm-MR-PHILIPS-16-Multi-Seq.fixed.dcm + - gdcm-MR-PHILIPS-16.dcm + - US.3405.1.dcm + Added the following because after last cvs update, they cause + ctest -R TestReadWriteReadCompare + to segfault: + - gdcm-MR-SIEMENS-16-1.acr + - oldACR00001.ima + * Test/TestReadWriteReadCompare.cxx was properly written (with a call + to gdcmFile::SetImageData()) BUT since gdcmFile is brain damaged (see + new comments in this file) we temporarily (sigh) move to a weaker + form of test... + * Test/CmakeList.txt: with the change to Test/TestReadWriteReadCompare.cxx + we don't need to black list the following images anymore: + - 8BitsUncompressedColor.dcm + - OT-PAL-8-face.dcm + - US-PAL-8-10x-echo.dcm + * src/gdcmDocument.[h|cxx]: RE-Reverting to version 1.42 with the proper + fixes and the beautified code ;-) + This fixes the bug introduced in version 1.42 (when beautifying) + that made the parsing of 8BitsRunLengthColor.dcm unproper. + Note: ctest was blind to this bug (this means we need to still + improve the test suite). The bug could be detected by using + gdcmbin/bin/PrintDocument $GDCM_DATA/8BitsRunLengthColor.dcm + or by using + gdcmbin/bin/ReadWrite $GDCM_DATA/8BitsRunLengthColor.dcm + and by displaying the (garbage) produced file temp.XDCM... + +2004-06-29 Jean-Pierre Roux + FIX : - remove Frog's beautified, but never checked 'Parse7FE0' code, + - replace by uggly but working old code :-( + 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 ...) + +2004-06-28 Eric Boix + * Test/TestWriteRead.cxx and TestReadWrite.cxx merged (because of + redundancy) to added Test/TestReadWriteReadCompare.cxx + * Test/CmakeList.txt: because the compare test of + Test/TestReadWriteReadCompare.cxx fails, the following images are + black listed: - 8BitsUncompressedColor.dcm + - OT-PAL-8-face.dcm + - US-PAL-8-10x-echo.dcm + * src/gdcmDocument.cxx: for broken (non DICOM V3 conformal) images + (e.g. gdcm-JPEG-LossLess3a.dcm see comments in + gdcm/gdcmPython/testSuite.py for details) ::FindDocLengthOB() had + and ad-hoc kludge. This kludge is now removed, and on encountering + such an image (OB field brain damaged) we set errno. Then in + ::FindDocLength() we "fix" the length as being ALL what remains + in the file (until EOF). We then proceed, hoping for the best... + This fixes a SegFault in ShowDicom when trying to write such an + image. + * Test/CmakeList.txt: 8BitsRunLengthColor.dcm is now blacklisted + (because TestWriteRead breaks on it, after a non conformal commit?). + ctest now runs properly, except for MakeDicomDir (which was always + broken) and the Python related stuff (still not fixed). + +2004-06-24 Jean-Pierre Roux + ADD : Examples/WriteRead, that acts like the former Test/TestWriteRead + FIX : Test/TestReadWrite now iterates on all the file names + (instead of infinite loop) + ENH : Test/TestWriteRead now iterates on all the file names + +2004-06-28 Eric Boix + * Test/TestReadWrite.cxx: now uses all the images of gdcmData. + +2004-06-24 Jean-Pierre Roux + FIX : - now Write drops LUT Descriptors and LUTs (if any) + when SamplesPerPixel =3 + - now Write is no longer confused by + 'BitsAllocated = 12" and 'BitsStored=12" + - "UN" value representation Elements are now written correctly + (their legth is stored on 4 bytes -just like OB, OW, and SQ-) + ENH : - now gdcmHeader has its own Write methods + (in order to split the job that has not to be done + for gdcmDicomDir) + +2004-06-23 Eric Boix + * Test/PrintAllDocument.cxx: looping on files is now effective. It used to + loop on the same image until memory went out. + Note: this means we still have gobs of memory loss in PrintDocument + * src/gdcmDocument.cxx: fixes problem on parsing on file + gdcmData/16BitsJpegLosslessGrayScale.dcm. + +2004-06-24 Jean-Pierre Roux + FIX : Write - All the Sequences and Sequence Item are now written + as 'no length' stuff, and a Sequence Delimitor aor an Item Delimitor + is added a the end, when necessary. + - A lot of brain-damaged images, that were read correctly are + now written correctly + - length compatible BinEntry are now loaded correctly + (even for odd groups) + Note : only Explicit Value Representation was checked. + (question : is implicit VR really necessary for gdcm ?) + +2004-06-23 Eric Boix + * DEVELOPPER: added a proposition of coding style. + * src/gdcmDocEntry.h: removed every inline declaration (for test of + coding style). + +2004-06-23 Eric Boix + * gdcmDocEntry::PrintCommonPart() and ::WriteCommonPart() removed. + Use the gdcmDocEntry::Print() and Write() instead. + * src/gdcmDocument.cxx: bug fix. + +2004-06-22 Jean-Pierre Roux + FIX : gdcmDocument.cxx + - Now we do recognize the JpegLossLess format (there was a misstyping in + code 'beautyfication' :-( + - Now we automaticaticaly load the Luts, if any + +2004-06-22 Jean-Pierre Roux + In order : to write Sequences, whatever their imbrication level, + : to allow user to create his own Sequences + a lot of modif where necessary (adding, moving, or virtualising methods) + + WARNING : save your own sources *before* cvs up ! + + - gdcmBinEntry + ADD virtual void Write(FILE *fp, FileType filetype); + + - gdcmDocEntry + ADD virtual void Write(FILE *fp, FileType filetype); + ADD void gdcmDocEntry::WriteCommonPart(FILE *fp, FileType filetype); + + - gdcmDocEntrySet + ADD virtual void Write (FILE *fp, FileType filetype)=0; + 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 gdcmDictEntry *NewVirtualDictEntry(guint16 group, + guint16 element, + std::string vr = "unkn", + std::string fourth = "unkn", + std::string name = "unkn"); + ADD gdcmValEntry *NewValEntryByNumber(guint16 group, guint16 element); + ADD gdcmBinEntry *NewBinEntryByNumber(guint16 group, guint16 element); + ADD gdcmDocEntry *NewDocEntryByNumber(guint16 group, guint16 element); + ADD gdcmDocEntry *NewDocEntryByName (std::string Name); + ADD gdcmDictEntry *GetDictEntryByName (std::string Name); + ADD gdcmDictEntry *GetDictEntryByNumber(guint16, guint16); + REM virtual gdcmDocEntry *NewDocEntryByNumber(guint16 group, guint16 element)=0; + REM virtual gdcmDocEntry *NewDocEntryByName (std::string Name)=0; + + - gdcmDocument + ADD virtual bool WriteF(FileType type); // New stuff, with recursive exploration + ADD virtual std::string GetEntryByName (TagName tagName); + ADD virtual std::string GetEntryVRByName (TagName tagName); + REM virtual bool Write(FILE *, FileType); + REM virtual void WriteEntryTagVRLength(gdcmDocEntry *tag, + FILE *_fp, FileType type); + REM virtual void WriteEntryValue(gdcmDocEntry *tag,FILE *_fp,FileType type); + REM virtual bool WriteEntry(gdcmDocEntry *tag,FILE *_fp,FileType type); + REM virtual bool WriteEntries(FILE *_fp,FileType type); + REM virtual std::string GetEntryByName (std::string tagName); + REM virtual std::string GetEntryVRByName (std::string tagName); + REM gdcmDictEntry *GetDictEntryByName (std::string Name); + REM gdcmDictEntry *GetDictEntryByNumber(guint16, guint16); + REM gdcmDictEntry *NewVirtualDictEntry(guint16 group, + guint16 element, + std::string vr = "unkn", + std::string fourth = "unkn", + std::string name = "unkn"); + REM gdcmDocEntry *NewDocEntryByNumber(guint16 group, guint16 element); + 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); + + - gdcmSeqEntry + 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); + REM std::string GetEntryByNumber(guint16 group, guint16 element); + REM std::string GetEntryByName(TagName name); + + - gdcmValEntry + 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 + gdcmHeader *f1 = new gdcmHeader( header ); + was gdcmHeader::gdcmHeader(bool) instead of the expected + gdcmHeader::gdcmHeader(std::string const &, bool = false, bool, bool). + Hence the parsing wasn't executed... See also below. + * src/gdcmHeader.h: the declaration of gdcmHeader::gdcmHeader(bool) + as explicit constructor didn't do the trick to fix the above problem. + Could anyone explain why ? + * src/gdcmBinEntry.cxx, gdcmValEntry.cxx: gdcmBinEntry::Print() now + properly calls gdcmValEntry::Print() (that was weed out from + code related to gdcmBinEntry). + +2004-06-20 Eric Boix + * In order to fix memory leaks: + - Test/TestWriteSimple.cxx: added cleaning of free store through + some delete calls. + - src/gdcmBinEntry.cxx: fix to avoid SegFault. + - src/gdcmDicomDir.[cxx|h]: fixed initialisation in constructor + gdcmDicomDir::gdcmDicomDir(bool) [either the constructor itself + (through the call to ::AddDicomDirMeta()) or the destructor + would crash when deleting uninitialized ::metaElems]. + - src/gdcmDictEntry.cxx: annotation of ununderstood memory leak. + - src/gdcmDocument.cxx: + -- ::~gdcmDocument() destructor now cleans up all dictionary entries + from dynamic stores. + -- ::ParseDES() misplaced deletion of temporary NewDocEntry + was causing memory leaks. + - src/gdcmSQItem.cxx: + -- ::~gdcmSQItem() dummy code cleaned (learned that deletion is + cleanly handled with polymophism: sorry but my milage is low). + -- ::SetEntryByNumber(string, guint16, guint16) now cleanly allocates + a gdcmValENtry, and makes no assumption on type (gdcmDocEntry, + gdcmSeqEntry vs gdcmValEntry) of existing entry (when present). + This avoids SegFaulting. + - src/gdcmSQItem.h: coding style. + * Conclusion: + - Test/TestWriteSimple still severely sucks. The output image content + (when $(GDCMDATA_HOME)/012345.002.050.dcm in input) is brain + damaged when displayed with vtkgdcmViewer. + - on memory leaks: TestWriteSimple leaks really less (see entry + of 2004-06-18 in Changelog file for the call to valgrind). + - on segfaults: ctest now passes all the tests but one (no more + segfaults). + * Erroneous leading white fix: + - src/gdcmDict.cxx: getline(from,xxx) doesn't remove the leading + white[s] (as opposed to from >> xxx, that removes it [them]. + - src/gdcmTS.cxx: ditto. + - gdcmPython/testSuite.py: dirty related kludge removed. + * src/*: remaining references to gdcmParser removed. + * src/*[cxx|h]: added copy[way]left header. + + +2004-06-18 Eric Boix + * In order to fix writing of dicom files: + - Test/TestWriteSimple.cxx: a simpler example of writing. + - Test/CMakeLists.txt changed accordingly. + - src/gdcmDocument.cxx: + -- The destructor now recursilvely removes potential sequences. + -- Bug fix in ::IsJPEG2000() + -- ::ReplaceOrCreateByNumber(std::string, guint16, guint16) + now handles promotion of gdcmDocEntry to gdcmValEntry in a cleaner + manner. + -- ::GetValEntryByNumber(guint16, guint16) now defined (as opposed + to only declared) and build on top of + ::GetDocEntryByNumber(guint16, guint16). + -- ::SetEntryByNumber() now uses GetValEntryByNumber(group, element) + - src/gdcmElementSet.[h|cxx]: added ::RemoveEntry(gdcmDocEntry *) + for usage in destructor and treatement of promotion in + ::ReplaceOrCreateByNumber(). + - src/gdcmSQItem.cxx: destructor should better handle his job. + Test/TestWriteSimple now runs (or at least it DOES something). + * We can now start hutting memory links. A good starting point is: + valgrind -q --skin=memcheck --leak-check=yes --leak-resolution=high + --num-callers=100 --show-reachable=yes gdcmTests TestWriteSimple + $(GDCMDATA_HOME)/012345.002.050.dcm foo.dcm + +2004-06-18 Eric Boix + * Valgrind note: after Mathieu Malaterre teached me how to read + the valgrind FAQ ;-] (see http://valgrind.kde.org/faq.html), I + learned that: + Using gcc, you can force the STL to use malloc and to free memory as + soon as possible by globally disabling memory caching. + With 3.2.2 and later, you should export the environment variable + GLIBCPP_FORCE_NEW before running your program. + By setting GLIBCPP_FORCE_NEW, STL related memory leak messages of gdcm + simply vanish (it is still not clear to me, whether this means that + STL std::string leaks or if valgrind believes it leaks...). + * Fixing of SegFault of Test/makeDicomDir (as shown by ctest or by + running bin/gdcmTests makeDicomDir): + - src/gdcmDicomDir.cxx: dynamic casting used + clean up. + - Test/makeDicomDir.cxx now properly traps empty lists and returns + with 1. + NOW, makeDicomDir cleanly fails (in ctest terminology) instead of + SegFaulting (I drowned in DicomDir related code when trying to + understand why the list is empty...). + * src/gdcmDocument.h: first BSD license header try. + * Doc/License.txt added. + +2004-06-15 Eric Boix + * src/gdcmDocument.[h|cxx]: + - Clean up of the Transfer related predicates. They are now all based + on new method isGivenTransferSyntax, that (should) handle properly + the padding problem. + - general clean up, simplification, and coding style. + - Specific clean up of Parse7FE0() (umproperly named actually). + * gdcmPython/testSuite.py: an odd temporary kludge introduced. + +2004-06-14 Jean-Pierre Roux + * gdcmSeqEntry.cxx + - 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 + +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 + * dcmDocument.cxx + - SetEntryByNumber now allows setting gdcmValEntry or gdcmBinEntry, + 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 + * gdcmSQItem.h + - 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 + * gdcmValEntry.cxx + - adding a constructor taking a gdcmDocEntry as an input param + +2004-06-14 Eric Boix + * Memory leak hunt with the following command: + valgrind --leak-check=yes --leak-resolution=high --num-callers=40 + --show-reachable=yes gdcmTests PrintDocument + It looks like many (all?) leaks are due to the STL (or a bad usage + of the STL. The lines producing the leaks now have a comment with + a "MEMORY LEAK" tag: you can retrieve them with + grep "MEMORY LEAK" src/* + Here are two typical examples which I can't help fixing: + ----- + #include + int main() { + std::string name; + char * test = "babo"; + name = test; //// <--- valgrind detects 960 bytes lost in + //// call to std::string::operator=(char const*) + name.clear(); //// Doesn't help ! + return 0; + } + ----- + #include + #include + int main() { + std::string line; + std::cout << "Type a bunch of characters followed by RETURN: "; + getline(std::cin, line); //// <--- valgrind dectects a loss + //// of 1320 bytes in call to + /// std::basic_istream<>& std::getline<> + return 0; + } + ----- + + +2004-06-10 Eric Boix + * src/gdcmHeader.[cxx|h]: + - Predicates on the Transfer syntax (of the form Is[JPEG|RLE]*) + and related, moved away to gdcmDocument. + - Accessors (on the form [Get|Set]Entry*) set up to expose publicly + the corresponding protected accessors of inherited class + gdcmDocument, removed ! As a consequence gdcmFile had to be + declared friend of class gdcmDocument (see below). + - operator< moved to gdcmDocument (in fact it belongs to gdcmDicomDir). + - Clean up of undefined or unused methods. + * src/gdcmFile.[cxx|h]: added SetEntryByNumber (in order to take into + account the changes to gdcmHeader.h). + * src/gdcmDocument.h: + - gdcmFile is now a friend class (in order to take into account the + changes to gdcmHeader.h). + - Predicates on the Transfer syntax (of the form Is[JPEG|RLE]*) added + (see changes to gdcmHeader.h). + - Accessors (reading on the form GetEntry*) are now public. + - Clean up of undefined or unused methods. + * src/gdcmDocument.cxx: + - adaptation to changes to gdcmDocument.h + - ::OpenFile now writes a verbose message when file cannot be opened. + - some std::string properly set to VRKey + * src/gdcmDicomDir.h: historical references to gdcmHeader changed to + references to gdcmDocument. + * Test/TestFindTags.cxx: changed accordingly to above changes. + * gdcmPython/testSuite.py: adapted to renaming of acr files in + cvs repository gdcmData. + +2004-06-09 Eric Boix + * src/gdcmValEntry.h: member voidArea type changed from char* to void*. + * src/gdcmBinEntry.h: member voidArea commented out, since it potentially + conflicts with gdcmValEntry::voidArea. + * src/gdcmValEntry.cxx: unmatching comment wiped out. + * src/gdcmVR.[h|cxx]: added two predicates that partition the possible + Value representation between StringRepresentable and BinaryRepresentable. + * src/gdcmDocument.cxx: + - method ParseDES: proper indentation restored and usage of + gdcmVR::IsVROfGdcmStringRepresentable wired in. + - method LoadDocEntry: the fingerprint left in the SetValue() of + unloaded entries (length > MaxSizeLoadEntry) had curiously been + removed. Reverting to previous code segment with the proper + dynamic_cast< gdcmValEntry* >. + Note: this was (partially) breaking the python test suite + (gdcmPython/testSuite.py) that made usage of the above + fingerprint to check presence of "Pixel Data". + * src/gdcmDocEntry.h: coding style. + * gdcmPython/__init__.py: environement variable GDCM_DATA_PATH is + now taken into account. + * gdcmPython/gdcm.i: adaptation to the new internal representation + of gdcm (exit gdcmParser, hello gdcmDocument). + * gdcmPython/testSuite.py: quick and dirty fix for loading vtkgdcmPython + on posix. + * gdcmPython/demo/PrintHeader.py: doesn't use the gdcmDocument::Print() + anymore, but instead prints the loaded Python dictionary. + * .... alas, the python testSuite is still broken. + +2004-05-18 Benoit Regrain + * gdcmPython/gdcm.i : remove useless lines concerning the gdcmGlobal + gdcmGlob + * gdcmPython/setup.py : replace the use of cvar.gdcmGlob to gdcmGlobal + * src/gdcmUtil.h : export methods + +2004-05-16 Mathieu Malaterre + * Some more cleanup/enhancement in gdcmPython/CMakeLists.txt getting close + to right behavior + * Initial addition of automatic python testing + * Initial addition of automatic image comparison + +2004-05-04 Benoit Regrain + * src/gdcmCommon.h, gdcmDicomDir.cxx, gdcmFile.cxx, gdcmHeaderHelper.h, + gdcmParser.cxx, gdcmParser.h : bug fix for the Microsoft .Net compilation + +2004-05-04 Benoit Regrain + * src/gdcmFile.cxx, gdcmHeader.cxx : bug fix for the msvc compilation + * Test/ShowDicom.cxx : bug fix for msvc compilation + * vtk/vtkgdcmViewer.cxx : bug fix for msvc compilation + +2004-05-04 Jean-Pierre Roux + * ADD Taking into account the 'Dicom Sequences' leads up to introduce + new concepts (and new classes) : + a 'gdcmDocument' is composed of a set of Doc Entries, that are + - elementary gdcmDocEntries (former gdcmHeaderEntries) + - Sequence Doc Entries (gdcmSeqEntries) + a Sequence is composed of Items. + Each item is a set of Doc Entries (this is recursive) + The non uniqueness of the 'Dicom tag' is due to this recursivity + (never taken into account) + Our unability to add a new 'entry' in the header + at the proper location (neither in the H-Table (map or multimap), + nor in the Chained List is also due to this recursivity. + Don't try, right now, to use/modify/compile these new sources : + nothing is finished. + We just commit all the stuff, 'as is', in order not to loose it. + +2004-05-04 Benoit Regrain + * vtk/vtkGdcmReader.cxx : bug fix in the setting of file name + +2004-05-03 Benoit Regrain + * vtk/vtkGdcmReader.cxx : bug fix when loading a list of files using the + file prefix (SetFilePrefix) + +2004-05-02 Mathieu Malaterre + * Add a new test: ShowDicom, for now this is just the c++ version of + checkRead.sh, later it will be able to compare the image read against a + baseline. + * Replace the DEBUG on the stack with a global entry in cmake interface: + GDCM_DEBUG, so you can turn verbosity ON/OFF for debug statement. + +2004-04-30 Mathieu Malaterre + * Add an example subdir, with a real example on how to read + write a + dicom image + +2004-04-30 Eric Boix + * Doc/gdcmUML.xmi added raw UML class view (umbrello format) + * Doc/CMakeLists.txt: the main page is now properly differentiated + between the developper and user version. + * Doc/doxygen.config.in: dropped search related obsolete flags + * src/gdcmParser.h, gdcmHeader.h: doxygenation + +2004-04-29 Eric Boix + * DEVELOPPER: added some helpfull comments for compile/test/install + when using cmake. + +2004-04-29 Mathieu Malaterre + * ENH: 1. Remove remp solution of gdcmTests.cxx+ gdcmMain directly in + src directory, now generated in the build dir. + 2. Tests as mentionned smarter + 3. Some clean up + 4. Add a new method in gdcmDict that return the PubDict by name + this is interesting for 3rd party lib like ITK, + where we could set the institution name / patient name... + + * ENH: 1. Now the test suite is working for real + 2. All binaries are now output in the gdcm-bin directory + (this was not true before) + +2004-04-28 Jean-Pierre Roux + * ENH add the provisional gdcmHeader::SQDepthLevel to allow + 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 + * ENH add self defined param 'new' to PrintHeader to 'show' the SeQuence + tree-like structure of a Dicom Header. + * FIX Test code cleaning + +2004-04-25 Mathieu Malaterre + * ENH: Adding automatic testing + 1. Need a DartConfig.cmake to submit to public + 2. Add a test driver gdcmTest.cxx + 3. gdcmTestMain, an helper for the main test driver gdcmTest + 4. Files in Test don't have a main anymore, this becomes interesting + when we add more and more tests, thus dsw don't have to load + too many projects + * ENH: Adding a GDCM_DATA_ROOT for testing + * ENH: Remove redundancie about GDCM_DICT stuff, now we only need to modify + one file instead of seven + some small cleanup + +2004-04-22 Jean-Pierre Roux + * ENH Minor changes to the Print() methods. + * ADD gdcmParser::PrintEntryNiceSQ() to allow SQ-indented + Header printing. Example given with : + > 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 + 2. Some function parameter not used -> (void) + 3. In gdcmDicomDir.cxx, add GDCM_DICOMDIR_NONE case + 4. g++ don't like character '\' in comment + 5. #define jpeg_create_decompress jCreaDecompress + this really need to be fixed + 6. virtualize destructor of gdcmObject ... leakage + 7. sscanf(g->first.c_str(),"%x",&gr_bid); + this also really need to be fixed + 8. gdcm/src/jpeg/libijg8/CMakeLists.txt, + remove compression file + (as we only do decompression, right ?) + * ENH: Change malloc/calloc/free with c++ equivalent + +2004-04-21 Jean-Pierre Roux + * 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 + 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 + +2004-04-02 Jean-Pierre Roux + * 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...) + +2004-03-30 Eric Boix + * src/gdcmParser.[cxx|h] and gdcmHeader.[cxx.h]: gdcmHeader::Write split + in WriteEntryTagVRLength and WriteEntryValue. Those methods were + moved to base class gdcmParser and only the specialisation is kept + in gdcmHeader. + * src/gdcmParser.[cxx|h]: ReplaceOrCreateByNumber(char*, guint16, guint16) + trashed out (because ReplaceOrCreateByNumber(string, guint16, guint16) + already does the job. + * src/gdcmDicomDir.[cxx|h]: WriteDicomDirEntries renamed to WriteEntries + (to be consistent with gdcmParser::WriteEntries). + +2004-03-30 Benoit Regrain + * vtk/vtkGdcmReader.[h|cxx] : fix the read of 3 gdcmHeader when making an + upate of the object's instance. It's passed to 2 in the unfavorable + case : one in the ExecuteInformation, one in the ExecuteData + +2004-03-29 Jean-Pierre Roux + * ENH : Check on file type to be written moved + from gdcmParser::WriteEntry to gdcmParser::WriteEntries + * FIX : gdcmObject::ResetBoundaries now stops properly + when end-of-list is reached + : gdcmVersion modified (as Benoit Regrain asked) + +2004-03-29 Eric Boix + * src/gdcmParser.cxx: removal of all TAB character. Indentation fixed. + * src/gdcmUtil.cxx: added forgotten iostream include. + * src/gdcmCommon.h: FileType enum entry DICOMDIR removed (since + equivalent to ExplicitVR in existing code). + +2004-03-27 Eric Boix + * src/gdcmUtil.[cxx|h] split in two. Additional file gdcmGlobal.[cxx|h] + now contains all the gdcmGlobal related code. + * minor coding style and doxygenation changes. + 2004-03-26 Eric Boix * src/gdcmUtil.[cxx|h] split in two. Additional file gdcmDebug.[cxx|h] now contains all the Debug related code. @@ -7,16 +2792,16 @@ * src/gdcmUtil.[cxx|h] _CreateCleanString renamed to CreateCleanString * Doc/DoxyMainPageUser.txt added. * Doc/Doc/DoxyfileUsers updated to version 1.3.4 of Doxygen. - * src/gdcmCommon.h now defines getcwd for Win32 (moved away from + * src/gdcmCommon.h now defines getcwd for Win32 (moved away from src/gdcmDirList.cxx) 2004-03-24 Jean-Pierre Roux * FIX a lot of little surface modifications to be doxygen 1.3.6 compliant 2004-03-23 Jean-Pierre Roux - * FIX Now gdcmFile::SwapZone doesn't seg faults any longer for + * FIX Now gdcmFile::SwapZone doesn't seg faults any longer for big endian made volumes - * ENH Now gdcmParser constructor and destructor are protected to forbid + * ENH Now gdcmParser constructor and destructor are protected to forbid end user to instanciate class gdcmParser (only gdcmHeader and gdcmDicomDir are meaningfull) @@ -46,19 +2831,18 @@ of gdcmDicomDirImage::NewImage as empty function. 2004-02-28 Jean-Pierre Roux -<<<<<<< ChangeLog * ENH add gdcmDicomDir:NewPatient 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 @@ -167,7 +2951,7 @@ IterHT GetHeaderEntrySameNumber(grPixel,numPixel); to get *all* the Header Entries with the same tag. GetHeaderEntrySameName is probabely *useless* - (no meaning : Name is *not* an identifier within the Dictionnary) + (no meaning : Name is *not* an identifier within the Dictionary) 2004-01-26 Benoit Regrain * Bug fix in the print of hexadecimal representations. Remove long fields @@ -238,9 +3022,9 @@ 2004-01-12 Benoit Regrain * src/*.h : add comments * src/gdcmDictSet.h : set the method BuildDictPath in public - * src/gdcmTS.cxx, gdcmVR.cxx : use now a dictionnary file other than to be + * src/gdcmTS.cxx, gdcmVR.cxx : use now a dictionary file other than to be directly setted in the source code - * Dicts/dicomTS.dic, dicomVR.dic : 2 new dictionnary files loaded by + * Dicts/dicomTS.dic, dicomVR.dic : 2 new dictionary files loaded by gdcmTS and gdcmVR 2004-01-09 Benoit Regrain @@ -253,7 +3037,7 @@ 2003-12-10 Benoit Regrain * gdcmHeader is now aggregating gdcmFile, and not derived into. Thus, we - can use a gdcmHeaderHelper to load datas + can use a gdcmHeaderHelper to load data * gdcmPython/testSuite.py : make the testSuite compliant with modifications made in the source code @@ -261,7 +3045,7 @@ * Update Windows projects and .cvsignore files 2003-11-12 Jean-Pierre Roux - * ENH gdcmHeader constructor has one more parameter (default value : false) + * ENH gdcmHeader constructor has one more parameter (default value : false) that allows the user to 'go inside' the SeQuences only if he wants to. gdcmElValSet:Print takes it into account @@ -277,19 +3061,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 @@ -349,7 +3133,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, @@ -380,16 +3164,16 @@ 2003-10-24 Mathieu Malaterre * ENH: vtkGdcmReader.cxx can now read multiframe dicom * FIX: remove a call to ->Modified ... see comments - * FIX: vtkgdcmViewer.cxx was writting ASCII file...this is so slooooooow ! + * FIX: vtkgdcmViewer.cxx was writting ASCII file...this is so slooooow ! 2003-10-23 Mathieu Malaterre * FIX: Problem with path for libvtkgdcmPython * ENH: Try adding a search script for python site-package * RMV: Remove some file from medcon lib that are not necessary * FIX: gdcm/Makefile.am fix for generating ljpg medcon - * ENH: CMakeLists.txt now generate 'pygdcm.so' instead of 'libpygdcm.so' + * ENH: CMakeLists.txt now generate 'pygdcm.so' instead of 'libpygdcm.so' * FIX: More pragma disable fro VC++, - I don't think I break something as it is also disable in VTK/ITK. + I don't think I break something as it is also disable in VTK/ITK. But it fasten debug compilation time. 2003-10-23 Jean-Pierre Roux @@ -455,7 +3239,8 @@ no longer seg faults when file is not found 2003-10-14 Jean-Pierre Roux - * Emprovement of reading for Dicom encapsulated Jpeg LossLess MultiFrame images + * Emprovement of reading for Dicom encapsulated Jpeg LossLess + MultiFrame images 2003-10-14 Mathieu Malaterre * TODO: *.in file to genereate a UseGDCM later @@ -492,7 +3277,7 @@ * ENH: Generate both user and dev documentation * ENH: Should work on windows too * ENH: Only one doxygen config.in file is needed - * FIX: make install should be ok now on ùnix plateform + * FIX: make install should be ok now on Unix plateform * FIX: PATH to dictionary was wrong (missing /) * ENH: OpenFile, return true if the file looks like an ACR or DICOM file @@ -552,7 +3337,8 @@ - deals with MultiFrames MultiFragments Run Length Encoded files - 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. + WARNING : nothing was checked for YBR_PARTIAL_422, YBR_ICT, + YBR_RCT files. (no sample found :-( 2003-10-02 Mathieu Malaterre @@ -566,7 +3352,7 @@ * removed leaks 2003-09-24 Jean-Pierre Roux - * The lines are now eigthy characters long.for + * The lines are now eigthy characters long for gdcmHeader.cxx gdcmHeaderHelper.cxx gdcmParse.cxx 2003-09-22 Benoit Regrain @@ -626,11 +3412,13 @@ * vtk/win32/vtkgdcm.dsp : added /nodefaultlib "mscvrt" for debug mode 2003-08-29 Mathieu Malaterre - * Corrected a leak in vtkGdcmREader.cxx, the pSource was find thanks to valgrind. + * Corrected a leak in vtkGdcmREader.cxx, the pSource was find thanks + to valgrind. 2003-07-29 Mathieu Malaterre * src/win32/libgdcmjpeg12.dsp was not dos format - * src/win32/libgdcmjpeg12.dsp : libgdcmijpeg12_EXPORTS -> LIBGDCMIJPEG12_EXPORTS + * src/win32/libgdcmjpeg12.dsp : + libgdcmijpeg12_EXPORTS -> LIBGDCMIJPEG12_EXPORTS * src/win32/gdcmdll.dsp: + /I "..\jpeg\libijg12" 2003-07-29 Benoit Regrain @@ -1022,7 +3810,7 @@ 2003-03-10 Eric Boix * gdcmPython/__init__.py doesn't crash anymore when running in - in InstallMode or PreInstallMode but with an environement given + in InstallMode or PreInstallMode but with an environment given value of GDCM_DICT_PATH. * src/gdcmDictSet.[cxx/h] coding style. @@ -1082,7 +3870,7 @@ * src/gdcm.h, gdcmHeader.cxx, gdcmDictSet.cxx: - gdcmHeader::GetPubTagNames and gdcmHeader::GetPubTagNamesByCategory whose purpose is to publish the content of the TagNames of the - Dicom public dictionnary were not accessible without an + Dicom public dictionary were not accessible without an instance of class gdcmHeader. - those methods are now static methods of gdcmDictSet and hence require no instances at all to be invocated. @@ -1163,7 +3951,7 @@ entries within the associated public Dicom dictionary resp. the same information but sorted by the fourth field (PAT, IMG, DIR) of the dictionary. - - Dicts/dicomV3.dic Entries which had and unspecified fourth field + - Dicts/dicomV3.dic Entries which had an unspecified fourth field are now in the "???" group. - python/gdcm.i changed accordingly, - python/demo/printGroupedPublicDict.py added, that gives an example @@ -1252,7 +4040,7 @@ 2002-11-18 Eric Boix * src/gdcm.h and gdcmHeader.cxx are now "Big Endian transfer syntax" - aware. See the strategy comments in gdcmHeader::FindeLength(). + aware. See the strategy comments in gdcmHeader::FindLength(). * Test/test.cxx now accepts a filename as first argument. * Data/US-PAL-8-10x-echo.dcm and US-RGB-8-epicard.dcm added. * python/testSuite.py changed to integrate test on above files. @@ -1315,10 +4103,10 @@ 2002-10-31 Eric Boix * Straightforward temporary fixes for swig to build the python wrappers. src/Makefile now has a python working entry [by working we mean - that we can import de shadow classes without errors]. + that we can import the shadow classes without errors]. 2002-10-29 Eric Boix - * hashtest.cxx removed (since allready in Test) + * hashtest.cxx removed (since already in Test) * src/gdcmlib.h renamed to src/gdcm.h * src/dcm.i renamed to src/gdcm.i * src/Makefile prepared for python wrapping