// gdcmParse.cxx
-
+//-----------------------------------------------------------------------------
//This is needed when compiling in debug mode
#ifdef _MSC_VER
// 'type' : forcing value to bool 'true' or 'false' (performance warning)
#define str2num(str, typeNum) *((typeNum *)(str))
-/////////////////////////////////////////////////////////////////
+//-----------------------------------------------------------------------------
/**
* \ingroup gdcmFile
* \brief Parse pixel data from disk and *prints* the result
*
*/
bool gdcmFile::ParsePixelData(void) {
+// DO NOT remove the printf s.
+// The ONLY purpose of this method is to PRINT the content
+ FILE *fp;
- if ( !OpenFile())
+ if ( !(fp=Header->OpenFile()))
return false;
- if ( fseek(fp, GetPixelOffset(), SEEK_SET) == -1 ) {
- CloseFile();
+ if ( fseek(fp, Header->GetPixelOffset(), SEEK_SET) == -1 ) {
+ Header->CloseFile();
return false;
}
- if ( !IsDicomV3() ||
- IsImplicitVRLittleEndianTransferSyntax() ||
- IsExplicitVRLittleEndianTransferSyntax() ||
- IsExplicitVRBigEndianTransferSyntax() ||
- IsDeflatedExplicitVRLittleEndianTransferSyntax() ) {
+ if ( !Header->IsDicomV3() ||
+ Header->IsImplicitVRLittleEndianTransferSyntax() ||
+ Header->IsExplicitVRLittleEndianTransferSyntax() ||
+ Header->IsExplicitVRBigEndianTransferSyntax() ||
+ Header->IsDeflatedExplicitVRLittleEndianTransferSyntax() ) {
printf ("gdcmFile::ParsePixelData : non JPEG/RLE File\n");
- return 0;
+ return false;
}
int nb;
- std::string str_nb=gdcmHeader::GetPubElValByNumber(0x0028,0x0100);
+ std::string str_nb=Header->GetPubEntryByNumber(0x0028,0x0100);
if (str_nb == GDCM_UNFOUND ) {
nb = 16;
} else {
}
int nBytes= nb/8;
- int taille = GetXSize() * GetYSize() * GetSamplesPerPixel();
+ int taille = Header->GetXSize() * Header->GetYSize() * Header->GetSamplesPerPixel();
printf ("Checking the Dicom-encapsulated Jpeg/RLE Pixels\n");
// -------------------- for Parsing : Position on begining of Jpeg/RLE Pixels
- if( !IsRLELossLessTransferSyntax()) {
+ if( !Header->IsRLELossLessTransferSyntax()) {
// JPEG Image
-
- std::cout << "JPEG image" << std::endl;
ftellRes=ftell(fp);
fread(&ItemTagGr,2,1,fp); //Reading (fffe):Basic Offset Table Item Tag Gr
fread(&ItemTagEl,2,1,fp); //Reading (e000):Basic Offset Table Item Tag El
- if(GetSwapCode()) {
- ItemTagGr=SwapShort(ItemTagGr);
- ItemTagEl=SwapShort(ItemTagEl);
+ if(Header->GetSwapCode()) {
+ ItemTagGr=Header->SwapShort(ItemTagGr);
+ ItemTagEl=Header->SwapShort(ItemTagEl);
}
printf ("at %x : ItemTag (should be fffe,e000): %04x,%04x\n",
ftellRes,ItemTagGr,ItemTagEl );
ftellRes=ftell(fp);
fread(&ln,4,1,fp);
- if(GetSwapCode())
- ln=SwapLong(ln); // Basic Offset Table Item Lentgh
+ if(Header->GetSwapCode())
+ ln=Header->SwapLong(ln); // Basic Offset Table Item Lentgh
printf("at %x : Basic Offset Table Item Lentgh (??) %d x(%08x)\n",
ftellRes,ln,ln);
if (ln != 0) {
ftellRes=ftell(fp);
fread(&ItemTagGr,2,1,fp); // Reading (fffe) : Item Tag Gr
fread(&ItemTagEl,2,1,fp); // Reading (e000) : Item Tag El
- if(GetSwapCode()) {
- ItemTagGr=SwapShort(ItemTagGr);
- ItemTagEl=SwapShort(ItemTagEl);
+ if(Header->GetSwapCode()) {
+ ItemTagGr=Header->SwapShort(ItemTagGr);
+ ItemTagEl=Header->SwapShort(ItemTagEl);
}
printf ("at %x : ItemTag (should be fffe,e000 or e0dd): %04x,%04x\n",
ftellRes,ItemTagGr,ItemTagEl );
ftellRes=ftell(fp);
fread(&ln,4,1,fp);
- if(GetSwapCode())
- ln=SwapLong(ln); // length
+ if(Header->GetSwapCode())
+ ln=Header->SwapLong(ln); // length
printf(" at %x : fragment length %d x(%08x)\n",
ftellRes, ln,ln);
ftellRes=ftell(fp);
fread(&ItemTagGr,2,1,fp); // Reading (fffe) : Item Tag Gr
fread(&ItemTagEl,2,1,fp); // Reading (e000) : Item Tag El
- if(GetSwapCode()) {
- ItemTagGr=SwapShort(ItemTagGr);
- ItemTagEl=SwapShort(ItemTagEl);
+ if(Header->GetSwapCode()) {
+ ItemTagGr=Header->SwapShort(ItemTagGr);
+ ItemTagEl=Header->SwapShort(ItemTagEl);
}
printf ("at %x : ItemTag (should be fffe,e000 or e0dd): %04x,%04x\n",
ftellRes,ItemTagGr,ItemTagEl );
} else {
// RLE Image
-
- std::cout << "RLE image" << std::endl;
long RleSegmentLength[15],fragmentLength;
guint32 nbRleSegments;
guint32 RleSegmentOffsetTable[15];
// Item Tag
fread(&ItemTagGr,2,1,fp); //Reading (fffe):Basic Offset Table Item Tag Gr
fread(&ItemTagEl,2,1,fp); //Reading (e000):Basic Offset Table Item Tag El
- if(GetSwapCode()) {
- ItemTagGr=SwapShort(ItemTagGr);
- ItemTagEl=SwapShort(ItemTagEl);
+ if(Header->GetSwapCode()) {
+ ItemTagGr=Header->SwapShort(ItemTagGr);
+ ItemTagEl=Header->SwapShort(ItemTagEl);
}
printf ("at %x : ItemTag (should be fffe,e000): %04x,%04x\n",
ftellRes,ItemTagGr,ItemTagEl );
// Item Length
ftellRes=ftell(fp);
fread(&ln,4,1,fp);
- if(GetSwapCode())
- ln=SwapLong(ln); // Basic Offset Table Item Lentgh
+ if(Header->GetSwapCode())
+ ln=Header->SwapLong(ln); // Basic Offset Table Item Lentgh
printf("at %x : Basic Offset Table Item Lentgh (??) %d x(%08x)\n",
ftellRes,ln,ln);
if (ln != 0) {
ftellRes=ftell(fp);
fread(&ItemTagGr,2,1,fp); // Reading (fffe) : Item Tag Gr
fread(&ItemTagEl,2,1,fp); // Reading (e000) : Item Tag El
- if(GetSwapCode()) {
- ItemTagGr=SwapShort(ItemTagGr);
- ItemTagEl=SwapShort(ItemTagEl);
+ if(Header->GetSwapCode()) {
+ ItemTagGr=Header->SwapShort(ItemTagGr);
+ ItemTagEl=Header->SwapShort(ItemTagEl);
}
printf ("at %x : ItemTag (should be fffe,e000 or e0dd): %04x,%04x\n",
ftellRes,ItemTagGr,ItemTagEl );
// Parse fragments of the current Fragment (Frame)
ftellRes=ftell(fp);
fread(&fragmentLength,4,1,fp);
- if(GetSwapCode())
- fragmentLength=SwapLong(fragmentLength); // length
+ if(Header->GetSwapCode())
+ fragmentLength=Header->SwapLong(fragmentLength); // length
printf(" at %x : 'fragment' length %d x(%08x)\n",
ftellRes, fragmentLength,fragmentLength);
//------------------ scanning (not reading) fragment pixels
fread(&nbRleSegments,4,1,fp); // Reading : Number of RLE Segments
- if(GetSwapCode())
- nbRleSegments=SwapLong(nbRleSegments);
+ if(Header->GetSwapCode())
+ nbRleSegments=Header->SwapLong(nbRleSegments);
printf(" Nb of RLE Segments : %d\n",nbRleSegments);
for(int k=1; k<=15; k++) { // Reading RLE Segments Offset Table
ftellRes=ftell(fp);
fread(&RleSegmentOffsetTable[k],4,1,fp);
- if(GetSwapCode())
- RleSegmentOffsetTable[k]=SwapLong(RleSegmentOffsetTable[k]);
+ if(Header->GetSwapCode())
+ RleSegmentOffsetTable[k]=Header->SwapLong(RleSegmentOffsetTable[k]);
printf(" at : %x Offset Segment %d : %d (%x)\n",
ftellRes,k,RleSegmentOffsetTable[k],
RleSegmentOffsetTable[k]);
ftellRes=ftell(fp);
fread(&ItemTagGr,2,1,fp); // Reading (fffe) : Item Tag Gr
fread(&ItemTagEl,2,1,fp); // Reading (e000) : Item Tag El
- if(GetSwapCode()) {
- ItemTagGr=SwapShort(ItemTagGr);
- ItemTagEl=SwapShort(ItemTagEl);
+ if(Header->GetSwapCode()) {
+ ItemTagGr=Header->SwapShort(ItemTagGr);
+ ItemTagEl=Header->SwapShort(ItemTagEl);
}
printf ("at %x : ItemTag (should be fffe,e000 or e0dd): %04x,%04x\n",
ftellRes,ItemTagGr,ItemTagEl );
}
}
- return 1;
+ return true;
}
+
+//-----------------------------------------------------------------------------