malaterre [Thu, 7 Oct 2004 04:04:42 +0000 (04:04 +0000)]
ENH: I am a moron. Fix compilation of gdcm in static mode, I had to add some new mangle names, thus update the process to find them. Also add some warning fixes for a very well known compiler
malaterre [Thu, 7 Oct 2004 03:18:02 +0000 (03:18 +0000)]
ENH: Finally modify gdcm source to adapt to new jpeg lib, this is not perfect but this avoid problems on some system where jpeg is already installed in standart path.
malaterre [Thu, 7 Oct 2004 02:55:13 +0000 (02:55 +0000)]
ENH: Created a new local dir libijg (from libijg8), then went on the server copy all files to preserver revision -as a side effect it creates stuff in previous revision-. Added the modification we made to the official ijg, help to keep track of them. And finally rework the CMakeLists.txt file... and removed tabs
frog [Wed, 6 Oct 2004 22:31:31 +0000 (22:31 +0000)]
* 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.
frog [Wed, 6 Oct 2004 21:30:02 +0000 (21:30 +0000)]
* 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 had forgotten 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.
frog [Wed, 6 Oct 2004 09:58:08 +0000 (09:58 +0000)]
* 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.
malaterre [Sun, 3 Oct 2004 20:17:57 +0000 (20:17 +0000)]
ENH: Adding jconfig.h.in, which later be the central file to either generate the 8bits or 12bits jpeg library. Cmake will generate the proper .h file containing the redifinition of symbols
malaterre [Fri, 1 Oct 2004 21:48:32 +0000 (21:48 +0000)]
ENH: Remove unecesseray file, were not in CMakeLists.txt. Also ease comparison with VTK. I did not do the same thing in 12bits dir since this directory is meant to desepear anyway
frog [Fri, 1 Oct 2004 12:40:55 +0000 (12:40 +0000)]
* 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
* DEVELOPPER spread out in Doc/Website/Developpers.html, CodingStyle.html,
DeveloppersPython.html
* INSTALL nows refers to Doc/Website/Installation.html
* 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.
FIX: Revert back to previous version, I don't believe this was a really safe code anyway. Plus this solve my issue on the Mac using gcc version 3.3 20030304 (Apple Computer, Inc. build 1666). The code should also more readable.
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
* 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.
Last modif before gdcmPixelData class introduction :
High Bit and Bits Allocated are now save and restored
Color Palettes are now droped out the H Table (and no longer destroyed)
* ENH: added some utility method that builds a flat dictionnary
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
* 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.
gdcmDocument::ReplaceOrCreateByNumber has now an extra parameter,
std::string VR (default value : "unkn"), that makes
TestCopyDicom code much lighter .
Very cautiously put gdcmDocentry destr as virtual, to prevent mem leak...well in theory since I had to comment inherited destructor. Sorry this was necessary
# As of 14/09 this image creates a crash:
#Program received signal SIGSEGV, Segmentation fault.
#0x4032bc4b in gdcmHeader::GetLUTRGBA (this=0x8149228) at /home/malaterre/Creatis/gdcm/src/gdcmHeader.cxx:1170
#1170 *a = lutR[i*mult+1];
* Preparation of writing a gdcmHeader iterator: generalisation of gdcmTagKey
- The following is the doxygen comment of the typedef declaration
of gdcmagKey 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 allways 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<SeqTag>
where <SeqTag> 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.
WARNING : This was not designed as a 'Test' program, but as a utility
provided to 'transform' an image 'Siemens MRI New version'
into an image 'Siemens MRI old version'
If user tries to 'merge' two mismatching images
e.g. a LUT image and a RGB image
or a compressed and an uncompressed one
or a single frame and a multiframe,
or a '12 Bits Allocated' image and anything else, etc,
Probabely TestChangeHeader will fail !