- // Loop on the fragment[s]
- for( it = JPEGInfo->Fragments.begin();
- it != JPEGInfo->Fragments.end();
- ++it )
- {
- fp->seekg( (*it)->Offset, std::ios::beg);
- size_t len = (*it)->Length;
- fp->read((char *)p,len);
- p += len;
- }
-
- size_t howManyRead = 0;
- size_t howManyWritten = 0;
-
- if ( BitsStored == 8)
- {
- if ( ! gdcm_read_JPEG_memory8( buffer, totalLength, Raw,
- &howManyRead, &howManyWritten ) )
- {
- gdcmErrorMacro(
- "PixelConvert::ReadAndDecompressJPEGFile: failed to read jpeg8 "
- );
- delete [] buffer;
- return false;
- }
- }
- else if ( BitsStored <= 12)
- {
- if ( ! gdcm_read_JPEG_memory12( buffer, totalLength, Raw,
- &howManyRead, &howManyWritten ) )
- {
- gdcmErrorMacro(
- "PixelConvert::ReadAndDecompressJPEGFile: failed to read jpeg12 "
- );
- delete [] buffer;
- return false;
- }
- }
- else if ( BitsStored <= 16)
- {
-
- if ( ! gdcm_read_JPEG_memory16( buffer, totalLength, Raw,
- &howManyRead, &howManyWritten ) )
- {
- gdcmErrorMacro(
- "PixelConvert::ReadAndDecompressJPEGFile: failed to read jpeg16 "
- );
- delete [] buffer;
- return false;
- }
- }
- else
- {
- // other JPEG lossy not supported
- gdcmErrorMacro("PixelConvert::ReadAndDecompressJPEGFile: unknown "
- "jpeg lossy compression ");
- delete [] buffer;
- return false;
- }