From a8e9d86dc09a41d36e7fcebd808c98510377f742 Mon Sep 17 00:00:00 2001 From: jpr Date: Thu, 3 Apr 2003 15:49:16 +0000 Subject: [PATCH] =?utf8?q?ajouts=20accesseurs=20=20=20string=20GetXSize(vo?= =?utf8?q?id);=20=20=20string=20GetYSize(void);=20=20=20string=20GetZSize(?= =?utf8?q?void);=20=20=20string=20GetPixelType(void);=20=20destin=E9s=20?= =?utf8?q?=E0=20remplacer=20=20void=20gdcmHeader::AddAndDefaultElements(vo?= =?utf8?q?id)?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- src/gdcmElValSet.cxx | 18 +++++++---- src/gdcmHeader.cxx | 72 +++++++++++++++++++++++++++++++++++++++----- src/gdcmHeader.h | 10 ++++++ 3 files changed, 86 insertions(+), 14 deletions(-) diff --git a/src/gdcmElValSet.cxx b/src/gdcmElValSet.cxx index 8a647039..3dd24f1c 100644 --- a/src/gdcmElValSet.cxx +++ b/src/gdcmElValSet.cxx @@ -239,7 +239,8 @@ int gdcmElValSet::Write(FILE * _fp) { //sprintf(str_lgrCalcGroupe,"%d",lgrCalcGroupe); elemZPrec->SetValue(f.str()); if(DEBUG)printf("ecriture lgr (%d, %s) pour gr %04x\n",lgrCalcGroupe, f.str().c_str(), grCourant); - if(DEBUG)printf ("%04x %04x [%s]\n",elemZPrec->GetGroup(), elemZPrec->GetElement(),elemZPrec->GetValue().c_str()); + if(DEBUG)printf ("%04x %04x [%s]\n",elemZPrec->GetGroup(), elemZPrec->GetElement(), + elemZPrec->GetValue().c_str()); if(DEBUG)cout << "Addresse elemZPrec " << elemZPrec<< endl; elemZPrec=elemZ; lgrCalcGroupe = 0; @@ -247,7 +248,8 @@ int gdcmElValSet::Write(FILE * _fp) { if(DEBUG)printf("init-2 lgr (%d) pour gr %04x\n",lgrCalcGroupe, gr); } else { // On n'EST PAS sur un nv Groupe lgrCalcGroupe += 2 + 2 + 4 + elem->GetLength(); // Gr + Num + Lgr + LgrElem - if(DEBUG)printf("increment (%d) el %04x-->lgr (%d) pour gr %04x\n",elem->GetLength(), el, lgrCalcGroupe, gr); + if(DEBUG)printf("increment (%d) el %04x-->lgr (%d) pour gr %04x\n", + elem->GetLength(), el, lgrCalcGroupe, gr); } } @@ -386,7 +388,8 @@ int gdcmElValSet::WriteAcr(FILE * _fp) { f << lgrCalcGroupe; elemZPrec->SetValue(f.str()); if(DEBUG)printf("ecriture lgr (%d, %s) pour gr %04x\n",lgrCalcGroupe, f.str().c_str(), grCourant); - if(DEBUG)printf ("%04x %04x [%s]\n",elemZPrec->GetGroup(), elemZPrec->GetElement(),elemZPrec->GetValue().c_str()); + if(DEBUG)printf ("%04x %04x [%s]\n",elemZPrec->GetGroup(), elemZPrec->GetElement(), + elemZPrec->GetValue().c_str()); if(DEBUG)cout << "Addresse elemZPrec " << elemZPrec<< endl; elemZPrec=elemZ; lgrCalcGroupe = 0; @@ -394,7 +397,8 @@ int gdcmElValSet::WriteAcr(FILE * _fp) { if(DEBUG)printf("init-2 lgr (%d) pour gr %04x\n",lgrCalcGroupe, gr); } else { // On n'EST PAS sur un nv Groupe lgrCalcGroupe += 2 + 2 + 4 + elem->GetLength(); // Gr + Num + Lgr + LgrElem - if(DEBUG)printf("increment (%d) el %04x-->lgr (%d) pour gr %04x\n",elem->GetLength(), el, lgrCalcGroupe, gr); + if(DEBUG)printf("increment (%d) el %04x-->lgr (%d) pour gr %04x\n",elem->GetLength(), el, + lgrCalcGroupe, gr); } } @@ -554,7 +558,8 @@ int gdcmElValSet::WriteExplVR(FILE * _fp) { //sprintf(str_lgrCalcGroupe,"%d",lgrCalcGroupe); elemZPrec->SetValue(f.str()); if(DEBUG)printf("ecriture lgr (%d, %s) pour gr %04x\n",lgrCalcGroupe, f.str().c_str(), grCourant); - if(DEBUG)printf ("%04x %04x [%s]\n",elemZPrec->GetGroup(), elemZPrec->GetElement(),elemZPrec->GetValue().c_str()); + if(DEBUG)printf ("%04x %04x [%s]\n",elemZPrec->GetGroup(), elemZPrec->GetElement(), + elemZPrec->GetValue().c_str()); if(DEBUG)cout << "Addresse elemZPrec " << elemZPrec<< endl; elemZPrec=elemZ; lgrCalcGroupe = 0; @@ -562,7 +567,8 @@ int gdcmElValSet::WriteExplVR(FILE * _fp) { if(DEBUG)printf("init-2 lgr (%d) pour gr %04x\n",lgrCalcGroupe, gr); } else { // On n'EST PAS sur un nv Groupe lgrCalcGroupe += 2 + 2 + 4 + elem->GetLength(); // Gr + Num + Lgr + LgrElem - if(DEBUG)printf("increment (%d) el %04x-->lgr (%d) pour gr %04x\n",elem->GetLength(), el, lgrCalcGroupe, gr); + if(DEBUG)printf("increment (%d) el %04x-->lgr (%d) pour gr %04x\n",elem->GetLength(), + el, lgrCalcGroupe, gr); } } diff --git a/src/gdcmHeader.cxx b/src/gdcmHeader.cxx index 5e6c2c87..fdc6dee9 100644 --- a/src/gdcmHeader.cxx +++ b/src/gdcmHeader.cxx @@ -776,7 +776,6 @@ void gdcmHeader::LoadElementValue(gdcmElValue * ElVal) { s << '\\'; NewInt = ReadInt16(); s << NewInt; - //printf("%s\n", s.str().c_str()); } } @@ -968,12 +967,13 @@ bool gdcmHeader::IsAnInteger(gdcmElValue * ElVal) { } /* - // on le traite tt de même (VR peut donner l'info) - // faire qq chose + ruse (pas de test si pas de VR) + // on le traite tt de même (VR peut donner l'info) + // faire qq chose + ruse (pas de test si pas de VR) if ( group % 2 != 0 ) - // We only have some semantics on documented elements, which are - // the even ones. - return false; + // We only have some semantics on documented elements, which are + // the even ones. + return false; + */ /* @@ -991,7 +991,7 @@ bool gdcmHeader::IsAnInteger(gdcmElValue * ElVal) { // est-ce encore utile? - // mieux vaut modifier le source du Dicom Dictionnaty + // mieux vaut modifier le source du Dicom Dictionnary // et remplacer pour ces 2 cas RET par US if ( (group == 0x0028) && (element == 0x0005) ) @@ -1388,6 +1388,60 @@ void gdcmHeader::ParseHeader(bool exception_on_error) throw(gdcmFormatError) { } } +/** + * \ingroup gdcmHeader + * \brief accessor to get Rows nbr + */ + +string gdcmHeader::GetYSize(void) { + return (GetElValByName("Rows")); +} + +/** + * \ingroup gdcmHeader + * \brief accessor to get Columns nbr + */ + +string gdcmHeader::GetXSize(void) { + return (GetElValByName("Columns")); +} + +/** + * \ingroup gdcmHeader + * \brief accessor to get Planes nbr + * (ACR-NEMA volume file or Multiframe Dicom V3 image file) + */ + +string gdcmHeader::GetZSize(void) { + string NewVal; + NewVal = GetElValByNumber(0x0028,0x0008); // Number of Frames (DICOM) + + if (NewVal == "gdcm::Unfound") { + NewVal = GetElValByNumber(0x0028,0x0012); // Planes (ACR-NEMA) + // 6000 0012 : US OLY Planes + // 'xxxByName' function not applicable + if (NewVal == "gdcm::Unfound") { + NewVal = "0"; + } + } + return(NewVal); +} + +/** + * \ingroup gdcmHeader + * \brief accessor to get Pixel Type + * (U8, S8, U16, S16, U32, S32) + * + * \warning : NOT YET MADE + * + */ + +string gdcmHeader::GetPixelType(void) { + string NewVal; + // TODO + return(NewVal); +} + /** * \ingroup gdcmHeader * \brief Once the header is parsed add some gdcm convenience/helper elements @@ -1397,8 +1451,10 @@ void gdcmHeader::ParseHeader(bool exception_on_error) throw(gdcmFormatError) { * I8 (unsigned 8 bit image) * I16 (unsigned 8 bit image) * IS16 (signed 8 bit image) + * Replace by U8, S8, U16, S16, U32, S32 + * * - gdcmXsize, gdcmYsize, gdcmZsize whose values are respectively - * the ones of the official DICOM fields Rows, Columns and Planes. + * the ones of the official DICOM fields Rows, Columns and [Number of Frames/Planes] */ void gdcmHeader::AddAndDefaultElements(void) { gdcmElValue* NewElVal = (gdcmElValue*)0; diff --git a/src/gdcmHeader.h b/src/gdcmHeader.h index 91b92549..c733cd54 100644 --- a/src/gdcmHeader.h +++ b/src/gdcmHeader.h @@ -168,6 +168,16 @@ public: int ReplaceOrCreateByNumber(guint16 Group, guint16 Elem, string Value); gdcmElValSet GetPubElValSet() { return(PubElValSet); } + + // a mettre en inline + // --> ou met-on les doxygeneries ? + + string GetXSize(void); + string GetYSize(void); + + string GetZSize(void); + string GetPixelType(void); + }; #endif -- 2.46.0