X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;ds=sidebyside;f=Doc%2FWebsite%2FNews.html;h=4958c06bb6402f1dc0c55323472da0478acaeadf;hb=0ee1d8c4c2c59be9b1ff698b219835a76ac86f2a;hp=4d4ee35fb0f3deb251a3cee642e674ec77dd3778;hpb=64032399b210c78698671d9a8f99232c6b4b7c04;p=gdcm.git
diff --git a/Doc/Website/News.html b/Doc/Website/News.html
index 4d4ee35f..4958c06b 100644
--- a/Doc/Website/News.html
+++ b/Doc/Website/News.html
@@ -33,14 +33,6 @@ Any contribution is welcome.
(LOw COmplexity LOssless COmpression for Images)
developed at Hewlett-Packard Laboratories]
-
gdcm doesn't read yet all JPEG2000 encoded files.
-
- But we are working on it (a lot of troubles with Jasper).
- Update: as of Oct 10 2005, we are currently investigating another library:
- openjpeg. The problem still exist for this library but one of the author
- is currently working on it:
- http://www.openjpeg.org/forum/viewtopic.php?t=18
-
gdcm doesn't read yet MPEG2 encoded files.
@@ -63,8 +55,6 @@ Any contribution is welcome.
SeqEntry (if any)
Allow user to tell the Writer he doesn't want to write down
Shadow groups (if any)
- Allow user to tell the Writer which compression mode he wants
- (Right now, no one is available)
Allow user to tell the Writer he wants to split a
Multiframe image into a serie of
Single frame images.
@@ -110,7 +100,7 @@ Any contribution is welcome.
of the private Dicom Dictionary
to be used to parse Shadow groups against.
User friendly way of anonymizing image when Patient's name is
- carved in the Pixels :-(
+ burnt-in within the Pixels :-(
@@ -126,17 +116,67 @@ Any contribution is welcome.
State of the art
-
- gdcm UML Class Diagram current version.
-
- User Documentation
-
- Developper
+ gdcm UML Class Diagram current version.
+
- User Documentation
+
- Developper
Documentation
- New Features
+
+ - To be able to use gdcm1.3.x and ITK, developer is now allowed to
+ choose his own namespace for gdcm at CMake time : see GDCM_NAME_SPACE
+ option.
+
- JPEG and JPEG2000 compression writting are now available.
+ see Examples/WriteDicomAsJPEG.cxx and Examples/WriteDicomAsJPEG2000.cxx
+
- To try to make gdcm images PACS usable, user is now allowed to
+ gdcm what kind of image he wants to write, using :
+ void FileHelper::SetContentType (ImageContentType c);
+ Four different types are identify (probabely more will be added) :
+
+ -
+ 1) user created ex nihilo his own image and wants to write it as a Dicom image.
+ c : USER_OWN_IMAGE
+ -
+ 2) user modified the pixels of an existing image, using mathematical operations.
+ c : FILTERED_IMAGE
+ -
+ 3) user created a new image, using existing images (eg MIP, MPR, cartography image)
+ c : CREATED_IMAGE
+ -
+ 4) user modified/added some tags *without processing* the pixels (anonymization, etc)
+ c : UNMODIFIED_PIXELS_IMAGE
+
- Stupid difference between gdcm::ValEntry
and gdcm::BinEntry removed.
Only gdcm::DataEntry exist, now.
Should have been considered as a 'Bug Fix'.
Actually, it's an API breaking modification ...
+
+ -
+ std::string const &DataEntry::GetString() const
+ returns as a string (when possible) the value of the DataEntry
+ -
+ void DataEntry::SetString(std::string const &value)
+ Sets the 'value' of a DataEntry, passed as a std::string
+ -
+ void DataEntry::SetBinArea( uint8_t *area, bool self )
+ Sets the value (non string) of the current Dicom DataEntry
+ -
+ void DataEntry::CopyBinArea( uint8_t *area, uint32_t length )
+ Inserts the value (non string) into the current DataEntry
+ -
+ void DataEntry::SetValue(const uint32_t &id, const double
+ &val)
+ Inserts the elementary (non string) value into the current
+ (multivaluated) DataEntry, at the id> position.
+ -
+ double DataEntry::GetValue(const uint32_t &id) const
+ returns, as a double one of the values (when entry is
+ multivaluated), identified by its index id.
+
+ -
+ DocEntrySet::GetEntryValue() replaced by
+ DocEntrySet::GetEntryString()
- SerieHelper :
Add some methods, to split a 'SingleSerieUID' Fileset into
'Extra Coherent' FileSets.
@@ -161,6 +201,10 @@ Any contribution is welcome.
New() and Delete()
- Register() and Unregister() methods are
available.
+
- --> Well ... People from ITK don't seem to agree too much with
+ that feature.
+ They demand to be allowed to allocate gdcm objects in the stack as
+ well, not only in the heap.
-
@@ -170,8 +214,102 @@ Any contribution is welcome.
Stupid difference between gdcm::ValEntry
and gdcm::BinEntry removed.
Only gdcm::DataEntry exist, now.
-
-
+
+ ValEntry(DictEntry *e);
+ BinEntry(DictEntry *e);
+-->DataEntry *New(uint16_t group,uint16_t elem, VRKey const &vr);
+
+ std::string const &ValEntry::GetValue() const;
+ std::string const &BinEntry::GetValue() const;
+-->std::string const &DataEntry::GetString() const;
+
+ uint8_t *BinEntry::GetBinArea();
+-->uint8_t *DataEntry::GetBinArea();
+
+ void ValEntry::SetValue(std::string const &value);
+ void BinEntry::SetValue(std::string const &value);
+-->void DataEntry::SetString(std::string const &value);
+
+ void BinEntry::SetBinArea( uint8_t *area, bool self = true );
+-->void DataEntry::SetBinArea( uint8_t *area, bool self = true );
+
+ void ValEntry::CopyValEntry(uint16_t gr, uint16_t el);
+-->void DataEntry::CopyDataEntry(uint16_t gr, uint16_t el, VRKey const &vr);
+
+
+
+Example :
+
+old way :
+ DocEntry *p3 = item2->GetDocEntry(0x0018,0x0050);
+ if( !p3 ) return false;
+ ContentEntry *entry2 = dynamic_cast(p3);
+ std::string thickness = entry2->GetValue();
+
+new way :
+ DocEntry *p3 = item2->GetDocEntry(0x0018,0x0050);
+ if( !p3 ) return false;
+ DataEntry *entry2 = dynamic_cast(p3);
+ std::string thickness = entry2->GetString();
+
+
+
+ Avoid tons of CPU time consuming accesses to DICOM Dictionnary
+
+ DataEntry *FileHelper::CopyDataEntry(uint16_t group, uint16_t elem);
+-->DataEntry *FileHelper::CopyDataEntry(uint16_t group, uint16_t elem,
+ const VRKey &vr = GDCM_VRUNKNOWN);
+
+ void FileHelper::CheckMandatoryEntry(uint16_t group, uint16_t elem, std::string value);
+-->void FileHelper::CheckMandatoryEntry(uint16_t group, uint16_t elem, std::string value,
+ const VRKey &vr = GDCM_VRUNKNOWN);
+
+ void FileHelper::SetMandatoryEntry(uint16_t group, uint16_t elem, std::string value);
+-->void FileHelper::SetMandatoryEntry(uint16_t group, uint16_t elem, std::string value,
+ const VRKey &vr = GDCM_VRUNKNOWN);
+
+ void FileHelper::CopyMandatoryEntry(uint16_t group, uint16_t elem, std::string value);
+-->void FileHelper::CopyMandatoryEntry(uint16_t group, uint16_t elem, std::string value,
+ const VRKey &vr = GDCM_VRUNKNOWN);
+
+ New features :
+
+For multivaluated numeric DataEntries
+-->void DataEntry::SetValue(const uint32_t &id,const double &val);
+-->double DataEntry::GetValue(const uint32_t &id) const;
+-->uint32_t DataEntry::GetValueCount() const;
+
+For converting 'Decimal String'
+-->bool GetDSValue(std::vector <double> &valueVector);
+
+
+ Avoid too many source file modifications from gdcm1.2 to gdcm1.3
+
+use :
+
+#define ValEntry DataEntry
+#define BinEntry DataEntry
+
+#define GetEntryValue(g,e) GetEntryString(g,e)
+#define GetEntryForcedAsciiValue(g,e) GetEntryString(g,e)
+
+#define GetValEntry(g,e) GetDataEntry(g,e)
+#define GetBinEntry(g,e) GetDataEntry(g,e)
+#define GetValue() GetString()
+
+#define InsertValEntry(v,g,e,vr) InsertEntryString(v,g,e,vr) // warning mind the VR!
+#define InsertBinEntry(b,l,g,e,vr) InsertEntryBinArea(b,l,g,e,vr)
+
+#define SetValEntry(c,g,e) SetEntryString(c,g,e) | !!
+#define SetValEntry(c,en) SetEntryString(c,en) | !!
+
+#define SetBinEntry(c,l,en) SetEntryBinArea(c,l,en) | !!
+#define SetBinEntry(c,l,g,e) SetEntryBinArea(c,l,g,e) | !!
+
+#define NewValEntry(g,e,vr) NewDataEntry(g,e,vr)
+#define NewBinEntry(g,e,vr) NewDataEntry(g,e,vr)
+
+
Bug fixes