-/**
- * \ingroup gdcmParser
- * \brief Prints the Header Entries (Dicom Elements)
- * from the chained list
- * and skips the elements belonging to a 'no length' SeQuence
- * @return
- */
-void gdcmParser::PrintEntryNoSQ(std::ostream & os) {
- int countSQ = 0;
- for (ListTag::iterator i = listEntries.begin();
- i != listEntries.end();
- ++i)
- {
- if ( (*i)->GetVR() == "SQ"){
- countSQ ++;
- }
-
- if ( (*i)->GetGroup() == 0xfffe && (*i)->GetElement() == 0xe0dd){
- countSQ --;
- continue;
- }
-
- if (countSQ == 0) {
- (*i)->SetPrintLevel(printLevel);
- (*i)->Print(os);
- }
- }
-}
-
-/**
- * \ingroup gdcmParser
- * \brief Prints the Header Entries (Dicom Elements)
- * from the chained list
- * and indents the elements belonging to any SeQuence
- * \warning : will be removed
- * @return
- */
-void gdcmParser::PrintEntryNiceSQ(std::ostream & os) {
- pileElem pile[50]; // Hope embedded sequence depth is no more than 50
- int top =-1;
- int countSQ = 0;
- int currentParsedlength = 0;
- int totalElementlength;
- std::ostringstream tab;
- tab << " ";
-
- int DEBUG = 0; // Sorry; Dealing with e-film breaker images
- // will (certainly) cause a lot of troubles ...
- // I prefer keeping my 'trace' on .
-
- for (ListTag::iterator i = listEntries.begin();
- i != listEntries.end();
- ++i) {
- if ( (*i)->GetVR() == "SQ" && (*i)->GetReadLength() != 0) { // SQ found
- countSQ++;
- top ++;
- if ( top >= 50) {
- std::cout << "Kaie ! Kaie! SQ stack overflow" << std::endl;
- return;
- }
- if (DEBUG) cout << "\n >>>>> empile niveau " << top
- << "; Lgr SeQ: " << (*i)->GetReadLength()
- << "\n" <<endl;
-
- pile[top].totalSQlength = (*i)->GetReadLength();
- pile[top].alreadyParsedlength = 0;
- currentParsedlength = 0;
-
- } else { // non SQ found
-
- if (countSQ != 0) { // we are 'inside a SeQuence'
- if ( (*i)->GetGroup()==0xfffe && (*i)->GetElement()==0xe0dd){
- // we just found 'end of SeQuence'
-
- if (DEBUG)
- std::cout << "fffe,e0dd : depile" << std::endl;
- currentParsedlength += 8; // gr:2 elem:2 vr:2 lgt:2
- countSQ --;
- top --;
- pile[top].alreadyParsedlength += currentParsedlength;
- } else {
- // we are on a 'standard' elem
- // or a Zero-length SeQuence
-
- totalElementlength = (*i)->GetFullLength();
- currentParsedlength += totalElementlength;
- pile[top].alreadyParsedlength += totalElementlength;
-
- if (pile[top].totalSQlength == 0xffffffff) {
- if (DEBUG)
- std::cout << "totalSeQlength == 0xffffffff"
- << std::endl;
- } else {
- if (DEBUG)
- cout << "alrdyPseLgt:"
- << pile[top].alreadyParsedlength << " totSeQlgt: "
- << pile[top].totalSQlength << " curPseLgt: "
- << currentParsedlength
- << endl;
- while (pile[top].alreadyParsedlength==pile[top].totalSQlength) {
-
- if (DEBUG)
- std::cout << " \n<<<<<< On depile niveau " << top
- << "\n" << std::endl;
-
- currentParsedlength = pile[top].alreadyParsedlength;
- countSQ --;
- top --;
- if (top >=0) {
-
- pile[top].alreadyParsedlength += currentParsedlength +12;
- // 12 : length of 'SQ embedded' SQ element
- currentParsedlength += 8; // gr:2 elem:2 vr:2 lgt:2
-
- if (DEBUG)
- std::cout << pile[top].alreadyParsedlength << " "
- << pile[top].totalSQlength << " "
- << currentParsedlength
- << std::endl;
- }
- if (top == -1) {
- currentParsedlength = 0;
- break;
- }
- }
- }
- }
- } // end : 'inside a SeQuence'
- }
-
- if (countSQ != 0) {
- for (int i=0;i<countSQ;i++)
- os << tab.str();
- }
- (*i)->SetPrintLevel(printLevel);
- (*i)->Print(os);
-
- } // end for
-}
-
-