X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;ds=sidebyside;f=Doc%2FWebsite%2FNews.html;h=4958c06bb6402f1dc0c55323472da0478acaeadf;hb=a68df337f48edac15e6794cfb8af199f65a5f18a;hp=b71265da255dd21d80f4edadcb2a373166f2f2b1;hpb=e1e4959f7c4aaacb90fc1ce89a99675011b8d938;p=gdcm.git diff --git a/Doc/Website/News.html b/Doc/Website/News.html index b71265da..4958c06b 100644 --- a/Doc/Website/News.html +++ b/Doc/Website/News.html @@ -7,31 +7,691 @@
- + ++ 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(); + +
+ 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); ++
+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); ++ +
+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) + ++
+ gdcm::SerieHelper *sh= new gdcm::SerieHelper(); + // if user wants *not* to load some parts of the file headers + sh->SetLoadMode(loadMode); + + // if user wants *not* to load some files + sh->AddRestriction(group, element, value, operator); + sh->AddRestriction( ... + sh->SetDirectory(directoryWithImages); + + // if user *knows* how to order his files + sh->SetUserLessThanFunction(userSuppliedComparisonFunction); + // or/and + // if user wants to sort reverse order + sh->SetSortOrderToReverse(); + + // here, we suppose only the first 'Single SerieUID' Fileset is of interest + // Just iterate using sh->NextSingleSerieUIDFileSet() + // if you want to get all of them + gdcm::FileList *l = sh->GetFirstSingleSerieUIDFileSet(); + + // if user is doesn't trust too much the files with same Serie UID + if ( !sh->IsCoherent(l) ) + return; // not same sizes, or not same 'pixel type' -> stop + + sh->OrderFileList(l); // sort the list + + vtkGdcmReader *reader = vtkGdcmReader::New(); + // if user wants to modify pixel order (Mirror, TopDown, ...) + // he has to supply the function that does the job + // (a *very* simple example is given in vtkgdcmSerieViewer.cxx) + reader->SetUserFunction (userSuppliedFunction); + + // to pass a 'Single SerieUID' Fileset as produced by gdcm::SerieHelper + reader->SetCoherentFileList(l); + reader->Update(); ++ You can see a full example in vtk/vtkgdcmSerieViewer.cxx
+ gdcmSerieHelper *sh = new gdcmSerieHelper(); + sh->SetDirectory(myImageDirectory, true); + gdcmFileList *l = s->GetFirstCoherentFileList(); + s->OrderFileList(l); + + vtkGdcmReader *gr = new vtkGdcmReader(); + gr->SetCoherentFileList(l); + gr->Update(); ++ This works with a directory that contains only one 'Serie' + (same Serie UID for all the images).
+ gdcm::DicomDir *d = new gdcm::DicomDir(); + d->SetFileName(fileName); + d->Load( ); ++ + For parsing all the dicom files within a given root directory, use :
+ gdcm::DicomDir *d = new gdcm::DicomDir(); + d->SetDirectoryName(dirName); + d->Load( ) ++ + Don't use any longer old deprecated style:
+ gdcm::File *f = new gdcm::File(); + f->SetLoadMode(NO_SEQ); | depending on what + f->SetLoadMode(NO_SHADOW); | you want *not* + f->SetLoadMode(NO_SEQ | NO_SHADOW);| to load from the + f->SetLoadMode(NO_SHADOWSEQ); | target file + f->SetFileName(fileName); + f->Load( ); ++ Don't use any longer old deprecated style:
+ gdcm::DicomDir *f = new gdcm::DicomDir(); + f->SetLoadMode(NO_SEQ); | depending on what + f->SetLoadMode(NO_SHADOW); | you want *not* + f->SetLoadMode(NO_SEQ | NO_SHADOW);| to load from the files + f->SetLoadMode(NO_SHADOWSEQ); | within the root directory + f->SetDirectoryName(rootDirectoryName); + f->Load( ); ++ Don't use any longer old deprecated style: