Program: gdcm
Module: $RCSfile: gdcmBinEntry.cxx,v $
Language: C++
- Date: $Date: 2005/08/29 13:05:01 $
- Version: $Revision: 1.75 $
+ Date: $Date: 2005/10/11 14:48:19 $
+ Version: $Revision: 1.80 $
Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
l'Image). All rights reserved. See Doc/License.txt or
void BinEntry::WriteContent(std::ofstream *fp, FileType filetype)
{
DocEntry::WriteContent(fp, filetype);
- uint8_t* binArea8 = BinArea; //safe notation
+ uint8_t *binArea8 = BinArea; //safe notation
size_t lgr = GetLength();
if (BinArea) // the binArea was *actually* loaded
{
- /// \todo Probably, the same operation should be done if we wanted
- /// to write image with Big Endian Transfer Syntax,
- /// while working on Little Endian Processor
+
+ // The same operation should be done if we wanted
+ // to write image with Big Endian Transfer Syntax,
+ // while working on Little Endian Processor
+ // --> forget Big Endian Transfer Syntax writting!
+ // Next DICOM version will give it up ...
+
+ // -->
+ // --> FIXME
+ // -->
+ // The stuff looks nice, but it's probably bugged,
+ // since troubles occur on big endian processors (SunSparc, Motorola)
+ // while reading the pixels of a
+ // gdcm-written Little-Endian 16 bits per pixel image
#if defined(GDCM_WORDS_BIGENDIAN) || defined(GDCM_FORCE_BIGENDIAN_EMULATION)
- /// \todo FIXME Right now, we only care of Pixels element
+
+ /// \todo FIXME : Right now, we only care of Pixels element
/// we should deal with *all* the BinEntries
- /// well not really since we are not interpreting values read...
+ /// Well, not really since we are not interpreting values read...
// 8 Bits Pixels *are* OB, 16 Bits Pixels *are* OW
// -value forced while Reading process-
+
+ //-->
+ // -->
+ // --> WARNING
+ // --> the following lines *looked* very clever,
+ // --> but they don't work on big endian processors.
+ // --> since I've no access for the moment to a big endian proc :-(
+ // --> I comment them out, to see the result on the dash board
+ // -->
+
+ // --> Revert to initial code : TestWriteSimple hangs on Darwin :-(
if (GetGroup() == 0x7fe0 && GetVR() == "OW")
- {
+ {
uint16_t *binArea16 = (uint16_t*)binArea8;
binary_write (*fp, binArea16, lgr );
}
// For any other VR, BinEntry is re-written as-is
binary_write (*fp, binArea8, lgr );
}
+
+ //-->
+ // -->
+ // --> WARNING
+ // --> remove the following line, an uncomment the previous ones,
+ // --> if it doesn't work better
+ // -->
+ /*binary_write ( *fp, binArea8, lgr ); // Elem value*/
+
#else
binary_write ( *fp, binArea8, lgr ); // Elem value
#endif //GDCM_WORDS_BIGENDIAN
else
{
// nothing was loaded, but we need to skip space on disc
+
+ // --> WARNING : nothing is written;
+ // --> the initial data (on the the source image) is lost
+ // --> user is *not* informed !
+
fp->seekp(lgr, std::ios::cur);
}
}
}
else
{
- s << " [" << GetValue()
- << "; length = " << GetLength() << "]";
+ //s << " [" << GetValue()
+ s << " [" << GDCM_BINLOADED << ";"
+ << "length = " << GetLength() << "]";
}
}
}