- int taille = GetXSize() * GetYSize() * GetSamplesPerPixel();
-
-
- // ------------------------------- JPEG LossLess : call to Jpeg Libido
-
- if (IsJPEGLossless() && GetZSize() == 1) {
-
- int ln; // Position on begining of Jpeg Pixels
- fseek(fp,4,SEEK_CUR); // skipping (fffe,e000) : Basic Offset Table Item
- fread(&ln,4,1,fp);
- if(GetSwapCode())
- ln=SwapLong(ln); // Item length
- fseek(fp,ln,SEEK_CUR); // skipping Basic Offset Table ('ln' bytes)
- fseek(fp,4,SEEK_CUR); // skipping (fffe,e000) : First fragment Item Tag
- fread(&ln,4,1,fp); // First fragment length (just to know)
- if(GetSwapCode())
- ln=SwapLong(ln);
-
- ClbJpeg* jpg = _IdDcmJpegRead(fp); // TODO : find a 'full' one.
- // (We use the LibIDO one :-(
- if(jpg == NULL) {
- CloseFile();
- return false;
- }
- int * dataJpg = jpg->DataImg;
-
- switch (nBytes) {
- case 1:
- {
- unsigned short *dest = (unsigned short *)destination;
- for (int i=0; i<taille; i++) {
- *((unsigned char *)dest+i) = *(dataJpg +i);
- }
- }
- break;
-
- case 2:
- {
- unsigned short *dest = (unsigned short *)destination;
- for (int i=0; i<taille; i++) {
- *((unsigned short *)dest+i) = *(dataJpg +i);
- }
- }
- break;
- }
- _IdDcmJpegFree (jpg);
- return true;
- }
-
- // ------------------------------- RLE
-
- if (gdcmHeader::IsRLELossLessTransferSyntax()) {
- int res = (bool)gdcm_read_RLE_file (destination);
- return res;
- }
-
- // ------------------------------- Multiframe JPEG
-