- /*=========================================================================
+/*=========================================================================
Program: gdcm
Module: $RCSfile: gdcmFile.cxx,v $
Language: C++
- Date: $Date: 2005/01/06 20:03:27 $
- Version: $Revision: 1.183 $
+ Date: $Date: 2005/01/13 22:30:11 $
+ Version: $Revision: 1.192 $
Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
l'Image). All rights reserved. See Doc/License.txt or
=========================================================================*/
#include "gdcmFile.h"
+#include "gdcmGlobal.h"
+#include "gdcmTS.h"
#include "gdcmDocument.h"
#include "gdcmDebug.h"
#include "gdcmUtil.h"
// Public
/**
* \brief Get the size of the image data
- *
* If the image can be RGB (with a lut or by default), the size
* corresponds to the RGB image
+ * (use GetImageDataRawSize if you want to be sure to get *only*
+ * the size of the pixels)
* @return The image size
*/
size_t File::GetImageDataSize()
/**
* \brief Get the size of the image data
- *
- * If the image can be RGB by transformation in a LUT, this
- * transformation isn't considered
+ * If the image could be converted to RGB using a LUT,
+ * this transformation is not taken into account by GetImageDataRawSize
+ * (use GetImageDataSize if you wish)
* @return The raw image size
*/
size_t File::GetImageDataRawSize()
{
if ( PixelReadConverter->GetRGBSize() > maxSize )
{
- dbg.Verbose(0, "File::GetImageDataIntoVector: pixel data bigger"
- "than caller's expected MaxSize");
+ gdcmVerboseMacro( "Pixel data bigger than caller's expected MaxSize");
return 0;
}
memcpy( destination,
// Either no LUT conversion necessary or LUT conversion failed
if ( PixelReadConverter->GetRawSize() > maxSize )
{
- dbg.Verbose(0, "File::GetImageDataIntoVector: pixel data bigger"
- "than caller's expected MaxSize");
+ gdcmVerboseMacro( "Pixel data bigger than caller's expected MaxSize");
return 0;
}
memcpy( destination,
std::ofstream fp1(fileName.c_str(), std::ios::out | std::ios::binary );
if (!fp1)
{
- dbg.Verbose(2, "Fail to open (write) file:", fileName.c_str());
+ gdcmVerboseMacro( "Fail to open (write) file:" << fileName.c_str());
return false;
}
- if(PixelWriteConverter->GetUserData())
- fp1.write((char*)PixelWriteConverter->GetUserData(), PixelWriteConverter->GetUserDataSize());
- else if(PixelReadConverter->GetRGB())
- fp1.write((char*)PixelReadConverter->GetRGB(), PixelReadConverter->GetRGBSize());
- else if(PixelReadConverter->GetRaw())
- fp1.write((char*)PixelReadConverter->GetRaw(), PixelReadConverter->GetRawSize());
+ if( PixelWriteConverter->GetUserData() )
+ {
+ fp1.write( (char*)PixelWriteConverter->GetUserData(),
+ PixelWriteConverter->GetUserDataSize() );
+ }
+ else if ( PixelReadConverter->GetRGB() )
+ {
+ fp1.write( (char*)PixelReadConverter->GetRGB(),
+ PixelReadConverter->GetRGBSize());
+ }
+ else if ( PixelReadConverter->GetRaw() )
+ {
+ fp1.write( (char*)PixelReadConverter->GetRaw(),
+ PixelReadConverter->GetRawSize());
+ }
+ else
+ {
+ gdcmErrorMacro( "Nothing written." );
+ }
fp1.close();
* the given value.
* @param content new value (string) to substitute with
* @param group group number of the Dicom Element to modify
- * @param element element number of the Dicom Element to modify
+ * @param elem element number of the Dicom Element to modify
*/
-bool File::SetEntryByNumber(std::string const &content,
- uint16_t group, uint16_t element)
+bool File::SetEntry(std::string const &content,
+ uint16_t group, uint16_t elem)
{
- return HeaderInternal->SetEntryByNumber(content,group,element);
+ return HeaderInternal->SetEntry(content,group,elem);
}
* @param content new value (void* -> uint8_t*) to substitute with
* @param lgth new value length
* @param group group number of the Dicom Element to modify
- * @param element element number of the Dicom Element to modify
+ * @param elem element number of the Dicom Element to modify
*/
-bool File::SetEntryByNumber(uint8_t *content, int lgth,
- uint16_t group, uint16_t element)
+bool File::SetEntry(uint8_t *content, int lgth,
+ uint16_t group, uint16_t elem)
{
- return HeaderInternal->SetEntryByNumber(content,lgth,group,element);
+ return HeaderInternal->SetEntry(content,lgth,group,elem);
}
/**
* when it exists. Create it with the given value when unexistant.
* @param content (string) Value to be set
* @param group Group number of the Entry
- * @param element Element number of the Entry
+ * @param elem Element number of the Entry
* \return pointer to the modified/created Header Entry (NULL when creation
* failed).
*/
-bool File::ReplaceOrCreateByNumber(std::string const &content,
- uint16_t group, uint16_t element)
+bool File::ReplaceOrCreate(std::string const &content,
+ uint16_t group, uint16_t elem)
{
- return HeaderInternal->ReplaceOrCreateByNumber(content,group,element) != NULL;
+ return HeaderInternal->ReplaceOrCreate(content,group,elem) != NULL;
}
/*
* A copy of the binArea is made to be kept in the Document.
* @param binArea (binary) value to be set
* @param group Group number of the Entry
- * @param element Element number of the Entry
+ * @param elem Element number of the Entry
* \return pointer to the modified/created Header Entry (NULL when creation
* failed).
*/
-bool File::ReplaceOrCreateByNumber(uint8_t *binArea, int lgth,
- uint16_t group, uint16_t element)
+bool File::ReplaceOrCreate(uint8_t *binArea, int lgth,
+ uint16_t group, uint16_t elem)
{
- return HeaderInternal->ReplaceOrCreateByNumber(binArea,lgth,group,element) != NULL;
+ return HeaderInternal->ReplaceOrCreate(binArea,lgth,group,elem) != NULL;
}
/**
case WMODE_RAW :
if( decSize!=PixelWriteConverter->GetUserDataSize() )
{
- dbg.Verbose(0, "File::CheckWriteIntegrity: Data size is incorrect (Raw)");
- //std::cerr << "File::CheckWriteIntegrity: Data size is incorrect (Raw)\n"
- // << decSize << " / " << PixelWriteConverter->GetUserDataSize() << "\n";
+ gdcmVerboseMacro( "Data size is incorrect (Raw)" << decSize
+ << " / " << PixelWriteConverter->GetUserDataSize() );
return false;
}
break;
case WMODE_RGB :
if( rgbSize!=PixelWriteConverter->GetUserDataSize() )
{
- dbg.Verbose(0, "File::CheckWriteIntegrity: Data size is incorrect (RGB)");
- //std::cerr << "File::CheckWriteIntegrity: Data size is incorrect (RGB)\n"
- // << decSize << " / " << PixelWriteConverter->GetUserDataSize() << "\n";
+ gdcmVerboseMacro( "Data size is incorrect (RGB)" << decSize
+ << " / " << PixelWriteConverter->GetUserDataSize() );
return false;
}
break;
void File::SetWriteToRaw()
{
- if(HeaderInternal->GetNumberOfScalarComponents()==3 && !HeaderInternal->HasLUT())
+ if( HeaderInternal->GetNumberOfScalarComponents() == 3
+ && !HeaderInternal->HasLUT())
{
SetWriteToRGB();
}
PixelWriteConverter->SetReadData(PixelReadConverter->GetRaw(),
PixelReadConverter->GetRawSize());
- BinEntry *pixel = CopyBinEntry(GetHeader()->GetGrPixel(),GetHeader()->GetNumPixel());
+ BinEntry *pixel =
+ CopyBinEntry(GetHeader()->GetGrPixel(),GetHeader()->GetNumPixel());
pixel->SetValue(GDCM_BINLOADED);
pixel->SetBinArea(PixelWriteConverter->GetData(),false);
pixel->SetLength(PixelWriteConverter->GetDataSize());
PixelReadConverter->GetRawSize());
}
- BinEntry *pixel = CopyBinEntry(GetHeader()->GetGrPixel(),GetHeader()->GetNumPixel());
+ BinEntry *pixel =
+ CopyBinEntry(GetHeader()->GetGrPixel(),GetHeader()->GetNumPixel());
pixel->SetValue(GDCM_BINLOADED);
pixel->SetBinArea(PixelWriteConverter->GetData(),false);
pixel->SetLength(PixelWriteConverter->GetDataSize());
void File::SetWriteFileTypeToExplicitVR()
{
std::string ts = Util::DicomString(
- Document::GetTransferSyntaxValue(ExplicitVRLittleEndian).c_str() );
+ Global::GetTS()->GetSpecialTransferSyntax(TS::ExplicitVRLittleEndian) );
ValEntry *tss = CopyValEntry(0x0002,0x0010);
tss->SetValue(ts);
void File::SetWriteFileTypeToImplicitVR()
{
std::string ts = Util::DicomString(
- Document::GetTransferSyntaxValue(ImplicitVRLittleEndian).c_str() );
+ Global::GetTS()->GetSpecialTransferSyntax(TS::ImplicitVRLittleEndian) );
ValEntry *tss = CopyValEntry(0x0002,0x0010);
tss->SetValue(ts);
void File::SetWriteToLibido()
{
ValEntry *oldRow = dynamic_cast<ValEntry *>
- (HeaderInternal->GetDocEntryByNumber(0x0028, 0x0010));
+ (HeaderInternal->GetDocEntry(0x0028, 0x0010));
ValEntry *oldCol = dynamic_cast<ValEntry *>
- (HeaderInternal->GetDocEntryByNumber(0x0028, 0x0011));
+ (HeaderInternal->GetDocEntry(0x0028, 0x0011));
if( oldRow && oldCol )
{
void File::SetWriteToNoLibido()
{
ValEntry *recCode = dynamic_cast<ValEntry *>
- (HeaderInternal->GetDocEntryByNumber(0x0008,0x0010));
+ (HeaderInternal->GetDocEntry(0x0008,0x0010));
if( recCode )
{
if( recCode->GetValue() == "ACRNEMA_LIBIDO_1.1" )
Archive->Restore(0x0008,0x0010);
}
-ValEntry *File::CopyValEntry(uint16_t group,uint16_t element)
+ValEntry *File::CopyValEntry(uint16_t group,uint16_t elem)
{
- DocEntry *oldE = HeaderInternal->GetDocEntryByNumber(group, element);
+ DocEntry *oldE = HeaderInternal->GetDocEntry(group, elem);
ValEntry *newE;
if(oldE)
}
else
{
- newE = GetHeader()->NewValEntryByNumber(group,element);
+ newE = GetHeader()->NewValEntry(group,elem);
}
- return(newE);
+ return newE;
}
-BinEntry *File::CopyBinEntry(uint16_t group,uint16_t element)
+BinEntry *File::CopyBinEntry(uint16_t group,uint16_t elem)
{
- DocEntry *oldE = HeaderInternal->GetDocEntryByNumber(group, element);
+ DocEntry *oldE = HeaderInternal->GetDocEntry(group, elem);
BinEntry *newE;
if(oldE)
}
else
{
- newE = GetHeader()->NewBinEntryByNumber(group,element);
+ newE = GetHeader()->NewBinEntry(group,elem);
}
- return(newE);
+ return newE;
}
//-----------------------------------------------------------------------------
raw = PixelReadConverter->GetRaw();
if ( ! raw )
{
- dbg.Verbose(0, "File::GetRaw: read/decompress of "
- "pixel data apparently went wrong.");
+ gdcmVerboseMacro( "Read/decompress of pixel data apparently went wrong.");
return 0;
}
}